All blogs / Software / engineering practice
The Buckblog
assorted ramblings by Jamis Buck
Software / engineering practiceAlgorithms / data structuresGraphicsEngineering blogs
- Posts
- 406 from 6 Feb 2004 to 23 Dec 2016
- Posting
- quiet since 2016
- Kind
- personal blog
- Feed
- http://feeds.feedburner.com/buckblog
2016 33
- Process Roulette
- Weekly Programming Challenges -- Recap
- Weekly Programming Challenge #16
- Weekly Programming Challenge #15
- Weekly Programming Challenge #14
- Weekly Programming Challenge #13
- Weekly Programming Challenge #12
- Weekly Programming Challenge #11
- Weekly Programming Challenge #10
- Weekly Programming Challenge #9
- Weekly Programming Challenge #8
- Weekly Programming Challenge #7
- Weekly Programming Challenge #5
- Weekly Programming Challenges
- Truth: Generating Truth Tables
- Disrupting Your Comfort Zone
- Think You’re Failing? Look Around.
- The Minimalist Programmer
- Tapping ActiveRecord Relations
- Medium.com
- Introducing the Query Composer
- The Poverty of Constraints
- Variations on a Theme: "I Becomes We..."
- Being a Good Neighbor...
- Implementing a Bloom Effect with Swift+Metal
- Don't Feed the Hamster the Whole Stalk
- The weakly-flowing stream
- Living with Your Eyes Open
- Software Proverbs
- Mazes in Swift
- A Pretty-Printer for SQL
- Don't Assume It's Difficult until It Is
- Game Demonstration: Recover the Widgets
2015 32
- Checking In...
- Avoiding "Call Super" with Callbacks
- Little Things: Introspecting Block Parameters
- Integration API vs. Internal API
- Upsilon Mazes
- Representing a Toroidal Grid
- Little Things: Refactoring with Hashes
- Fifteen Minutes at a Time
- Mazes with Blockwise Geometry
- Testing What You Should Have Written
- The Dynamic Def
- Bulk Inserts in ActiveRecord
- Changing the Channel
- Generating Word Search Puzzles
- Default Scopes are an Anti-Pattern
- Little Things: Heredocs
- Little Things: Hashes & Procs
- Ideas are Cheap
- Reducing a Number to Its Sign
- Writing a Klondike Puzzle Solver
- Writing a Simple Recursive Descent Parser
- tar.gz in Ruby
- Mazes for Programmers
- Experimenting with L-Systems
- Playing with Constants, Methods, and Superclasses
- Task Tracking for Neurochemical Brains
- Mazes for Programmers: Beta!
- Lessons from the Kitchen
- Hanging Out a Shingle
- Getting Back in the Pool
- A Better Recursive Division Algorithm
- Winding Back Up
2011 18
- Winding down...
- Sharing the Inheritance Hierarchy
- Maze Generation: More weave mazes
- Maze Generation: Weave mazes
- Weave Mazes: Your Take?
- Programming Language Survey Results
- Kaleidoscope
- Mazes in CoffeeScript
- Maze Generation: Algorithm Recap
- Maze Generation: Sidewinder algorithm
- Maze Generation: Binary Tree algorithm
- Maze Generation: Growing Tree algorithm
- Maze Generation: Hunt-and-Kill algorithm
- Maze Generation: Wilson's algorithm
- Maze Generation: Aldous-Broder algorithm
- Maze Generation: Recursive Division
- Maze Generation: Prim's Algorithm
- Maze Generation: Kruskal's Algorithm
2010 13
- Maze Generation: Eller's Algorithm
- Maze Generation: Recursive Backtracking
- Theseus 1.0
- Ekawada: Approved for Sale!
- Design Forces in Ekawada, Part 5
- Ekawada: Submitted!
- Design Forces in Ekawada, Part 4
- Design Forces in Ekawada, Part 3
- Design Forces in Ekawada, Part 2
- A look inside Ekawada's design
- Still here...
- Unobtrusive, yet explicit
- There is no magic, there is only awesome (Part 4)
2009 11
- There is no magic, there is only awesome (Part 3)
- There is no magic, there is only awesome (Part 2)
- There is no magic, there is only awesome (Part 1)
- New Interview Online
- BucketWise v1.1.0
- BucketWise v1.0.0
- BucketWise: Preview #2
- Buckets: Preview
- Net::SSH, Capistrano, and Saying Goodbye
- Net::SSH and friends, update
- The future of FuzzyFinder-TextMate
2008 33
- SQlite3-Ruby Windows Builds
- "Recovering from Enterprise" video available
- Vim Follow-up
- LEGOs, Play-Doh, and Programming
- Coming home to Vim
- Capistrano 2.5.0
- SQLite3-Ruby 1.2.3
- Cap 1.4.1? Go 1.4.2. Now.
- Cloning Ubuntu Hardy image in VMWare Fusion
- Tutorial #2: Recap
- Online Capistrano Tutorial #2
- Call for (Capistrano) Links
- Online Capistrano Tutorial Session
- Net::SSH 2.0.3
- Capistrano 2.4.3
- Capistrano 2.4.0
- Net::SSH 2.0 (and friends)
- Capistrano 2.3.0
- Maintenance Releases: Capistrano, Net::SSH
- Preview Releases: Net::SSH, Net::SSH::Multi
- Net::SSH::Multi + Rake == Tasty Potential
- More preview releases from the Net::SSH family
- Preview Releases: Net::SSH and friends
- Net::SSH and Thread-safety
- Net::SFTP v2: done?!
- Magic 8ttp Ball
- When duplication is not duplication
- Capistrano 2.2.0
- Net::SFTP 1.1.1
- Capistrano 2.2.0 Preview
- Dealing with project overload
- Advanced Rails Recipes and Capistrano
- Never. Ever. Cargo-cult.
2007 68
- Documentation coordinator
- Call for help: Capistrano documentation
- Capistrano 2.1
- Two Interviews
- Child 3.0
- Capistrano 2.1 Preview #1
- Net::SSH 2.0 preview #1
- Interview at Akita On Rails
- Net::SSH revisited
- Capistrano: Multistage
- Capistrano 2.0
- Ostrava on Rails
- Capistrano 2.0 Preview 4
- Net::SSH 1.1.2
- Capistrano 2.0 Preview 3
- Capistrano and Leopard
- Jamis and Marcel at MountainWest RubyConf 2007
- Capistrano 2.0 Preview 2
- Net::SSH 1.1.1
- Net::SSH 1.1.0
- Capistrano 2.0 Preview 1
- Faking cursors in ActiveRecord
- ActiveRecord::Base#find shortcut
- Using Capistrano to manage EC2 instances
- Cyberbullying, over the top
- Raising the right exception
- Rendering empty responses
- Poor-man's pagination
- Vacationing
- Dereferencing fixtures
- Method visibility in Ruby
- Review: Build Your Own Ruby on Rails Web Applications
- Route#to_s
- Hiatus
- begin + else
- Infinity
- Overriding attributes in ActiveRecord
- Nesting resources
- Capistrano 1.4.0
- Introducing TzTime
- Per-developer configuration
- More on watching ActiveRecord
- Unit vs. Functional vs. Integration
- Testing your views
- Scaffolding's place
- Review: Beginning Ruby on Rails E-Commerce
- Object#with_options
- How would YOU do it?
- Named, explicit routes
- ShellScriptBuilder
- Blocks rock
- ActiveRecord association scoping pitfalls
- Managing Rails versions with Capistrano
- Dependency checking with Capistrano
- Concerns in ActiveRecord
- Extending render
- Refactoring RJS
- SQLite3/Ruby 1.2.0
- More inline RJS
- Moving associated creations to the model
- Inline RJS
- Extending ActiveRecord associations
- Watching ActiveRecord Do Its Thing
- Brevity vs. Clarity
- Custom maintenance pages
- assert_xml_select
- Rcov
- assert_select
2006 55
- Under the hood: ActiveRecord::Base.find, Part 3
- Under the hood: ActiveRecord::Base.find, Part 2
- Y, N, Z!
- Under the hood: ActiveRecord::Base.find, Part 1
- Getting Things Done with Tracks
- Mini-API's
- Designing a DSL
- Just say "no" to certification
- Don't be afraid of harnessing SQL
- A Rubyish DSL for Logic Programming
- The Rails Way
- Prolog in Ruby
- Mining ActiveSupport: Object#returning
- Monkey-patching Rails: Extending Routes #2
- Indexing for DB performance
- Monkey-patching Rails: Extending Routes #1
- Rake deploy with multiple staging targets
- Skinny Controller, Fat Model
- Under the hood: route generation in Rails
- Vacationing
- Helping ActiveRecord finders help you
- Running tests on deploy
- Under the hood: route recognition in Rails
- Mongrel, SSL, and Apache 1.3
- Under the hood: Rails' routing DSL
- Capistrano cheat sheet
- D&D, Knowledge bases, and Prolog (oh, my!)
- Inside Capistrano: the Command abstraction
- 1d6 more reasons to love Ruby
- Inside Capistrano: the Gateway implementation
- GDB wrapper for Ruby
- Inspecting a live Ruby process: Day 2
- Inspecting a live Ruby process
- Capistrano: Not just for Rails
- Introducing the Capistrano Shell
- Enter Mephisto
- The Future of Capistrano
- Capistrano 1.1.9 (beta)
- Quick Update
- Moving to Idaho
- Writing Domain Specific Languages
- Web services, Rails-style
- Got a Snazzy Capistrano Recipe?
- Integration Testing in Rails 1.1
- Capistrano 1.1
- SwitchTower: Renamed
- "Kestrel" is taken...and how!
- SwitchTower C&D
- TestUnit Inheritance Hierarchies
- Tip: TextDrive and Lighttpd
- Wait Until it Hurts
- Beyond Rails with SwitchTower
- Separate passwords for svn/ssh via SwitchTower
- Using SwitchTower with multiple deployment stages
- SwitchTower 0.10.0
2005 63
- SwitchTower progress
- Seasons Greetings
- Christmas wish
- SwitchTower wishlist
- Rails 1.0
- Two tips for working with databases in Rails
- The Lion, the Witch, and the Wardrobe
- The best things happen while you're coding....
- Returning to Firefox
- Phonewords
- Revealing hidden assumptions in estimation
- Enter the Bumblelog
- aMAZE yourself with Haskell
- Haskell bundle for TextMate
- Learning Haskell
- RubyConf 2005
- Plugging into Rails
- Writeboard
- Easy ActiveRecord Scripts
- Getting Started With ActiveRecord Migrations
- SwitchTower on OSX
- Conditional SwitchTower Configuration
- SwitchTower Haiku
- Fun with SwitchTower
- Enumerated types in Ruby
- Introducing SwitchTower
- Application Deployment with Rails
- 1,000th Wedding Anniversary
- Rails 0.13, Basecamp 2, Backpack
- Singing the Praises of Benchmark
- IE is teh 3v1l
- URUG Meeting
- Backpack in WSJ
- SQL query dependencies in Rails apps
- Confessions
- The Sad State of Mac Genealogy Software
- Moved
- Switching to Typo
- Backpack is now available
- This is me, coming up for some air
- Text Editing Dilemma
- RDoc Template
- Test-First Development
- Syntax 0.7
- Challenges of Parenthood
- To sync or not to sync
- The Pragmatic Programmer
- The perils of programming while sick
- On the job
- Usage scenarios for BudgetWise
- Ajax
- Step Three: HTML Mockups
- Rails Presentation
- Look at me, I'm a Signal!
- Java SDK 1.5 Beta -- Tiger
- Step Two: Paper Sketches
- Taking 37signals' Process for a Spin
- Building of Basecamp
- 34 Reasons Why I Will Never Use Debian
- Introducing Rails to Java Users
- Making CGI Rails Faster
- Busiest. Day. Ever.
- The Cat's Out of the Bag
2004 80
- Disappointments in Ruby Land
- SQLite3 Bindings for Ruby
- Vim, Ruby, and Family History
- Muttifying my Mail
- Net::SFTP
- Net::SSH: checked in
- Refactoring Net::SSH: Part 7
- Even better
- Now that's cool
- Recent Writings
- Refactoring Net::SSH: Part 6
- The Pinball Number Count
- Too Many Distractions
- Needle 0.9
- Refactoring Net::SSH: Part 5
- Refactoring Net::SSH: Part 4
- Thoughts on Service Models
- Refactoring Net::SSH: Part 3
- Needle on RubyForge
- Refactoring Net::SSH: Part 2
- Reloading Dependencies
- Net::SSH Refactoring Adventure
- On the Road to a New DI Container
- Rubyish Dependency Injection
- RubyConf: Day Three
- RubyConf: Day Two
- RubyConf: Day One
- Getting Ready!
- RubyConf Presentation: Dry Run
- Projects I'd Love to Have Time For
- Uses for Copland
- RubyConf Presentation: Rough Draft
- Katie's Crawling!
- Blogging with Vim
- Back to Blogging
- Copland Progress
- Jelly: Scripting for the Soulless
- Fish
- Project Overload
- Frameworks as Deliverables
- Vade Mecum and YanceyWare Reader
- Down With XML!
- Racing Simulation for Linux
- The Horror of Blimps
- Side Effects of Deferred Instantiation
- New Wheels
- Car Shopping
- Copland
- IDE's and You
- Funeral Cookies
- ReiserFS vs. ext3
- Rotating nVidia in Linux
- Dual Monitor Fun
- Reflections on Linux
- Up and Running
- Progress Update
- Gentoo-ing Away
- Just When You Think You Know it All...
- Dialectical Fun
- Fanfare for the Common Programmer
- Real Ultimate Power!
- Sex and Tattoos
- Ah, Utah
- Bitten by OpenSource
- Current Projects
- Two Great Books
- To All the Books I've Loved Before
- Java Good, Java Bad
- A Shadowed Land Called the "Twilight Zone"
- Blogs Blogs Blogs
- Move Completed
- Neverwinter Nights
- Being a Dad...
- More Klingon Programmers
- Klingon Programmers
- Generators and Timelines
- Thus it Begins...
- NPC Generator
- Dragon
- Orkut.com