{"@attributes":{"version":"2.0"},"channel":{"title":"Noah Watkins","link":"https:\/\/makedist.com\/","description":"Recent content on Noah Watkins","generator":"Hugo","language":"en","lastBuildDate":"Sat, 31 Aug 2024 00:00:00 +0000","item":[{"title":"What's new in Seastar - issue 4","link":"https:\/\/makedist.com\/posts\/2024\/08\/31\/whats-new-in-seastar-issue-4\/","pubDate":"Sat, 31 Aug 2024 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2024\/08\/31\/whats-new-in-seastar-issue-4\/","description":"A summary of recent developments in the <a href=\"https:\/\/seastar.io\/\">C++ Seastar project<\/a>."},{"title":"What's new in Seastar - issue 3","link":"https:\/\/makedist.com\/posts\/2024\/04\/22\/whats-new-in-seastar-issue-3\/","pubDate":"Mon, 22 Apr 2024 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2024\/04\/22\/whats-new-in-seastar-issue-3\/","description":"A summary of recent developments in the <a href=\"https:\/\/seastar.io\/\">C++ Seastar project<\/a>."},{"title":"What's new in Seastar - issue 2","link":"https:\/\/makedist.com\/posts\/2023\/12\/01\/whats-new-in-seastar-issue-2\/","pubDate":"Fri, 01 Dec 2023 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2023\/12\/01\/whats-new-in-seastar-issue-2\/","description":"A summary of recent developments in the <a href=\"https:\/\/seastar.io\/\">C++ Seastar project<\/a>."},{"title":"A virtual machine approach to fuzzing interfaces","link":"https:\/\/makedist.com\/posts\/2023\/11\/09\/a-virtual-machine-approach-to-fuzzing-interfaces\/","pubDate":"Thu, 09 Nov 2023 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2023\/11\/09\/a-virtual-machine-approach-to-fuzzing-interfaces\/","description":"Clang&rsquo;s libfuzzer can design adverserial programs."},{"title":"What's new in Seastar - issue 1","link":"https:\/\/makedist.com\/posts\/2023\/04\/30\/whats-new-in-seastar-issue-1\/","pubDate":"Sun, 30 Apr 2023 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2023\/04\/30\/whats-new-in-seastar-issue-1\/","description":"A summary of recent developments in the <a href=\"https:\/\/seastar.io\/\">C++ Seastar project<\/a>."},{"title":"Seastar's semaphore utility","link":"https:\/\/makedist.com\/posts\/2021\/05\/17\/seastars-semaphore-utility\/","pubDate":"Mon, 17 May 2021 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2021\/05\/17\/seastars-semaphore-utility\/","description":"Everyone&rsquo;s favorite concurency control device."},{"title":"Seastar's timer utility","link":"https:\/\/makedist.com\/posts\/2021\/05\/04\/seastars-timer-utility\/","pubDate":"Tue, 04 May 2021 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2021\/05\/04\/seastars-timer-utility\/","description":"Efficiently manage a bunch of scheduled, asynchronous upcalls."},{"title":"Seastar's gate utility","link":"https:\/\/makedist.com\/posts\/2021\/02\/03\/seastars-gate-utility\/","pubDate":"Wed, 03 Feb 2021 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2021\/02\/03\/seastars-gate-utility\/","description":"Synchronize access to resources by tracking active fibers."},{"title":"Seastar's weak pointer","link":"https:\/\/makedist.com\/posts\/2020\/11\/17\/seastars-weak-pointer\/","pubDate":"Tue, 17 Nov 2020 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2020\/11\/17\/seastars-weak-pointer\/","description":"The non-owning counterpart to Seastar&rsquo;s shared pointer."},{"title":"Seastar's temporary buffer","link":"https:\/\/makedist.com\/posts\/2020\/08\/23\/seastars-temporary-buffer\/","pubDate":"Sun, 23 Aug 2020 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2020\/08\/23\/seastars-temporary-buffer\/","description":"A staple utility for memory management in Seastar."},{"title":"About","link":"https:\/\/makedist.com\/about\/","pubDate":"Fri, 14 Aug 2020 00:00:00 +0000","guid":"https:\/\/makedist.com\/about\/","description":{}},{"title":"Seastar's deleter utility","link":"https:\/\/makedist.com\/posts\/2020\/08\/12\/seastars-deleter-utility\/","pubDate":"Wed, 12 Aug 2020 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2020\/08\/12\/seastars-deleter-utility\/","description":"A souped up tool for building RAII objects."},{"title":"Seastar's shared pointer","link":"https:\/\/makedist.com\/posts\/2020\/08\/02\/seastars-shared-pointer\/","pubDate":"Sun, 02 Aug 2020 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2020\/08\/02\/seastars-shared-pointer\/","description":"A reference counted smart pointer with unique optimizations."},{"title":"Video of my Cephalocon 2019 Talk","link":"https:\/\/makedist.com\/posts\/2019\/05\/30\/video-of-my-cephalocon-2019-talk\/","pubDate":"Thu, 30 May 2019 10:35:34 -0700","guid":"https:\/\/makedist.com\/posts\/2019\/05\/30\/video-of-my-cephalocon-2019-talk\/","description":"Creating active objects with Lua in the Ceph distributed storage system."},{"title":"Video of my Cephalocon 2018 Talk","link":"https:\/\/makedist.com\/posts\/2019\/05\/30\/video-of-my-cephalocon-2018-talk\/","pubDate":"Thu, 30 May 2019 10:35:30 -0700","guid":"https:\/\/makedist.com\/posts\/2019\/05\/30\/video-of-my-cephalocon-2018-talk\/","description":"How we built a distributed shared-log on top of Ceph."},{"title":"Getting started with the smf rpc framework","link":"https:\/\/makedist.com\/posts\/2019\/03\/22\/getting-started-with-the-smf-rpc-framework\/","pubDate":"Fri, 22 Mar 2019 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2019\/03\/22\/getting-started-with-the-smf-rpc-framework\/","description":"Learn how to use the fastest RPC in the west"},{"title":"Video of my talk at Lua Workshop 2017","link":"https:\/\/makedist.com\/posts\/2018\/03\/13\/video-of-my-talk-at-lua-workshop-2017\/","pubDate":"Tue, 13 Mar 2018 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2018\/03\/13\/video-of-my-talk-at-lua-workshop-2017\/","description":"Creating active objects with Lua in the Ceph distributed storage system."},{"title":"Ceph OSD state machine visualization","link":"https:\/\/makedist.com\/posts\/2018\/03\/04\/ceph-osd-state-machine-visualization\/","pubDate":"Sun, 04 Mar 2018 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2018\/03\/04\/ceph-osd-state-machine-visualization\/","description":"Using clang to extract a state machine diagram from Ceph&rsquo;s C++ implementation."},{"title":"Management of the CruzDB database catalog","link":"https:\/\/makedist.com\/posts\/2018\/02\/22\/management-of-the-cruzdb-database-catalog\/","pubDate":"Thu, 22 Feb 2018 00:00:01 -0800","guid":"https:\/\/makedist.com\/posts\/2018\/02\/22\/management-of-the-cruzdb-database-catalog\/","description":"Taking the CruzDB data model beyond a simple, flat key space."},{"title":"How CruzDB manages transaction afterimages","link":"https:\/\/makedist.com\/posts\/2018\/02\/22\/how-cruzdb-manages-transaction-afterimages\/","pubDate":"Thu, 22 Feb 2018 00:00:00 -0800","guid":"https:\/\/makedist.com\/posts\/2018\/02\/22\/how-cruzdb-manages-transaction-afterimages\/","description":"Increasing transaction throughput by writing database snapshots in parallel."},{"title":"An overview of transaction management in CruzDB","link":"https:\/\/makedist.com\/posts\/2018\/02\/20\/an-overview-of-transaction-management-in-cruzdb\/","pubDate":"Tue, 20 Feb 2018 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2018\/02\/20\/an-overview-of-transaction-management-in-cruzdb\/","description":"A shared-log creates interesting challenges for transaction management."},{"title":"CruzDB is one large copy-on-write tree","link":"https:\/\/makedist.com\/posts\/2018\/02\/18\/cruzdb-is-one-large-copy-on-write-tree\/","pubDate":"Sun, 18 Feb 2018 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2018\/02\/18\/cruzdb-is-one-large-copy-on-write-tree\/","description":"Each transaction in CruzDB is stored in a log as a copy-on-write tree delta."},{"title":"An introduction to the CruzDB database system","link":"https:\/\/makedist.com\/posts\/2018\/02\/15\/an-introduction-to-the-cruzdb-database-system\/","pubDate":"Thu, 15 Feb 2018 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2018\/02\/15\/an-introduction-to-the-cruzdb-database-system\/","description":"CruzDB is an immutable database built on top of a distributed shared-log."},{"title":"Systems research I'm watching for in 2018","link":"https:\/\/makedist.com\/posts\/2018\/01\/15\/systems-research-im-watching-for-in-2018\/","pubDate":"Mon, 15 Jan 2018 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2018\/01\/15\/systems-research-im-watching-for-in-2018\/","description":"Distributed shared memory systems, language runtimes, and server frameworks."},{"title":"Sharding the LRU node cache in CruzDB","link":"https:\/\/makedist.com\/posts\/2017\/06\/20\/sharding-the-lru-node-cache-in-cruzdb\/","pubDate":"Tue, 20 Jun 2017 09:19:12 -0700","guid":"https:\/\/makedist.com\/posts\/2017\/06\/20\/sharding-the-lru-node-cache-in-cruzdb\/","description":"Improving read performance by sharding the LRU node cache."},{"title":"Debuting the performance of CruzDB","link":"https:\/\/makedist.com\/posts\/2017\/06\/14\/debuting-the-performance-of-cruzdb\/","pubDate":"Wed, 14 Jun 2017 10:54:39 -0700","guid":"https:\/\/makedist.com\/posts\/2017\/06\/14\/debuting-the-performance-of-cruzdb\/","description":"Hot of the press performance results show plenty of room to improve."},{"title":"Slow placement group read operations in Ceph","link":"https:\/\/makedist.com\/posts\/2016\/12\/10\/slow-placement-group-read-operations-in-ceph\/","pubDate":"Sat, 10 Dec 2016 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2016\/12\/10\/slow-placement-group-read-operations-in-ceph\/","description":"An unsolved mystery involving slow reads and Ceph placement groups."},{"title":"Adding a new placement group operation in Ceph","link":"https:\/\/makedist.com\/posts\/2016\/12\/04\/adding-a-new-placement-group-operation-in-ceph\/","pubDate":"Sun, 04 Dec 2016 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2016\/12\/04\/adding-a-new-placement-group-operation-in-ceph\/","description":"Teaching Ceph new tricks on entire groups of objects."},{"title":"Measuring userfaultfd page-fault latency","link":"https:\/\/makedist.com\/posts\/2016\/10\/10\/measuring-userfaultfd-page-fault-latency\/","pubDate":"Mon, 10 Oct 2016 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2016\/10\/10\/measuring-userfaultfd-page-fault-latency\/","description":"How fast can my application service its own page fault?"},{"title":"Building an immutable key-value store on zlog","link":"https:\/\/makedist.com\/posts\/2016\/08\/02\/building-an-immutable-key-value-store-on-zlog\/","pubDate":"Tue, 02 Aug 2016 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2016\/08\/02\/building-an-immutable-key-value-store-on-zlog\/","description":"Persistent data structures are the dopest shit."},{"title":"ZLog project update (mid-2016 edition)","link":"https:\/\/makedist.com\/posts\/2016\/06\/30\/zlog-project-update-mid-2016-edition\/","pubDate":"Thu, 30 Jun 2016 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2016\/06\/30\/zlog-project-update-mid-2016-edition\/","description":"Project funding, design updates, and improved performance."},{"title":"RADOS object class development activity","link":"https:\/\/makedist.com\/posts\/2016\/01\/06\/rados-object-class-development-activity\/","pubDate":"Wed, 06 Jan 2016 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2016\/01\/06\/rados-object-class-development-activity\/","description":"Spoiler alert: object classes are <em>HOT<\/em>."},{"title":"Toward dynamic RADOS object class management","link":"https:\/\/makedist.com\/posts\/2015\/12\/14\/toward-dynamic-rados-object-class-management\/","pubDate":"Mon, 14 Dec 2015 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2015\/12\/14\/toward-dynamic-rados-object-class-management\/","description":"Persisting Lua-based RADOS object classes in Ceph."},{"title":"Load Lua RADOS classes from local file system","link":"https:\/\/makedist.com\/posts\/2015\/12\/06\/load-lua-rados-classes-from-local-file-system\/","pubDate":"Sun, 06 Dec 2015 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2015\/12\/06\/load-lua-rados-classes-from-local-file-system\/","description":"Supporting the <em>installation<\/em> of Lua-based RADOS object classes."},{"title":"ZLog asynchronous I\/O support","link":"https:\/\/makedist.com\/posts\/2015\/09\/04\/zlog-asynchronous-i\/o-support\/","pubDate":"Fri, 04 Sep 2015 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2015\/09\/04\/zlog-asynchronous-i\/o-support\/","description":"Bringing zlog into the future with a new asynchronous interface."},{"title":"Hadoop on Ceph: usability survey","link":"https:\/\/makedist.com\/posts\/2015\/07\/19\/hadoop-on-ceph-usability-survey\/","pubDate":"Sun, 19 Jul 2015 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2015\/07\/19\/hadoop-on-ceph-usability-survey\/","description":"Hadoop interoperability with Lustre, Quantcast, Gluster, and more."},{"title":"Hadoop on Ceph: diving in","link":"https:\/\/makedist.com\/posts\/2015\/07\/12\/hadoop-on-ceph-diving-in\/","pubDate":"Sun, 12 Jul 2015 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2015\/07\/12\/hadoop-on-ceph-diving-in\/","description":"Using Hadoop to process data stored in the Ceph distributed file system."},{"title":"Distributed search for Beal's Conjecture counterexamples","link":"https:\/\/makedist.com\/posts\/2015\/01\/30\/distributed-search-for-beals-conjecture-counterexamples\/","pubDate":"Fri, 30 Jan 2015 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2015\/01\/30\/distributed-search-for-beals-conjecture-counterexamples\/","description":"Speeding up a brute force search in an enormous state space."},{"title":"Setting up iSER-enabled TGT RAM disk","link":"https:\/\/makedist.com\/posts\/2015\/01\/12\/setting-up-iser-enabled-tgt-ram-disk\/","pubDate":"Mon, 12 Jan 2015 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2015\/01\/12\/setting-up-iser-enabled-tgt-ram-disk\/","description":"Bigger and faster networked RAM disks with RDMA and RAID."},{"title":"Remote RAM disk with RDMA","link":"https:\/\/makedist.com\/posts\/2015\/01\/08\/remote-ram-disk-with-rdma\/","pubDate":"Thu, 08 Jan 2015 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2015\/01\/08\/remote-ram-disk-with-rdma\/","description":"Piecing together iSER, iSCSI, and LIO to build a networked RAM disk."},{"title":"Setting up RoCE on aarch64 Ubuntu","link":"https:\/\/makedist.com\/posts\/2015\/01\/05\/setting-up-roce-on-aarch64-ubuntu\/","pubDate":"Mon, 05 Jan 2015 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2015\/01\/05\/setting-up-roce-on-aarch64-ubuntu\/","description":"Resolving kernel module dependency issues with RoCE."},{"title":"Performance of the zlog sequencer service","link":"https:\/\/makedist.com\/posts\/2014\/11\/01\/performance-of-the-zlog-sequencer-service\/","pubDate":"Sat, 01 Nov 2014 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2014\/11\/01\/performance-of-the-zlog-sequencer-service\/","description":"How fast can an integer be incremented and read over the network?"},{"title":"ZLog: a distributed shared-log on Ceph","link":"https:\/\/makedist.com\/posts\/2014\/10\/26\/zlog-a-distributed-shared-log-on-ceph\/","pubDate":"Sun, 26 Oct 2014 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2014\/10\/26\/zlog-a-distributed-shared-log-on-ceph\/","description":"Building the CORFU distributed shared-log protocol on top of Ceph."},{"title":"Ceph OSD request processing latency","link":"https:\/\/makedist.com\/posts\/2014\/06\/08\/ceph-osd-request-processing-latency\/","pubDate":"Sun, 08 Jun 2014 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2014\/06\/08\/ceph-osd-request-processing-latency\/","description":"How fast can Ceph&rsquo;s RADOS object store process a request?"},{"title":"Tracing Ceph with LTTng","link":"https:\/\/makedist.com\/posts\/2014\/06\/01\/tracing-ceph-with-lttng\/","pubDate":"Sun, 01 Jun 2014 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2014\/06\/01\/tracing-ceph-with-lttng\/","description":"Collecting execution traces in Ceph with LTTng userspace tooling."},{"title":"The latency of Ceph placement group splitting","link":"https:\/\/makedist.com\/posts\/2014\/05\/19\/the-latency-of-ceph-placement-group-splitting\/","pubDate":"Mon, 19 May 2014 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2014\/05\/19\/the-latency-of-ceph-placement-group-splitting\/","description":"How fast can Ceph split up and redistribute a collection of objects?"},{"title":"OpRequest flow in RADOS OSD server","link":"https:\/\/makedist.com\/posts\/2014\/05\/05\/oprequest-flow-in-rados-osd-server\/","pubDate":"Mon, 05 May 2014 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2014\/05\/05\/oprequest-flow-in-rados-osd-server\/","description":"Tracing the flow of object request handling in Ceph."},{"title":"Performance of compound object operations in Ceph (part 2)","link":"https:\/\/makedist.com\/posts\/2014\/02\/22\/performance-of-compound-object-operations-in-ceph-part-2\/","pubDate":"Sat, 22 Feb 2014 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2014\/02\/22\/performance-of-compound-object-operations-in-ceph-part-2\/","description":"Reducing contention by striping operations across placement groups."},{"title":"Performance of compound object operations in Ceph (part 1)","link":"https:\/\/makedist.com\/posts\/2014\/02\/16\/performance-of-compound-object-operations-in-ceph-part-1\/","pubDate":"Sun, 16 Feb 2014 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2014\/02\/16\/performance-of-compound-object-operations-in-ceph-part-1\/","description":"We can combine operations on Ceph objects, but should we?"},{"title":"Fixing a Ceph performance WTF","link":"https:\/\/makedist.com\/posts\/2014\/01\/31\/fixing-a-ceph-performance-wtf\/","pubDate":"Fri, 31 Jan 2014 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2014\/01\/31\/fixing-a-ceph-performance-wtf\/","description":"Tracking down and fixing a poorly performing Ceph application workload."},{"title":"Dynamic RADOS object interfaces with Lua","link":"https:\/\/makedist.com\/posts\/2014\/01\/22\/dynamic-rados-object-interfaces-with-lua\/","pubDate":"Wed, 22 Jan 2014 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2014\/01\/22\/dynamic-rados-object-interfaces-with-lua\/","description":"Offloading image thumbnail generation to Ceph using Lua."},{"title":"Porting MSG_MORE and MSG_NOSIGPIPE to OS X","link":"https:\/\/makedist.com\/posts\/2014\/01\/16\/porting-msg_more-and-msg_nosigpipe-to-os-x\/","pubDate":"Thu, 16 Jan 2014 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2014\/01\/16\/porting-msg_more-and-msg_nosigpipe-to-os-x\/","description":"Porting is a forcing function for deeper understanding of APIs."},{"title":"Converting SS-DB data into NetCDF format","link":"https:\/\/makedist.com\/posts\/2013\/05\/27\/converting-ss-db-data-into-netcdf-format\/","pubDate":"Mon, 27 May 2013 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2013\/05\/27\/converting-ss-db-data-into-netcdf-format\/","description":"Scientific data wants to be in sciency formats."},{"title":"Digital preservation and economic faults","link":"https:\/\/makedist.com\/posts\/2013\/05\/22\/digital-preservation-and-economic-faults\/","pubDate":"Wed, 22 May 2013 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2013\/05\/22\/digital-preservation-and-economic-faults\/","description":"Archiving information on paper still has a lot of value."},{"title":"Lua GC and linked native heap objects","link":"https:\/\/makedist.com\/posts\/2013\/02\/26\/lua-gc-and-linked-native-heap-objects\/","pubDate":"Tue, 26 Feb 2013 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2013\/02\/26\/lua-gc-and-linked-native-heap-objects\/","description":"Using a weak table to teach the Lua garbage collector about data relationships."},{"title":"Writing RADOS object class handlers in Lua","link":"https:\/\/makedist.com\/posts\/2013\/02\/21\/writing-rados-object-class-handlers-in-lua\/","pubDate":"Thu, 21 Feb 2013 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2013\/02\/21\/writing-rados-object-class-handlers-in-lua\/","description":"Pushing down computations into the Ceph distributed storage system with Lua."},{"title":"Error handling for Lua object classes in Ceph","link":"https:\/\/makedist.com\/posts\/2013\/02\/04\/error-handling-for-lua-object-classes-in-ceph\/","pubDate":"Mon, 04 Feb 2013 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2013\/02\/04\/error-handling-for-lua-object-classes-in-ceph\/","description":"Improving the ergonomics of building object classes in Ceph with Lua."},{"title":"Simple moving average Awk script","link":"https:\/\/makedist.com\/posts\/2013\/01\/27\/simple-moving-average-awk-script\/","pubDate":"Sun, 27 Jan 2013 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2013\/01\/27\/simple-moving-average-awk-script\/","description":"Wrangling time series data from the shell."},{"title":"Custom Lua VM panic handler","link":"https:\/\/makedist.com\/posts\/2013\/01\/24\/custom-lua-vm-panic-handler\/","pubDate":"Thu, 24 Jan 2013 00:00:00 +0000","guid":"https:\/\/makedist.com\/posts\/2013\/01\/24\/custom-lua-vm-panic-handler\/","description":"Protecting your host application when Lua freaks out."}]}}