Deploy website - based on 6dcbc1a72c

This commit is contained in:
2024-11-10 16:43:02 -05:00
parent 5172f66254
commit 741bf44126
262 changed files with 8754 additions and 4196 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["9763"],{829:function(e){e.exports=JSON.parse('{"metadata":{"permalink":"/","page":1,"postsPerPage":10,"totalPages":4,"totalCount":34,"nextPage":"/page/2","blogDescription":"Blog","blogTitle":"Blog"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["5229"],{7897:function(e,t,n){n.r(t),n.d(t,{assets:function(){return u},contentTitle:function(){return o},default:function(){return l},frontMatter:function(){return a},metadata:function(){return i},toc:function(){return c}});var i=n(6749),r=n(5893),s=n(65);let a={slug:"2016/03/predicting-santander-customer-happiness",title:"Predicting Santander customer happiness",date:new Date("2016-03-05T12:00:00.000Z"),authors:["bspeice"],tags:[]},o=void 0,u={authorsImageUrls:[void 0]},c=[];function p(e){let t={p:"p",...(0,s.a)(),...e.components};return(0,r.jsx)(t.p,{children:"My first Kaggle competition."})}function l(e={}){let{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(p,{...e})}):p(e)}},65:function(e,t,n){n.d(t,{Z:function(){return o},a:function(){return a}});var i=n(7294);let r={},s=i.createContext(r);function a(e){let t=i.useContext(s);return i.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(s.Provider,{value:t},e.children)}},6749:function(e){e.exports=JSON.parse('{"permalink":"/2016/03/predicting-santander-customer-happiness","source":"@site/blog/2016-03-05-predicting-santander-customer-happiness/index.mdx","title":"Predicting Santander customer happiness","description":"My first Kaggle competition.","date":"2016-03-05T12:00:00.000Z","tags":[],"readingTime":6.95,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2016/03/predicting-santander-customer-happiness","title":"Predicting Santander customer happiness","date":"2016-03-05T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1730863976000,"prevItem":{"title":"Tweet like me","permalink":"/2016/03/tweet-like-me"},"nextItem":{"title":"Profitability using the investment formula","permalink":"/2016/02/profitability-using-the-investment-formula"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["5373"],{695:function(e,t,n){n.r(t),n.d(t,{assets:function(){return s},contentTitle:function(){return u},default:function(){return p},frontMatter:function(){return o},metadata:function(){return a},toc:function(){return l}});var a=n(3628),i=n(5893),r=n(65);let o={slug:"2016/01/cloudy-in-seattle",title:"Cloudy in Seattle",date:new Date("2016-01-23T12:00:00.000Z"),authors:["bspeice"],tags:[]},u=void 0,s={authorsImageUrls:[void 0]},l=[];function c(e){let t={p:"p",...(0,r.a)(),...e.components};return(0,i.jsx)(t.p,{children:"Building on prior analysis, is Seattle's reputation as a depressing city actually well-earned?"})}function p(e={}){let{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},65:function(e,t,n){n.d(t,{Z:function(){return u},a:function(){return o}});var a=n(7294);let i={},r=a.createContext(i);function o(e){let t=a.useContext(r);return a.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),a.createElement(r.Provider,{value:t},e.children)}},3628:function(e){e.exports=JSON.parse('{"permalink":"/2016/01/cloudy-in-seattle","source":"@site/blog/2016-01-23-cloudy-in-seattle/index.mdx","title":"Cloudy in Seattle","description":"Building on prior analysis, is Seattle\'s reputation as a depressing city actually well-earned?","date":"2016-01-23T12:00:00.000Z","tags":[],"readingTime":3.965,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2016/01/cloudy-in-seattle","title":"Cloudy in Seattle","date":"2016-01-23T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1730683607000,"prevItem":{"title":"Guaranteed money maker","permalink":"/2016/02/guaranteed-money-maker"},"nextItem":{"title":"Complaining about the weather","permalink":"/2016/01/complaining-about-the-weather"}}')}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["2410"],{9959:function(e,t,n){n.r(t),n.d(t,{assets:function(){return u},contentTitle:function(){return s},default:function(){return p},frontMatter:function(){return o},metadata:function(){return r},toc:function(){return c}});var r=n(3303),i=n(5893),a=n(65);let o={slug:"2019/09/binary-format-shootout",title:"Binary format shootout",date:new Date("2019-09-28T12:00:00.000Z"),authors:["bspeice"],tags:[]},s=void 0,u={authorsImageUrls:[void 0]},c=[];function l(e){let t={a:"a",del:"del",p:"p",...(0,a.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:["I've found that in many personal projects,\n",(0,i.jsx)(t.a,{href:"https://en.wikipedia.org/wiki/Analysis_paralysis",children:"analysis paralysis"})," is particularly deadly.\nMaking good decisions in the beginning avoids pain and suffering later; if extra research prevents\nfuture problems, I'm happy to continue ",(0,i.jsx)(t.del,{children:"procrastinating"})," researching indefinitely."]}),"\n",(0,i.jsx)(t.p,{children:"So let's say you're in need of a binary serialization format. Data will be going over the network,\nnot just in memory, so having a schema document and code generation is a must. Performance is\ncrucial, so formats that support zero-copy de/serialization are given priority. And the more\nlanguages supported, the better; I use Rust, but can't predict what other languages this could\ninteract with."}),"\n",(0,i.jsx)(t.p,{children:"Given these requirements, the candidates I could find were:"})]})}function p(e={}){let{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},65:function(e,t,n){n.d(t,{Z:function(){return s},a:function(){return o}});var r=n(7294);let i={},a=r.createContext(i);function o(e){let t=r.useContext(a);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),r.createElement(a.Provider,{value:t},e.children)}},3303:function(e){e.exports=JSON.parse('{"permalink":"/2019/09/binary-format-shootout","source":"@site/blog/2019-09-28-binary-format-shootout/index.mdx","title":"Binary format shootout","description":"I\'ve found that in many personal projects,","date":"2019-09-28T12:00:00.000Z","tags":[],"readingTime":8.37,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2019/09/binary-format-shootout","title":"Binary format shootout","date":"2019-09-28T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731207983000,"prevItem":{"title":"Release the GIL","permalink":"/2019/12/release-the-gil"},"nextItem":{"title":"On building high performance systems","permalink":"/2019/06/high-performance-systems"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["3837"],{1883:function(e,t,n){n.r(t),n.d(t,{assets:function(){return l},contentTitle:function(){return u},default:function(){return d},frontMatter:function(){return i},metadata:function(){return o},toc:function(){return c}});var o=n(1915),a=n(5893),r=n(65);let i={slug:"2015/11/welcome",title:"Welcome, and an algorithm",date:new Date("2015-11-19T12:00:00.000Z"),last_update:{date:new Date("2015-12-05T12:00:00.000Z")},authors:["bspeice"],tags:[]},u=void 0,l={authorsImageUrls:[void 0]},c=[];function s(e){let t={p:"p",...(0,r.a)(),...e.components};return(0,a.jsx)(t.p,{children:"Hello! Glad to meet you. I'm currently a student at Columbia University studying Financial Engineering, and want to give an overview of the projects I'm working on!"})}function d(e={}){let{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(s,{...e})}):s(e)}},65:function(e,t,n){n.d(t,{Z:function(){return u},a:function(){return i}});var o=n(7294);let a={},r=o.createContext(a);function i(e){let t=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),o.createElement(r.Provider,{value:t},e.children)}},1915:function(e){e.exports=JSON.parse('{"permalink":"/2015/11/welcome","source":"@site/blog/2015-11-14-welcome/index.mdx","title":"Welcome, and an algorithm","description":"Hello! Glad to meet you. I\'m currently a student at Columbia University studying Financial Engineering, and want to give an overview of the projects I\'m working on!","date":"2015-11-19T12:00:00.000Z","tags":[],"readingTime":4.175,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2015/11/welcome","title":"Welcome, and an algorithm","date":"2015-11-19T12:00:00.000Z","last_update":{"date":"2015-12-05T12:00:00.000Z"},"authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1449316800000,"prevItem":{"title":"Autocallable Bonds","permalink":"/2015/11/autocallable"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["2061"],{8544:function(e,s,c){c.r(s)}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["8770"],{984:function(e,t,n){n.r(t),n.d(t,{assets:function(){return u},contentTitle:function(){return s},default:function(){return l},frontMatter:function(){return i},metadata:function(){return r},toc:function(){return c}});var r=n(1403),a=n(5893),o=n(65);let i={slug:"2019/06/high-performance-systems",title:"On building high performance systems",date:new Date("2019-07-01T12:00:00.000Z"),last_updated:{date:new Date("2019-09-21T12:00:00.000Z")},authors:["bspeice"],tags:[]},s=void 0,u={authorsImageUrls:[void 0]},c=[];function p(e){let t={p:"p",...(0,o.a)(),...e.components};return(0,a.jsx)(t.p,{children:"Prior to working in the trading industry, my assumption was that High Frequency Trading (HFT) is\nmade up of people who have access to secret techniques mortal developers could only dream of. There\nhad to be some secret art that could only be learned if one had an appropriately tragic backstory."})}function l(e={}){let{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}},65:function(e,t,n){n.d(t,{Z:function(){return s},a:function(){return i}});var r=n(7294);let a={},o=r.createContext(a);function i(e){let t=r.useContext(o);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),r.createElement(o.Provider,{value:t},e.children)}},1403:function(e){e.exports=JSON.parse('{"permalink":"/2019/06/high-performance-systems","source":"@site/blog/2019-06-31-high-performance-systems/index.mdx","title":"On building high performance systems","description":"Prior to working in the trading industry, my assumption was that High Frequency Trading (HFT) is","date":"2019-07-01T12:00:00.000Z","tags":[],"readingTime":12.175,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2019/06/high-performance-systems","title":"On building high performance systems","date":"2019-07-01T12:00:00.000Z","last_updated":{"date":"2019-09-21T12:00:00.000Z"},"authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731207625000,"prevItem":{"title":"Binary format shootout","permalink":"/2019/09/binary-format-shootout"},"nextItem":{"title":"Making bread","permalink":"/2019/05/making-bread"}}')}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["4809"],{3227:function(e,t,n){n.r(t),n.d(t,{assets:function(){return s},contentTitle:function(){return u},default:function(){return m},frontMatter:function(){return o},metadata:function(){return r},toc:function(){return c}});var r=n(4892),a=n(5893),i=n(65);let o={slug:"2016/02/guaranteed-money-maker",title:"Guaranteed money maker",date:new Date("2016-02-03T12:00:00.000Z"),authors:["bspeice"],tags:[]},u=void 0,s={authorsImageUrls:[void 0]},c=[];function l(e){let t={p:"p",...(0,i.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.p,{children:"Developing an investment strategy based on the Martingale betting strategy"}),"\n",(0,a.jsx)(t.p,{children:"If you can see into the future, that is."})]})}function m(e={}){let{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(l,{...e})}):l(e)}},65:function(e,t,n){n.d(t,{Z:function(){return u},a:function(){return o}});var r=n(7294);let a={},i=r.createContext(a);function o(e){let t=r.useContext(i);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(i.Provider,{value:t},e.children)}},4892:function(e){e.exports=JSON.parse('{"permalink":"/2016/02/guaranteed-money-maker","source":"@site/blog/2016-02-03-guaranteed-money-maker/index.mdx","title":"Guaranteed money maker","description":"Developing an investment strategy based on the Martingale betting strategy","date":"2016-02-03T12:00:00.000Z","tags":[],"readingTime":7.695,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2016/02/guaranteed-money-maker","title":"Guaranteed money maker","date":"2016-02-03T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1730678252000,"prevItem":{"title":"Profitability using the investment formula","permalink":"/2016/02/profitability-using-the-investment-formula"},"nextItem":{"title":"Cloudy in Seattle","permalink":"/2016/01/cloudy-in-seattle"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["1680"],{2187:function(e){e.exports=JSON.parse('{"metadata":{"permalink":"/page/3","page":3,"postsPerPage":10,"totalPages":4,"totalCount":34,"previousPage":"/page/2","nextPage":"/page/4","blogDescription":"Blog","blogTitle":"Blog"}}')}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["2792"],{7934:function(e){e.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"default"}')}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["4844"],{531:function(e,t,n){n.r(t),n.d(t,{assets:function(){return l},contentTitle:function(){return i},default:function(){return p},frontMatter:function(){return r},metadata:function(){return a},toc:function(){return u}});var a=n(5288),o=n(5893),s=n(65);let r={slug:"2018/12/what-small-business-really-means",title:'More "what companies really mean"',date:new Date("2018-12-04T12:00:00.000Z"),authors:["bspeice"],tags:[]},i=void 0,l={authorsImageUrls:[void 0]},u=[{value:"How do you feel about production support?",id:"how-do-you-feel-about-production-support",level:2}];function c(e){let t={a:"a",em:"em",h2:"h2",p:"p",strong:"strong",...(0,s.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(t.p,{children:["I recently stumbled across a phenomenal small article entitled\n",(0,o.jsx)(t.a,{href:"https://angel.co/blog/what-startups-really-mean-by-why-should-we-hire-you",children:'What Startups Really Mean By "Why Should We Hire You?"'}),".\nHaving been interviewed by smaller companies (though not exactly startups), the questions and\nsubtexts are the same. There's often a question behind the question that you're actually trying to\nanswer, and I wish I spotted the nuance earlier in my career."]}),"\n",(0,o.jsx)(t.p,{children:"Let me also make note of one more question/euphemism I've come across:"}),"\n",(0,o.jsx)(t.h2,{id:"how-do-you-feel-about-production-support",children:"How do you feel about production support?"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Translation"}),": ",(0,o.jsx)(t.em,{children:"We're a fairly small team, and when things break on an evening/weekend/Christmas\nDay, can we call on you to be there?"})]}),"\n",(0,o.jsx)(t.p,{children:'I\'ve met decidedly few people in my life who truly enjoy the "ops" side of "devops". They\'re\nincredibly good at taking an impossible problem, pre-existing knowledge of arcane arts, and turning\nthat into a functioning system at the end. And if they all left for lunch, we probably wouldn\'t make\nit out the door before the zombie apocalypse.'}),"\n",(0,o.jsx)(t.p,{children:"Larger organizations (in my experience, 500+ person organizations) have the luxury of hiring people\nwho either enjoy that, or play along nicely enough that our systems keep working."}),"\n",(0,o.jsx)(t.p,{children:'Small teams have no such luck. If you\'re interviewing at a small company, especially as a "data\nscientist" or other somesuch position, be aware that systems can and do spontaneously combust at the\nmost inopportune moments.'}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Terrible-but-popular answers include"}),": ",(0,o.jsx)(t.em,{children:"It's a part of the job, and I'm happy to contribute."})]})]})}function p(e={}){let{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},65:function(e,t,n){n.d(t,{Z:function(){return i},a:function(){return r}});var a=n(7294);let o={},s=a.createContext(o);function r(e){let t=a.useContext(s);return a.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),a.createElement(s.Provider,{value:t},e.children)}},5288:function(e){e.exports=JSON.parse('{"permalink":"/2018/12/what-small-business-really-means","source":"@site/blog/2018-12-04-what-small-business-really-means/index.mdx","title":"More \\"what companies really mean\\"","description":"I recently stumbled across a phenomenal small article entitled","date":"2018-12-04T12:00:00.000Z","tags":[],"readingTime":1.205,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2018/12/what-small-business-really-means","title":"More \\"what companies really mean\\"","date":"2018-12-04T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731190109000,"prevItem":{"title":"QADAPT - debug_assert! for allocations","permalink":"/2018/12/allocation-safety"},"nextItem":{"title":"A case study in heaptrack","permalink":"/2018/10/case-study-optimization"}}')}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["7109"],{9948:function(e){e.exports=JSON.parse('{"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null,"count":33}]}')}}]);

101
assets/js/4294.a7567dcb.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["7073"],{2134:function(e,t,n){n.r(t),n.d(t,{assets:function(){return u},contentTitle:function(){return s},default:function(){return l},frontMatter:function(){return a},metadata:function(){return o},toc:function(){return c}});var o=n(2231),i=n(5893),r=n(65);let a={slug:"2015/12/testing-cramer",title:"Testing Cramer",date:new Date("2015-12-26T12:00:00.000Z"),authors:["bspeice"],tags:[]},s=void 0,u={authorsImageUrls:[void 0]},c=[];function h(e){let t={p:"p",...(0,r.a)(),...e.components};return(0,i.jsx)(t.p,{children:"Pursuant to attending a graduate school studying Financial Engineering, I've been a fan of the [Mad Money][1] TV show featuring the bombastic Jim Cramer. One of the things that he's said is that you shouldn't use the futures to predict where the stock market is going to go. But he says it often enough, I've begun to wonder - who is he trying to convince?"})}function l(e={}){let{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},65:function(e,t,n){n.d(t,{Z:function(){return s},a:function(){return a}});var o=n(7294);let i={},r=o.createContext(i);function a(e){let t=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:t},e.children)}},2231:function(e){e.exports=JSON.parse('{"permalink":"/2015/12/testing-cramer","source":"@site/blog/2015-12-26-testing-cramer/index.mdx","title":"Testing Cramer","description":"Pursuant to attending a graduate school studying Financial Engineering, I\'ve been a fan of the Mad Money TV show featuring the bombastic Jim Cramer. One of the things that he\'s said is that you shouldn\'t use the futures to predict where the stock market is going to go. But he says it often enough, I\'ve begun to wonder - who is he trying to convince?","date":"2015-12-26T12:00:00.000Z","tags":[],"readingTime":8.23,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2015/12/testing-cramer","title":"Testing Cramer","date":"2015-12-26T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1730678252000,"prevItem":{"title":"Complaining about the weather","permalink":"/2016/01/complaining-about-the-weather"},"nextItem":{"title":"Autocallable Bonds","permalink":"/2015/11/autocallable"}}')}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["1446"],{8636:function(e,t,n){n.r(t),n.d(t,{assets:function(){return c},contentTitle:function(){return s},default:function(){return p},frontMatter:function(){return o},metadata:function(){return r},toc:function(){return u}});var r=n(3184),a=n(5893),i=n(65);let o={slug:"2019/05/making-bread",title:"Making bread",date:new Date("2019-05-03T12:00:00.000Z"),authors:["bspeice"],tags:[]},s=void 0,c={authorsImageUrls:[void 0]},u=[];function l(e){let t={a:"a",p:"p",...(0,i.a)(),...e.components};return(0,a.jsxs)(t.p,{children:['Having recently started my "gardening leave" between positions, I have some more personal time\navailable. I\'m planning to stay productive, contributing to some open-source projects, but it also\noccurred to me that despite ',(0,a.jsx)(t.a,{href:"https://speice.io/2018/05/hello.html",children:"talking about"}),' bread pics, this\nblog has been purely technical. Maybe I\'ll change the site title from "The Old Speice Guy" to "Bites\nand Bytes"?']})}function p(e={}){let{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(l,{...e})}):l(e)}},65:function(e,t,n){n.d(t,{Z:function(){return s},a:function(){return o}});var r=n(7294);let a={},i=r.createContext(a);function o(e){let t=r.useContext(i);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(i.Provider,{value:t},e.children)}},3184:function(e){e.exports=JSON.parse('{"permalink":"/2019/05/making-bread","source":"@site/blog/2019-05-03-making-bread/index.mdx","title":"Making bread","description":"Having recently started my \\"gardening leave\\" between positions, I have some more personal time","date":"2019-05-03T12:00:00.000Z","tags":[],"readingTime":1.61,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2019/05/making-bread","title":"Making bread","date":"2019-05-03T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731207625000,"prevItem":{"title":"On building high performance systems","permalink":"/2019/06/high-performance-systems"},"nextItem":{"title":"Allocations in Rust: Summary","permalink":"/2019/02/summary"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["7953"],{8873:function(t,e,o){o.r(e),o.d(e,{assets:function(){return s},contentTitle:function(){return c},default:function(){return l},frontMatter:function(){return i},metadata:function(){return n},toc:function(){return u}});var n=o(9098),a=o(5893),r=o(65);let i={slug:"2018/01/captains-cookbook-part-2",title:"Captain's Cookbook: Practical usage",date:new Date("2018-01-16T13:00:00.000Z"),authors:["bspeice"],tags:[]},c=void 0,s={authorsImageUrls:[void 0]},u=[];function p(t){let e={p:"p",...(0,r.a)(),...t.components};return(0,a.jsx)(e.p,{children:"A look at more practical usages of Cap'N Proto"})}function l(t={}){let{wrapper:e}={...(0,r.a)(),...t.components};return e?(0,a.jsx)(e,{...t,children:(0,a.jsx)(p,{...t})}):p(t)}},65:function(t,e,o){o.d(e,{Z:function(){return c},a:function(){return i}});var n=o(7294);let a={},r=n.createContext(a);function i(t){let e=n.useContext(r);return n.useMemo(function(){return"function"==typeof t?t(e):{...e,...t}},[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:i(t.components),n.createElement(r.Provider,{value:e},t.children)}},9098:function(t){t.exports=JSON.parse('{"permalink":"/2018/01/captains-cookbook-part-2","source":"@site/blog/2018-01-16-captains-cookbook-part-2/index.mdx","title":"Captain\'s Cookbook: Practical usage","description":"A look at more practical usages of Cap\'N Proto","date":"2018-01-16T13:00:00.000Z","tags":[],"readingTime":6.51,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2018/01/captains-cookbook-part-2","title":"Captain\'s Cookbook: Practical usage","date":"2018-01-16T13:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731201811000,"prevItem":{"title":"Hello!","permalink":"/2018/05/hello"},"nextItem":{"title":"Captain\'s Cookbook: Project setup","permalink":"/2018/01/captains-cookbook-part-1"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["5810"],{341:function(t,e,s){s.r(e),s.d(e,{assets:function(){return p},contentTitle:function(){return a},default:function(){return l},frontMatter:function(){return r},metadata:function(){return n},toc:function(){return c}});var n=s(8595),i=s(5893),o=s(65);let r={slug:"2018/09/isomorphic-apps",title:"Isomorphic desktop apps with Rust",date:new Date("2018-09-15T12:00:00.000Z"),authors:["bspeice"],tags:[]},a=void 0,p={authorsImageUrls:[void 0]},c=[];function u(t){let e={a:"a",p:"p",...(0,o.a)(),...t.components};return(0,i.jsxs)(e.p,{children:["I both despise Javascript and am stunned by its success doing some really cool things. It's\n",(0,i.jsx)(e.a,{href:"https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript",children:"this duality"})," that's\nled me to a couple of (very) late nights over the past weeks trying to reconcile myself as I\nbootstrap a simple desktop application."]})}function l(t={}){let{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,i.jsx)(e,{...t,children:(0,i.jsx)(u,{...t})}):u(t)}},65:function(t,e,s){s.d(e,{Z:function(){return a},a:function(){return r}});var n=s(7294);let i={},o=n.createContext(i);function r(t){let e=n.useContext(o);return n.useMemo(function(){return"function"==typeof t?t(e):{...e,...t}},[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(i):t.components||i:r(t.components),n.createElement(o.Provider,{value:e},t.children)}},8595:function(t){t.exports=JSON.parse('{"permalink":"/2018/09/isomorphic-apps","source":"@site/blog/2018-09-15-isomorphic-apps/index.mdx","title":"Isomorphic desktop apps with Rust","description":"I both despise Javascript and am stunned by its success doing some really cool things. It\'s","date":"2018-09-15T12:00:00.000Z","tags":[],"readingTime":9.905,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2018/09/isomorphic-apps","title":"Isomorphic desktop apps with Rust","date":"2018-09-15T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731188450000,"prevItem":{"title":"A case study in heaptrack","permalink":"/2018/10/case-study-optimization"},"nextItem":{"title":"Primitives in Rust are weird (and cool)","permalink":"/2018/09/primitives-in-rust-are-weird"}}')}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["9854"],{8448:function(e,t,n){n.r(t),n.d(t,{default:()=>j});var r=n("5893");n("7294");var s=n("7026"),i=n("2743"),l=n("4681"),u=n("6025");let a=()=>(0,u.I)({id:"theme.blog.authorsList.pageTitle",message:"Authors",description:"The title of the authors page"});var h=n("979"),o=n("4315"),c=n("4403"),d=n("1389");let g={authorListItem:"authorListItem_n3yI"};function f(e){let{author:t}=e;return(0,r.jsx)("li",{className:g.authorListItem,children:(0,r.jsx)(d.Z,{as:"h2",author:t,count:t.count})})}function p(e){let{authors:t}=e;return(0,r.jsx)("section",{className:(0,s.Z)("margin-vert--lg",g.authorsListSection),children:(0,r.jsx)("ul",{children:t.map(e=>(0,r.jsx)(f,{author:e},e.key))})})}function j(e){let{authors:t,sidebar:n}=e,u=a();return(0,r.jsxs)(i.FG,{className:(0,s.Z)(l.k.wrapper.blogPages,l.k.page.blogAuthorsListPage),children:[(0,r.jsx)(i.d,{title:u}),(0,r.jsx)(o.Z,{tag:"blog_authors_list"}),(0,r.jsxs)(h.Z,{sidebar:n,children:[(0,r.jsx)(c.Z,{as:"h1",children:u}),(0,r.jsx)(p,{authors:t})]})]})}},131:function(e,t,n){n.d(t,{Z:function(){return u}});var r=n(5893),s=n(7294),i=n(4403);function l(e){let{title:t,headingType:n,children:s}=e;return(0,r.jsxs)("div",{role:"group",children:[(0,r.jsx)(i.Z,{as:n,children:t}),s]})}let u=(0,s.memo)(function(e){let{items:t,yearGroupHeadingClassName:n,ListComponent:s}=e;return function(e,t){var n=[],s=[];function i(){if(0===s.length)return;let e=new Date(s[0].date).getFullYear(),i=function(e,t){var n=[],s=[];function i(){if(0===s.length)return;let e=s[0].title.split(":")[0];s=(s=s.map(e=>({...e,title:e.title.split(":")[1].trim()}))).reverse(),n.push((0,r.jsx)(r.Fragment,{children:(0,r.jsx)(l,{title:e,headingType:"h4",children:(0,r.jsx)("ul",{children:(0,r.jsx)(t,{items:s})})})})),s=[]}for(let l of e){if(l.title.includes(":")){s.push(l);continue}i(),n.push((0,r.jsx)(t,{items:[l]}))}return i(),n}(s,t);n.push((0,r.jsx)(r.Fragment,{children:(0,r.jsx)(l,{title:String(e),headingType:"h3",children:i})})),s=[]}for(let t of e){if(0===s.length){s.push(t);continue}let e=new Date(t.date).getFullYear();e!==new Date(s[0].date).getFullYear()&&i(),s.push(t)}return i(),n}(t,s)})}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["6472"],{3726:function(e,t,i){i.r(t),i.d(t,{default:()=>d});var n=i("5893");i("7294");var o=i("6025"),s=i("2743"),r=i("5654"),a=i("7026"),l=i("4403");function h(e){let{className:t}=e;return(0,n.jsx)("main",{className:(0,a.Z)("container margin-vert--xl",t),children:(0,n.jsx)("div",{className:"row",children:(0,n.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,n.jsx)(l.Z,{as:"h1",className:"hero__title",children:(0,n.jsx)(o.Z,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,n.jsx)("p",{children:(0,n.jsx)(o.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,n.jsx)("p",{children:(0,n.jsx)(o.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}function d(){let e=(0,o.I)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.d,{title:e}),(0,n.jsx)(r.Z,{children:(0,n.jsx)(h,{})})]})}}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["1511"],{6836:function(e,t,n){n.r(t),n.d(t,{assets:function(){return u},contentTitle:function(){return o},default:function(){return p},frontMatter:function(){return a},metadata:function(){return r},toc:function(){return c}});var r=n(7497),i=n(5893),s=n(65);let a={slug:"2018/09/primitives-in-rust-are-weird",title:"Primitives in Rust are weird (and cool)",date:new Date("2018-09-01T12:00:00.000Z"),authors:["bspeice"],tags:[]},o=void 0,u={authorsImageUrls:[void 0]},c=[];function l(e){let t={code:"code",p:"p",pre:"pre",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.p,{children:"I wrote a really small Rust program a while back because I was curious. I was 100% convinced it\ncouldn't possibly run:"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-rust",children:'fn main() {\n println!("{}", 8.to_string())\n}\n'})}),"\n",(0,i.jsx)(t.p,{children:"And to my complete befuddlement, it compiled, ran, and produced a completely sensible output."})]})}function p(e={}){let{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},65:function(e,t,n){n.d(t,{Z:function(){return o},a:function(){return a}});var r=n(7294);let i={},s=r.createContext(i);function a(e){let t=r.useContext(s);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),r.createElement(s.Provider,{value:t},e.children)}},7497:function(e){e.exports=JSON.parse('{"permalink":"/2018/09/primitives-in-rust-are-weird","source":"@site/blog/2018-09-01-primitives-in-rust-are-weird/index.mdx","title":"Primitives in Rust are weird (and cool)","description":"I wrote a really small Rust program a while back because I was curious. I was 100% convinced it","date":"2018-09-01T12:00:00.000Z","tags":[],"readingTime":6.945,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2018/09/primitives-in-rust-are-weird","title":"Primitives in Rust are weird (and cool)","date":"2018-09-01T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731187596000,"prevItem":{"title":"Isomorphic desktop apps with Rust","permalink":"/2018/09/isomorphic-apps"},"nextItem":{"title":"What I learned porting dateutil to Rust","permalink":"/2018/06/dateutil-parser-to-rust"}}')}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["5747"],{7519:function(t,e,n){n.r(e),n.d(e,{assets:function(){return l},contentTitle:function(){return s},default:function(){return p},frontMatter:function(){return a},metadata:function(){return o},toc:function(){return u}});var o=n(4024),r=n(5893),i=n(65);let a={slug:"2018/05/hello",title:"Hello!",date:new Date("2018-05-28T12:00:00.000Z"),authors:["bspeice"],tags:[]},s=void 0,l={authorsImageUrls:[void 0]},u=[];function c(t){let e={p:"p",...(0,i.a)(),...t.components};return(0,r.jsx)(e.p,{children:"I'll do what I can to keep this short, there's plenty of other things we both should be doing right\nnow."})}function p(t={}){let{wrapper:e}={...(0,i.a)(),...t.components};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(c,{...t})}):c(t)}},65:function(t,e,n){n.d(e,{Z:function(){return s},a:function(){return a}});var o=n(7294);let r={},i=o.createContext(r);function a(t){let e=o.useContext(i);return o.useMemo(function(){return"function"==typeof t?t(e):{...e,...t}},[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:a(t.components),o.createElement(i.Provider,{value:e},t.children)}},4024:function(t){t.exports=JSON.parse('{"permalink":"/2018/05/hello","source":"@site/blog/2018-05-28-hello/index.mdx","title":"Hello!","description":"I\'ll do what I can to keep this short, there\'s plenty of other things we both should be doing right","date":"2018-05-28T12:00:00.000Z","tags":[],"readingTime":0.375,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2018/05/hello","title":"Hello!","date":"2018-05-28T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731187596000,"prevItem":{"title":"What I learned porting dateutil to Rust","permalink":"/2018/06/dateutil-parser-to-rust"},"nextItem":{"title":"Captain\'s Cookbook: Practical usage","permalink":"/2018/01/captains-cookbook-part-2"}}')}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["8987"],{3699:function(e,t,n){n.r(t),n.d(t,{assets:function(){return l},contentTitle:function(){return s},default:function(){return d},frontMatter:function(){return i},metadata:function(){return o},toc:function(){return c}});var o=n(6954),a=n(5893),r=n(65);let i={slug:"2018/12/allocation-safety",title:"QADAPT - debug_assert! for allocations",date:new Date("2018-12-15T12:00:00.000Z"),authors:["bspeice"],tags:[]},s=void 0,l={authorsImageUrls:[void 0]},c=[];function u(e){let t={a:"a",blockquote:"blockquote",p:"p",strong:"strong",...(0,r.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.p,{children:"I think it's part of the human condition to ignore perfectly good advice when it comes our way. A\nbit over a month ago, I was dispensing sage wisdom for the ages:"}),"\n",(0,a.jsxs)(t.blockquote,{children:["\n",(0,a.jsxs)(t.p,{children:["I had a really great idea: build a custom allocator that allows you to track your own allocations.\nI gave it a shot, but learned very quickly: ",(0,a.jsx)(t.strong,{children:"never write your own allocator."})]}),"\n",(0,a.jsxs)(t.p,{children:["-- ",(0,a.jsx)(t.a,{href:"/2018/10/case-study-optimization",children:"me"})]}),"\n"]}),"\n",(0,a.jsx)(t.p,{children:"I proceeded to ignore it, because we never really learn from our mistakes."})]})}function d(e={}){let{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(u,{...e})}):u(e)}},65:function(e,t,n){n.d(t,{Z:function(){return s},a:function(){return i}});var o=n(7294);let a={},r=o.createContext(a);function i(e){let t=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),o.createElement(r.Provider,{value:t},e.children)}},6954:function(e){e.exports=JSON.parse('{"permalink":"/2018/12/allocation-safety","source":"@site/blog/2018-12-15-allocation-safety/index.mdx","title":"QADAPT - debug_assert! for allocations","description":"I think it\'s part of the human condition to ignore perfectly good advice when it comes our way. A","date":"2018-12-15T12:00:00.000Z","tags":[],"readingTime":4.775,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2018/12/allocation-safety","title":"QADAPT - debug_assert! for allocations","date":"2018-12-15T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731204300000,"prevItem":{"title":"Allocations in Rust: Foreword","permalink":"/2019/02/understanding-allocations-in-rust"},"nextItem":{"title":"More \\"what companies really mean\\"","permalink":"/2018/12/what-small-business-really-means"}}')}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["8977"],{5155:function(t,e,n){n.r(e),n.d(e,{assets:function(){return u},contentTitle:function(){return s},default:function(){return p},frontMatter:function(){return a},metadata:function(){return r},toc:function(){return l}});var r=n(845),i=n(5893),o=n(65);let a={slug:"2018/06/dateutil-parser-to-rust",title:"What I learned porting dateutil to Rust",date:new Date("2018-06-25T12:00:00.000Z"),authors:["bspeice"],tags:[]},s=void 0,u={authorsImageUrls:[void 0]},l=[];function c(t){let e={a:"a",p:"p",...(0,o.a)(),...t.components};return(0,i.jsxs)(e.p,{children:["I've mostly been a lurker in Rust for a while, making a couple small contributions here and there.\nSo launching ",(0,i.jsx)(e.a,{href:"https://github.com/bspeice/dtparse",children:"dtparse"})," feels like nice step towards becoming a\nfunctioning member of society. But not too much, because then you know people start asking you to\npay bills, and ain't nobody got time for that."]})}function p(t={}){let{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,i.jsx)(e,{...t,children:(0,i.jsx)(c,{...t})}):c(t)}},65:function(t,e,n){n.d(e,{Z:function(){return s},a:function(){return a}});var r=n(7294);let i={},o=r.createContext(i);function a(t){let e=r.useContext(o);return r.useMemo(function(){return"function"==typeof t?t(e):{...e,...t}},[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(i):t.components||i:a(t.components),r.createElement(o.Provider,{value:e},t.children)}},845:function(t){t.exports=JSON.parse('{"permalink":"/2018/06/dateutil-parser-to-rust","source":"@site/blog/2018-06-25-dateutil-parser-to-rust/index.mdx","title":"What I learned porting dateutil to Rust","description":"I\'ve mostly been a lurker in Rust for a while, making a couple small contributions here and there.","date":"2018-06-25T12:00:00.000Z","tags":[],"readingTime":6.99,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2018/06/dateutil-parser-to-rust","title":"What I learned porting dateutil to Rust","date":"2018-06-25T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731201811000,"prevItem":{"title":"Primitives in Rust are weird (and cool)","permalink":"/2018/09/primitives-in-rust-are-weird"},"nextItem":{"title":"Hello!","permalink":"/2018/05/hello"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["7702"],{9085:function(e,t,n){n.r(t),n.d(t,{assets:function(){return s},contentTitle:function(){return u},default:function(){return f},frontMatter:function(){return o},metadata:function(){return i},toc:function(){return l}});var i=n(3071),r=n(5893),a=n(65);let o={slug:"2016/02/profitability-using-the-investment-formula",title:"Profitability using the investment formula",date:new Date("2016-02-26T12:00:00.000Z"),authors:["bspeice"],tags:[]},u=void 0,s={authorsImageUrls:[void 0]},l=[];function c(e){let t={p:"p",...(0,a.a)(),...e.components};return(0,r.jsx)(t.p,{children:"After developing a formula to guide our investing, how do we actually evaluate its performance in the real world?"})}function f(e={}){let{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},65:function(e,t,n){n.d(t,{Z:function(){return u},a:function(){return o}});var i=n(7294);let r={},a=i.createContext(r);function o(e){let t=i.useContext(a);return i.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(a.Provider,{value:t},e.children)}},3071:function(e){e.exports=JSON.parse('{"permalink":"/2016/02/profitability-using-the-investment-formula","source":"@site/blog/2016-02-26-profitability-using-the-investment-formula/index.mdx","title":"Profitability using the investment formula","description":"After developing a formula to guide our investing, how do we actually evaluate its performance in the real world?","date":"2016-02-26T12:00:00.000Z","tags":[],"readingTime":7.675,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2016/02/profitability-using-the-investment-formula","title":"Profitability using the investment formula","date":"2016-02-26T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1730678252000,"prevItem":{"title":"Predicting Santander customer happiness","permalink":"/2016/03/predicting-santander-customer-happiness"},"nextItem":{"title":"Guaranteed money maker","permalink":"/2016/02/guaranteed-money-maker"}}')}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["2433"],{5241:function(e,t,n){n.r(t),n.d(t,{assets:function(){return u},contentTitle:function(){return s},default:function(){return m},frontMatter:function(){return a},metadata:function(){return o},toc:function(){return l}});var o=n(610),i=n(5893),r=n(65);let a={slug:"2019/02/summary",title:"Allocations in Rust: Summary",date:new Date("2019-02-09T12:00:00.000Z"),authors:["bspeice"],tags:[]},s=void 0,u={authorsImageUrls:[void 0]},l=[];function c(e){let t={code:"code",p:"p",...(0,r.a)(),...e.components};return(0,i.jsxs)(t.p,{children:["While there's a lot of interesting detail captured in this series, it's often helpful to have a\ndocument that answers some \"yes/no\" questions. You may not care about what an ",(0,i.jsx)(t.code,{children:"Iterator"})," looks like\nin assembly, you just need to know whether it allocates an object on the heap or not. And while Rust\nwill prioritize the fastest behavior it can, here are the rules for each memory type:"]})}function m(e={}){let{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},65:function(e,t,n){n.d(t,{Z:function(){return s},a:function(){return a}});var o=n(7294);let i={},r=o.createContext(i);function a(e){let t=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:t},e.children)}},610:function(e){e.exports=JSON.parse('{"permalink":"/2019/02/summary","source":"@site/blog/2019-02-09-summary/index.mdx","title":"Allocations in Rust: Summary","description":"While there\'s a lot of interesting detail captured in this series, it\'s often helpful to have a","date":"2019-02-09T12:00:00.000Z","tags":[],"readingTime":1.095,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2019/02/summary","title":"Allocations in Rust: Summary","date":"2019-02-09T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731204300000,"prevItem":{"title":"Making bread","permalink":"/2019/05/making-bread"},"nextItem":{"title":"Allocations in Rust: Compiler optimizations","permalink":"/2019/02/08/compiler-optimizations"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["5168"],{1200:function(e,t,n){n.r(t),n.d(t,{assets:function(){return c},contentTitle:function(){return s},default:function(){return l},frontMatter:function(){return a},metadata:function(){return o},toc:function(){return u}});var o=n(9810),i=n(5893),r=n(65);let a={slug:"2016/11/pca-audio-compression",title:"PCA audio compression",date:new Date("2016-11-01T12:00:00.000Z"),authors:["bspeice"],tags:[]},s=void 0,c={authorsImageUrls:[void 0]},u=[];function p(e){let t={p:"p",...(0,r.a)(),...e.components};return(0,i.jsx)(t.p,{children:"In which I apply Machine Learning techniques to Digital Signal Processing to astounding failure."})}function l(e={}){let{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(p,{...e})}):p(e)}},65:function(e,t,n){n.d(t,{Z:function(){return s},a:function(){return a}});var o=n(7294);let i={},r=o.createContext(i);function a(e){let t=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:t},e.children)}},9810:function(e){e.exports=JSON.parse('{"permalink":"/2016/11/pca-audio-compression","source":"@site/blog/2016-11-01-PCA-audio-compression/index.mdx","title":"PCA audio compression","description":"In which I apply Machine Learning techniques to Digital Signal Processing to astounding failure.","date":"2016-11-01T12:00:00.000Z","tags":[],"readingTime":10.39,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2016/11/pca-audio-compression","title":"PCA audio compression","date":"2016-11-01T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1730863976000,"prevItem":{"title":"Captain\'s Cookbook: Project setup","permalink":"/2018/01/captains-cookbook-part-1"},"nextItem":{"title":"A Rustic re-podcasting server","permalink":"/2016/10/rustic-repodcasting"}}')}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["5969"],{3807:function(e,t,n){n.r(t),n.d(t,{default:function(){return c}});var s=n(5893),u=n(4819);let c=()=>(0,s.jsx)(u.Z,{children:(0,s.jsx)("meta",{httpEquiv:"Refresh",content:"0; url='/atom.xml'"})})}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["4794"],{3775:function(e,t,n){n.r(t),n.d(t,{assets:function(){return l},contentTitle:function(){return u},default:function(){return p},frontMatter:function(){return i},metadata:function(){return a},toc:function(){return c}});var a=n(8279),o=n(5893),r=n(65);let i={slug:"2015/11/autocallable",title:"Autocallable Bonds",date:new Date("2015-11-27T12:00:00.000Z"),authors:["bspeice"],tags:[]},u=void 0,l={authorsImageUrls:[void 0]},c=[];function s(e){let t={p:"p",...(0,r.a)(),...e.components};return(0,o.jsx)(t.p,{children:"For a final project, my group was tasked with understanding three exotic derivatives: The Athena, Phoenix without memory, and Phoenix with memory autocallable products."})}function p(e={}){let{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(s,{...e})}):s(e)}},65:function(e,t,n){n.d(t,{Z:function(){return u},a:function(){return i}});var a=n(7294);let o={},r=a.createContext(o);function i(e){let t=a.useContext(r);return a.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),a.createElement(r.Provider,{value:t},e.children)}},8279:function(e){e.exports=JSON.parse('{"permalink":"/2015/11/autocallable","source":"@site/blog/2015-11-27-autocallable/index.mdx","title":"Autocallable Bonds","description":"For a final project, my group was tasked with understanding three exotic derivatives: The Athena, Phoenix without memory, and Phoenix with memory autocallable products.","date":"2015-11-27T12:00:00.000Z","tags":[],"readingTime":11.085,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2015/11/autocallable","title":"Autocallable Bonds","date":"2015-11-27T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1730678252000,"prevItem":{"title":"Testing Cramer","permalink":"/2015/12/testing-cramer"},"nextItem":{"title":"Welcome, and an algorithm","permalink":"/2015/11/welcome"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["4593"],{5959:function(e,t,n){n.r(t),n.d(t,{assets:function(){return l},contentTitle:function(){return r},default:function(){return p},frontMatter:function(){return a},metadata:function(){return o},toc:function(){return u}});var o=n(9395),i=n(5893),s=n(65);let a={title:"Allocations in Rust: Compiler optimizations",description:"A lot. The answer is a lot.",date:new Date("2019-02-08T12:00:00.000Z"),last_updated:{date:new Date("2019-02-10T12:00:00.000Z")},tags:[]},r=void 0,l={authorsImageUrls:[]},u=[];function c(e){let t={p:"p",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.p,{children:"Up to this point, we've been discussing memory usage in the Rust language by focusing on simple\nrules that are mostly right for small chunks of code. We've spent time showing how those rules work\nthemselves out in practice, and become familiar with reading the assembly code needed to see each\nmemory type (global, stack, heap) in action."}),"\n",(0,i.jsx)(t.p,{children:"Throughout the series so far, we've put a handicap on the code. In the name of consistent and\nunderstandable results, we've asked the compiler to pretty please leave the training wheels on. Now\nis the time where we throw out all the rules and take off the kid gloves. As it turns out, both the\nRust compiler and the LLVM optimizers are incredibly sophisticated, and we'll step back and let them\ndo their job."})]})}function p(e={}){let{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},65:function(e,t,n){n.d(t,{Z:function(){return r},a:function(){return a}});var o=n(7294);let i={},s=o.createContext(i);function a(e){let t=o.useContext(s);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(s.Provider,{value:t},e.children)}},9395:function(e){e.exports=JSON.parse('{"permalink":"/2019/02/08/compiler-optimizations","source":"@site/blog/2019-02-08-compiler-optimizations/index.mdx","title":"Allocations in Rust: Compiler optimizations","description":"A lot. The answer is a lot.","date":"2019-02-08T12:00:00.000Z","tags":[],"readingTime":3.695,"hasTruncateMarker":true,"authors":[],"frontMatter":{"title":"Allocations in Rust: Compiler optimizations","description":"A lot. The answer is a lot.","date":"2019-02-08T12:00:00.000Z","last_updated":{"date":"2019-02-10T12:00:00.000Z"},"tags":[]},"unlisted":false,"lastUpdatedAt":1731204300000,"prevItem":{"title":"Allocations in Rust: Summary","permalink":"/2019/02/summary"},"nextItem":{"title":"Allocations in Rust: Dynamic memory","permalink":"/2019/02/a-heaping-helping"}}')}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["5478"],{8422:function(e,t,n){n.r(t),n.d(t,{assets:function(){return i},contentTitle:function(){return l},default:function(){return m},frontMatter:function(){return o},metadata:function(){return a},toc:function(){return u}});var a=n(5288),s=n(5893),r=n(65);let o={slug:"2018/12/what-small-business-really-means",title:'More "what companies really mean"',date:new Date("2018-12-04T12:00:00.000Z"),authors:["bspeice"],tags:[]},l=void 0,i={authorsImageUrls:[void 0]},u=[];function c(e){let t={a:"a",p:"p",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["I recently stumbled across a phenomenal small article entitled\n",(0,s.jsx)(t.a,{href:"https://angel.co/blog/what-startups-really-mean-by-why-should-we-hire-you",children:'What Startups Really Mean By "Why Should We Hire You?"'}),".\nHaving been interviewed by smaller companies (though not exactly startups), the questions and\nsubtexts are the same. There's often a question behind the question that you're actually trying to\nanswer, and I wish I spotted the nuance earlier in my career."]}),"\n",(0,s.jsx)(t.p,{children:"Let me also make note of one more question/euphemism I've come across:"})]})}function m(e={}){let{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},65:function(e,t,n){n.d(t,{Z:function(){return l},a:function(){return o}});var a=n(7294);let s={},r=a.createContext(s);function o(e){let t=a.useContext(r);return a.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),a.createElement(r.Provider,{value:t},e.children)}},5288:function(e){e.exports=JSON.parse('{"permalink":"/2018/12/what-small-business-really-means","source":"@site/blog/2018-12-04-what-small-business-really-means/index.mdx","title":"More \\"what companies really mean\\"","description":"I recently stumbled across a phenomenal small article entitled","date":"2018-12-04T12:00:00.000Z","tags":[],"readingTime":1.205,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2018/12/what-small-business-really-means","title":"More \\"what companies really mean\\"","date":"2018-12-04T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731190109000,"prevItem":{"title":"QADAPT - debug_assert! for allocations","permalink":"/2018/12/allocation-safety"},"nextItem":{"title":"A case study in heaptrack","permalink":"/2018/10/case-study-optimization"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["9990"],{4802:function(e,n,c){c.d(n,{Z:function(){return i}});let i=c(1336)},7936:function(){}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["7293"],{2204:function(e,t,r){r.r(t),r.d(t,{default:function(){return m}});var i=r(5893);r(7294);var a=r(3012),n=r(6025),s=r(2743),l=r(1437),c=r(5654),d=r(4403);function o(e){let{year:t,posts:r}=e,n=(0,l.P)({day:"numeric",month:"long",timeZone:"UTC"}),s=e=>n.format(new Date(e));return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(d.Z,{as:"h3",id:t,children:t}),(0,i.jsx)("ul",{children:r.map(e=>(0,i.jsx)("li",{children:(0,i.jsxs)(a.Z,{to:e.metadata.permalink,children:[s(e.metadata.date)," - ",e.metadata.title]})},e.metadata.date))})]})}function h(e){let{years:t}=e;return(0,i.jsx)("section",{className:"margin-vert--lg",children:(0,i.jsx)("div",{className:"container",children:(0,i.jsx)("div",{className:"row",children:t.map((e,t)=>(0,i.jsx)("div",{className:"col col--4 margin-vert--lg",children:(0,i.jsx)(o,{...e})},t))})})})}function m(e){let{archive:t}=e,r=(0,n.I)({id:"theme.blog.archive.title",message:"Archive",description:"The page & hero title of the blog archive page"}),a=(0,n.I)({id:"theme.blog.archive.description",message:"Archive",description:"The page & hero description of the blog archive page"}),l=Array.from(t.blogPosts.reduce((e,t)=>{let r=t.metadata.date.split("-")[0],i=e.get(r)??[];return e.set(r,[t,...i])},new Map),e=>{let[t,r]=e;return{year:t,posts:r}});return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.d,{title:r,description:a}),(0,i.jsxs)(c.Z,{children:[(0,i.jsx)("header",{className:"hero hero--primary",children:(0,i.jsxs)("div",{className:"container",children:[(0,i.jsx)(d.Z,{as:"h1",className:"hero__title",children:r}),(0,i.jsx)("p",{className:"hero__subtitle",children:a})]})}),(0,i.jsx)("main",{children:l.length>0&&(0,i.jsx)(h,{years:l})})]})]})}},1437:function(e,t,r){r.d(t,{P:function(){return a}});var i=r(2933);function a(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{i18n:{currentLocale:t}}=(0,i.Z)(),r=function(){let{i18n:{currentLocale:e,localeConfigs:t}}=(0,i.Z)();return t[e].calendar}();return new Intl.DateTimeFormat(t,{calendar:r,...e})}}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["1000"],{7493:function(e,t,n){n.r(t),n.d(t,{assets:function(){return c},contentTitle:function(){return s},default:function(){return m},frontMatter:function(){return a},metadata:function(){return o},toc:function(){return l}});var o=n(2340),r=n(5893),i=n(65);let a={slug:"2019/02/stacking-up",title:"Allocations in Rust: Fixed memory",date:new Date("2019-02-06T12:00:00.000Z"),authors:["bspeice"],tags:[]},s=void 0,c={authorsImageUrls:[void 0]},l=[];function u(e){let t={code:"code",p:"p",...(0,i.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.code,{children:"const"})," and ",(0,r.jsx)(t.code,{children:"static"})," are perfectly fine, but it's relatively rare that we know at compile-time about\neither values or references that will be the same for the duration of our program. Put another way,\nit's not often the case that either you or your compiler knows how much memory your entire program\nwill ever need."]}),"\n",(0,r.jsx)(t.p,{children:'However, there are still some optimizations the compiler can do if it knows how much memory\nindividual functions will need. Specifically, the compiler can make use of "stack" memory (as\nopposed to "heap" memory) which can be managed far faster in both the short- and long-term.'})]})}function m(e={}){let{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},65:function(e,t,n){n.d(t,{Z:function(){return s},a:function(){return a}});var o=n(7294);let r={},i=o.createContext(r);function a(e){let t=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),o.createElement(i.Provider,{value:t},e.children)}},2340:function(e){e.exports=JSON.parse('{"permalink":"/2019/02/stacking-up","source":"@site/blog/2019-02-06-stacking-up/index.mdx","title":"Allocations in Rust: Fixed memory","description":"const and static are perfectly fine, but it\'s relatively rare that we know at compile-time about","date":"2019-02-06T12:00:00.000Z","tags":[],"readingTime":15.165,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2019/02/stacking-up","title":"Allocations in Rust: Fixed memory","date":"2019-02-06T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731204300000,"prevItem":{"title":"Allocations in Rust: Dynamic memory","permalink":"/2019/02/a-heaping-helping"},"nextItem":{"title":"Allocations in Rust: Global memory","permalink":"/2019/02/the-whole-world"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["8514"],{1434:function(e,t,n){n.r(t),n.d(t,{default:()=>v});var i=n("5893");n("7294");var r=n("7026"),l=n("2933"),s=n("2743"),a=n("4681"),o=n("979"),c=n("6025"),u=n("790");function p(e){let{metadata:t}=e,{previousPage:n,nextPage:r}=t;return(0,i.jsxs)("nav",{className:"pagination-nav","aria-label":(0,c.I)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"}),children:[n&&(0,i.jsx)(u.Z,{permalink:n,title:(0,i.jsx)(c.Z,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)",children:"Newer entries"})}),r&&(0,i.jsx)(u.Z,{permalink:r,title:(0,i.jsx)(c.Z,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)",children:"Older entries"}),isNext:!0})]})}var d=n("4315"),g=n("4183"),h=n("2553");function x(e){let{items:t,component:n=h.Z}=e;return(0,i.jsx)(i.Fragment,{children:t.map(e=>{let{content:t}=e;return(0,i.jsx)(g.n4,{content:t,children:(0,i.jsx)(n,{children:(0,i.jsx)(t,{})})},t.metadata.permalink)})})}var j=n("4819");function f(e){let t=(0,g.CS)(e);return(0,i.jsx)(j.Z,{children:(0,i.jsx)("script",{type:"application/ld+json",children:JSON.stringify(t)})})}function m(e){let{metadata:t}=e,{siteConfig:{title:n}}=(0,l.Z)(),{blogDescription:r,blogTitle:a,permalink:o}=t;return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.d,{title:"/"===o?n:a,description:r}),(0,i.jsx)(d.Z,{tag:"blog_posts_list"})]})}function b(e){let{metadata:t,items:n,sidebar:r}=e;return(0,i.jsxs)(o.Z,{sidebar:r,children:[(0,i.jsx)(x,{items:n}),(0,i.jsx)(p,{metadata:t})]})}function v(e){return(0,i.jsxs)(s.FG,{className:(0,r.Z)(a.k.wrapper.blogPages,a.k.page.blogListPage),children:[(0,i.jsx)(m,{...e}),(0,i.jsx)(f,{...e}),(0,i.jsx)(b,{...e})]})}},131:function(e,t,n){n.d(t,{Z:function(){return a}});var i=n(5893),r=n(7294),l=n(4403);function s(e){let{title:t,headingType:n,children:r}=e;return(0,i.jsxs)("div",{role:"group",children:[(0,i.jsx)(l.Z,{as:n,children:t}),r]})}let a=(0,r.memo)(function(e){let{items:t,yearGroupHeadingClassName:n,ListComponent:r}=e;return function(e,t){var n=[],r=[];function l(){if(0===r.length)return;let e=new Date(r[0].date).getFullYear(),l=function(e,t){var n=[],r=[];function l(){if(0===r.length)return;let e=r[0].title.split(":")[0];r=(r=r.map(e=>({...e,title:e.title.split(":")[1].trim()}))).reverse(),n.push((0,i.jsx)(i.Fragment,{children:(0,i.jsx)(s,{title:e,headingType:"h4",children:(0,i.jsx)("ul",{children:(0,i.jsx)(t,{items:r})})})})),r=[]}for(let s of e){if(s.title.includes(":")){r.push(s);continue}l(),n.push((0,i.jsx)(t,{items:[s]}))}return l(),n}(r,t);n.push((0,i.jsx)(i.Fragment,{children:(0,i.jsx)(s,{title:String(e),headingType:"h3",children:l})})),r=[]}for(let t of e){if(0===r.length){r.push(t);continue}let e=new Date(t.date).getFullYear();e!==new Date(r[0].date).getFullYear()&&l(),r.push(t)}return l(),n}(t,r)})}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["7365"],{2050:function(e){e.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["7627"],{7548:function(e){e.exports=JSON.parse('{"blogBasePath":"/","blogTitle":"Blog","authorsListPath":"/authors"}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["4595"],{3200:function(e){e.exports=JSON.parse('{"metadata":{"permalink":"/page/2","page":2,"postsPerPage":10,"totalPages":4,"totalCount":34,"previousPage":"/","nextPage":"/page/3","blogDescription":"Blog","blogTitle":"Blog"}}')}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["2628"],{9804:function(e,t,n){n.r(t),n.d(t,{assets:function(){return u},contentTitle:function(){return a},default:function(){return l},frontMatter:function(){return o},metadata:function(){return r},toc:function(){return c}});var r=n(510),s=n(5893),i=n(65);let o={slug:"2016/10/rustic-repodcasting",title:"A Rustic re-podcasting server",date:new Date("2016-10-22T12:00:00.000Z"),authors:["bspeice"],tags:[]},a=void 0,u={authorsImageUrls:[void 0]},c=[];function p(e){let t={p:"p",...(0,i.a)(),...e.components};return(0,s.jsx)(t.p,{children:"Learning Rust by fire (it sounds better than learning by corrosion)"})}function l(e={}){let{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(p,{...e})}):p(e)}},65:function(e,t,n){n.d(t,{Z:function(){return a},a:function(){return o}});var r=n(7294);let s={},i=r.createContext(s);function o(e){let t=r.useContext(i);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:t},e.children)}},510:function(e){e.exports=JSON.parse('{"permalink":"/2016/10/rustic-repodcasting","source":"@site/blog/2016-10-22-rustic-repodcasting/index.mdx","title":"A Rustic re-podcasting server","description":"Learning Rust by fire (it sounds better than learning by corrosion)","date":"2016-10-22T12:00:00.000Z","tags":[],"readingTime":10.405,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2016/10/rustic-repodcasting","title":"A Rustic re-podcasting server","date":"2016-10-22T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1730863976000,"prevItem":{"title":"PCA audio compression","permalink":"/2016/11/pca-audio-compression"},"nextItem":{"title":"Event studies and earnings releases","permalink":"/2016/06/event-studies-and-earnings-releases"}}')}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["6078"],{7126:function(e,t,n){n.r(t),n.d(t,{assets:function(){return c},contentTitle:function(){return a},default:function(){return p},frontMatter:function(){return s},metadata:function(){return o},toc:function(){return l}});var o=n(4024),r=n(5893),i=n(65);let s={slug:"2018/05/hello",title:"Hello!",date:new Date("2018-05-28T12:00:00.000Z"),authors:["bspeice"],tags:[]},a=void 0,c={authorsImageUrls:[void 0]},l=[];function u(e){let t={img:"img",p:"p",...(0,i.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.p,{children:"I'll do what I can to keep this short, there's plenty of other things we both should be doing right\nnow."}),"\n",(0,r.jsx)(t.p,{children:"If you're here for the bread pics, and to marvel in some other culinary side projects, I've got you\ncovered:"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Saturday Bread",src:n(7115).Z+"",width:"3036",height:"2729"})}),"\n",(0,r.jsx)(t.p,{children:"And no, I'm not posting pictures of earlier attempts that ended up turning into rocks in the oven."}),"\n",(0,r.jsx)(t.p,{children:"Okay, just one:"}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Bread as rock",src:n(3811).Z+"",width:"3036",height:"2380"})}),"\n",(0,r.jsx)(t.p,{children:"Thanks, and keep it amazing."})]})}function p(e={}){let{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},7115:function(e,t,n){n.d(t,{Z:function(){return o}});let o=n.p+"assets/images/bread-52bb152a7c29148e837d94bdf1755e1c.jpg"},3811:function(e,t,n){n.d(t,{Z:function(){return o}});let o=n.p+"assets/images/rocks-6b9a0c44bf45210d496e2ebe2f896e0c.jpg"},65:function(e,t,n){n.d(t,{Z:function(){return a},a:function(){return s}});var o=n(7294);let r={},i=o.createContext(r);function s(e){let t=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),o.createElement(i.Provider,{value:t},e.children)}},4024:function(e){e.exports=JSON.parse('{"permalink":"/2018/05/hello","source":"@site/blog/2018-05-28-hello/index.mdx","title":"Hello!","description":"I\'ll do what I can to keep this short, there\'s plenty of other things we both should be doing right","date":"2018-05-28T12:00:00.000Z","tags":[],"readingTime":0.375,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2018/05/hello","title":"Hello!","date":"2018-05-28T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731187596000,"prevItem":{"title":"What I learned porting dateutil to Rust","permalink":"/2018/06/dateutil-parser-to-rust"},"nextItem":{"title":"Captain\'s Cookbook: Practical usage","permalink":"/2018/01/captains-cookbook-part-2"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["9798"],{6563:function(e,t,n){n.r(t),n.d(t,{assets:function(){return u},contentTitle:function(){return c},default:function(){return f},frontMatter:function(){return a},metadata:function(){return i},toc:function(){return s}});var i=n(2208),r=n(5893),o=n(65);let a={slug:"2016/04/tick-tock",title:"Tick tock...",date:new Date("2016-04-06T12:00:00.000Z"),authors:["bspeice"],tags:[]},c=void 0,u={authorsImageUrls:[void 0]},s=[];function l(e){let t={p:"p",...(0,o.a)(),...e.components};return(0,r.jsx)(t.p,{children:"If all we have is a finite number of heartbeats left, what about me?"})}function f(e={}){let{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},65:function(e,t,n){n.d(t,{Z:function(){return c},a:function(){return a}});var i=n(7294);let r={},o=i.createContext(r);function a(e){let t=i.useContext(o);return i.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(o.Provider,{value:t},e.children)}},2208:function(e){e.exports=JSON.parse('{"permalink":"/2016/04/tick-tock","source":"@site/blog/2016-04-06-tick-tock/index.mdx","title":"Tick tock...","description":"If all we have is a finite number of heartbeats left, what about me?","date":"2016-04-06T12:00:00.000Z","tags":[],"readingTime":10.125,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2016/04/tick-tock","title":"Tick tock...","date":"2016-04-06T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1730863976000,"prevItem":{"title":"The unfair casino","permalink":"/2016/05/the-unfair-casino"},"nextItem":{"title":"Tweet like me","permalink":"/2016/03/tweet-like-me"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["5523"],{6297:function(e,t,n){n.r(t),n.d(t,{assets:function(){return s},contentTitle:function(){return c},default:function(){return p},frontMatter:function(){return a},metadata:function(){return i},toc:function(){return u}});var i=n(5419),r=n(5893),o=n(65);let a={slug:"2016/03/tweet-like-me",title:"Tweet like me",date:new Date("2016-03-28T12:00:00.000Z"),authors:["bspeice"],tags:[]},c=void 0,s={authorsImageUrls:[void 0]},u=[];function l(e){let t={p:"p",...(0,o.a)(),...e.components};return(0,r.jsx)(t.p,{children:"In which I try to create a robot that will tweet like I tweet."})}function p(e={}){let{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},65:function(e,t,n){n.d(t,{Z:function(){return c},a:function(){return a}});var i=n(7294);let r={},o=i.createContext(r);function a(e){let t=i.useContext(o);return i.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),i.createElement(o.Provider,{value:t},e.children)}},5419:function(e){e.exports=JSON.parse('{"permalink":"/2016/03/tweet-like-me","source":"@site/blog/2016-03-28-tweet-like-me/index.mdx","title":"Tweet like me","description":"In which I try to create a robot that will tweet like I tweet.","date":"2016-03-28T12:00:00.000Z","tags":[],"readingTime":8.23,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2016/03/tweet-like-me","title":"Tweet like me","date":"2016-03-28T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1730678252000,"prevItem":{"title":"Tick tock...","permalink":"/2016/04/tick-tock"},"nextItem":{"title":"Predicting Santander customer happiness","permalink":"/2016/03/predicting-santander-customer-happiness"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["6992"],{1712:function(e,t,n){n.r(t),n.d(t,{assets:function(){return c},contentTitle:function(){return s},default:function(){return f},frontMatter:function(){return o},metadata:function(){return i},toc:function(){return u}});var i=n(4018),r=n(5893),a=n(65);let o={slug:"2016/05/the-unfair-casino",title:"The unfair casino",date:new Date("2016-05-15T12:00:00.000Z"),authors:["bspeice"],tags:[]},s=void 0,c={authorsImageUrls:[void 0]},u=[];function l(e){let t={p:"p",...(0,a.a)(),...e.components};return(0,r.jsx)(t.p,{children:"Trying to figure out how exactly two dice are loaded in a cheating casino."})}function f(e={}){let{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},65:function(e,t,n){n.d(t,{Z:function(){return s},a:function(){return o}});var i=n(7294);let r={},a=i.createContext(r);function o(e){let t=i.useContext(a);return i.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(a.Provider,{value:t},e.children)}},4018:function(e){e.exports=JSON.parse('{"permalink":"/2016/05/the-unfair-casino","source":"@site/blog/2016-05-15-the-unfair-casino/index.mdx","title":"The unfair casino","description":"Trying to figure out how exactly two dice are loaded in a cheating casino.","date":"2016-05-15T12:00:00.000Z","tags":[],"readingTime":14.62,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2016/05/the-unfair-casino","title":"The unfair casino","date":"2016-05-15T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1730679360000,"prevItem":{"title":"Event studies and earnings releases","permalink":"/2016/06/event-studies-and-earnings-releases"},"nextItem":{"title":"Tick tock...","permalink":"/2016/04/tick-tock"}}')}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["2998"],{8127:function(e,t,n){n.d(t,{Z:function(){return s}});var i=n(5893);n(7294);var l=n(6025),r=n(790);function s(e){let{nextItem:t,prevItem:n}=e;return(0,i.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,l.I)({id:"theme.blog.post.paginator.navAriaLabel",message:"Blog post page navigation",description:"The ARIA label for the blog posts pagination"}),children:[t&&(0,i.jsx)(r.Z,{...t,subLabel:(0,i.jsx)(l.Z,{id:"theme.blog.post.paginator.olderPost",description:"The blog post button label to navigate to the older/next post",children:"Older post"})}),n&&(0,i.jsx)(r.Z,{...n,subLabel:(0,i.jsx)(l.Z,{id:"theme.blog.post.paginator.newerPost",description:"The blog post button label to navigate to the newer/previous post",children:"Newer post"}),isNext:!0})]})}},131:function(e,t,n){n.d(t,{Z:function(){return o}});var i=n(5893),l=n(7294),r=n(4403);function s(e){let{title:t,headingType:n,children:l}=e;return(0,i.jsxs)("div",{role:"group",children:[(0,i.jsx)(r.Z,{as:n,children:t}),l]})}let o=(0,l.memo)(function(e){let{items:t,yearGroupHeadingClassName:n,ListComponent:l}=e;return function(e,t){var n=[],l=[];function r(){if(0===l.length)return;let e=new Date(l[0].date).getFullYear(),r=function(e,t){var n=[],l=[];function r(){if(0===l.length)return;let e=l[0].title.split(":")[0];l=(l=l.map(e=>({...e,title:e.title.split(":")[1].trim()}))).reverse(),n.push((0,i.jsx)(i.Fragment,{children:(0,i.jsx)(s,{title:e,headingType:"h4",children:(0,i.jsx)("ul",{children:(0,i.jsx)(t,{items:l})})})})),l=[]}for(let s of e){if(s.title.includes(":")){l.push(s);continue}r(),n.push((0,i.jsx)(t,{items:[s]}))}return r(),n}(l,t);n.push((0,i.jsx)(i.Fragment,{children:(0,i.jsx)(s,{title:String(e),headingType:"h3",children:r})})),l=[]}for(let t of e){if(0===l.length){l.push(t);continue}let e=new Date(t.date).getFullYear();e!==new Date(l[0].date).getFullYear()&&r(),l.push(t)}return r(),n}(t,l)})}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["7120"],{4260:function(e,t,n){n.r(t),n.d(t,{assets:function(){return l},contentTitle:function(){return a},default:function(){return d},frontMatter:function(){return r},metadata:function(){return o},toc:function(){return c}});var o=n(6583),i=n(5893),s=n(65);let r={slug:"2019/02/understanding-allocations-in-rust",title:"Allocations in Rust: Foreword",date:new Date("2019-02-04T12:00:00.000Z"),authors:["bspeice"],tags:[]},a=void 0,l={authorsImageUrls:[void 0]},c=[];function u(e){let t={a:"a",code:"code",p:"p",...(0,s.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:["There's an alchemy of distilling complex technical topics into articles and videos that change the\nway programmers see the tools they interact with on a regular basis. I knew what a linker was, but\nthere's a staggering amount of complexity in between\n",(0,i.jsxs)(t.a,{href:"https://www.youtube.com/watch?v=dOfucXtyEsU",children:["the OS and ",(0,i.jsx)(t.code,{children:"main()"})]}),". Rust programmers use the\n",(0,i.jsx)(t.a,{href:"https://doc.rust-lang.org/stable/std/boxed/struct.Box.html",children:(0,i.jsx)(t.code,{children:"Box"})})," type all the time, but there's a\nrich history of the Rust language itself wrapped up in\n",(0,i.jsx)(t.a,{href:"https://manishearth.github.io/blog/2017/01/10/rust-tidbits-box-is-special/",children:"how special it is"}),"."]}),"\n",(0,i.jsx)(t.p,{children:"In a similar vein, this series attempts to look at code and understand how memory is used; the\ncomplex choreography of operating system, compiler, and program that frees you to focus on\nfunctionality far-flung from frivolous book-keeping. The Rust compiler relieves a great deal of the\ncognitive burden associated with memory management, but we're going to step into its world for a\nwhile."}),"\n",(0,i.jsx)(t.p,{children:"Let's learn a bit about memory in Rust."})]})}function d(e={}){let{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},65:function(e,t,n){n.d(t,{Z:function(){return a},a:function(){return r}});var o=n(7294);let i={},s=o.createContext(i);function r(e){let t=o.useContext(s);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),o.createElement(s.Provider,{value:t},e.children)}},6583:function(e){e.exports=JSON.parse('{"permalink":"/2019/02/understanding-allocations-in-rust","source":"@site/blog/2019-02-04-understanding-allocations-in-rust/index.mdx","title":"Allocations in Rust: Foreword","description":"There\'s an alchemy of distilling complex technical topics into articles and videos that change the","date":"2019-02-04T12:00:00.000Z","tags":[],"readingTime":3.785,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2019/02/understanding-allocations-in-rust","title":"Allocations in Rust: Foreword","date":"2019-02-04T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731204300000,"prevItem":{"title":"Allocations in Rust: Global memory","permalink":"/2019/02/the-whole-world"},"nextItem":{"title":"QADAPT - debug_assert! for allocations","permalink":"/2018/12/allocation-safety"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["9127"],{4487:function(e,t,n){n.r(t),n.d(t,{assets:function(){return l},contentTitle:function(){return r},default:function(){return m},frontMatter:function(){return a},metadata:function(){return s},toc:function(){return u}});var s=n(5238),i=n(5893),o=n(65);let a={slug:"2019/02/a-heaping-helping",title:"Allocations in Rust: Dynamic memory",date:new Date("2019-02-07T12:00:00.000Z"),authors:["bspeice"],tags:[]},r=void 0,l={authorsImageUrls:[void 0]},u=[];function c(e){let t={a:"a",em:"em",p:"p",strong:"strong",...(0,o.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:["Managing dynamic memory is hard. Some languages assume users will do it themselves (C, C++), and\nsome languages go to extreme lengths to protect users from themselves (Java, Python). In Rust, how\nthe language uses dynamic memory (also referred to as the ",(0,i.jsx)(t.strong,{children:"heap"}),") is a system called ",(0,i.jsx)(t.em,{children:"ownership"}),".\nAnd as the docs mention, ownership\n",(0,i.jsx)(t.a,{href:"https://doc.rust-lang.org/book/ch04-00-understanding-ownership.html",children:"is Rust's most unique feature"}),"."]}),"\n",(0,i.jsxs)(t.p,{children:["The heap is used in two situations; when the compiler is unable to predict either the ",(0,i.jsx)(t.em,{children:"total size of\nmemory needed"}),", or ",(0,i.jsx)(t.em,{children:"how long the memory is needed for"}),", it allocates space in the heap."]})]})}function m(e={}){let{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},65:function(e,t,n){n.d(t,{Z:function(){return r},a:function(){return a}});var s=n(7294);let i={},o=s.createContext(i);function a(e){let t=s.useContext(o);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(o.Provider,{value:t},e.children)}},5238:function(e){e.exports=JSON.parse('{"permalink":"/2019/02/a-heaping-helping","source":"@site/blog/2019-02-07-a-heaping-helping/index.mdx","title":"Allocations in Rust: Dynamic memory","description":"Managing dynamic memory is hard. Some languages assume users will do it themselves (C, C++), and","date":"2019-02-07T12:00:00.000Z","tags":[],"readingTime":5.86,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2019/02/a-heaping-helping","title":"Allocations in Rust: Dynamic memory","date":"2019-02-07T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731204300000,"prevItem":{"title":"Allocations in Rust: Compiler optimizations","permalink":"/2019/02/08/compiler-optimizations"},"nextItem":{"title":"Allocations in Rust: Fixed memory","permalink":"/2019/02/stacking-up"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["6138"],{9994:function(e,t,n){n.r(t),n.d(t,{assets:function(){return c},contentTitle:function(){return s},default:function(){return p},frontMatter:function(){return i},metadata:function(){return o},toc:function(){return u}});var o=n(4111),a=n(5893),r=n(65);let i={slug:"2018/10/case-study-optimization",title:"A case study in heaptrack",date:new Date("2018-10-08T12:00:00.000Z"),authors:["bspeice"],tags:[]},s=void 0,c={authorsImageUrls:[void 0]},u=[];function l(e){let t={a:"a",blockquote:"blockquote",p:"p",...(0,r.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.p,{children:"I remember early in my career someone joking that:"}),"\n",(0,a.jsxs)(t.blockquote,{children:["\n",(0,a.jsx)(t.p,{children:"Programmers have it too easy these days. They should learn to develop in low memory environments\nand be more efficient."}),"\n"]}),"\n",(0,a.jsxs)(t.p,{children:["...though it's not like the first code I wrote was for a\n",(0,a.jsx)(t.a,{href:"https://web.archive.org/web/20180924060530/https://education.ti.com/en/products/calculators/graphing-calculators/ti-84-plus-se",children:"graphing calculator"}),"\npacking a whole 24KB of RAM."]}),"\n",(0,a.jsxs)(t.p,{children:["But the principle remains: be efficient with the resources you have, because\n",(0,a.jsx)(t.a,{href:"http://exo-blog.blogspot.com/2007/09/what-intel-giveth-microsoft-taketh-away.html",children:"what Intel giveth, Microsoft taketh away"}),"."]})]})}function p(e={}){let{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(l,{...e})}):l(e)}},65:function(e,t,n){n.d(t,{Z:function(){return s},a:function(){return i}});var o=n(7294);let a={},r=o.createContext(a);function i(e){let t=o.useContext(r);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:i(e.components),o.createElement(r.Provider,{value:t},e.children)}},4111:function(e){e.exports=JSON.parse('{"permalink":"/2018/10/case-study-optimization","source":"@site/blog/2018-10-08-case-study-optimization/index.mdx","title":"A case study in heaptrack","description":"I remember early in my career someone joking that:","date":"2018-10-08T12:00:00.000Z","tags":[],"readingTime":4.26,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2018/10/case-study-optimization","title":"A case study in heaptrack","date":"2018-10-08T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731189722000,"prevItem":{"title":"More \\"what companies really mean\\"","permalink":"/2018/12/what-small-business-really-means"},"nextItem":{"title":"Isomorphic desktop apps with Rust","permalink":"/2018/09/isomorphic-apps"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["6424"],{5347:function(e,t,n){n.r(t),n.d(t,{assets:function(){return l},contentTitle:function(){return s},default:function(){return h},frontMatter:function(){return o},metadata:function(){return r},toc:function(){return c}});var r=n(6160),i=n(5893),a=n(65);let o={slug:"2019/12/release-the-gil",title:"Release the GIL",date:new Date("2019-12-14T12:00:00.000Z"),authors:["bspeice"],tags:[]},s=void 0,l={authorsImageUrls:[void 0]},c=[];function u(e){let t={a:"a",em:"em",p:"p",...(0,a.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:["Complaining about the ",(0,i.jsx)(t.a,{href:"https://wiki.python.org/moin/GlobalInterpreterLock",children:"Global Interpreter Lock"}),"\n(GIL) seems like a rite of passage for Python developers. It's easy to criticize a design decision\nmade before multi-core CPU's were widely available, but the fact that it's still around indicates\nthat it generally works ",(0,i.jsx)(t.a,{href:"https://wiki.c2.com/?PrematureOptimization",children:"Good"}),"\n",(0,i.jsx)(t.a,{href:"https://wiki.c2.com/?YouArentGonnaNeedIt",children:"Enough"}),". Besides, there are simple and effective\nworkarounds; it's not hard to start a\n",(0,i.jsx)(t.a,{href:"https://docs.python.org/3/library/multiprocessing.html",children:"new process"})," and use message passing to\nsynchronize code running in parallel."]}),"\n",(0,i.jsxs)(t.p,{children:["Still, wouldn't it be nice to have more than a single active interpreter thread? In an age of\nasynchronicity and ",(0,i.jsx)(t.em,{children:"M:N"})," threading, Python seems lacking. The ideal scenario is to take advantage of\nboth Python's productivity and the modern CPU's parallel capabilities."]})]})}function h(e={}){let{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},65:function(e,t,n){n.d(t,{Z:function(){return s},a:function(){return o}});var r=n(7294);let i={},a=r.createContext(i);function o(e){let t=r.useContext(a);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),r.createElement(a.Provider,{value:t},e.children)}},6160:function(e){e.exports=JSON.parse('{"permalink":"/2019/12/release-the-gil","source":"@site/blog/2019-12-14-release-the-gil/index.mdx","title":"Release the GIL","description":"Complaining about the Global Interpreter Lock","date":"2019-12-14T12:00:00.000Z","tags":[],"readingTime":8.58,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2019/12/release-the-gil","title":"Release the GIL","date":"2019-12-14T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731207983000,"prevItem":{"title":"The webpack industrial complex","permalink":"/2011/11/webpack-industrial-complex"},"nextItem":{"title":"Binary format shootout","permalink":"/2019/09/binary-format-shootout"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["9994"],{1244:function(e){e.exports=JSON.parse('{"metadata":{"permalink":"/page/4","page":4,"postsPerPage":10,"totalPages":4,"totalCount":34,"previousPage":"/page/3","blogDescription":"Blog","blogTitle":"Blog"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["8276"],{2128:function(e,t,n){n.r(t),n.d(t,{assets:function(){return u},contentTitle:function(){return s},default:function(){return d},frontMatter:function(){return r},metadata:function(){return o},toc:function(){return c}});var o=n(4729),a=n(5893),i=n(65);let r={slug:"2011/11/webpack-industrial-complex",title:"The webpack industrial complex",date:new Date("2022-11-20T12:00:00.000Z"),authors:["bspeice"],tags:[]},s=void 0,u={authorsImageUrls:[void 0]},c=[];function l(e){let t={p:"p",...(0,i.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.p,{children:'This started because I wanted to build a synthesizer. Setting a goal of "digital DX7" was ambitious, but I needed something unrelated to the day job. Beyond that, working with audio seemed like a good challenge. I enjoy performance-focused code, and performance problems in audio are conspicuous. Building a web project was an obvious choice because of the web audio API documentation and independence from a large Digital Audio Workstation (DAW).'}),"\n",(0,a.jsx)(t.p,{children:"The project was soon derailed trying to sort out technical issues unrelated to the original purpose. Finding a resolution was a frustrating journey, and it's still not clear whether those problems were my fault. As a result, I'm writing this to try making sense of it, as a case study/reference material, and to salvage something from the process."})]})}function d(e={}){let{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(l,{...e})}):l(e)}},65:function(e,t,n){n.d(t,{Z:function(){return s},a:function(){return r}});var o=n(7294);let a={},i=o.createContext(a);function r(e){let t=o.useContext(i);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:r(e.components),o.createElement(i.Provider,{value:t},e.children)}},4729:function(e){e.exports=JSON.parse('{"permalink":"/2011/11/webpack-industrial-complex","source":"@site/blog/2022-11-20-webpack-industrial-complex/index.mdx","title":"The webpack industrial complex","description":"This started because I wanted to build a synthesizer. Setting a goal of \\"digital DX7\\" was ambitious, but I needed something unrelated to the day job. Beyond that, working with audio seemed like a good challenge. I enjoy performance-focused code, and performance problems in audio are conspicuous. Building a web project was an obvious choice because of the web audio API documentation and independence from a large Digital Audio Workstation (DAW).","date":"2022-11-20T12:00:00.000Z","tags":[],"readingTime":4.51,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2011/11/webpack-industrial-complex","title":"The webpack industrial complex","date":"2022-11-20T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731274898000,"nextItem":{"title":"Release the GIL","permalink":"/2019/12/release-the-gil"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["8998"],{7508:function(e,t,n){n.r(t),n.d(t,{assets:function(){return l},contentTitle:function(){return s},default:function(){return d},frontMatter:function(){return r},metadata:function(){return o},toc:function(){return c}});var o=n(1495),i=n(5893),a=n(65);let r={slug:"2019/02/the-whole-world",title:"Allocations in Rust: Global memory",date:new Date("2019-02-05T12:00:00.000Z"),authors:["bspeice"],tags:[]},s=void 0,l={authorsImageUrls:[void 0]},c=[];function u(e){let t={a:"a",code:"code",em:"em",p:"p",...(0,a.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:["The first memory type we'll look at is pretty special: when Rust can prove that a ",(0,i.jsx)(t.em,{children:"value"})," is fixed\nfor the life of a program (",(0,i.jsx)(t.code,{children:"const"}),"), and when a ",(0,i.jsx)(t.em,{children:"reference"})," is unique for the life of a program\n(",(0,i.jsx)(t.code,{children:"static"})," as a declaration, not\n",(0,i.jsx)(t.a,{href:"https://doc.rust-lang.org/book/ch10-03-lifetime-syntax.html#the-static-lifetime",children:(0,i.jsx)(t.code,{children:"'static"})})," as a\nlifetime), we can make use of global memory. This special section of data is embedded directly in\nthe program binary so that variables are ready to go once the program loads; no additional\ncomputation is necessary."]}),"\n",(0,i.jsxs)(t.p,{children:["Understanding the value/reference distinction is important for reasons we'll go into below, and\nwhile the\n",(0,i.jsx)(t.a,{href:"https://github.com/rust-lang/rfcs/blob/master/text/0246-const-vs-static.md",children:"full specification"})," for\nthese two keywords is available, we'll take a hands-on approach to the topic."]})]})}function d(e={}){let{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(u,{...e})}):u(e)}},65:function(e,t,n){n.d(t,{Z:function(){return s},a:function(){return r}});var o=n(7294);let i={},a=o.createContext(i);function r(e){let t=o.useContext(a);return o.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),o.createElement(a.Provider,{value:t},e.children)}},1495:function(e){e.exports=JSON.parse('{"permalink":"/2019/02/the-whole-world","source":"@site/blog/2019-02-05-the-whole-world/index.mdx","title":"Allocations in Rust: Global memory","description":"The first memory type we\'ll look at is pretty special: when Rust can prove that a value is fixed","date":"2019-02-05T12:00:00.000Z","tags":[],"readingTime":7.485,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2019/02/the-whole-world","title":"Allocations in Rust: Global memory","date":"2019-02-05T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731204300000,"prevItem":{"title":"Allocations in Rust: Fixed memory","permalink":"/2019/02/stacking-up"},"nextItem":{"title":"Allocations in Rust: Foreword","permalink":"/2019/02/understanding-allocations-in-rust"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["3956"],{4297:function(e,t,n){n.r(t),n.d(t,{assets:function(){return l},contentTitle:function(){return a},default:function(){return u},frontMatter:function(){return o},metadata:function(){return i},toc:function(){return c}});var i=n(610),s=n(5893),r=n(65);let o={slug:"2019/02/summary",title:"Allocations in Rust: Summary",date:new Date("2019-02-09T12:00:00.000Z"),authors:["bspeice"],tags:[]},a=void 0,l={authorsImageUrls:[void 0]},c=[];function d(e){let t={a:"a",code:"code",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["While there's a lot of interesting detail captured in this series, it's often helpful to have a\ndocument that answers some \"yes/no\" questions. You may not care about what an ",(0,s.jsx)(t.code,{children:"Iterator"})," looks like\nin assembly, you just need to know whether it allocates an object on the heap or not. And while Rust\nwill prioritize the fastest behavior it can, here are the rules for each memory type:"]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Global Allocation"}),":"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"const"})," is a fixed value; the compiler is allowed to copy it wherever useful."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.code,{children:"static"})," is a fixed reference; the compiler will guarantee it is unique."]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Stack Allocation"}),":"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Everything not using a smart pointer will be allocated on the stack."}),"\n",(0,s.jsx)(t.li,{children:"Structs, enums, iterators, arrays, and closures are all stack allocated."}),"\n",(0,s.jsxs)(t.li,{children:["Cell types (",(0,s.jsx)(t.code,{children:"RefCell"}),") behave like smart pointers, but are stack-allocated."]}),"\n",(0,s.jsxs)(t.li,{children:["Inlining (",(0,s.jsx)(t.code,{children:"#[inline]"}),") will not affect allocation behavior for better or worse."]}),"\n",(0,s.jsxs)(t.li,{children:["Types that are marked ",(0,s.jsx)(t.code,{children:"Copy"})," are guaranteed to have their contents stack-allocated."]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Heap Allocation"}),":"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Smart pointers (",(0,s.jsx)(t.code,{children:"Box"}),", ",(0,s.jsx)(t.code,{children:"Rc"}),", ",(0,s.jsx)(t.code,{children:"Mutex"}),", etc.) allocate their contents in heap memory."]}),"\n",(0,s.jsxs)(t.li,{children:["Collections (",(0,s.jsx)(t.code,{children:"HashMap"}),", ",(0,s.jsx)(t.code,{children:"Vec"}),", ",(0,s.jsx)(t.code,{children:"String"}),", etc.) allocate their contents in heap memory."]}),"\n",(0,s.jsx)(t.li,{children:"Some smart pointers in the standard library have counterparts in other crates that don't need heap\nmemory. If possible, use those."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Container Sizes in Rust",src:n(9209).Z+"",width:"960",height:"540"})}),"\n",(0,s.jsxs)(t.p,{children:["-- ",(0,s.jsx)(t.a,{href:"https://docs.google.com/presentation/d/1q-c7UAyrUlM-eZyTo1pd8SZ0qwA_wYxmPZVOQkoDmH4/edit?usp=sharing",children:"Raph Levien"})]})]})}function u(e={}){let{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},9209:function(e,t,n){n.d(t,{Z:function(){return i}});let i=n.p+"assets/images/container-size-7fd54cbb2391e3e7310b0424c5f92cc1.svg"},65:function(e,t,n){n.d(t,{Z:function(){return a},a:function(){return o}});var i=n(7294);let s={},r=i.createContext(s);function o(e){let t=i.useContext(r);return i.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:t},e.children)}},610:function(e){e.exports=JSON.parse('{"permalink":"/2019/02/summary","source":"@site/blog/2019-02-09-summary/index.mdx","title":"Allocations in Rust: Summary","description":"While there\'s a lot of interesting detail captured in this series, it\'s often helpful to have a","date":"2019-02-09T12:00:00.000Z","tags":[],"readingTime":1.095,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2019/02/summary","title":"Allocations in Rust: Summary","date":"2019-02-09T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731204300000,"prevItem":{"title":"Making bread","permalink":"/2019/05/making-bread"},"nextItem":{"title":"Allocations in Rust: Compiler optimizations","permalink":"/2019/02/08/compiler-optimizations"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["6781"],{1490:function(e,t,n){n.r(t),n.d(t,{assets:function(){return o},contentTitle:function(){return u},default:function(){return d},frontMatter:function(){return a},metadata:function(){return s},toc:function(){return c}});var s=n(173),r=n(5893),i=n(65);let a={slug:"2016/06/event-studies-and-earnings-releases",title:"Event studies and earnings releases",date:new Date("2016-06-08T12:00:00.000Z"),authors:["bspeice"],tags:[]},u=void 0,o={authorsImageUrls:[void 0]},c=[];function l(e){let t={p:"p",...(0,i.a)(),...e.components};return(0,r.jsx)(t.p,{children:"Or, being suspicious of market insiders."})}function d(e={}){let{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},65:function(e,t,n){n.d(t,{Z:function(){return u},a:function(){return a}});var s=n(7294);let r={},i=s.createContext(r);function a(e){let t=s.useContext(i);return s.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(i.Provider,{value:t},e.children)}},173:function(e){e.exports=JSON.parse('{"permalink":"/2016/06/event-studies-and-earnings-releases","source":"@site/blog/2016-06-08-event-studies-and-earnings-releases/index.mdx","title":"Event studies and earnings releases","description":"Or, being suspicious of market insiders.","date":"2016-06-08T12:00:00.000Z","tags":[],"readingTime":16.01,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2016/06/event-studies-and-earnings-releases","title":"Event studies and earnings releases","date":"2016-06-08T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1730863976000,"prevItem":{"title":"A Rustic re-podcasting server","permalink":"/2016/10/rustic-repodcasting"},"nextItem":{"title":"The unfair casino","permalink":"/2016/05/the-unfair-casino"}}')}}]);

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["3533"],{1867:function(t,e,o){o.r(e),o.d(e,{assets:function(){return c},contentTitle:function(){return s},default:function(){return l},frontMatter:function(){return i},metadata:function(){return n},toc:function(){return u}});var n=o(457),a=o(5893),r=o(65);let i={slug:"2018/01/captains-cookbook-part-1",title:"Captain's Cookbook: Project setup",date:new Date("2018-01-16T12:00:00.000Z"),authors:["bspeice"],tags:[]},s=void 0,c={authorsImageUrls:[void 0]},u=[];function p(t){let e={p:"p",...(0,r.a)(),...t.components};return(0,a.jsx)(e.p,{children:"A basic introduction to getting started with Cap'N Proto."})}function l(t={}){let{wrapper:e}={...(0,r.a)(),...t.components};return e?(0,a.jsx)(e,{...t,children:(0,a.jsx)(p,{...t})}):p(t)}},65:function(t,e,o){o.d(e,{Z:function(){return s},a:function(){return i}});var n=o(7294);let a={},r=n.createContext(a);function i(t){let e=n.useContext(r);return n.useMemo(function(){return"function"==typeof t?t(e):{...e,...t}},[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(a):t.components||a:i(t.components),n.createElement(r.Provider,{value:e},t.children)}},457:function(t){t.exports=JSON.parse('{"permalink":"/2018/01/captains-cookbook-part-1","source":"@site/blog/2018-01-16-captains-cookbok-part-1/index.mdx","title":"Captain\'s Cookbook: Project setup","description":"A basic introduction to getting started with Cap\'N Proto.","date":"2018-01-16T12:00:00.000Z","tags":[],"readingTime":7.555,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2018/01/captains-cookbook-part-1","title":"Captain\'s Cookbook: Project setup","date":"2018-01-16T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1731201811000,"prevItem":{"title":"Captain\'s Cookbook: Practical usage","permalink":"/2018/01/captains-cookbook-part-2"},"nextItem":{"title":"PCA audio compression","permalink":"/2016/11/pca-audio-compression"}}')}}]);

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
"use strict";(self.webpackChunkspeice_io=self.webpackChunkspeice_io||[]).push([["8863"],{4174:function(e,t,n){n.r(t),n.d(t,{assets:function(){return c},contentTitle:function(){return u},default:function(){return p},frontMatter:function(){return a},metadata:function(){return r},toc:function(){return l}});var r=n(7133),o=n(5893),i=n(65);let a={slug:"2016/01/complaining-about-the-weather",title:"Complaining about the weather",date:new Date("2016-01-01T12:00:00.000Z"),authors:["bspeice"],tags:[]},u=void 0,c={authorsImageUrls:[void 0]},l=[];function s(e){let t={p:"p",...(0,i.a)(),...e.components};return(0,o.jsx)(t.p,{children:"Figuring out whether people should be complaining about the recent weather in North Carolina."})}function p(e={}){let{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(s,{...e})}):s(e)}},65:function(e,t,n){n.d(t,{Z:function(){return u},a:function(){return a}});var r=n(7294);let o={},i=r.createContext(o);function a(e){let t=r.useContext(i);return r.useMemo(function(){return"function"==typeof e?e(t):{...t,...e}},[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),r.createElement(i.Provider,{value:t},e.children)}},7133:function(e){e.exports=JSON.parse('{"permalink":"/2016/01/complaining-about-the-weather","source":"@site/blog/2016-01-01-complaining-about-the-weather/index.mdx","title":"Complaining about the weather","description":"Figuring out whether people should be complaining about the recent weather in North Carolina.","date":"2016-01-01T12:00:00.000Z","tags":[],"readingTime":7.475,"hasTruncateMarker":true,"authors":[{"name":"Bradlee Speice","socials":{"github":"https://github.com/bspeice"},"key":"bspeice","page":null}],"frontMatter":{"slug":"2016/01/complaining-about-the-weather","title":"Complaining about the weather","date":"2016-01-01T12:00:00.000Z","authors":["bspeice"],"tags":[]},"unlisted":false,"lastUpdatedAt":1730678252000,"prevItem":{"title":"Cloudy in Seattle","permalink":"/2016/01/cloudy-in-seattle"},"nextItem":{"title":"Testing Cramer","permalink":"/2015/12/testing-cramer"}}')}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long