Archive for category Geekism

Date: April 29th, 2015
Cate: Geekism
Comments Off

What’s the deal with Ruby?

I’m playing with this Cucumber testing thing and I have to say as my first introduction into Ruby it’s left me pretty non-psyched. I’m a C++ guy so I was hoping there’d be a C++ version of all this stuff, which at first it seems like there is, but then you read the fateful line "Cucumber-Cpp uses the wire protocol at the moment, so you will need Cucumber-Ruby installed and available on the path." So my options are pure Ruby or some unholy mix of Ruby and C++, not exactly two great tastes that taste great together. Oh well, in for a penny, in for a pound, let’s try the pure Ruby way. Those guys with funny spiky hair can’t ALL be wrong.

At first they lull you into a false sense of security. “Look at these test specifications! So human readable!” They even lighten the mood with some jokes. “Your product manager could write these!”

Scenario: Squaring a number
    Given the number is 4
    When I press the square key
    Then the answer should be 16

Cucumber sucks that test spec in and helpfully gives you some Ruby code you are supposed to fill in to actually implement those tests. Well, once you put your files into the directory structure that it expects. But I remember from reading about Rails that everything is going to be like this so I’m ready:

Then /^the answer should be (\d+)$/ do |arg1|
  # verify that answer actually equals 16

OK, so since this is a verification I guess I am supposed to return true if the answer actually comes out to the desired 16. Wrong, if I do that I get some internal error in Cucumber, “LocalJumpError”. No big deal, off to the documentation then for how to write test steps. I am suddenly paralyzed with fear. Why does it just say TODO TODO TODO? Isn’t Cucumber like a real thing? There are like 10,000,000 search results for “cucumber testing” and at least the first few pages aren’t talking about the vegetable. How can the official docs on the official site not even tell you how to signal that a verification failed? Isn’t that kind of important? Maybe in the Ruby-verse all the tests always pass so it hasn’t come up. The wiki can’t be bothered to tell me either, but it does recommend that I should randomly copy and paste code from the examples like a caveman. Fine. I found an example that looks like what I want to do:

@result.should == expected_result

Whoa, what is that “should ==” business? Is that some Ruby magic? If I stupidly just paste the code in, I get undefined method 'should'. After many more googles I find out that “Cucumber, like most other testing frameworks, fails when it encounters an Exception.” Maybe in the Ruby world a failed test is signalled by an exception, but where I come from return false; always seemed to work fine. Anyway, after reading even more stuff (including the very helpful Cucumber: An Introduction for Non-Rubyists) I come to understand that that ’should’ thing comes from some Ruby gem called RSpec I have to install. Actually most of the sites I can find talk like I should obviously already know what it is and I should already have it installed. {sunglasses emoji} Bro, do you even RSpec? A lot of this Ruby stuff is like that. Anyway, RSpec conveniently monkey-patches, like, the universe so you can make your simple boolean tests throw exceptions instead of just returning false by putting the word should in uncomfortable places. Because that’s what you want.


Great. OK, update Ruby, install gem, install the gem I want, copy paste the code… STILL NO SUCCESS. Now it tells me:

DEPRECATION: Using `should` from rspec-expectations' old `:should` syntax without explicitly enabling the syntax is deprecated. Use the new `:expect` syntax or explicitly enable `:should` with `config.expect_with(:rspec) { |c| c.syntax = :should }` instead.

ARE. YOU. EVEN. SERIOUS. I look up more about this RSpec deal, and found out that some member of the CADT decided that monkey-patching the universe was maybe not web-scale (yay!) but that the right solution is to release a new version of RSpec that breaks all the code in the universe (boo!). And nobody in the Cucumber-verse has bothered to update the documentation to reflect this. Ha ha, fooled you, you weren’t paying attention! There is no documentation so it can’t be wrong! But they sure didn’t update the example code.

Finally I got past all that stuff and needed to parse some XML. So I googled “ruby xml” expecting it would say like “just include the standard boring XML module and parse your standard boring XML in the standard boring way”. WRONG! You get to choose! There is something called Nogokiri? There is something called REXML? And there is something called XmlSimple? At this point I don’t even remember which of these I decided to use. I do remember that whichever one I fatefully picked just has just one method for parsing, to which you pass a string. Somehow even this gives me problems! Dude, I’m just trying to parse some XML, how can you be suddenly saying File not found in /usr/bin? Answer: Inside that method it LOOKS AT YOUR STRING TO TRY TO GUESS IF IT IS A FILENAME OR A BLOCK OF XML. And yes, the first time I tried it, it guessed wrong.

At this point, I have spent about twice as much time composing this post complaining about Ruby as I have spent actually using Ruby. If things continue like this, well, it’s going to be fun.

Date: May 24th, 2014
Cate: Geekism
Comments Off


I know I’m the last kid on the block to say that Project Euler is awesome, but Project Euler is awesome. It’s a set of really concise and well defined math/programming puzzles that start from basically Fizz Buzz and sloooowly ramp up the difficulty until things become fairly ridiculous. The neat thing is that all the puzzles are designed so that if you approach them right, they can be solved with less than one minute of compute time, so when you realize that your initial solution is O(N!N!N!), there is still hope. As you solve each problem, you get access to a message board with spoilers for that problem, and it’s always fun to compare your 200 line C++ monstrosity to the 5 lines of C64 BASIC submitted by some guy in Belarus that finds the answer in .0000001 seconds.

For extra trendiness points they have gamified everything with levels and achievements. I’ve done 100 problems so far, which makes me a CENTURION.


Date: November 18th, 2013
Cate: Geekism
Comments Off

There are no printers in the spirit world

OK, The Night Watch is the funniest nerd thing of all time. I can totally relate to this because not only am I lucky enough to have participated in the debates about the socioeconomic implications of Helvetica Light, but I have also found the comment late at night that says “DOES THIS WORK LOL” in the most haunted part of the code. In fact… I wrote it.

Date: July 1st, 2013
Cate: Geekism
3 msgs

I sense a great disturbance in the force…

…as if millions of feeds cried out and were suddenly silenced. Today is the day that Google Reader goes away, leaving many people searching for alternatives. There are plenty of these: jwz says to use Newsify, an iOS app. This Metafilter thread frequently mentions Feedly, a web-based reader.

I’m still using this antique. Hey, if it ain’t broke, right? Well, at least I know all the ways it’s broke. How’s that. But some people may not be satisfied using software that was written when Bob Barker was still the host of The Price Is Right. In that case, I have a forward reference for you: Feed on Feeds on GitHub! This is an effort to blow the dust off the code, bringing the dependencies up to date, closing some horrible security holes, and even adding a few new features. I haven’t participated in this or even tested it out myself but the project looks pretty active.

Date: June 14th, 2013
Cate: Geekism
Comments Off

The End of Days

Remember this?

And the beast shall come forth surrounded by a roiling cloud of vengeance. The house of the unbelievers shall be razed and they shall be scorched to the earth. Their tags shall blink until the end of days.

from The Book of Mozilla, 12:10

Here is a quote from the release notes for the beta of Firefox 23, to be released this August:

Dropped blink effect from text-decoration: blink; and completely removed <blink> element

Well, it’s been nice knowing you all.

Date: February 22nd, 2013
Cate: Geekism
Comments Off


Abrash and Carmack on latency. This, among I’m sure many other real world limitations, is what turned this exciting concept into this somewhat less exciting reality.

Also does it seem weird to anybody else that when I make a video call using Glass, the other party doesn’t see me, instead they see what I see? When I’m talking to somebody what I’m looking at is generally not that interesting, unless you like fidgeting, doodling, or pacing.

Date: January 15th, 2013
Cate: Geekism
Comments Off

As if by magic

Having recently replayed this classic game and then completing all the “homework” from this excellent book, I was left wondering how things really work down at the silicon level. The game I’m sure is a much simplified version of reality, and the book starts at the level immediately above the game. I looked at a few Wikipedia pages and whatever “Electronics 101″ class notes I could find, but all I managed to learn is that in the real world 1) everything needs to be grounded and 2) resistors are involved somehow? I think?

All that said, when I found this blog post by Ken Shirriff today, it was as if it was made just for me! The post zooms in on the actual silicon of the 6502 processor, showing in detail exactly how the overflow flag is calculated. Ever used an Apple II or an Atari 2600? These microscopic wires lit up every time the processor added two numbers.

So from the book, I know how to build an entire computer using only NAND gates. And now from this blog post, I KNOW HOW TO MAKE NAND.

Date: June 5th, 2012
Cate: Geekism
Comments Off

Advanced and Persistent

Alternate universe? I meant Cyberpunk novel. My email program will now warn me if and when a state-sponsored attack on my account is suspected. That’s pretty astounding. Seems like the Internet cold war is rapidly heating up. Great time to be a security researcher though!

Date: June 4th, 2012
Cate: Geekism
Comments Off

So Refreshing

I love this dialog box from Screenshots of Despair. I would love to see the grief counseling available if you click “help me decide”. Here I have a counterpoint, a message of renewal that my IDE shows me several times a day:

Date: May 31st, 2012
Cate: Geekism
Comments Off


We are definitely living in an alternate universe. There is no way that in the normal universe the father of the Internet would register the .lol domain.

Date: November 23rd, 2011
Cate: Geekism
Comments Off

At least I can still wave my knols. What?

Oh how quickly things change. Remember this post? It’s SO FOUR MONTHS AGO. First they announce that you can no longer feed your posts to your book as notes. Great. And streaming your buzzes to your circles? HA! WHAT buzzes?

So what to do now. Make a pipe that firehoses everything to a planet? Kind of old fashioned. Tweet shortlinks to pinboard? Two more services I’d have to sign up for. Maybe what I need to do is make my own plugin that can push each post to my plus… of course I’d have to use the graph to post notes to my wall for friends who aren’t in my circles. Bah, too much work.

12:00 AM

Date: July 11th, 2011
Cate: Geekism
Comments Off

Transitive property?

My blog connects to my book, so every post becomes a note, eventually. Also, my blog connects to my buzz! So every post I blog is automatically buzzed! Finally, as of today, my buzz is even connected to my plus. So the question is: when I blog a post, and it is buzzed, will plus stream it to my circles?

note: if you do not understand this it may not yet be 2011 where you are

Date: June 21st, 2011
Cate: Geekism
Comments Off

Top 10 most surprising domain names that actually work

I was shocked today to find out that http://ac/ actually works. I found some other working two letter domain names, here is the whole list:

http://bi/ (looks like whoever put this up is as surprised as me)

And as if that wasn’t enough, here is the grand prize winning crazy domain name that actually works:


Of course you can’t publish a top 9 list, nobody wants to read a top 9 list, so to make it an even ten I add this gem:

Date: June 10th, 2011
Cate: Geekism
Comments Off

Decompiling E. coli

This post by bunnie gets my vote for blog post of the year. First he shows you where to download the genetic code for the super-resitant form of E. coli found on German bean sprouts. Then he shows you where to download a database of genes known to code for drug resistance. And then:

Now that we have this list, we can answer some interesting questions, such as “How many of the known drug resistance genes are inside O141:H4?” I find it fascinating that this question is answered with a shell script:

cat uniprot_search_m9 | awk '{if ($3 > 99) { print;}}' | cut -f2 |grep -v ^# | cut -f1 -d"_" | cut -f3 -d"|" | sort | uniq | wc -l

Date: May 17th, 2011
Cate: Geekism
Comments Off


This is completely insane. I mean I get the whole “Turing Equivalence” thing, but still. Fabrice Bellard, who has written some pretty important bits of computing infrastructure, has created a fully functional x86 emulator in JavaScript! It boots up Linux and lands you at a root prompt. There’s even a compiler – and Emacs! It runs pretty well for me, with Chrome 11 on a Windows i7 laptop.

Date: April 13th, 2011
Cate: Geekism
Comments Off

C++11 FDIS

Does that sequence of letters, numbers, and plus signs mean nothing to you? Then don’t click here.

Date: March 9th, 2011
Cate: Geekism
Comments Off

Vi Hart is the best person

OK, Vi Hart is my new favorite person. Her mission: to reveal the inherent awesomeness of math. Her video series Doodling in Math Class is incredible. This episode even sneaks in a Dinosaur Comics reference. Not convinced yet? How about a paper on Computational Balloon Twisting? Or how to slice an apple into a cube… and then slice that cube into hexagons with star shapes inside? Musical instruments made of paper and fire? A Möbius Music Box? She has even been covered by The New York Times. The list of things she has produced seems to just go on and on to infinity, filling in all the space between math and art.

Date: March 4th, 2011
Cate: Geekism
Comments Off

IE6 Countdown

Remember back when IE was dead and Microsoft said IE6 was going to be the final version ever? Oh, how times have changed. Now they are on a campaign to try to get users to please, PLEASE upgrade away from IE6! The site has all the modern “tweet this” and “like this” buttons and even has a snippet of code you can put on your site to show IE6 users an “error message”.

(OT: I wonder if that map will be quietly updated in a few days to stop referring to Taiwan as a country)

Date: February 10th, 2011
Cate: Geekism
1 msg

Come, let Us go down, and confound their speech

These guys now have an app that lets you translate spoken words and phrases between different languages! Universal Translator in your pocket, right? Not quite. We tried it out and it does a decent job translating English to Chinese, but the results translating Chinese to English are just so hilariously wrong as to make the app useless. Jenny was trying to speak slower and slower and more carefully to get it to be able to translate ANYTHING and eventually got frustrated and told it (in Chinese) “Talking to you is like talking to a wall!” the app dutifully translated:


Date: November 21st, 2010
Cate: Geekism
Comments Off

C++ and Beyond

I am going to C++ and Beyond in December! If you’re not an ultra-nerd, this is kind of like going to a Jersey Shore meetup where JWoww, Snooki and The Situation will ALL BE THERE IN PERSON.

Date: August 24th, 2010
Cate: Geekism
Comments Off

Metagun and Meta-Metagun

Ludum Dare is a game making competition, where programmers are invited to make a game based on a certain theme. The catch is you have to do it in just 48 hours! In the latest competition, the theme was “enemies as weapons”.

A guy named Markus Persson, of Minecraft fame (Minecraft being a game only ultra-nerds can understand or even recognize as a game, kind of like Dwarf Fortress) entered with a game called Metagun. In this game you are a guy who has a gun that shoots out little guys who then shoot back at you. Meta enough? Not yet!

The really Meta thing is that Markus, AKA “Notch”, recorded his computer screen for the 48 hours of making the game, and put the result up on Youtube! You can see him writing code, creating graphics, designing levels and testing the game out all at 500x speed. It’s sometimes almost unbelievable how much stuff can be cranked out by guys in these competitions, but now you can see it yourself.

Date: March 17th, 2010
Cate: Geekism
Comments Off

Happiness is…

…running top, pressing 1, and seeing this message:

Sorry, terminal is not big enough.

Date: February 17th, 2010
Cate: Geekism
Comments Off

LOGO on Scratch, Scratch on LOGO

Heard of Scratch? My nephew Dante introduced me to it. It’s a really nice visual programming environment, aimed at kids. You create programs that control the movement of sprites by snapping blocks together. There’s an “IDE” (written in Squeak Smalltalk) that you download and install and use to develop your programs, and then you are encouraged to share your programs by uploading them to the Scratch site. On the site, your Scratch program is run in a Java applet. Other users can then download the “source” to your programs, “remix”, and repost them. The people behind it have put a lot of work into both the technology and the community, and it ends up being really fun all around.

I made a few small programs to get the feel of it, like this Mars Lander game, but wanted to see how far I could push Scratch. So I set out to make a LOGO interpreter! It was pretty difficult, since Scratch doesn’t have subroutines, and the only data structure is the array. I ended up with something that supports a small subset of LOGO, including basic turtle graphics, user defined subroutines, and global variables. I also spent quite a lot of effort optimizing it to be as fast as possible within the limitations of Scratch. At first I just wanted to get the simple LOGO program to draw a circle, REPEAT 360 [ FD 1 RT 1 ], to run as fast as a “native” Scratch program to do the same thing. I succeeded beyond my wildest dreams and actually made my interpreter run faster than native Scratch. How I did that is another story, but to give you a hint, -funroll-loops.

Anyway the point of all this is while poking around at how to speed things up in Scratch, I decompiled the Java player that runs Scratch programs on the web. I was at first very confused by the output, because it looked like the source code to a… LOGO interpreter…??!?! I looked harder and found enclosed in the JAR file a LOGO program to run Scratch programs! For whatever reason, maybe because they had a LOGO interpreter in Java lying around, the Scratch team implemented the online player as a LOGO program that runs on Java. So that means when my Scratch LOGO interpreter is running, it’s LOGO, on Scratch, on LOGO, on Java. Neat!

Date: October 18th, 2009
Cate: Geekism
Comments Off

How… retro?


Made me immediately think of this:

Date: September 15th, 2009
Cate: Geekism
Comments Off

Portents… signs…. follow…..

I just launched an automated build, and the log file timestamp ends with ‘1337′. If that’s not a good omen for a programmer I don’t know what is.

Date: August 20th, 2009
Cate: Geekism
Comments Off

Last minute hacks

Here are a bunch of stories of really great last minute hacks that were needed to get a game out the door. I have perpetrated my share of these as well. On one project I worked on, we had an upcoming very high profile marketing launch. (how high profile? we rented this room at Lincoln Center – the same one used as the meeting room in the recently canceled bad show Kings) Anyway, just before that launch, we realized that due to some very low level bugs in our messaging infrastructure, some small percentage of messages were being lost. The cause was unknown, and the “real” fix would have taken more time than we had. So instead, I put in a small change. Send every message… no, not twice, that wouldn’t be quite awesome enough… no, I sent every message in TRIPLICATE! Worked like a charm.

Date: March 31st, 2009
Cate: Geekism
1 msg

Things to “accidentally” type when you need a break

make -j, when you meant make -j2.

Date: March 25th, 2009
Cate: Geekism
1 msg

Communist Logic


Are you like me? Do you like games that feel like work? Then maybe this game is for you. Конструктор (constructor) has been my obsession since it appeared on Sunday. I’ve had Zachtronics Industries subscribed for a while, after stumbling across some of his older games “for engineers”. But this one is my favorite so far. In it, you create chips that meet certain specifications using metal wires and two types of silicon. The red silicon, when powered, can stop the flow of electricity when drawn on top of the yellow. And the yellow, when drawn on the red, stops the flow unless it is powered. That is all you have to work with! Did you ever take a class in “Digital Logic” where you sketched out designs for things like an an adder using simple gates, like NOT or AND or NOR? This game is like the ASSEMBLY LANGUAGE of that. You don’t even have a NOT gate. In fact, your first challenge is to make one! The levels ramp up in difficultly quite quickly from there, and many seem simply impossible at first. I’m now to the point in the game with timing glitches and space to lay out circuits is becoming an issue, and loving it. The last few levels are “Confidential” but I have high hopes given that in the levels leading up to them you implement a shift register, RAM, and a rudimentary ALU.

If I stop showing up to work for the next few days this game is the reason why.

(by the way: the author of the game seems to have neglected to point out one important fact: you hold down the shift key to toggle between paining the two types of silicon. this took me a while to figure out the first time.)

Date: February 3rd, 2009
Cate: Geekism
Comments Off

Sharp tools, and subverting the paradigm

This story of the recent technical happenings of Muxtape has three points that resonate with me:

  1. How to deal with tools that suck. (And what it means when a geek says something sucks.)
  2. How much better tools that don’t suck are!
  3. And the best part: how to change those tools, from suck to not suck, even when you aren’t “the boss”.
Date: January 11th, 2009
Cate: Geekism
Comments Off


I’m having a hard time figuring out if this is an extremely advanced form of sarcasm, or if he’s actually serious.

Can the waterfall method be added to the list of things where the real thing cannot be distinguished from the parody?

Date: September 13th, 2008
Cate: Geekism
4 msgs

Good C++ training… really!

Remember how I was all “Is there available, on planet Earth, REALLY good C++ training?” The answer turns out to be YES! We (the place where I work) just finished a week of training provided by DevelopMentor, using materials created by Scott Meyers, and presented by Steve Dewhurst. It was absolutely excellent! I had recently been in a phase where there more I learned about C++ the less I liked it, but during the course I think I hit some sort of Tipping Point™ where I started to like it again. You can (and should) complain about a lot of things in C++, but no other language spans a greater range of the abstraction spectrum from the lofty and metaphysical down to gritty opcodes and registers.

Date: June 26th, 2008
Cate: Geekism
Comments Off

What about unestablished entities? Or what if I’m established, but not an entity?

Here are two statements from ICANN’s announcement that they will be opening up registration of top-level domains:

“The potential here is huge. It represents a whole new way for people to express themselves on the Net,” said Dr Twomey.

Yay! I would love to be able to “express myself!” http://messy.78/ here we come!

There will be a limited application period where any established entity from anywhere in the world can submit an application that will go through an evaluation process.


Another thing I realized while reading this is that some day very soon “.com” will be passe… and then shortly afterwards extremely cool and retro.

Date: March 9th, 2008
Cate: Geekism
Comments Off

What is the output of date -d “”?

Answer: up until yesterday, it was the current date. But starting today, it is AN ERROR MESSAGE! Why? DAYLIGHT SAVINGS TIME!!! This wasted about 1 hour of my time today.

Date: December 27th, 2007
Cate: Geekism
11 msgs

Word count bookmarklet


This word count bookmarklet searches through the page you’re on, and attempts to report the word count of the selection. It will first look for the text selection, and if there is none, it will search for a textarea that has a selection. It should be working in Safari and Firefox, and possibly even IE and Opera.

Date: December 21st, 2007
Cate: Geekism
4 msgs

Fun synonyms for “broken”

  • Brokeolated
  • Funktified
  • Borkonated
  • Screwzored
  • Bustacular
Date: December 19th, 2007
Cate: Geekism
Comments Off

The weird thing is it’s not in the dictionary

OK, so you actually expect me to believe that ON THE SAME DAY we got actual evidence that Duke Nukem Forever is going to come out, like, ever, AND news that the next version of IE is going to pass the ACID2 web standards test? Just how gullible do you think I am? The next thing you’re gonna try and tell me is that a new version of Feed on Feeds has been released.

Date: December 2nd, 2007
Cate: Geekism
1 msg

The Legend of the Squishy MacBook

Great. I am now completely obsessed with the squishy left side of my MacBook.

Date: October 25th, 2007
Cate: Geekism
1 msg

Dear Google:

Please get like 50 of your PhDs together and have them figure out how to automatically provide subtitles for all your YouTube videos.

Love, the Internet.

Date: July 29th, 2007
Cate: Geekism
1 msg

I have discovered Korean emoticon biscuits.

Saw these at the local asian grocery:

After doing a double take I realized that yes, those were emoticons on the cookies! (or biscuits, I guess) I bought them, and just as advertised:


I couldn’t find a page dedicated to this product, but this is the manufacturer and here’s some Japanese guy blogging about them. How do they taste? Sort of Pocky-esque, but not as good. But hey, EMOTICONS! *^^*

Date: July 25th, 2007
Cate: Geekism
Comments Off


I don’t remember where I picked it up, but Anarchaia by Christian Neukirchen is one of my current favorite feeds. It’s an incredibly eclectic combination of deep geekism, pictures, random links, IRC chat snippets, and occasional poetry (which I skip – especially when it’s in German!).

trivia: it’s also the site that caused the mysterious _why to coin the term “tumblelog”)