A Neat C Preprocessor Trick

  • Goals for 2019
  • AST Financial: the dumpster fire of a company
  • Thinking with Pandas
  • GV
  • Staying out of trouble on Elastic Beanstalk
  • The thing about renting an apartment in NYC
  • A self-indulgent post for a self-indulgent day
  • Goals for 2018
  • IPOs, 101
  • A magic trick
  • R&R
  • P.T. Barnum on salary vs. equity
  • My favorite benefits that more companies should offer
  • BizSpark
  • The next great frontier in ML: dogs in hats
  • Keeping your deps tidy
  • GitHub notification… notifier
  • Life hacks
  • How to Skylark – the class
  • Stamping your builds
  • Using secrets with Google AppEngine
  • Low-fat Skylark rules – saving memory with depsets
  • 9 years of blogging have totally been worth it
  • Aspects: the fan-fic of build rules
  • That’s senior programmer to you, buddy
  • The Haunted Homesteader
  • Recruiting review
  • Using AutoValue with Bazel
  • You do you
  • Snail Spam
  • Four alternative debugging techniques
  • Compilation à la mode
  • The Mixed-Up Directories of Mrs. Bazel E. Frankweiler
  • Custom, locally-sourced output filenames
  • Using environment variables in Skylark repository rules
  • Resting BUILD face
  • Communicating between Bazel rules: how to use Skylark providers
  • Collecting transitive runfiles with skylark
  • Startup idea #6ec4e42a-28cc-4425-9ebc-61ac8e224580: Adventurer’s gear for geeky hikers
  • Using a generated header file as a dependecy
  • Operation: Crappy Sewing Machine commences
  • New dog blog
  • configure: error: lib_i_don’t_care_about.so not found.
  • JoCo Cruise 2016: a misanthrope’s perspective
  • Star Trek invades our timeline
  • Flag-Friday: debugging tests with –java_debug
  • Saving the (prod) environment
  • Combining projects without converting to a monorepo
  • Non-technical advice for startups and open source projects
  • One weird trick for fast CI
  • Creating a javadoc rule for Bazel
  • Build, y u go slow?
  • Debugging flaky tests with Bazel
  • The Return of the Scala Rule Tutorial: The Execution
  • Tutorial: how to write Scala rules for Bazel
  • Trimming the (build) tree with Bazel
  • Positive reinforcement learning through barbacoa
  • New radio in town
  • Pain-free OAuth with AppEngine
  • API changes with extra cheese, hold the fear
  • Have you ever looked at your build? I mean, really looked at your build?
  • Hello, Bazel
  • Making wedding rings
  • Laptops are getting smaller all the time
  • Teaching CS
  • Sharing Programming
  • I will gladly write a test Tuesday for a program today
  • Innards of Tar
  • TEALS – Teaching CS on your way to work, part 2
  • Mestre Boneco’s Training Sequences
  • TEALS – Teaching CS on your way to work
  • Hello, Digital Ocean!
  • Makin’ Mazes
  • Update Your Feeds
  • Fixing CSS antialiasing on Chrome
  • Glupdate
  • Game Jam Resource List
  • Hello, Glass
  • Davy Jones’ Freezer
  • Getting Better All the Time via Code Review
  • Scratches & Bruises
  • User Support
  • The High Ground in Low Country
  • The Little Volcano that Could
  • MongoSF
  • The Joy of Programming
  • Speed Mentoring
  • Encouraging Female Programmers, Even the Redheads
  • How to Succeed in CS Without Really Trying
  • Velocity 2013
  • Using Visual “APIs”
  • The Professor, the Interviewer, and the Coworker
  • Smart Pointers and Heirloom Underpants
  • The Rise of Big Data
  • Upcoming Hackathons
  • Edutainment
  • Ludum Dare
  • Hello, Lumpy World!
  • The Basics of Signal Handling
  • Labeling Git Branches
  • Music Gremlins is Approved!
  • It’s turtles all the way down
  • Adding an Assertion Macro in Objective-C
  • MongoDB: The Definitive Guide 2nd Edition is Out!
  • First Two Weeks at Google
  • Stock Option Basics
  • Recruiting in all the wrong places
  • Programming a State Machine
  • Mad Art Skillz
  • Finished The Definitive Guide
  • Databases & Dragons
  • The Google Interviews
  • Guide to Tech Interviews
  • Goodbye 10gen, Hello Google
  • Intro to Fail Points
  • MongoDB Puzzlers #1
  • Humans are difficult
  • Introducing Noodlin – A Brainstorming App
  • MongoDB changing default: now write errors are reported
  • TDG Update
  • Got any advice?
  • How MongoDB’s Journaling Works
  • Go Get a Hot Water Bottle
  • ––thursday #7: git-new-workdir
  • How to Make Your First MongoDB Commit
  • A Neat C Preprocessor Trick
  • Call for Schemas
  • Git for Interns and New Employees
  • Controlling Collection Distribution
  • Summer Reading Blogroll
  • Replica Set Internals Part V: Initial Sync
  • Good Night, Westley: Time-To-Live Collections
  • The Snail Crawls On…
  • ––thursday #6: using git over ssh
  • Replica Set Internals Bootcamp Part III: Reconfiguring
  • 10 Kindle Apps for the Non-Existent Developer API
  • ––thursday #5: diagnosing high readahead
  • Replica Set Internals Bootcamp Part IV: Syncing
  • Night of the Living Dead Ops
  • ––thursday #4: blockdev
  • ––thursday #3: a handy git prompt
  • Debugging Sexism
  • ––thursday #2: diff ‘n patch
  • ––thursday #1: screen
  • Replica Set Internals Bootcamp: Part II – Creating a Set
  • git-oh-$#!†
  • The Comments Conundrum
  • Hacking Chess: Data Munging
  • Hacking Chess with the MongoDB Pipeline
  • And now, for something completely different
  • Replica Set Internals Bootcamp: Part I – Elections
  • Popping Timestamps into ObjectIds
  • SQL to MongoDB: An Updated Mapping
  • On working at 10gen
  • Getting Started with MMS
  • More PHP Internals: References
  • Playing with Virtual Memory
  • PHP Extensions Made Eldrich: Classes
  • PHP Extensions Made Eldrich: PHP Variables
  • PHP Extensions Made Eldrich: Hello, World!
  • PHP Extensions Made Eldrich: Installing PHP
  • PS1++
  • Mongo in Flatland
  • NoSQL vs. the world
  • A finite simple group of order two
  • Simulating Network Paritions with mongobridge
  • Trying Out Replica Set Priorities
  • The Scripting Language of Databases
  • Lorenz University: I can has degree?
  • Implementing Replica Set Priorities
  • “Scaling MongoDB” Update
  • Resizing Your Oplog
  • Enchiladas of Doom
  • My Life is Awesome
  • A Short eBook on Scaling MongoDB
  • Why Command Helpers Suck
  • How to Use Replica Set Rollbacks
  • How to Choose a Shard Key: The Card Game
  • Wireless dongle review
  • Setting Up Your Interview Toolbox
  • How I Became a Programmer
  • Firesheep: Internet Snooping made Easy
  • Bending the Oplog to Your Will
  • How not to get a job with a startup
  • Getting to Know Your Oplog
  • Replication Internals
  • Scaling, scaling everywhere
  • Writing MongoDB: The Definitive Guide
  • Choose your own adventure: MongoDB crash recovery edition
  • Oh, the Mistakes I’ve Seen
  • A Quick Intro to mongosniff
  • Return of the Mongo Mailbag
  • History of MongoDB
  • If it quacks like a RDBMS…
  • Buying an Mahattan Co-op
  • Sharding and Replica Sets Illustrated
  • Part 3: Replica Sets in the Wild
  • Replica Sets Part 2: What are Replica Sets?
  • Replica Sets Part 1: Master-Slave is so 2009
  • MongoDB backups & corn on the cob in 10 minutes
  • Managing your Mongo horde with genghis-khan
  • I Never Thought I’d Be On a Book
  • Large Hadron Collider Using MongoDB
  • With a name like Mongo, it has to be good
  • There must be 50 ways to start your Mongo
  • Once and Future Presentations
  • Sharding with the Fishes
  • Happy Belated Ada Lovelace Day!
  • MapReduce – The Fanfiction
  • Bug Reporting: A How-To
  • Sleepy.Mongoose: A MongoDB HTTP Interface
  • MongoDB Survey Results
  • “Introduction to MongoDB” Video
  • St. Clementine’s Day
  • Mongo Mailbag #2: Updating GridFS Files
  • FOSDEM: Some Pictures
  • FOSDEM
  • Mongo Mailbag: Master/Slave Configuration
  • Washington DC
  • MongoDB PHP Driver 1.0.3 Release
  • Upcoming Talks
  • Mongo Just Pawn in Game of Life
  • Public Speaking: The Prequel
  • NoSQL Trolls
  • Public Speaking
  • Installing Linux on a MacBook Air
  • Five Worst Places for Mosquito Bites
  • Foz do Iguacu
  • Replacing $ in the MongoDB PHP Driver
  • Testing MongoDB Replica Pairs with Perl
  • Final Days in CA
  • Reading in San Francisco
  • Adventures in Ramen
  • I’m going to Brazil!
  • OSCON
  • Soccer: No Slimy GirlS Allowed!
  • How do you make the web reliable?
  • CouchDB vs. MongoDB Benchmark
  • Because we are the Mutha Flippin Win
  • Revisionist history
  • PHP Extension Wiki
  • From Russia with Bugs
  • Get on the bus, Gus
  • Got Mongo Working on Hostmonster!
  • VM of Death and Doom from Hell
  • Another comic
  • Zen and the Art of Sewing Machine Matinence
  • Slug Sex
  • #1 Google Result!
  • Soup and Circus
  • And an irrational number of closets
  • RSS Idea
  • New comic up!
  • phpdoc hell
  • Pain in my CVS
  • Nifty Flash Thing
  • Downloading the Archives
  • Archive for the 'Programming' Category

    A Neat C Preprocessor Trick

    Friday, August 24th, 2012

    I’ve been looking at Clang and they define lexer tokens in a way that I thought was clever. The challenge is: how do you keep a single list of language tokens but use them as both an enum and a list of strings? Clang defines C token types in a file, TokenKinds.def, with all of […]

    Git for Interns and New Employees

    Friday, August 10th, 2012

    My interns are leaving today 🙁 and I think the most important skill they learned this summer was how to use git. However, I had a hard time finding concise references to send them about my expectations, so I’m writing this up for next year. How to Create a Good Commit A commit is an […]

    ––thursday #3: a handy git prompt

    Thursday, March 29th, 2012

    Everyone says to use git branches early and often, but I inevitably lose track of what branch I’m on. My workflow generally goes something like: Check out a branch Lunch! Get back to my desk and make an emergency bug fix Commit emergency fix Suddenly realize I’m not on the branch I meant to be […]

    ––thursday #2: diff ‘n patch

    Thursday, March 15th, 2012

    I’m trying something new: every Thursday I’ll do a short post on how to do something with the command line. I always seem to either create or apply patches in the wrong direction. It’s like stalagmites vs. stalactites, which I struggled with until I heard the nemonic: “Stalagmites might hang from the ceiling… but they […]

    ––thursday #1: screen

    Thursday, March 8th, 2012

    I’m trying something new: every Thursday I’ll go over how to do something with the command line. Let me know what you think. If you are using a modern-ish browser, you probably use tabs to keep multiple things open at once: your email, your calendar, whatever you’re actually doing, etc. You can do the same […]

    git-oh-$#!†

    Thursday, February 23rd, 2012

    I’ve learned a lot about git, usually in a hurry after I mess up and have to fix it. Here are some basic techniques I’ve learned that may help a git beginner. Fixing your ungood code Let’s say you’re a clerk working for an Orwellian Ministry of Truth and you find out the new chocolate […]

    And now, for something completely different

    Tuesday, January 17th, 2012

    Probably only relevant to a limited portion of my audience, but Silicon Valley Ryan Gosling is awesome. I have never seen anything like and I’m not sure what the point is, but I know I’m a fan. Go forth and be sexy and supportive for the female programmers you know.

    More PHP Internals: References

    Wednesday, September 7th, 2011

    By request, a quick post on using PHP references in extensions. To start, here’s an example of references in PHP we’ll be translating into C: <?php   // just for displaying output function display($x) { echo "x is $x\n"; }   // pass in an argument by making a copy of it function not_by_ref($arg) { […]

    Playing with Virtual Memory

    Tuesday, August 30th, 2011

    When you run a process, it needs some memory to store things: its heap, its stack, and any libraries it’s using. Linux provides and cleans up memory for your process like an extremely conscientious butler. You can (and generally should) just let Linux do its thing, but it’s a good idea to understand the basics […]

    Setting Up Your Interview Toolbox

    Thursday, December 9th, 2010

    This post covers a couple “toolbox” topics that are easy to brush up on before the technical interview. I recently read a post that drove me nuts, written by someone looking for a job. They said: I can’t seem to crack the on-site coding interviews… [Interviews are geared towards] those who can suavely implement a […]

    kristina chodorow's blog