The Curious Engineer

All blogs / Haskell

Tom Moertel's Blog

blog.moertel.com

HaskellSoftware / engineering practiceAlgorithms / data structures

’05’10’15’20’25
Posts
209 from 31 Jul 2001 to 14 Aug 2026
Posting
now and then (5 in the last year)
Kind
personal blog
Feed
https://blog.moertel.com/xml/atom/feed.xml

2026 5

  1. Comments Are Inevitable
  2. How I would do the “Bowling Game Kata” in Haskell today
  3. Beyond “Clean Code”: Why Your Comments Matter
  4. What Makes Good Code Good
  5. On the Nature and Purpose of Code

2025 1

  1. When Google Takeout Fails

2024 1

  1. Sampling with SQL

2023 1

  1. Dice Race (part 1)

2013 8

  1. A Great Old-Timey Game-Programming Hack
  2. Tricks of the trade: Recursion to Iteration, Part 4: The Trampoline
  3. Tricks of the trade: Recursion to Iteration, Part 3: Recursive Data Structures
  4. Lazy merging in Python using streams
  5. Tricks of the trade: Recursion to Iteration, Part 2: Eliminating Recursion with the Time-Traveling Secret Feature Trick
  6. Tricks of the trade: Recursion to Iteration, Part 1: The Simple Method, secret features, and accumulators
  7. Odds and the evidence of a single coin toss
  8. The second-order-diff Git trick

2012 4

  1. Mounting a Nexus 7's filesystem under Fedora 17
  2. Test like you're betting for your life
  3. Finally! I have blogged 100 thousand words.
  4. The inner beauty of tree traversals (in Haskell)

2011 14

  1. A flyweight mocking helper for Python
  2. The most surprisingly helpful thing I have written
  3. Almost there: 100K words
  4. Good enough to steal
  5. Writing a simple plagiarism detector in Haskell
  6. Presso hand-powered espresso maker: thoughts?
  7. Dear readers: let me know if my feeds explode
  8. Errata-sleuthing for fun and knowledge
  9. A quick summary of the VL2 data-center network scheme
  10. How to update your server's BIOS across the network
  11. Some less-uninformed speculation about the Google-Bing squabble
  12. The Google-Microsoft squabble over Bing results: some completely uninformed speculation
  13. Are engineers really bad at things they can't measure?
  14. The Bayesian meets Monty Hall

2010 11

  1. The other LectroTest
  2. Most popular articles on my blog for 2010: the old stuff rules
  3. Blog updates: faster, mathier, and more cacheable
  4. More on the evidence of a single coin toss
  5. On the evidence of a single coin toss
  6. The easy way to understand web-font licensing: use open-source fonts
  7. Emacs-magit 0.8.2 pushed to Fedora updates-testing
  8. Quick tip: converting lines of text to paragraphs (and the reverse)
  9. An interesting flaw (or feature?) in Amazon's marketplace
  10. Two handy alternatives to the top command: htop and atop
  11. A formal language for recipes: brain dump

2009 11

  1. Dispel the magic by defining the semantics
  2. How to fix a broken bootloader configuration after a Fedora Linux upgrade
  3. Dear Jeff Bezos: Here's an easy, effective way to fix the production problems in Amazon Kindle-edition books and, at the same time, prove that the Kindle is really, truly better than paper
  4. The best-kept secret in programming conferences, especially in a down economy
  5. Twitter puns
  6. Perl saved my vacation!
  7. Perlfolk! Get your YAPC|10 talk proposals in now!
  8. 10th-Anniversary YAPC coming right up!
  9. When you buy proprietary software, you get suffering
  10. Magit is a handy Emacs mode for people who use Git
  11. Emacs stuff I always seem to forget

2008 9

  1. See you at the Pittsburgh Perl Workshop 2008!
  2. The Insecurity of Security Questions: Why I met my wife in CWmKryWzuxCSAnMDuIg.
  3. PXSL Tools now on Hackage and GitHub
  4. Thinking algebraically: a functional-programming dividend that pays during your imperative-programming day job
  5. Fun stuff: Video of Type B Erie steam shovel in action!
  6. Fun stuff: Historical Construction Equipment Association's 2008 convention
  7. Oleg's great way of explaining delimited continuations
  8. That looks about right
  9. Property checking with Python's nose testing framework

2007 38

  1. PXSL Tools 1.0: Your ticket out of XML Hell
  2. How I stopped missing Darcs and started loving Git
  3. TMR 9!
  4. A couple of tips for writing Puppet manifests
  5. How to download photos and movies from the Palm Centro to a Linux desktop
  6. How to hotsync the Palm Centro with a Fedora 7 Linux desktop via USB
  7. Perl helps prove universality of 2, 3 Turing machine
  8. Practical differences between Darcs and Git/Mercurial
  9. PPW 2007 is here!
  10. PPW 2007: a twenty-ton can of programming whoop-ass
  11. Bloglines doesn't handle inter-element white space properly
  12. Updated cabal2rpm helps you make RPM packages from Haskell Cabal packages
  13. ClusterBy: a handy little function for the toolbox
  14. R tips and tricks: Producing smooth bitmap plots
  15. Fun with statistics: estimating blog readership (a do-it-yourself recipe)
  16. Pittsburgh Perl Workshop 2007: Don't miss your chance to speak!
  17. Seven signs YOU may have created a Gratuitous Domain Specific Language
  18. A bright future: security and modern type systems
  19. My photo of British soldier lichen is now published!
  20. Hailstorm!
  21. Greasmonkey script annotates IMDb movies with their decoder-ring percentile ranks
  22. Talk: Fun with Numbers: R and Perl (and IMDB data)
  23. My upgrade to Fedora 7: rocky start but great finish
  24. I'm going to be a published photographer!
  25. Repairing my Kenwood A/V receiver's remote-control sensor
  26. Good espresso at Sheetz?
  27. New Fedora Core RPMS for CRAN packages arm, Matrix, lme4, car, coda, leaps, and mlmRev
  28. Engauge Digitizer: a handy tool for extracting data from charts
  29. Netflix vs. Amazon Unbox: Netflix still wins
  30. I have written a short novel's worth of content for my blog
  31. Directory-tree printing in Haskell, part three: lazy I/O
  32. Debate to learn. Learn to debate.
  33. Directory-tree printing in Haskell, part two: refactoring
  34. The IMDB Movie Rating Decoder Ring: updated w/ 2 March 2007 data
  35. A simple directory-tree printer in Haskell
  36. Don't let password recovery keep you from protecting your users
  37. Ruby 1.9 gets handy new method Object#tap
  38. A bad way to start the evening

2006 56

  1. Never store passwords in a database!
  2. I blame the pie
  3. Lowering the bar for over a decade
  4. Minor site churn
  5. Adding Haskell syntax highlighting to the Typo blogging system
  6. Introductory Haskell: Solving the Sorting-It-Out Kata
  7. A type-based solution to the “strings problem”: a fitting end to XSS and SQL-injection holes?
  8. If unit testing can't keep Rails safe from string-escaping problems, what makes you think it will keep your projects safe?
  9. GHC 6.6 is out!
  10. Unit testing is a tool, not a goal
  11. Baker's percentages and how not to explain them
  12. The 2006 Pittsburgh Perl Workshop is a ten-ton can of programming whoop-ass
  13. Netflix: don't act like weasels
  14. Database connection leak in Typo 4.0.3: problem solved
  15. Typo-4.0.3 instability and a minor patch for sqlite3-ruby
  16. Solving the Google Code Jam "countPaths" problem in Perl
  17. Solving the Google Code Jam "countPaths" problem in Ruby
  18. Solving the Google Code Jam "countPaths" problem in Haskell
  19. Some recent reviews of distributed source-code-management systems
  20. Adding reddit and del.icio.us buttons to articles in Typo
  21. How to make sure your servers come back up after an extended power outage
  22. Amazon Grocery: an upbeat mini-review
  23. Upgrading my blog to run Typo 4.0
  24. A quick look at my blog's web statistics
  25. A coder's guide to usage guides (and why you ought to use one)
  26. Interesting stuff: matchstick moss (British soldier lichen)
  27. Claiming my blog on Bloglines
  28. Mini-review of CafePress's direct-printed t-shirts
  29. Dell-support follow-up survey
  30. LectroTest: new release, new talk, and the new LectroTest Emporium!
  31. New server arrives: my adventure in Dell customer-support Hell
  32. Macro photography: lady-beetle larva
  33. Unexpected downtime
  34. My code is “so clever as to be stupid”
  35. Two good talks on software and freedom
  36. Unofficial answers to FAQs about Giant Eagle's “fuelperks” gas discount
  37. The Supermarket Pricing Kata in Haskell
  38. The honeybee stories are back!
  39. Perl and Pittsburgh: fun stuff coming your way!
  40. Composing functions in Ruby
  41. The Bowling Game Kata in Haskell
  42. The "perfect shuffles" puzzle (solved in Haskell)
  43. Talk: Embedded domain-specific languages for Perl
  44. Good stuff: Tab Mix Plus for Firefox
  45. Finding duplicate words in writing: a handy Perl script
  46. How to flash your BIOS when you don't have a floppy drive
  47. My new rig is up and running
  48. Plogs: channelized shovel marketing from Amazon
  49. Ryan Carson: Building web applications on a budget
  50. A simple Apache recipe for migrating blog articles to a new host
  51. Good stuff: Aldo Coffee Company
  52. Night of the long-tailed beast!
  53. Everything old is new again: moving content over from my old blog.
  54. Wondrous oddities: R's function-call semantics
  55. Mining gold from the Internet Movie Database, part 1: decoding user ratings
  56. Improving Typo's spam protection

2005 36

  1. Cost-reducing interfaces should be the focus
  2. Proofreading with speech synthesis
  3. Try Ruby from your web browser
  4. Good stuff: Google Local for mobile devices
  5. Ten simple ways to protect your privacy
  6. Wow! A Haskell-based first-person shooter!
  7. Verizon FiOS fiber-optic Internet service: a first look
  8. Replacing the fan array in my HP ProCurve 4000M switch
  9. Things to do with unexpected free time
  10. Linux just works
  11. Damian Conway's talk on Sufficiently Advanced Technologies
  12. Interesting stuff: keeping bees
  13. Top-ten weblog usability mistakes: My blog's scorecard
  14. Google Web Accelerator vs. unsafe linking: Round Two!
  15. The oddities of floating-point arithmetic
  16. Scope herding with delimited continuations
  17. New RPM release: Emacs Speaks Statistics 5.2.10
  18. Good stuff: Foyle's War
  19. Closures and the professional programmer
  20. Power parsing with Haskell and Parsec
  21. I have moved my blog over to Typo
  22. How to change symlinks atomically
  23. Perl Mongers meet at PAPA-8 pinball tournament kickoff!
  24. Seeing small with digital cameras
  25. Math makes tea taste better
  26. The button_to helper is now part of Rails!
  27. Where have the IEEE t-shirts gone?
  28. Good stuff: One-Touch high capacity stapler from Staples
  29. Taking the unsafe GETs out of Rails
  30. Google Web Accelerator offers web developers an important opportunity
  31. Cool stuff: Composable memory transactions
  32. It's official: I like Ruby
  33. Writing a simple Ruby evaluator in Haskell
  34. Source code management with darcs: a first look
  35. When worlds collide and then dance: Test::LectroTest meets Test::Builder
  36. Google's no-follow proposal is a double win for the web

2004 11

  1. Letterpress Christmas cards
  2. Floss loss: how Amazon screwed up an order for the world's best dental floss
  3. How do software teams scale?: A snapshot based on switching SCM tools
  4. 2004 Presidential-election state polling data at a glance
  5. Fun with Modern Election Methods
  6. LectroTest: An automatic, specification-based testing tool for Perl
  7. Open-source statistics: R and ESS
  8. The Mobile Weather Problem and its solution
  9. Computing the digits of e
  10. Concurrent port scanner in Haskell
  11. My new Radio VCR

2003 1

  1. Fun with Asterisk

2002 1

  1. A Coder’s Guide To Coffee

2001 1

  1. Seven Lessons from the ICFP Programming Contest