Using secrets with Google AppEngine

  • 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

    Using secrets with Google AppEngine

    Wednesday, March 8th, 2017

    For side project #4323194 (implement a chrome extension that looks like this: 👂 and turns red when someone mentions you on GitHub), I needed to implement oauth from AppEngine to GitHub. As I’ve mentioned before, oauth is my nemesis, but for this project there didn’t seem to be a great way around it. It actually […]

    That’s senior programmer to you, buddy

    Monday, November 21st, 2016

    After about a decade of professional programming, I have finally gotten promoted. For the first time. This is a weird industry. Regardless, I am now a “Senior Software Engineer.” Woo! Thinking about it, this has been a goal of mine for a long time. Now that I’ve achieved it, I’m not sure what’s next. “…and […]

    Pain-free OAuth with AppEngine

    Sunday, May 31st, 2015

    I do a lot of side projects (or at least start them) and implementing authentication is always like chewing on razor blades. I started another project recently using AppEngine and, bracing myself with a lot of caffeine and “suck it up, princess” attitude, I started doing “oauth appengine” searches. After digging through some documentation, I […]

    Makin’ Mazes

    Monday, January 27th, 2014

    After my previous post on the subtleties of CSS subpixel rendering, Andrew pointed out that readers might be more interested in how to dynamically generate mazes. It sounded crazy, but here we are. First of all, if you’re interested in this stuff, there’s a great slideshow on maze generation here and more resources on the […]

    Fixing CSS antialiasing on Chrome

    Saturday, January 18th, 2014

    I’ve been working on creating mazes with LimeJs and I ran into a problem: As you can see, this maze looks like it was rendered by a dying printer: there are horizontal white lines all over the place. I was going crazy trying to track down the cause: the squares were perfectly sized/placed and the […]

    Smart Pointers and Heirloom Underpants

    Friday, October 4th, 2013

    I’ve seen a lot of descriptions of scoped_ptr and unique_ptr, but often they don’t give clear examples of when to use one vs. the other. Hopefully this will clear things up. unique_ptr is like an heirloom ring: you might purchase it, have it all your life, and end up being buried with it. For example, […]

    Upcoming Hackathons

    Monday, September 30th, 2013

    A couple of interesting hackathons are coming up: October 4-7th: Ludum Dare October Challenge – The challenge is to monetize a game. Win the challenge by earning $1. You can monetize a game you’ve already made (or make a new one). October 11-12th: Tizen Hack, an in-person jam in NYC for making an app for […]

    Hello, Lumpy World!

    Saturday, July 27th, 2013

    Overview: how to generate 3D terrain for iOS. This assumes basic knowledge of iOS programming (how to create a project and add files to it.) I’ve been working on an iOS app that uses cocos3d and Robert’s hill-generating algorithm, which make nice hills that remind me of early Mario levels. For example: You can download […]

    Programming a State Machine

    Saturday, March 23rd, 2013

    My attempts at game programming usually turn into impenetrable spaghetti code: “If the player walks through this door, then have him talk to the princess, unless he’s killed a guard, in which case the guards attack, or if he comes out of the secret passage…” The game I’m working on now is pretty simple, but […]

    ––thursday #7: git-new-workdir

    Thursday, September 13th, 2012

    Often I’ll fix a bug (call it “bug A”), kick off some tests, and then get stuck. I’d like to start working on bug B, but I can’t because the tests are running and I don’t want to change the repo while they’re going. Luckily, there’s a git tool for that: git-new-workdir. It basically creates […]

    kristina chodorow's blog