One method declaration; two Zig annoyancesNov 20 2024 Zig's new declaration literalsNov 14 2024 Zig's (.{}){} syntaxNov 05 2024 TCP Server in Zig - Part 8 - Epoll & KqueueOct 30 2024 TCP Server in Zig - Part 7 - KqueueOct 27 2024 TCP Server in Zig - Part 6 - EpollOct 23 2024 TCP Server in Zig - Part 5b - Poll Oct 17 2024 TCP Server in Zig - Part 5a - Poll Oct 15 2024 TCP Server in Zig - Part 4 - MultithreadingOct 11 2024 TCP Server in Zig - Part 3 - Minimizing Writes & ReadsOct 08 2024 TCP Server in Zig - Part 2 - Message BoundariesOct 05 2024 TCP Server in Zig - Part 1 - Single ThreadedOct 02 2024 Creating enums at comptimeSep 19 2024 Closures in ZigSep 10 2024 Zig's @memcpy, copyForwards and copyBackwardsSep 03 2024 Zig's BoundedArrayAug 27 2024 Custom String Formatting and JSON [De]Serializing in ZigAug 23 2024 Basic MetaProgramming in ZigAug 14 2024 Zig's HashMap - Part 3Aug 07 2024 Zig's Temporary Variable are ConstJul 23 2024 Using a custom test runner in ZigJul 15 2024 Zig's @constCastJul 06 2024 Be Careful When Assigning ArenaAllocatorsJun 26 2024 Zig's std.json.parseFormSlice and std.json.Parsed(T)Jun 18 2024 Leveraging Zig's AllocatorsJun 05 2024 Zig: Freeing resources referenced in multiple threadsMay 21 2024 Writing a task scheduler in ZigMay 09 2024 Zig: Use The Heap to Know A Value's AddressMar 15 2024 Being Mindful of Memory AllocationsFeb 20 2024 Compile-Time Configuration For Zig LibrariesFeb 05 2024 Why is Simple Code So Often Bad?Jan 30 2024 Zig's HashMap - Part 2Jan 22 2024 Zig's HashMap - Part 1Jan 16 2024 Your Website Search Hurts My FeelingsDec 26 2023 Zig's MemoryPool AllocatorDec 22 2023 Zig: Tiptoeing Around @ptrCastDec 11 2023 Performance of reading a file line by line in ZigNov 27 2023 Zig's std.json.Parsed(T)Nov 17 2023 Fast Path to Burnout - Delaying DeploysOct 27 2023 Zig InterfacesOct 08 2023 Learning Zig - ConclusionSep 08 2023 Learning Zig - Coding in ZigSep 08 2023 Learning Zig - GenericsSep 08 2023 Learning Zig - Heap Memory & AllocatorsSep 08 2023 Learning Zig - Stack MemorySep 08 2023 Learning Zig - PointersSep 08 2023 Learning Zig - Style GuideSep 08 2023 Learning Zig - Language Overview - Part 2Sep 08 2023 Learning Zig - Language Overview - Part 1Sep 08 2023 Learning ZigSep 08 2023 Error Handling In ZigAug 07 2023 The IRC protocolAug 03 2023 Try installing from source firstAug 02 2023 Database paging: offset vs cursorJul 29 2023 Custom JSON serialization in ZigJul 26 2023 Parsing timestamps and generating RFC3339 dates in ZigJul 25 2023 Systemd hardening is frustrating and depressingJul 25 2023 Hello from aoliumJul 24 2023 String binary search in ZigJul 23 2023 Zig dangling pointers and segfaultsJun 10 2023 SIMD with ZigMay 02 2023 Regular Expressions in ZigApr 23 2023 ValidationApr 21 2023 Zig QuirksMar 27 2023 Writing JSON to a custom output in ZigMar 17 2023 Reading a JSON config in ZigMar 06 2023 Writing a Custom SQLite Function (in C) - Part 2Feb 14 2023 Writing a Custom SQLite Function (in C) - Part 1Feb 02 2023 ASCII String to Lowercase in GoJan 19 2023 String to Integer (atoi) in GoJan 11 2023 Building a Cache in ElixirJul 11 2022 WebSocket Framing: Masking, Fragmentation and MoreMay 29 2022 Exhausting Exhaustive TestingMar 18 2022 Basic observations of Generics in GoMar 03 2022 Server Hardening Tools (As An Amateur)Feb 16 2022 Elixir Without Ecto - Dynamic QueriesFeb 11 2022 Elixir Without EctoFeb 05 2022 Using Process Dictionaries in ElixirJan 07 2022 Queue Despair: Ordering and Poison MessagesDec 08 2021 Rust StringsNov 27 2021 Rust Ownership, Move and Borrow - Part 3Nov 22 2021 Rust Ownership, Move and Borrow - Part 2Nov 13 2021 Rust Ownership, Move and Borrow - Part 1Nov 06 2021 Elixir, A Little Beyond The Basics - Part 9: erlangOct 25 2021 Elixir, A Little Beyond The Basics - Part 8: genserversOct 23 2021 Elixir, A Little Beyond The Basics - Part 7: supervisorsOct 22 2021 Elixir, A Little Beyond The Basics - Part 6: processesOct 20 2021 Elixir, A Little Beyond The Basics - Part 5: tuples and recordsOct 14 2021 Elixir, A Little Beyond The Basics - Part 4: structuresOct 09 2021 Elixir, A Little Beyond The Basics - Part 3: mapsOct 06 2021 Elixir, A Little Beyond The Basics - Part 2: iolistOct 04 2021 Elixir, A Little Beyond The BasicsOct 02 2021 Elixir, A Little Beyond The Basics - Part 1: listsOct 01 2021 Elegant TCP with Elixir - Part 2 - Message BoundariesApr 13 2020 Elegant TCP with Elixir - Part 1 - TCP as MessagesApr 08 2020 An Awful Introduction to MakeFeb 23 2020 Action-Specific Plug Pipelines for PhoenixFeb 13 2020 Migrating to CockroachDBFeb 05 2020 Using Messages In Elixir To Avoid PollingJan 30 2020 Consistent Database and Message Queue WritesJan 22 2020 Basic Brain Dump On Dealing With ErrorsOct 13 2018 Elixir: Which Modules Are Using My ModuleJun 24 2018 The Benefits of Pair ProgrammingMar 15 2018 Test Private Functions and Implementation DetailsJan 02 2018 The Beauty of Elixir and BeamNov 07 2017 Elixir Tips and TricksOct 27 2017 Testing Asynchronous Code in ElixirSep 25 2017 Learning Elixir's SupervisorsSep 16 2017 Elixir's Binary Matching PerformanceAug 15 2017 Learning Elixir's ETS - Part 2Jul 22 2017 Learning Elixir's ETS - Part 1May 28 2017 Learning Elixir's AgentMar 28 2017 Learning Elixir's GenServer - Part 2Mar 23 2017 Learning Elixir's GenServer - Part 1Mar 22 2017 Dependency Injection in Elixir is a Beautiful ThingJan 06 2017 Tests Are About DesignDec 11 2016 Elixir's With StatementNov 07 2016 Concatenation in ElixirSep 22 2016 Pattern Matching in ElixirAug 01 2016 Interfaces In NimMay 14 2016 Software Craftsmanship: TestingJan 10 2016 An Introduction To OpenResty - Part 3Jan 04 2016 An Introduction To OpenResty - Part 2 - ConceptsDec 26 2015 An Introduction To OpenResty (nginx + lua) - Part 1Dec 19 2015 RESTful routing in GoMay 05 2015 Go actions responsesMay 02 2015 Go's error handling: good and badApr 23 2015 Project OrganisationApr 16 2015 Prematurely Blocking Producers in GoApr 04 2015 Basic Micro-Optimizations Part 3Mar 24 2015 Writing And Using C Code From GoMar 20 2015 An efficient integer setMar 19 2015 Building A Queue - Part 4Mar 18 2015 Leaking GoroutinesMar 16 2015 Building A Queue - Part 3Mar 12 2015 Building A Queue - Part 2Mar 11 2015 Building A Queue - Part 1Mar 10 2015 Using Javascript GeneratorsFeb 24 2015 I'm Not Sold On High AvailabilityFeb 12 2015 Unordered QueuesFeb 04 2015 A decade of unit testingJan 30 2015 Nearest Neighbour Over Small AreasJan 13 2015 Framework Agnostic Zero Downtime Deployment with NGINXJan 06 2015 Introduction to PostgreSQL ArraysDec 08 2014 Basic Micro-Optimizations Part 2Nov 28 2014 Basic Micro-OptimizationsNov 27 2014 Condition VariablesNov 03 2014 Buying Concurrency with MemoryOct 29 2014 Using Small Arrays Instead Of Small DictionariesOct 22 2014 The Little Go BookOct 21 2014 Practical SOA / microservices - Hydration - Part 2Oct 18 2014 How unreliable is UDP?Oct 16 2014 Practical SOA / microservices - Typed RequestsOct 10 2014 Practical SOA / microservices - Hydration - Part 1Oct 01 2014 Controlling Array Growth in GolangAug 26 2014 Cancelling Long Promise ChainsJul 02 2014 Pools: So You Think You're Smarter Than Your GCJun 12 2014 Space Efficient Percentile CalculationsJun 07 2014 Understanding PoolsApr 28 2014 Understanding Javascript PromisesApr 26 2014 Grow Up. Use Queues.Mar 05 2014 Client-Side vs. Server-Side Rendering Redux (Sorta)Feb 22 2014 The Deceptive Nature Of AveragesFeb 10 2014 Why Premature Optimizations Are Rarely A Waste Of TimeJan 13 2014 Fast Large Offsets With An Indexed SkiplistDec 09 2013 Building A SkiplistDec 06 2013 The Minimum You Need To Know About Arrays and Slices in GolangNov 25 2013 Concurrent Reads with Serialized WritesNov 20 2013 Filtering My Blog Posts By TagsNov 12 2013 Building Technology Agnostic Globally Distributed SystemsNov 05 2013 Back To Basics: Hashtables Part 2 (And A Peek Inside Redis)Nov 02 2013 Back To Basics: HashtablesOct 31 2013 High Concurrency LRU CachingOct 19 2013 Growth PlanningOct 03 2013 "Dependency Injection" in GolangSep 18 2013 Scaling? Focus On Raw SpeedSep 11 2013 Own A System Beyond Its Childhood, Or Stay A Bad ProgrammerSep 04 2013 SOA Lessons LearnedAug 27 2013 On Sharing InfrastructureAug 22 2013 Caching: Your Worst Best FriendJul 25 2013 Reading too much into String.SplitJul 17 2013 Golang Slices And The Case Of The Missing MemoryJul 10 2013 Your Buffer Is LeakingJul 08 2013 Shard Your Hash Table To Reduce Write LocksJul 03 2013 Golang hot configuration reloadJul 01 2013 How Meaningful Do You Find Github's Punchcard?Jun 21 2013 Concurrent-Friendly Logging with GolangJun 20 2013 Background Driven DevelopmentJun 12 2013 Why I Dislike EC2Jun 04 2013 How Good Is Amazon's Route 53 Latency Based Routing?May 29 2013 Do More In-Process CachingMay 23 2013 Building SearchMay 13 2013 Redis' slowlog and DEL's surprisingly bad performanceMay 10 2013 Lua's JSON turns empty arrays into empty hashesMay 07 2013 Achieving 5ms Response TimeMay 03 2013 Writing an LRU CacheMay 02 2013 Appendix C - Our Simple AutoCompleteApr 30 2013 Appendix B - I Love Premature OptimizationsApr 30 2013 Appendix A - Why Node?Apr 30 2013 Chapter 7 - ConclusionApr 30 2013 Chapter 6 - Writes, Bloat and QueuesApr 30 2013 Chapter 5 - Surprisingly ReusableApr 30 2013 Chapter 4 - TweaksApr 30 2013 Chapter 3 - HoldbacksApr 30 2013 Chapter 2 - The CoreApr 30 2013 Chapter 1 - IntroductionApr 30 2013 Scaling VikiApr 30 2013 Introduction To Golang: Buffered ChannelsApr 27 2013 An Interview Question Too Many Developers Get WrongApr 24 2013 Things I Wish Someone Had Told Me About GolangMar 11 2013 Testing In GolangMar 10 2013 Getting an Images Type and Size in Golang (or any other language)Feb 10 2013 You can't rollback Redis transactionsFeb 05 2013 Introduction To Golang: Channels (Again)Jan 20 2013 Introduction To Golang: ChannelsJan 17 2013 Introduction To Golang: Arrays, Maps, Slices And MakeJan 14 2013 Introduction To Golang: InterfacesJan 10 2013 Introduction To Golang: Structures, Data and InstancesJan 07 2013 Custom Redis Command: Performance of C vs LuaDec 24 2012 Writing a Custom Redis Command In C - Part 2Dec 23 2012 Writing a Custom Redis Command In C - Part 1Dec 20 2012 No Shit StylesheetsJul 12 2012 Data Modeling In RedisJun 28 2012 Three Must-Have Redis Configuration Options For ProductionJun 27 2012 Node.js, Module.Exports and Organizing Express.js RoutesJun 26 2012 Paging & Ranking With Large Offsets: MongoDB vs Redis vs PostgreSQLJun 25 2012 Why Are You Linking To 404s?Jun 18 2012 What I Learned Building MogadeJun 13 2012 Redis Is The Most Important Tool In My ToolbeltJun 12 2012 Azure's Website Lacks Organization and DetailsJun 11 2012 The Little Introduction To ProgrammingJun 08 2012 I Blog To LearnJun 07 2012 Redis' Watch Command: Making Sure A Process Doesn't Run When Already RunningJun 05 2012 Minimalist MarkupJun 01 2012 Can You Make My Home Page Smaller?May 31 2012 Client-Side vs. Server-Side RenderingMay 30 2012 Ten Features I Like About CoffeeScriptMay 16 2012 Mock Expectations in .NET vs RubyMay 14 2012 Let's Increment i, Logic Gate StyleMay 07 2012 Let's Increment i, Assembly StyleMay 03 2012 Measuring Time Spent Between Steps In A FunnelMay 01 2012 How I'd Change Riak's DocumentationApr 28 2012 I Rather Have Silly Tests Than Silly CodeApr 24 2012 Using MapReduce to Measure FunnelsApr 20 2012 Arrays and Memory, Part 2Apr 19 2012 Learning Is More Important Than KnowingApr 18 2012 I'm a bad chef, but I still cook a lotApr 18 2012 Piping BasicsApr 13 2012 Let's Talk About LoggingApr 11 2012 You Really Should Log Client-Side ErrorsApr 04 2012 Malloc and FreeMar 31 2012 Why Arrays Normally Start At ZeroMar 30 2012 Recommending Distant ItemsMar 27 2012 Let's Build Something Using Amazon's DynamoDBFeb 06 2012 Node.js, Require and ExportsFeb 03 2012 The Little Redis BookJan 23 2012 Refactoring Common API Functionality Into A Node.js ProxyJan 17 2012 Understanding CoffeeScript ComprehensionsJan 15 2012 Reading from TCP streamsJan 12 2012 Does My Replica Set Need An ArbiterJan 07 2012 I Just Don't Like Object MappersNov 18 2011 Redis: Zero to Master in 30 minutes - Part 2Nov 08 2011 Redis: Zero to Master in 30 minutes - Part 1Nov 08 2011 Rethink Your DataNov 07 2011 CouchDB And MongoDB PerformanceOct 28 2011 A MongoDB Guy Learns CouchDBOct 27 2011 Demystifying Write DurabilityOct 16 2011 ObjectIds Are PredictableOct 15 2011 Speeding Up Queries: Re-Imagining Your DataOct 14 2011 Speeding Up Queries: Understanding Query PlansOct 12 2011 What's A Padding Factor?Oct 10 2011 Multiple Collections vs Embedded DocumentsOct 10 2011 The MongoDB CollectionOct 09 2011 MongoSpy, MongoWatch and Compressed BlobsSep 23 2011 The Little Things Add UpSep 17 2011 How You Should Go About Learning NoSQLAug 15 2011 Someone is selling my Foundations of Programming ebook on Amazon.com (and it isn't me)Aug 12 2011 Yesterday I Quit My JobAug 03 2011 RoR Testing - One Thing To Do (I think) And One Thing Not To Do (I'm Sure)Jul 19 2011 Learning Golang By Benchmarking Set ImplementationsJul 15 2011 Error Handling In Asynchronous Code With Callbacks and Return CodesJul 14 2011 The Only Thing I Think I Know About Proper CSS UsageJul 06 2011 Rethink your Data ModelJul 05 2011 MongoDB, OpenStreetMap and a Little DemoJun 20 2011 Factories Make Testing EasierMay 17 2011 Making our MongoDB Code Run FasterMay 09 2011 Practical NoSQL - Solving a Real Problem with MongoDB and RedisMay 08 2011 Fighting the FrameworkMay 04 2011 Dealing with Now and why I'm almost done with C# and JavaMay 03 2011 Automatically Processing EmailsApr 29 2011 The Little MongoDB Book epubApr 20 2011 Algorithm TutorialsApr 15 2011 Video is a poor medium for learning to programApr 12 2011 Markdown and MeApr 05 2011 Why I'd Never Charge For A Tech BookMar 31 2011 tracking hits with load.io, a sunday projectMar 29 2011 The Little MongoDB BookMar 28 2011 Stop Using MocksMar 23 2011 Foundations of Programming 2 - Appendix B - Advanced jQueryMar 21 2011 Foundations of Programming 2 - Appendix A - jQuery BasicsMar 16 2011 Side Projects - MonglyMar 14 2011 Foundations of Programming 2 - Chapter 5 - Effective TestingFeb 23 2011 Regular Expressions: Positive/Negative Look-Ahead/BehindFeb 16 2011 Validation: Hong Kong Doesn't Have Zip/Postal CodesFeb 15 2011 Do Relational Database Vendors Care About Developers?Feb 10 2011 Foundations of Programming 2 - Chapter 4 - Unit TestingJan 31 2011 jQuery DateRange PickerJan 25 2011 Understanding Map ReduceJan 20 2011 Foundations of Programming: Why Markdown? (And why not Word?)Jan 10 2011 Foundations of Programming 2 - Chapter 3 - IoC 180Jan 06 2011 Foundations of Programming 2 - Chapter 2 - Yet Another IoC IntroductionDec 29 2010 Visual Studio's Most Unusable FeaturesDec 28 2010 Foundations of Programming 2 - Chapter 1 - Quality and EfficiencyDec 20 2010 Paypal's logo designed to look like a recommendation?Dec 15 2010 Foundations of Programming 2 Will Need Your HelpDec 13 2010 Does Anyone Know What Silverlight Is?Dec 03 2010 How Optimized Are High Traffic Websites?Nov 16 2010 How to Test Against an External HTTP DependencyNov 12 2010 mogade: a free platform for casual game developersNov 09 2010 An Introduction To HostingOct 26 2010 My Slow Transition Away From Mocks/Oct 20 2010 Weekend .NET Pains - Why I Prefer RubyOct 18 2010 Programmer Passion: An Enterprises Most Useful Yet Repressed AdvantageOct 07 2010 My Programming Sins - 2. Manually Managing ReferencesOct 07 2010 Introducing jstubSep 27 2010 Javascript Mocking - Damn, That's Easy.Sep 21 2010 My Programming Sins - 1. [Not] Testing JavascriptSep 20 2010 A different (for me) way to pageSep 06 2010 How I would fix ASP.NETAug 30 2010 My .NET ICacheAug 24 2010 HttpHandlerWrapperAug 19 2010 Design Through Testability - An ExampleAug 19 2010 Write testable code even if you don't write testsAug 17 2010 Website Performance : Crossing the T's and dotting the I'sJul 22 2010 Using PostMark To Send MailJul 21 2010 noobgaming : my rails and gaming passions combinedJul 20 2010 Installing Nginx with Passenger on Linux (from source)Jul 01 2010 Learning Ruby : Class methods != Static MethodsJun 26 2010 Learning Ruby : class << selfJun 25 2010 Rails does Mail Right. ASP.NET, not so much.Jun 24 2010 My Rails Journey - The Expected Speed BumpsJun 23 2010 Its time to start againJun 13 2010