My Hadoop/MapReduce article in Linux Journal

I’m proud that LJ accepted my Hadoop/MapReduce article for the April 2013 issue! If you’re new to MapReduce and are interested in learning about same, this article is for you.

 

I’ll also be presenting a talk based on the article at LinuxFest Northwest 2013.

Google: Stuck on You

I require proprietary software to get through my day, but I like not being too dependent on it. With respect to that rule for myself and Google, I’ve failed.

I probably use the Internet mainly for search and email, and I need Google for both. Maps? All the time.

And there’s a doc I’d like to read now. The most important information to me is in the comments, but I can’t see the comments because this doc is “too popular”.

Google drive notice: file too popular

Dang.

See also: You Can’t Quit, I Dare You

Books: Now Alive

More and more great tech books are marked-up plain text stored in version control and render-able to ebook/HTML/PDF.

Examples:

Turns out many ideas in this approach are recycled. Heck, Knuth released TeX in 1978.

One new-ish piece is this GitHub thing. GitHub provides a social coding service based on a popular software development power tool called git. GitHub is spreading like wildfire. Sure there’s lots of code on GitHub, but lots of other stuff too. Bike paths, home-renovation projects, and all German law! Srsly. This is just fun.

Anyone seen any novels on GitHub? Cory Doctorow, are you listening? If anyone turns out a popular novel on GitHub, it’ll be you!

See also:

Web Framework Flavor of the Month

I’ve been playing with Meteor a bit lately. It’s a “kitchen sink” system for writing web apps, complete with a database (MongoDB), server-side (Node.js), and client-side stuff. It’s all JavaScript.

It’s pretty fun for little experiments. I can imagine certain kinds of websites it would be good for (web-based chat, HTML5 games, collaborative editors, and one-webpage apps — same stuff I think vanilla Node.js excels at) and some it would not (mobile, CRUD with an RDBMS). I’m wondering if it would/should work well with larger web apps.

I’m afraid of JavaScript, but I think it’s finally time for me to overcome that fear. What better way to do so than to use JavaScript everywhere (database, server, client, APIs)?!

Meteor isn’t the only game around, it’s just the one I’ve looked at.

You are NOT a Software Engineer!

I enjoyed You are NOT a Software Engineer! by Chris Aitchison. It’s a fun analogy. Writing software certainly does feel more like something roughly planned and growing organically or evolving rather than something perfectly specified and executed. And I think this is OK.

Another thing we coders often forget: we are also authors. We write code for humans (others and our future selves) to read. I want you to be stoked when you read what I write! And coding is writing.

Avoid trivial merges with github pull requests

I like a clean, boring git history. I prefer this:

* 6ca186e Someone set us up the commit
* f55bcf8 Initial commit

to this:

*   494c94e Merge pull request #1 from kormoc/pr_test
|\  
| * 6ca186e Someone set us up the commit
|/  
* f55bcf8 Initial commit

The latter includes 494c94e, a technically unnecessary commit. I call it a trivial merge, other folks call it a merge bubble.

By default, github will preserve trivial merges when you use the “Merge pull request” button.

If you don’t want these trivial commits in your history, you have to pull (fetch/merge) locally. When someone creates a pull request for you, github sends you a handy email with a command you can cut and paste to perform the merge locally.

You can merge this Pull Request by running

git pull https://github.com/kormoc/pulltest pr_test

Or view, comment on, or merge it at:

https://github.com/meonkeys/pulltest/pull/1

Recall that git pull does an implicit merge. If you merge locally and there are no conflicts, the trivial merge will be omitted.

You may miss the trivial commits because they include a reference to the pull request on github. I won’t. I might ask the patch submitter to refer to the pull request by name/link in their commit log message.

If you want to prevent anyone from pushing trivial merges, more work is required.

Update 2013-06-25

I now prefer what GitHub’s merge button does, namely: preserving the merge history for pull requests.

Wanted: Simple 2D Game Framework

ab_dI want to write a simple kid’s game. It would show something like “A B _ D”, then speak “What letter is missing?”. If you hit the “c” key, it would say “Congratulations!”. If you hit any other key, “Try again!”.

Anyone have pointers on game-creation frameworks? I’m looking for something cross-platform and very high-level. I want to be able to write and play the game in a few hours max.

These look hopeful: ScratchLÖVE, RacketAlice, Pygame.

I want this crawl version to be as simple as possible. Eventually I might want to add score tracking and animations.

I could also create a web-based game that would work, say, in a web browser on an iPad, but this smells a bit more complex than I’m hoping for right now.

Here are a couple other related links I came across while poking around:

Hire This Guy!

I’m looking for work. Here’s my resume.

I’m passionate about doing things that matter, and doing them well. I’m a leader with experience. I lead by serving my business, bosses, and coworkers. I solve problems efficiently and I always add value.

I’m a pro at pretty much any back-end, devops, sysadmin work. I have a strong preference for using Free/Libre/Open Source Software (and contributing back upstream often). Most of my career has been websites: PHP, Python, Java, Perl and the like. I’m experienced with SQL and NoSQL databases. I can do front-end work except graphic design. Most recently I’ve been coding a lot with PHP (specifically, Symfony2), AWS APIs and MongoDB.

I would love to do work right now which involved cloud automation, specifically, Amazon Web Services infrastructure provisioning. I could easily automate the setup for a very robust, high-traffic web/mobile service. I’ve had years of experience with AWS and want to work with it more. But that’s just one idea—I’m pretty flexible.

I love learning new tools and tech. I do so quickly, and I’m generally at my best (performance and happiness) while I’m learning. So if I’m not already versed in whatever tech your business needs to succeed, don’t worry, I will be soon.

Tweet of same

Update 2012-12-14: I’m now seeking full-time work in Seattle

Effectively manage sets of scratch/debug/dev-only changes with git

There are always some changes that you make temporarily but must never make it upstream, such as development-specific debugging instrumentation. The trick is to keep track of these but never send them upstream (to a repository you share with others, for instance).

Unsuprisingly, git’s got a way to handle this. Thank you, Karl Bielefeldt!

Assuming master is the upstream integration branch…

# just once: create branch for dev-only changes
git checkout -b common-dev-changes
 
# get latest upstream changes
git fetch
 
# rewind/replay common-dev-changes on top of master
git rebase origin/master
 
# switch to topic branch for a new feature/bugfix
git checkout -b topic-branch common-dev-changes
 
# ...edit files, debug, commit, etc...
 
# prepare to push - remove dev-only changes
git rebase --onto master common-dev-changes topic-branch
 
# switch back to master
git checkout master
 
# merge feature/bugfix code into master
git merge --ff-only topic-branch
 
# ...do integration testing...
 
# share your work!
git push

I’ve been jumping through all sorts of hoops like always having locally-modified files, git stash, even keeping patch files around. These techniques quickly become unwieldy with larger sets of changes because you forget why you authored a change or you accidentally push it upstream. rebase --onto was hiding in git-rebase(1) all this time, but I just discovered it today thanks to Google and stackoverflow.

If you don’t want the technique I outlined above another answer on that same stackoverflow post outlines using the git index (git add -p and friends) for managing your dev-only changes. That might be a handy stepping stone, and will provide tools you’ll still need later even when you are savvy with branching and rebase.

Tweet of same.

Amazon Prime: Marked Up?

I used to think I was so shrewd and sneaky by shopping at Home Depot with my smartphone in hand, scanning barcodes and finding lower prices on Amazon.com. But during the past few trips I’ve noticed Home Depot has the lowest prices!

Sure, free shipping for Prime, but is Prime stuff marked up?

UPDATE: “prime” was misplaced, above. Really I was just wondering if Amazon prices are marked up to cover shipping costs. Prime needn’t enter into this.