The Curious Engineer

All blogs / Zig

openmymind.net

openmymind.net

Programming blog exploring Zig, Elixir, Go, Testing, Design and Performance

ZigGoElixir / ErlangTesting / QADatabases

Posts
357 from 23 Jun 2010 to 4 Aug 2026
Posting
now and then (3 in the last year)
Kind
personal blog
Feed
https://www.openmymind.net/atom.xml

2026 3

  1. ArenaAllocators don't play nicely with ArrayLists
  2. std.Io.Writer.Allocating ate all my memory
  3. On AI

2025 18

  1. Is Zig's New Writer Unsafe?
  2. Everything is a []u8
  3. I'm too dumb for Zig's new IO interface
  4. Zig's new Writer
  5. Zig's new LinkedList API (it's time to learn @fieldParentPtr)
  6. Allocator.resize
  7. ArenaAllocator.free and Nested Arenas
  8. Zig's dot star syntax (value.*)
  9. GetOrPut With String Keys
  10. Comparing Strings as Integers with @bitCast
  11. Switching on Strings in Zig
  12. Using Generics to Inject Stubs when Testing
  13. In Zig, What's a Writer?
  14. Using SIMD to Tell if the High Bit is Set
  15. Peeking Behind Zig Interfaces by Creating a Dummy std.Random Implementation
  16. Comptime as Configuration
  17. Zig's @bitCast
  18. Basic Awareness in Addition to Deep UnderstandingDec 26 2024

2024 37

  1. Sorting Strings in ZigDec 19 2024
  2. Gluing JSONDec 09 2024
  3. Zig Removes Anonymous StructNov 28 2024
  4. One method declaration; two Zig annoyancesNov 20 2024
  5. Zig's new declaration literalsNov 14 2024
  6. Zig's (.{}){} syntaxNov 05 2024
  7. TCP Server in Zig - Part 8 - Epoll & KqueueOct 30 2024
  8. TCP Server in Zig - Part 7 - KqueueOct 27 2024
  9. TCP Server in Zig - Part 6 - EpollOct 23 2024
  10. TCP Server in Zig - Part 5b - Poll Oct 17 2024
  11. TCP Server in Zig - Part 5a - Poll Oct 15 2024
  12. TCP Server in Zig - Part 4 - MultithreadingOct 11 2024
  13. TCP Server in Zig - Part 3 - Minimizing Writes & ReadsOct 08 2024
  14. TCP Server in Zig - Part 2 - Message BoundariesOct 05 2024
  15. TCP Server in Zig - Part 1 - Single ThreadedOct 02 2024
  16. Creating enums at comptimeSep 19 2024
  17. Closures in ZigSep 10 2024
  18. Zig's @memcpy, copyForwards and copyBackwardsSep 03 2024
  19. Zig's BoundedArrayAug 27 2024
  20. Custom String Formatting and JSON [De]Serializing in ZigAug 23 2024
  21. Basic MetaProgramming in ZigAug 14 2024
  22. Zig's HashMap - Part 3Aug 07 2024
  23. Zig's Temporary Variable are ConstJul 23 2024
  24. Using a custom test runner in ZigJul 15 2024
  25. Zig's @constCastJul 06 2024
  26. Be Careful When Assigning ArenaAllocatorsJun 26 2024
  27. Zig's std.json.parseFormSlice and std.json.Parsed(T)Jun 18 2024
  28. Leveraging Zig's AllocatorsJun 05 2024
  29. Zig: Freeing resources referenced in multiple threadsMay 21 2024
  30. Writing a task scheduler in ZigMay 09 2024
  31. Zig: Use The Heap to Know A Value's AddressMar 15 2024
  32. Being Mindful of Memory AllocationsFeb 20 2024
  33. Compile-Time Configuration For Zig LibrariesFeb 05 2024
  34. Why is Simple Code So Often Bad?Jan 30 2024
  35. Zig's HashMap - Part 2Jan 22 2024
  36. Zig's HashMap - Part 1Jan 16 2024
  37. Your Website Search Hurts My FeelingsDec 26 2023

2023 28

  1. Zig's MemoryPool AllocatorDec 22 2023
  2. Zig: Tiptoeing Around @ptrCastDec 11 2023
  3. Performance of reading a file line by line in ZigNov 27 2023
  4. Zig's std.json.Parsed(T)Nov 17 2023
  5. Fast Path to Burnout - Delaying DeploysOct 27 2023
  6. Zig InterfacesOct 08 2023
  7. Learning Zig - ConclusionSep 08 2023
  8. Learning Zig - Coding in ZigSep 08 2023
  9. Learning Zig - GenericsSep 08 2023
  10. Learning Zig - Heap Memory & AllocatorsSep 08 2023
  11. Learning Zig - Stack MemorySep 08 2023
  12. Learning Zig - PointersSep 08 2023
  13. Learning Zig - Style GuideSep 08 2023
  14. Learning Zig - Language Overview - Part 2Sep 08 2023
  15. Learning Zig - Language Overview - Part 1Sep 08 2023
  16. Learning ZigSep 08 2023
  17. Zig dangling pointers and segfaultsJun 10 2023
  18. SIMD with ZigMay 02 2023
  19. Regular Expressions in ZigApr 23 2023
  20. ValidationApr 21 2023
  21. Zig QuirksMar 27 2023
  22. Writing JSON to a custom output in ZigMar 17 2023
  23. Reading a JSON config in ZigMar 06 2023
  24. Writing a Custom SQLite Function (in C) - Part 2Feb 14 2023
  25. Writing a Custom SQLite Function (in C) - Part 1Feb 02 2023
  26. ASCII String to Lowercase in GoJan 19 2023
  27. String to Integer (atoi) in GoJan 11 2023
  28. Building a Cache in ElixirJul 11 2022

2022 8

  1. WebSocket Framing: Masking, Fragmentation and MoreMay 29 2022
  2. Exhausting Exhaustive TestingMar 18 2022
  3. Basic observations of Generics in GoMar 03 2022
  4. Server Hardening Tools (As An Amateur)Feb 16 2022
  5. Elixir Without Ecto - Dynamic QueriesFeb 11 2022
  6. Elixir Without EctoFeb 05 2022
  7. Using Process Dictionaries in ElixirJan 07 2022
  8. Queue Despair: Ordering and Poison MessagesDec 08 2021

2021 15

  1. Rust StringsNov 27 2021
  2. Rust Ownership, Move and Borrow - Part 3Nov 22 2021
  3. Rust Ownership, Move and Borrow - Part 2Nov 13 2021
  4. Rust Ownership, Move and Borrow - Part 1Nov 06 2021
  5. Elixir, A Little Beyond The Basics - Part 9: erlangOct 25 2021
  6. Elixir, A Little Beyond The Basics - Part 8: genserversOct 23 2021
  7. Elixir, A Little Beyond The Basics - Part 7: supervisorsOct 22 2021
  8. Elixir, A Little Beyond The Basics - Part 6: processesOct 20 2021
  9. Elixir, A Little Beyond The Basics - Part 5: tuples and recordsOct 14 2021
  10. Elixir, A Little Beyond The Basics - Part 4: structuresOct 09 2021
  11. Elixir, A Little Beyond The Basics - Part 3: mapsOct 06 2021
  12. Elixir, A Little Beyond The Basics - Part 2: iolistOct 04 2021
  13. Elixir, A Little Beyond The BasicsOct 02 2021
  14. Elixir, A Little Beyond The Basics - Part 1: listsOct 01 2021
  15. Elegant TCP with Elixir - Part 2 - Message BoundariesApr 13 2020

2020 7

  1. Elegant TCP with Elixir - Part 1 - TCP as MessagesApr 08 2020
  2. An Awful Introduction to MakeFeb 23 2020
  3. Action-Specific Plug Pipelines for PhoenixFeb 13 2020
  4. Migrating to CockroachDBFeb 05 2020
  5. Using Messages In Elixir To Avoid PollingJan 30 2020
  6. Consistent Database and Message Queue WritesJan 22 2020
  7. Basic Brain Dump On Dealing With ErrorsOct 13 2018

2018 4

  1. Elixir: Which Modules Are Using My ModuleJun 24 2018
  2. The Benefits of Pair ProgrammingMar 15 2018
  3. Test Private Functions and Implementation DetailsJan 02 2018
  4. The Beauty of Elixir and BeamNov 07 2017

2017 11

  1. Elixir Tips and TricksOct 27 2017
  2. Testing Asynchronous Code in ElixirSep 25 2017
  3. Learning Elixir's SupervisorsSep 16 2017
  4. Elixir's Binary Matching PerformanceAug 15 2017
  5. Learning Elixir's ETS - Part 2Jul 22 2017
  6. Learning Elixir's ETS - Part 1May 28 2017
  7. Learning Elixir's AgentMar 28 2017
  8. Learning Elixir's GenServer - Part 2Mar 23 2017
  9. Learning Elixir's GenServer - Part 1Mar 22 2017
  10. Dependency Injection in Elixir is a Beautiful ThingJan 06 2017
  11. Tests Are About DesignDec 11 2016

2016 7

  1. Elixir's With StatementNov 07 2016
  2. Concatenation in ElixirSep 22 2016
  3. Pattern Matching in ElixirAug 01 2016
  4. Interfaces In NimMay 14 2016
  5. Software Craftsmanship: TestingJan 10 2016
  6. An Introduction To OpenResty - Part 3Jan 04 2016
  7. An Introduction To OpenResty - Part 2 - ConceptsDec 26 2015

2015 21

  1. An Introduction To OpenResty (nginx + lua) - Part 1Dec 19 2015
  2. RESTful routing in GoMay 05 2015
  3. Go actions responsesMay 02 2015
  4. Go's error handling: good and badApr 23 2015
  5. Project OrganisationApr 16 2015
  6. Prematurely Blocking Producers in GoApr 04 2015
  7. Basic Micro-Optimizations Part 3Mar 24 2015
  8. Writing And Using C Code From GoMar 20 2015
  9. An efficient integer setMar 19 2015
  10. Building A Queue - Part 4Mar 18 2015
  11. Leaking GoroutinesMar 16 2015
  12. Building A Queue - Part 3Mar 12 2015
  13. Building A Queue - Part 2Mar 11 2015
  14. Building A Queue - Part 1Mar 10 2015
  15. Using Javascript GeneratorsFeb 24 2015
  16. I'm Not Sold On High AvailabilityFeb 12 2015
  17. Unordered QueuesFeb 04 2015
  18. A decade of unit testingJan 30 2015
  19. Nearest Neighbour Over Small AreasJan 13 2015
  20. Framework Agnostic Zero Downtime Deployment with NGINXJan 06 2015
  21. Introduction to PostgreSQL ArraysDec 08 2014

2014 21

  1. Basic Micro-Optimizations Part 2Nov 28 2014
  2. Basic Micro-OptimizationsNov 27 2014
  3. Condition VariablesNov 03 2014
  4. Buying Concurrency with MemoryOct 29 2014
  5. Using Small Arrays Instead Of Small DictionariesOct 22 2014
  6. The Little Go BookOct 21 2014
  7. Practical SOA / microservices - Hydration - Part 2Oct 18 2014
  8. How unreliable is UDP?Oct 16 2014
  9. Practical SOA / microservices - Typed RequestsOct 10 2014
  10. Practical SOA / microservices - Hydration - Part 1Oct 01 2014
  11. Controlling Array Growth in GolangAug 26 2014
  12. Cancelling Long Promise ChainsJul 02 2014
  13. Pools: So You Think You're Smarter Than Your GCJun 12 2014
  14. Space Efficient Percentile CalculationsJun 07 2014
  15. Understanding PoolsApr 28 2014
  16. Understanding Javascript PromisesApr 26 2014
  17. Grow Up. Use Queues.Mar 05 2014
  18. Client-Side vs. Server-Side Rendering Redux (Sorta)Feb 22 2014
  19. The Deceptive Nature Of AveragesFeb 10 2014
  20. Why Premature Optimizations Are Rarely A Waste Of TimeJan 13 2014
  21. Fast Large Offsets With An Indexed SkiplistDec 09 2013

2013 54

  1. Building A SkiplistDec 06 2013
  2. The Minimum You Need To Know About Arrays and Slices in GolangNov 25 2013
  3. Concurrent Reads with Serialized WritesNov 20 2013
  4. Filtering My Blog Posts By TagsNov 12 2013
  5. Building Technology Agnostic Globally Distributed SystemsNov 05 2013
  6. Back To Basics: Hashtables Part 2 (And A Peek Inside Redis)Nov 02 2013
  7. Back To Basics: HashtablesOct 31 2013
  8. High Concurrency LRU CachingOct 19 2013
  9. Growth PlanningOct 03 2013
  10. "Dependency Injection" in GolangSep 18 2013
  11. Scaling? Focus On Raw SpeedSep 11 2013
  12. Own A System Beyond Its Childhood, Or Stay A Bad ProgrammerSep 04 2013
  13. SOA Lessons LearnedAug 27 2013
  14. On Sharing InfrastructureAug 22 2013
  15. Caching: Your Worst Best FriendJul 25 2013
  16. Reading too much into String.SplitJul 17 2013
  17. Golang Slices And The Case Of The Missing MemoryJul 10 2013
  18. Your Buffer Is LeakingJul 08 2013
  19. Shard Your Hash Table To Reduce Write LocksJul 03 2013
  20. Golang hot configuration reloadJul 01 2013
  21. How Meaningful Do You Find Github's Punchcard?Jun 21 2013
  22. Concurrent-Friendly Logging with GolangJun 20 2013
  23. Background Driven DevelopmentJun 12 2013
  24. Why I Dislike EC2Jun 04 2013
  25. How Good Is Amazon's Route 53 Latency Based Routing?May 29 2013
  26. Do More In-Process CachingMay 23 2013
  27. Building SearchMay 13 2013
  28. Redis' slowlog and DEL's surprisingly bad performanceMay 10 2013
  29. Lua's JSON turns empty arrays into empty hashesMay 07 2013
  30. Achieving 5ms Response TimeMay 03 2013
  31. Writing an LRU CacheMay 02 2013
  32. Appendix C - Our Simple AutoCompleteApr 30 2013
  33. Appendix B - I Love Premature OptimizationsApr 30 2013
  34. Appendix A - Why Node?Apr 30 2013
  35. Chapter 7 - ConclusionApr 30 2013
  36. Chapter 6 - Writes, Bloat and QueuesApr 30 2013
  37. Chapter 5 - Surprisingly ReusableApr 30 2013
  38. Chapter 4 - TweaksApr 30 2013
  39. Chapter 3 - HoldbacksApr 30 2013
  40. Chapter 2 - The CoreApr 30 2013
  41. Chapter 1 - IntroductionApr 30 2013
  42. Scaling VikiApr 30 2013
  43. Introduction To Golang: Buffered ChannelsApr 27 2013
  44. An Interview Question Too Many Developers Get WrongApr 24 2013
  45. Things I Wish Someone Had Told Me About GolangMar 11 2013
  46. Testing In GolangMar 10 2013
  47. Getting an Images Type and Size in Golang (or any other language)Feb 10 2013
  48. You can't rollback Redis transactionsFeb 05 2013
  49. Introduction To Golang: Channels (Again)Jan 20 2013
  50. Introduction To Golang: ChannelsJan 17 2013
  51. Introduction To Golang: Arrays, Maps, Slices And MakeJan 14 2013
  52. Introduction To Golang: InterfacesJan 10 2013
  53. Introduction To Golang: Structures, Data and InstancesJan 07 2013
  54. Custom Redis Command: Performance of C vs LuaDec 24 2012

2012 42

  1. Writing a Custom Redis Command In C - Part 2Dec 23 2012
  2. Writing a Custom Redis Command In C - Part 1Dec 20 2012
  3. No Shit StylesheetsJul 12 2012
  4. Data Modeling In RedisJun 28 2012
  5. Three Must-Have Redis Configuration Options For ProductionJun 27 2012
  6. Node.js, Module.Exports and Organizing Express.js RoutesJun 26 2012
  7. Paging & Ranking With Large Offsets: MongoDB vs Redis vs PostgreSQLJun 25 2012
  8. Why Are You Linking To 404s?Jun 18 2012
  9. What I Learned Building MogadeJun 13 2012
  10. Redis Is The Most Important Tool In My ToolbeltJun 12 2012
  11. Azure's Website Lacks Organization and DetailsJun 11 2012
  12. The Little Introduction To ProgrammingJun 08 2012
  13. I Blog To LearnJun 07 2012
  14. Redis' Watch Command: Making Sure A Process Doesn't Run When Already RunningJun 05 2012
  15. Minimalist MarkupJun 01 2012
  16. Can You Make My Home Page Smaller?May 31 2012
  17. Client-Side vs. Server-Side RenderingMay 30 2012
  18. Ten Features I Like About CoffeeScriptMay 16 2012
  19. Mock Expectations in .NET vs RubyMay 14 2012
  20. Let's Increment i, Logic Gate StyleMay 07 2012
  21. Let's Increment i, Assembly StyleMay 03 2012
  22. Measuring Time Spent Between Steps In A FunnelMay 01 2012
  23. How I'd Change Riak's DocumentationApr 28 2012
  24. I Rather Have Silly Tests Than Silly CodeApr 24 2012
  25. Using MapReduce to Measure FunnelsApr 20 2012
  26. Arrays and Memory, Part 2Apr 19 2012
  27. Learning Is More Important Than KnowingApr 18 2012
  28. I'm a bad chef, but I still cook a lotApr 18 2012
  29. Piping BasicsApr 13 2012
  30. Let's Talk About LoggingApr 11 2012
  31. You Really Should Log Client-Side ErrorsApr 04 2012
  32. Malloc and FreeMar 31 2012
  33. Why Arrays Normally Start At ZeroMar 30 2012
  34. Recommending Distant ItemsMar 27 2012
  35. Let's Build Something Using Amazon's DynamoDBFeb 06 2012
  36. Node.js, Require and ExportsFeb 03 2012
  37. The Little Redis BookJan 23 2012
  38. Refactoring Common API Functionality Into A Node.js ProxyJan 17 2012
  39. Understanding CoffeeScript ComprehensionsJan 15 2012
  40. Reading from TCP streamsJan 12 2012
  41. Does My Replica Set Need An ArbiterJan 07 2012
  42. I Just Don't Like Object MappersNov 18 2011

2011 50

  1. Redis: Zero to Master in 30 minutes - Part 2Nov 08 2011
  2. Redis: Zero to Master in 30 minutes - Part 1Nov 08 2011
  3. Rethink Your DataNov 07 2011
  4. CouchDB And MongoDB PerformanceOct 28 2011
  5. A MongoDB Guy Learns CouchDBOct 27 2011
  6. Demystifying Write DurabilityOct 16 2011
  7. ObjectIds Are PredictableOct 15 2011
  8. Speeding Up Queries: Re-Imagining Your DataOct 14 2011
  9. Speeding Up Queries: Understanding Query PlansOct 12 2011
  10. What's A Padding Factor?Oct 10 2011
  11. Multiple Collections vs Embedded DocumentsOct 10 2011
  12. The MongoDB CollectionOct 09 2011
  13. MongoSpy, MongoWatch and Compressed BlobsSep 23 2011
  14. The Little Things Add UpSep 17 2011
  15. How You Should Go About Learning NoSQLAug 15 2011
  16. Someone is selling my Foundations of Programming ebook on Amazon.com (and it isn't me)Aug 12 2011
  17. Yesterday I Quit My JobAug 03 2011
  18. RoR Testing - One Thing To Do (I think) And One Thing Not To Do (I'm Sure)Jul 19 2011
  19. Learning Golang By Benchmarking Set ImplementationsJul 15 2011
  20. Error Handling In Asynchronous Code With Callbacks and Return CodesJul 14 2011
  21. The Only Thing I Think I Know About Proper CSS UsageJul 06 2011
  22. Rethink your Data ModelJul 05 2011
  23. MongoDB, OpenStreetMap and a Little DemoJun 20 2011
  24. Factories Make Testing EasierMay 17 2011
  25. Making our MongoDB Code Run FasterMay 09 2011
  26. Practical NoSQL - Solving a Real Problem with MongoDB and RedisMay 08 2011
  27. Fighting the FrameworkMay 04 2011
  28. Dealing with Now and why I'm almost done with C# and JavaMay 03 2011
  29. Automatically Processing EmailsApr 29 2011
  30. The Little MongoDB Book epubApr 20 2011
  31. Algorithm TutorialsApr 15 2011
  32. Video is a poor medium for learning to programApr 12 2011
  33. Markdown and MeApr 05 2011
  34. Why I'd Never Charge For A Tech BookMar 31 2011
  35. tracking hits with load.io, a sunday projectMar 29 2011
  36. The Little MongoDB BookMar 28 2011
  37. Stop Using MocksMar 23 2011
  38. Foundations of Programming 2 - Appendix B - Advanced jQueryMar 21 2011
  39. Foundations of Programming 2 - Appendix A - jQuery BasicsMar 16 2011
  40. Side Projects - MonglyMar 14 2011
  41. Foundations of Programming 2 - Chapter 5 - Effective TestingFeb 23 2011
  42. Regular Expressions: Positive/Negative Look-Ahead/BehindFeb 16 2011
  43. Validation: Hong Kong Doesn't Have Zip/Postal CodesFeb 15 2011
  44. Do Relational Database Vendors Care About Developers?Feb 10 2011
  45. Foundations of Programming 2 - Chapter 4 - Unit TestingJan 31 2011
  46. jQuery DateRange PickerJan 25 2011
  47. Understanding Map ReduceJan 20 2011
  48. Foundations of Programming: Why Markdown? (And why not Word?)Jan 10 2011
  49. Foundations of Programming 2 - Chapter 3 - IoC 180Jan 06 2011
  50. Foundations of Programming 2 - Chapter 2 - Yet Another IoC IntroductionDec 29 2010

2010 31

  1. Visual Studio's Most Unusable FeaturesDec 28 2010
  2. Foundations of Programming 2 - Chapter 1 - Quality and EfficiencyDec 20 2010
  3. Paypal's logo designed to look like a recommendation?Dec 15 2010
  4. Foundations of Programming 2 Will Need Your HelpDec 13 2010
  5. Does Anyone Know What Silverlight Is?Dec 03 2010
  6. How Optimized Are High Traffic Websites?Nov 16 2010
  7. How to Test Against an External HTTP DependencyNov 12 2010
  8. mogade: a free platform for casual game developersNov 09 2010
  9. An Introduction To HostingOct 26 2010
  10. My Slow Transition Away From Mocks/Oct 20 2010
  11. Weekend .NET Pains - Why I Prefer RubyOct 18 2010
  12. Programmer Passion: An Enterprises Most Useful Yet Repressed AdvantageOct 07 2010
  13. My Programming Sins - 2. Manually Managing ReferencesOct 07 2010
  14. Introducing jstubSep 27 2010
  15. Javascript Mocking - Damn, That's Easy.Sep 21 2010
  16. My Programming Sins - 1. [Not] Testing JavascriptSep 20 2010
  17. A different (for me) way to pageSep 06 2010
  18. How I would fix ASP.NETAug 30 2010
  19. My .NET ICacheAug 24 2010
  20. HttpHandlerWrapperAug 19 2010
  21. Design Through Testability - An ExampleAug 19 2010
  22. Write testable code even if you don't write testsAug 17 2010
  23. Website Performance : Crossing the T's and dotting the I'sJul 22 2010
  24. Using PostMark To Send MailJul 21 2010
  25. noobgaming : my rails and gaming passions combinedJul 20 2010
  26. Installing Nginx with Passenger on Linux (from source)Jul 01 2010
  27. Learning Ruby : Class methods != Static MethodsJun 26 2010
  28. Learning Ruby : class << selfJun 25 2010
  29. Rails does Mail Right. ASP.NET, not so much.Jun 24 2010
  30. My Rails Journey - The Expected Speed BumpsJun 23 2010
  31. Its time to start againJun 13 2010