All blogs / Software / engineering practice
code.dblock.org
Software / engineering practiceEngineering management / careersAI / MLComputing historyEngineering blogs
- Posts
- 611 from 10 Aug 2008 to 30 Oct 2026
- Posting
- weekly (31 in the last year)
- Kind
- personal blog
- Feed
- https://code.dblock.org/feed.xml
2026 31
- The Matter of Taste
- One Tool for the (Spell Checking) Job
- I Am Just One Engineer Armed with AI
- Introducing Dylint Spellcheck (Rust)
- Introducing Markdownlint Spellcheck
- Introducing RuboCop Spellcheck
- AI Wants to Eat Your Project Backlog
- ELPDS: Inspecting FAT Partitions in 1995
- A 1998 PDF-to-Text Converter
- Universal Copy System Link for 97 Windows PCs
- zBalls: a 1998 Java Applet
- Good Morning, Dave: the 1998 INET Conference Kiosk Launcher
- File & Folder 98: a 1998 Word Document Manager
- The Second Life of Autoconf for MS-DOS
- Porting a 1996 Pascal/Delphi Calculator to Rust (CLI + MCP)
- Using AI Effectively in Technical Writing
- Serving Markdown for AI Agents, Now as a Jekyll Plugin
- In Meetings, Raise Hands Before Reading
- Porting a Discord Bot to Microsoft Teams, Entirely With AI
- Standardizing Exception Message Style in Ruby
- Adventures in Daylight Saving, Norfolk Island, and Time Zone Math (in Ruby)
- Benchmarks Are Free Now
- Ruby Instance Variables Are Not Inherited (and Why That Breaks Your DSL)
- Generating AI Descriptions of Automated Pull Requests
- Coding with AI Agents is Now a Baseline Expectation for Managers
- How I Made $360 by Serving Markdown to A.I. agents from My Jekyll Blog
- Opening Proprietary Code to Contributors Checklist
- AI Slop: A Slack API Rate Limiting Disaster
- Right-Sizing Engineering Teams for AI
- The Golden Ratio of Manager to IC
- Serving Markdown for AI Agents in Jekyll
2025 13
- Turning Hypermedia APIs into MCPs
- Using AI to Reduce the Burden of Status Reporting
- How to Disagree and Commit like Switzerland
- Don't Tell Engineers What to Do
- Using Claude Code with Google Sheets
- I Failed to Implement the Diameter of a Binary Tree in a Coding Interview
- Using Claude-Swarm to Upgrade Ruby Projects
- Pros and Cons of Going from Individual Contributor Back to Manager
- Executing Structured A.I. Workflows with Shopify Roast
- Apologizing for My Obsessiveness Over Punctuation
- Leaving Amazon
- Should You Work on Weekends?
- Meeting Open Source Users Where They Are
2024 14
- Adding a Spell Checker to a Jekyll Blog
- I Participated in 2882 Meetings in 5 Years
- Do Not Fix Bugs Reported in Your Open Source Projects
- Harvesting the Low Hanging Fruit in Open Source Projects
- How to Grow Open-Source Contributors and Maintainers
- Creating an OpenSearch Cluster with Dangling Indexes
- Safely Passing Ruby Variables to JavaScript in ERB
- OpenSearch Project Joins the Linux Foundation
- Enumerating DigitalOcean Apps with a Deprecated Ubuntu 18 Stack
- Fixing Bugs in the OpenSearch API Documentation using API Spec Tests
- Using OpenSearch Cat API Response Formats
- Writing a Channel Slack Bot with Granular Permissions
- Adding eslint and Auto-Fixing an Existing TypeScript Project
- Commenting on Pull Requests in GitHub Actions
2023 8
- Making Raw JSON REST Requests to OpenSearch
- How to ingest a PDF document into OpenSearch with the ingest-attachment plugin
- Writing OpenSearch Plugins and Extensions (in Python)
- Changing the default admin password in OpenSearch
- Getting started with Vector DBs in Python
- Triggering CI from Pull Requests and Force Pushes in GitHub Actions
- Backing up DigitalOcean MongoDB to Dropbox
- Migrating from Dokku to DigitalOcean Apps
2022 4
2021 8
- How I Learned Rust by Accident
- Generating a Task Matrix by Looping over Repo Files with GitHub Actions
- Automating Code Changes via GitHub Actions Making Pull Requests
- How to run GitHub Actions Locally using Act
- To Wrap or Not to Wrap in Markdown?
- Walking Ethereum Transaction Logs to Find Lost Robbies w/Etherscan API
- Adding Work E-Mail to a GPG Key and Signing Git Commits
- How I Minted My First Generative Art NFT
2020 12
- How to tell an Engineer to avoid the weasel word "like"
- Migrating Classic Slack Ruby Bots to Granular Permissions
- Dup, Don't Modify Input Hash Parameters in Ruby
- Keeping a CHANGELOG at Work
- Calling a GraphQL API in Redwood.js
- Comparing Version Numbers in Ruby
- Using Bash Parameter Expansion for Conditionals in GitHub Actions
- I've Asked You to Become an Open-Source Project's Co-Maintainer
- Writing a New OpenWeatherMap.org API Ruby Client
- Working with AWS SDK for PHP and Data Exchange
- Working with AWS SDK for C++ and Data Exchange
- Restoring Data into a MongoDB Dokku Container
2019 17
- Writing DotNet Code on a Mac, No Administrator Privileges Required
- Pros and Cons of Going from Management Back to Individual Contributor
- Building AWS Data Exchange and the Value of Simple Ideas at Scale
- Take an Incremental, Agile Approach to Scheduling Your 1:1s
- Asserting Existence with Mocha, Chai and TypeScript Strict Null Checks
- Handling of HTTP Headers in Grape with Rack and Rails
- Getting Started with Typescript
- Day 1 at Amazon Web Services & Principal Engineer Interviewing Tips
- Building the Artsy Open-Source Engineering Brand
- Rebooting Vestris.com
- Reflecting on 8 Years Building Artsy
- How to BCC
- Using Strava Webhook Events API
- How to Hire a VP of Engineering
- How to Divide CTO and VP of Engineering Responsibilities
- The Art Market 1.0, University of Zurich
- Solving Slack-Side Disconnects in slack-ruby-client
2018 24
- Writing a New Strava API Ruby Client
- Dealing with Strava API OAuth Token Migration
- Implementing Geolocation with a Custom GraphQL Scalar Type in Ruby
- Storing Timestamps in MongoDB with Mongoid
- Please Pay Me to Read Your Email, for Charity
- Prompting for Github Credentials in Ruby
- Finding a Github User's E-Mail Address
- Grouping and Aggregating Weekly in MongoDB
- Passing The Relay Environment Through React Navigation
- Enabling Relay-Style Mutations and Pagination
- Warning: Encountered two children with same key
- Wiring Up a React Native Client to a Rails GraphQL Server
- Implementing a Ticking Clock Timer in React Native
- Adding and Removing List Items in React Native
- Implementing a Toggle Button in React Native
- React Native Hello World
- Installing and Upgrading MongoDB in Dokku
- Christie's Art + Tech Summit: Exploring Blockchain
- Slava: a Slack Bot for Strava
- How to Write a Great CTO Job Description
- In Conversation with Andrew Russeth, ARTNews
- Enabling SSL on Github Pages
- Auto-Publishing Strava Runs to Github Pages
- State of the Art Podcast: How Art Will Make Us Human
2017 20
- Google Finance Web API Ruby Client
- Sotheby's Institute: Mass Appeal - Tech's New Role in Art Collecting and Fundraising Panel
- Generating and Handling Errors in GraphQL in Ruby
- How To Do Startup Technical Due Diligence
- Past, Present and Future of Art & Technology Panel at HG Contemporary
- Building and Consuming a GraphQL API with Ruby on Rails
- Artsy Overview for Coalition for Queens and Q&A
- Introducing S'Up for Slack Teams
- The Future of Art (Market) on the Blockchain
- A Curriculum for Teaching how to Solve a 3x3 Rubik's Cube
- Grape Framework 1.0 Released
- Writing Data to Amazon S3 from Apache Spark
- The Future of Art
- Getting Started with Spark, Hadoop, HDFS and Hive
- What's the simplest way to parse JSON in Scala?
- The Demonic Possession of Hashie::Mash
- Building a Simple Alexa Skill in Node.js (Live Code)
- Installing, Starting and Waiting for ElasticSearch in Travis-CI
- Building an Alexa Skill to Play Your Podcast
- The AlexaJS Community Organization
2016 22
- Art Basel Miami 2016: The Art World Is Officially Online
- Hacking on Multiple Amazon Echos (Alexa)
- MIT Hacking Arts 2016 Hackathon
- MIT Hacking Arts 2016 Conference
- Interview at NASDAQ
- Use Open-Source to Pivot Around Your Hiring Problem
- The Mongoid Community Organization
- Phone Screens are Harmful and The Benefits of the Informational Interview
- Democratizing the Art World Without Pitchforks
- Obj-C Core Data View
- Very Slow MongoDB in Development and Test
- Should a CTO be technical?
- How To Write Your Code Bootcamp Academy Resume
- A Directory Structure for OSS and Work Github Clones
- Your First Slack Bot Service (Video)
- Backing up MongoDB Databases in Dokku Containers to Dropbox
- What do Software Engineers Do?
- Running Slack Bots on DigitalOcean with Dokku
- Why does Slack API rtm.start send you all this data?
- Downgrading a Yum Package with Chef
- When Robots Die - Slack account_inactive and Closed Connections
- Slack API Explorer and ShellBot (aka Shlack)
2015 35
- PlayPlay.io: Ping Pong, Chess, Pool and Tic-Tac-Toe Slack Bot
- Writing a Slack Bot running on Rails (with React)
- Zooming Out to Give Away Your Legos
- Writing a Slack Bot Service for Multiple Teams
- How To Test Delayed Jobs
- Passing Tests with Volkswagen
- Docker-machine Hangs on Start: Testing TCP Connection
- MIT Hacking Arts 2015
- The Missing CTO and the IKEA Customer Service
- Turning Hindsight into Foresight
- Lazy Each in Ruby MRI vs. Rubinius
- Getting Out of Your First Git Mess
- Connecting People to Enable Magic
- The New Ruby Grape
- Creating Thinking Time while Walking to Work
- Getting Things Done with Mongoid 5
- Offering Time to The Team
- The Easiest Way to Write a Slack Bot in Ruby
- What does a CTO do?
- A Roadmap for Hiring Engineering Teams
- We don't poach each-other's engineers. It's a New York thing.
- What is the difference between a CTO and a VP or Head of Engineering?
- Join Us at NYC Tech Slack
- Slack Bot Real Time Messaging API Integration in Ruby Tutorial
- Your First 60 Days at an Engineering Job
- ActionMailer Integration Testing with Email-Example-Spec
- Becoming Open Source by Default
- Open-Sourcing the Artsy Engineering Compensation Framework
- CTO Cast Podcast: Open Source (Russian)
- Remote Engineering, Cultural and Technical Diversity
- How to Move Jekyll Posts Across Sites: Handling Redirects
- First Class Mongoid Queries with Collection Snapshots
- Verifying a Jekyll Site With Keybase.io
- How to Make Recruiter Spam Useful: My Canned Response
- The New code.dblock.org Powered by Jekyll
2014 23
- Designing a Hypermedia API with Grape & Roar
- Video: Mentoring Engineers and Humans
- I Want to Contribute to Open-Source: Where do I Begin?
- Taking Over Someone Else's Open-Source Projects
- Syntax Highlighting in Markdown Content with Recarpet, Coderay and Rails
- The Other Side of Your Interview
- Golden Gate Ruby Conference 2014
- Serving Hypermedia with a Grape API and Roar
- Swissnex: Swiss Startup Lunch
- Anatomy of a Ruby Gem: Grape
- Tiling and Zooming ASCII Art
- When do you need to hire a designer?
- Why One Giant Source Control Repository Is Bad for You (and Facebook)
- Hex, Crayola and iOS7 Colors with EDColor
- Pod5 Podcast
- Reorganizing CocoaPod Folder Structure for Unit and Integration Testing
- Mapping and Tiling on iOS
- Your First CocoaPod
- iOS UIView with an Image and Text with Dynamic Height
- Mocking UIAlertView with OCMock
- Debugging XCTool's NSInternalInconsistencyException: Failed while trying to gather build settings for your scheme
- dotNetInstaller 2.3 Released
- American Horror Story and Entitlement in a Job Interview
2013 33
- Ruby Enumerable Detect with Value
- Custom RSpec Meta Tag Validator
- ld: library not found for–lXext installing RMagick on Mavericks
- Grape Mounted behind Goliath
- Social Coding: Beyond Trolling Healthcare.gov
- Error: No such module on process.binding
- EdgeConf 2013 NYC
- Recap of the StrangeLoop 2013 Conference in St. Louis
- Making HTTPs Requests in Ruby & JavaScript w/ Node.js
- 10 Largest Collections in a MongoDB Database w/ Mongoid
- Precompiling Rails Assets before RSpec/Capybara Integration Tests
- Evolving APIs using Grape API Versioning
- My Pathological Fear of Deadlines
- Mentoring 101
- How To Reject Engineering Candidates
- Building & Scaling a Test-Driven Culture @ AppNexus (Video)
- Being Helpful with Ruby Exceptions and Error Messages
- Your First Ruby Gem
- Calculating the Gifted and Talented Percentile Rank
- Grape vs. Poncho
- Doctors, Surgery and Open-Source
- 5 Anti-patterns in a College Grad Engineer's Resume
- Grape 0.4.0 Released w/ Stricter JSON Format Support & More
- ResourceLib 1.4 Released
- Graduating to Jenkins CI for Ruby-on-Rails Teams - Jenkins User Group in NYC (Video)
- In Defense of Heroku
- Data Corruption Is Most Likely Caused By Your Code And Not Your Database
- Three DevOps Rake Tasks I Use Daily on Heroku with MongoDB
- Should you use 'Should' in RSpec Examples?
- Hacker News Karma: 666
- Why I am Excited About the new Cornell Tech School
- Open-Source Roundup for Early January 2013
- Help Me Fix Tech Recruiting: Become a Recruiter
2012 63
- 10 Things Engineers and Non-Engineers Can Do to Make a Website Faster
- Treat Every Line of Code as If It's Going to be Thrown Away One Day
- Losing Control to the Heroku PaaS
- Migrating from a relational to a NoSQL cloud database?
- Five Ways to Torture Candidates in a Technical Interview
- Measuring Performance in Grape APIs w/ NewRelic RPM
- Debugging 'object has no properties' in a MongoDB map/reduce
- TaxCloud: SOAP Service Integration in Ruby
- Slow Migration to Mongoid::Slug 2.x
- New York Times Open Source Science Fair
- Hack 0-60 in Startup Tech
- The Safety Net: Removing Barriers to Test Automation
- AgileDC 2012: Taming the Testing Beast
- WAFFLE 1.5 Released
- JNA 3.5.0 Released
- The tech? It just worked. Thanks AWS!
- How do I get the name of an object's type in JavaScript?
- Serkan Piantino on Scaling Facebook News Feed and Ken Little on Scaling Tumblr
- Single Sign-On: Servlet Negotiate Security Filter (Kerberos + NTLM) w/ Waffle and Jetty
- 5 Ways to Avoid Feature Branches
- dotNetInstaller 2.2 Released
- VMWareTasks 1.7 Released
- RSpec-Rerun Gem
- Returning a Sample Set from a Mongo Collection w/ Mongoid
- Wrapping Responses with Grape and Rack
- GoRuCo 2012: From Zero to API Cache w/ Grape & MongoDB in 10 Minutes (Video)
- 5in5 NYC Episode 7
- Why I Love Code Reviews
- Jenkins AnsiColor 0.3.0 Released
- MongoNYC 2012: Using MongoDB to Build Art.sy - Video
- Community MSI Extensions 1.3 Released
- ResourceLib 1.3 Released
- Pressing the Big Scary Red Reset Button
- How Not to Rewrite Everything
- How to Cross the Chasms of Your Technology Career
- You Have to Stop Saying Your Experience is Under NDA in Interviews
- Grape 0.2.0 Released
- Paging and Iterating Over Large Mongo Collections
- How To Convert Numbers Into Words in Ruby (with numbers_and_words)
- VMWareTasks Moved to Github
- Avoiding Production Disasters and The Value of Patience in Software Development
- Full Client-Server Negotiate SSO in Java w/o a Web Server using WAFFLE
- How Long Does it Take to Create a 12 Lecture, 8 Week Course
- Crafting a Ruby on Rails Course for Developers
- How to Redirect Bang Hash Urls
- Why You Should Leave Microsoft, Too
- Github Hacked: Things to Do on Monday
- Waffle @ NYJavaSIG
- Watching Rack Application Changes with Guard-Rack
- Grape API Mounted on RACK w/ Static Pages, Tests, JQuery UI, Backbone.js and Even Mongo
- Don't Hate UI Testing - Reliably Testing Asynchronous UI w/ RSpec & Capybara
- Toyota Production System & Why Should Architects Write Code
- Updating Devise Trackable Last User Sign-In Time with Devise Rememberable
- Jenkins AnsiColor 0.2.1 w/ Support for Conceal Codes
- CarrierWave: DelayJob-Processing of Selected Versions, Revisited
- Testing w/ Analytical Gem and RSpec
- Grape API Mounted on RACK w/ Static Pages
- How Art.sy uses Github to Build Art.sy
- Octopress: Setting up a Blog and Contributing to an Existing One
- Octopress: Blogging Evolution
- Paginating w/ Mongoid 2.4.0, MongoMapper and Kaminari
- Warning: Toplevel Constant XYZ Referenced Admin:XYZ
- Fabricating Spec Failures
2011 146
- Blame it all on MongoDB
- Grape vs. Webmachine
- Measuring Activity in Open-Source Projects using Github Network Graph
- Grape: Describing and Documenting an API
- Pushing Assets to S3 w/ Rake: Versioning and Cache Expiration
- Serving Compressed Rails Assets from S3 via CloudFront
- Sensations Fortes: Deploying Software from Airplanes
- dotNetInstaller 2.0 Released
- Me in Wired: Art.sy's ‘Genome' Predicts What Paintings You Will Like
- Favorite Talks from QConfSF 2011
- Oh BetaBeat: Me in New York's 20 Most Poachable Techies
- At QConSF 2011
- Me @ Silicon Alley Talent Fair on NY1
- Alla Klein: A Fake Person In Charge of Customer Support
- NYC.rb: Building RESTful APIs w/ Grape
- Rendering Markdown Documents in Rails
- Don't Use MongoDB?
- Corporate America: How to Let Great Engineers Go
- Grape: Routing Multiple Methods
- Filtering by User-Agent in Rails
- Using GCC to install Ruby w/ RVM on Mac OSX Lion
- Moving to New York? All You Need is the Tech Made in NYC List
- Making Agile Technology Choices
- NoRails: Application Design in Times of APIs
- Mongoid 2.0.2, Mongo + bson + bson_ext 1.4.0 and 1.4.1
- Ubuntu 11.10 and Back
- Sorting Tables in Rails w/ Mongoid
- Migrating from CodePlex SVN to Github
- Eye&Mind Interview
- Oracle Didn't Learn From the Redhat Experience, PRs a NoSQL Database
- Mongo Boston 2011
- Capybara: Failed to Resynchronize, Ajax Request Timed Out (not caused by green elves)
- Mongo Boston – October 3rd Cambridge, MA
- CarrierWave: DelayJob-Processing of Selected Versions
- New Relic: Performance Instrumentation with Grape API
- Mongoid Collection Snapshot
- Just Say 'No' To Mailing List Spam by Recruiters (Continued)
- Rails Editable Mail Templates w/Preview from 37Signals
- IE9: Cache-Busting with Grape Middleware
- Being Lazy: Using the Ruby driver to connect to MongoDB
- Just Say 'No' To Mailing List Spam by Recruiters
- Rails: Custom and Editable Mailer Templates in Markdown
- Implementing My First Jenkins Plugin: AnsiColor
- Jenkins: Running RoR Builds w/ Bash & RVM
- Autoconf: Maybe the First Example of Microsoft Pushing Features into the OS to Kill a Competitor
- Blast From The Past: Jade
- JQuery Konami Komando
- The Jenkins AnsiColor Plugin You've All Been Waiting For
- Barista: Custom Preambles in CoffeeScript => JavaScript
- Deploying Latest to Heroku with Jenkins CI
- Exporting Data to Excel in Ruby on Rails w/ Spreadsheet and to_xls
- CIJoe => Jenkins CI
- Permission denied - /var/tmp/ruby-uuid
- Committing CIJoe Runner Configuration into Git
- Installing a Specific Version of NodeJS, NPM and CoffeeScript
- Embedding API Sandboxes in Documentation
- Contribute to any of these open-source projects and I will help you in any way I can
- Unable to Obtain Stable Firefox Connection in 60 seconds: Downgrading Firefox on Ubuntu
- Happiness is MongoDB: Slides from MongoNYC Meetup
- RSpec: Fuubar + Breaking Tests into Suites
- Selecting items from a dropdown with Capybara, Selenium (Firefox) & JQuery
- No app specified: telling Heroku gem what its default --app should be
- Rubber Ducky Branch
- DBlog: Implementing Skeleton CSS Boilerplate
- Modularizing a RoR Grape API: Multiple Versions
- Introducing Gem-Licenses: Collect 3rd Party Licenses in RoR Projects
- Enginelopers and Devengeers: How do You Title Engineering Hires?
- Modularizing a RoR Grape API
- DBlog: Implementing Blog Post Slugs in .NET
- Open-Source Is Simply Part of my Team's Job Description
- Github is Your New Resume
- Storing Server-Side JavaScript Functions w/ Mongoid + Weekly Rollup
- Sitting is Killing You? Move to New York
- Pragmatic Replacement for the Vendor-Based, Bureaucratic and Soviet Style Technology Decision Makings
- Mongoid 2.0.2 Dropped Pagination => Kaminari
- Non-Traditional Methods of Choosing Technology for a Software Project
- Slides from 'Choosing Technology'
- Moving to New York: a Guide for Software Engineers
- FoodCandy.com: Pulling the Plug
- Waffle 1.4 Released
- RSpec + Capybara Don't Return a Proper Exit Code
- How we Upgraded a Live Site in the Middle of Demo (and Didn't Die of a Heart Attack)
- JNA is now a Githubber
- Internet Explorer Refuses to read CSS from S3/CloudFront
- Git: Deleting Merged Branches
- Compass: Invalid US-ASCII character 'xE2'
- Svn2Svn 1.2 Released
- Delaying Image Processing on Heroku with delayed_job
- Why Microsoft Should Open-Source Skype
- Dear California Engineer - Your Commute is Killing You? Move to New York!
- RoR Win: 'Getting Things Done' with MongoDB Mongoid
- Your Startup's Technology: 0-60 @ Internet Week
- Capitalizing on the LinkedIn IPO: Avoiding Short Term Personal Stock Loss
- :Slow Rails server in development? => :rails_development_boost
- Improving tags map/reduce with MongoDB 1.8.x
- Rails + S3 + CloudFront + Jammit + Heroku + 100 грам
- Grape: API Authentication w/ Devise
- Grape: trapping all exceptions within the API
- Thinking open source: How startups destroy a culture of fear
- Blast from the past: working versions of XReplace-32 and Expression Calculator
- 0-60 In Startup Tech: Slides
- Summer Math and Engineering Internships @ Art.sy
- Wrapping the Idee PixMatch RESTful API in a Ruby Gem
- Your Startup's Technology: The First 60 Days in Examples / Class at General Assembly
- VirtualBox: Linux on Windows
- Mongoid_fulltext: full-text n-gram search for your MongoDB models
- CarrierWave: Saving Best Image Geometry
- Setting up Cron to run Rake Tasks
- A Rake Task for Backing Up a MongoDB Database
- A Rake Task for Copying Data between Amazon S3 Buckets
- Rails: Passing Arrays in a Query String
- A Rake Task for Copying MongoDB Databases
- Beer Mug: Contribute Something Small to an Open-Source Project
- CarrierWave: Full Control over Changing (S3) Upload Path Name
- Continuous Deployment with Heroku-Bartender
- Agile Estimating: Don't Ask How Long it Takes, Sell It!
- How to define Enums in Ruby?
- Models look nice, but sometimes you just want to change they way they feel
- How to become an amazing contributor to an open-source project
- Dan North doesn't believe in magic and makes babies cry
- Ruby: Unlearning OOP and Embracing Anarchy
- Art.sy: Change the World
- Switching Comments of code.dblock.org to Disqus
- Folder-Driven Development: when to create a folder?
- JNA: Getting currently logged-in user's groups
- Adding (almost) static pages to your fancy Rails website
- Technical Lead / Architect Job in NY
- JNA: Coming back to Life on Kenai (and a word on Github)
- Seeding, exporting and importing MongoDB data with Rake
- Rails: opinionated directory structure
- DataMapper: promoting columns into classes
- Running ruby files on Heroku via rake
- BSON::InvalidKeyName: key must not contain '.' or ‘$'
- kernel.rb:27:in `should': uninitialized constant RSpec::Expectations::PositiveExpectationHandler (NameError)
- Waffle / Сейчас всё станет намного сложнее: troubleshooting Kerberos and NTLM
- Intersection of core values in open source and domain driven design
- OCLF: One Click Lag Fix on Android 2.2 (Galaxy S)
- Open Source, ?, Profit
- 2011 – The Year of NoSQL Data Breaches?
- ProcessDomain: remoting & out-of-process AppDomains
- Win32: When things get seriously obscure in Windows XP/2003 UpdateResource
- Almost Bricked Samsung Galaxy S Vibrant
- dotNetInstaller: UAC Elevation on Install
- Waffle: Single Sign-On User Impersonation in Tomcat
- The program can't start because msvcrt-ruby18.dll is missing from your computer.
- Breaking the Software Death Cycle with DDD
2010 73
- Agile Hiring: get rid of the open headcount
- Strictly Platonic: Engineering Jobs on Craigslist
- Help: what are the symptoms, events or actions of a software death cycle?
- Corporate Change: Contributing to open source @ OpenSource.com
- MSI: This installation is forbidden by system policy.
- JNA: Building JNA on Windows 64-bit
- Can hiring women in software organizations save you money on plungers?
- Waffle: configuring Tomcat's manager application
- TeamSHATTER: Securing Java Applications with Smart Cards and Single-Sign-On
- JacobGen: PROCESSOR_ARCHITECTURE vs. PROCESSOR_ARCHITEW6432 in MSBuild
- MSBuild: Setting Up a Build Environment w/ NUnit
- IBM Cognos BI: generic XSLT normalization for table data
- AppSecInc. Community MSI Extensions 1.2 Released
- 3Licenses: Collect Your 3rd Party Licenses
- Corporate Change: Contributing to Open Source
- Waffle + JNA under Tomcat 5.5 Security Manager
- TeamSHATTER.com
- VMWareTasks 1.5 Released
- Waffle w/ Tomcat 5.5, 6 and 7
- Svn2: deleting not-versioned files in SVN (at your own risk)
- Fs2svn: synchronizing a non-SVN folder to an SVN working copy
- @dblockdotorg
- Personal Technical Blogging Policy
- log4jna: The description for Event ID 4096 from source log4jna cannot be found.
- log4jna: log4j:ERROR Could not register event source (Access is denied.)
- Does your company have a policy on personal tech blogging and contributing to open-source?
- Guava: replacing a ConcurrentHashMap
- Stuxnet
- JNA: Reading Windows Event Log entries in Java
- Log4jna: getting rid of the pesky NTEventLogAppender.dll
- VMWare ESXi 4.1.0 Automation: Insufficient permissions in host operating system
- Samsung Galaxy Lag Fix: EXT2 FS
- RemoteInstall in ThisWeekInTest.tv
- Basic Workflow with htmlInstaller: HTML-based bootstrapper for DNI
- Supporting MSI Uninstall in dotNetInstaller
- dotNetInstaller 1.10 Released
- Waffle 1.3 Released
- RemoteInstall Test Framework 1.2 Released
- Single Sign-On: Spring-Security Negotiate Filter (Kerberos + NTLM) w/Waffle
- Iterating over lists in MSBuild
- Introducing Oshi: Operating System and Hardware Information (Java)
- Code Coverage with EMMA
- WAFFLE: A PowerPoint Presentation
- Visual Studio 2008 Crashes: doesn't always mean Microsoft sucks
- Учись Работать / Вся правда о том, что нас мотивирует
- Tomcat Single Sign-On mixed with Form Authentication w/ Waffle
- Single Sign-On: Servlet Negotiate Security Filter (Kerberos + NTLM) w/ Waffle
- Windows/Active Directory Authentication: Tomcat + JAAS w/ Waffle
- NTLM: Please show ID with every POST
- Single Sign-On: Tomcat Negotiate Authenticator (Kerberos + NTLM) w/ Waffle
- Spring-LDAP: Naming and Directory Services with OpenDS
- MSI Property Patterns: Upgrading, FirstInstall and Maintenance
- MSI Community Extensions: deploying databases
- FoodCandy.com: Implementing Facebook Connect and Signup w/ Graph API
- Java Native Access (JNA) 3.2.5 Shipped
- Harvesting wix files
- JNDI: Naming and Directory Services with OpenDS
- Pure Java Waffle
- JNA: Working with Unions
- JNA: pointers to arrays of pointers
- JNA: AcquireCredentialsHandle, InitializeSecurityContext and AcceptSecurityContext - Establishing an Authenticated Connection
- JNA: accessing Windows registry from Java
- JNA: Win32 platform API implementation
- WAFFLE: Windows Authentication Functional Framework (LE)
- JNA: Advapi32, Netapi32 and Secur32
- Win32 PInvoke with JNA
- Cabinet.dll: what's a proper way to handle fdintCABINET_INFO in a split cab
- MSIOpenPackage on Windows 7: behavior changed
- Oracle 0-day: how complex systems allow simple attacks
- VMWareTasks: collecting Guest OS environment variables
- VMWareTasks: reading RunProgramInGuest command output
- dotNetInstaller 1.8 Released
- Living in Adelaide, GMT+9:30
2009 41
- Locating UI controls and clicking through menus with System.Windows.Automation and White
- The tyranny of the plan
- Automating Win32 UI Testing: System.Windows.Automation and Project White
- Kevlin Henney on hideously dangerous complexity
- RemoteInstall: supporting reboots between installers
- Implementing AtomPUB in .NET
- Bug Driven Design
- Designing a System with Reporting in Mind
- MSI Extensions Logo
- AppSecInc. MSI Extensions Open Sourced
- AppSecInc. MSI Experience
- CryptProtectData and FIPS 140
- RemoteInstall Test Framework Open-Sourced
- Vestris Inc. source code published
- Mocking UI
- Deleting Empty Folders in Outlook
- dotNetInstaller Setup Bootstrapper 1.7 Ships
- The Duct Tape Programmer by Joel Spolsky
- SLMRA: silly little mail reader
- Autoconf: world's best multiple configurations software
- Vestris Inc. software for free
- The Towers of Hanoi: recursive and iterative implementation in Scheme
- N queens puzzle: a scheme and x86 assembly solution
- Can you believe it? I wrote this code over 10 years ago...
- ResourceLib 1.2 with added support for RT_JUSTABOUTEVERYTHING
- VMWareTasks 1.3 for VixCOM 1.7.0 (let's reinvent less wheels)
- IFYYFME, or how to Maintain a Healthy Level of Communication Across Organizational Boundaries
- Why is my Microsoft not working? A tribute to Raymond Chen
- MSLU is well alive or how to run on Windows 95/98 without carrying unicows.dll
- Upgrading, FreshInstall, Maintenance and other MSI convenience properties
- Vulnerability Assessment: User Rights Review
- VMWareTasks 1.2: RC1
- ACL-based authorization model with NHibernate
- dotNetInstaller moving to CodePlex
- Svn2svn: migrating from SourceForge to CodePlex
- Nesting multiple ConfigurationElement types in a ConfigurationElementCollection
- How to do a Debug, Release or both builds with MSBuild
- How the .NET Queue will bite your memory usage
- Rotating Passwords in Active Directory
- File Resource Management .NET Library
- VMWare Tasks .NET Library for VixCOM
2008 24
- Abstracting a cumbersome construct in VIX API: GetNumProperties + GetNthProperty
- Getting the display name of a VMWare snapshot
- Copying files to/from VMWare guest OS is slow: an alternate approach
- Announcing the VMWare Tasks Library
- Remote Control, Copy and Run programs on a VMware Workstation or VI server using VIX APIs
- WMI: Executing a remote process and waiting for its completion
- Count projections in NHibernate 1.2
- Resetting a Canon MP460
- Product/Build Versioning with MSBuild, ANT and CruiseControl
- Icon support in ResourceLib.NET
- Log4Cxx for Win32 VS 2005, 2008, etc.
- Tales from the interview: the drool and the handshake test
- Agile in Practice: What Is Actually Going On Out There?
- Documenting WIX Code
- Google Chrome
- Why doesn't logging from an immediate custom action work?
- DNI: setup (msi) bootstrapper
- Finding MSI UpgradeCode programmatically
- Unit Testing MSI Custom Actions
- Building a dynamic SiteMap in ASP.NET 2.0 for a large website
- Dirty Panel Extender (ASP.NET AJAX)
- Who am I?
- File Resource Management Library (.NET)
- Code Blog: Hello World