Google+ the Facebook Killer?

I use Facebook. I didn’t use Myspace. I will use Google Plus.

But why? And why might everyone else?

Social networks are tricky beasts. They’re odd mixtures of circumstance, brand image, psychology, and technological features – in that order. But what makes them “win”? Read more

My first PC build, and why you should try it yourself

I recently bit the bullet and built my first desktop. I’d been using laptops for years because I frequently need to travel or otherwise move my computer around – enough so that I’d like it to be powerful – so I’d invested in beefy laptops that were frequently used as desktops, but sometimes not. I bought a $2000 Dell with a 2GHz Core 2 Duo and a GeForce Go 7900GS – that was a fantastic machine. And my Macbook Pro has 6GB of RAM, a 2.4GHz C2D and a 9600GT (aside – I’m a NVidia man because of the Linux support).

But my Mac laptop spent a lot of time on my dorm room desk, as expected, and it started growing tentacles. By the end of last semester, I had:

  • Power
  • Audio (to a nice set of 2.1ch speakers)
  • Video – mini DisplayPort to DVI, my Samsung running at 2048×1152
  • ExpressCard eSATA card, to a 1TB drive (with VM images, ISOs, Time Machine backup)
  • EyeTV Hybrid TV tuner
  • 7 port USB2 hub
    • USB microphone
    • Another tuner
    • Mouse
    • Printer
    • Keyboard
    • iPhone cable
  • Another 1TB drive, over FW800

Using my laptop as a laptop meant disconnecting everything. Surprisingly, OSX is quite pleasant about it – close the TV recording app, unmount both disks, eject the eSATA card, and Bob’s your uncle. But it was still a hassle – TV wasn’t recorded, and it just felt like I was using it as a desktop. Plus, when I actually was, all my games were sluggish – the 9600GT just isn’t really cut out to run that resolution.

So having come to the realization that my laptop… wasn’t, I decided that my inadequate laptop-as-desktop would be just fine if I let it be a laptop, and that I should get my first proper desktop since 1998 (a AMD K6-3D at about 300MHz with 32MB of RAM and a 4GB HDD!). I toyed very briefly with simply buying one from Dell, but I wanted to have some fun. Read more

Compiler Tutorial, part 2 – Lexing

In Part 1 of my compilers tutorial, I went over context-free grammars. Read that first, unless you only care about lexing.

Lexing, short for “lexical analyzing”, basically means “turn this string into something I can use”. Since I’m assuming you’ve programmed before, I’m sure you’ve had an occasion to take input from the user and turn it into smaller components you can use. Even if it’s a simple expression like “5+2”, you don’t get it as input in a nice format – but rather an obtuse string. If you’ve ever accepted input from the user and done anything other than print it right back out, you’ve written a lexer. Any sort of string-splitting or “understanding” the contents of a string requires a lexer. Even Java’s String.split(“, “) method is lexing, in a simple form.

Lexing is necessary for compilation, but also for many other programs. I’ve written too much input-handling code in my time, and I wish somebody had told me about lexing long ago. So this section of the tutorial is probably the most useful to areas other than compiler writing.

Let’s get started. Read more

Compiler Tutorial, part 1 – Introduction and Grammars

Rough few weeks – sorry for no post. But here’s something that people might find useful.

This semester at Penn, I’m taking a compilers course (CIS341). It’s been a blast – we’re developing a compiler for a language called OAT (as in Quaker Oats) that’s ‘objects, arithmetic, and types’. Due Monday is the object compiler, and the language is done in its entirety.The last two projects concern optimizations (register allocation, constant propagation, etc).

Writing compilers, for anybody who hasn’t done it before, involves a tremendous amount of work. Because compilers have always seemed like magic to me, I’m going to attempt to demystify them.

This will be a several-part tutorial written as I have time, so check back often.

I will assume you know something about programming, and are willing to learn a crash-course in formal languages, but I’ll try to keep it simple. By the end, we’ll have a reasonably interesting compiler for basically the language I’m writing now. The only thing is, we’ll do it in C instead of OCaml, which is what I’m using now. This is partly because most compilers are written in C, or their own languages, and partly because I don’t want to enable cheating.

Alright! Here we go. To start, we need to discuss formal languages – what they are, what they can do, and how to work with them. Next time, we’ll get into actual code. Read more

340,282,366,920,938,463,463,374,607,431,768,211,456 (2^128) addresses ought to be enough for anybody

Today’s XKCD got me thinking:

The joke, of course, is about the Great IPv6 Debate. If you’re lucky, you’ve never heard of it. Basically, the debate is being fought by folks over at Slashdot and the other tech news sites. Whenever an IPv6 story comes up, you end up with dozens of comments along the lines of “why is this necessary?” or “this is just excessive” or “it’s too hard!” or “but NAT works” or my favorite – “NAT is my security”.

Well, those are all wrong. Let me try and address some common misconceptions. Read more

Possessed Magic Trackpad

I received Apple’s Magic Trackpad as a gift a few months ago. Since I usually have my MacBook Pro hooked up to a huge monitor and my Model M-style buckling-spring keyboard on top of the closed screen, the internal “magic” multitouch trackpad is unusable. I was looking forward to using all the nifty gestures I missed out on most of the time, such as inertial scrolling and 4-finger-swipe “show desktop”. I also figured I could reclaim some desk space. Read more


Aren’t they adorable? My family got them yesterday. I can’t wait to meet them on Spring Break (next week!).

We had the nicest cat, Shanghai, for 21 years – she was older than I was. She died last winter, and we’ve finally decided to get two new kittens. We found a fantastic shelter in Bloomfield, NJ – they’re really careful, and even call your vet (!) if you’ve had other pets to see how you’ve taken care of them. The animals are out of their cages for most of the day and get all sorts of human interaction, they bring dogs in – it’s just a nice place. These kittens are about 9-10mos old. To avoid over-exciting them, we’re confining them to the dining room and kitchen for now, and we’ll gradually open up the rest of the house.

Videos to come.

Santorum (adj) – The assassination of one’s political career in spectacular fashion.

No, this is not the “real” definition. In the attempt to be safe for work, you’re welcome to Google it yourself.

Alright, you’re back. Or perhaps you never left. I won’t assume you know what it means, though you’re welcome to read the Wikipedia page on some of the backstory. It’ll help.

In any case, as a punishment for some incredibly bigoted statements of then-Senator Rick Santorum, a new word was coined. If you didn’t hear at the time, essentially he said that consensual gay relations were as morally justifiable as incest or adultery. If you hover over the above link, you’ll see the parenthetical “sexual neologism”. This should be enough to give you an idea about what kind of word was defined in his name. Well, in the absolute sense (and playing devils’ advocate), he has a point. But then again, no act of sex is justifiable. The drive itself is a necessary instinct, but unexplainable in rational terms. It’s an axiom of our existence, or should be – some try to ignore it. Attempting to justify sex is like asking why we’re afraid of death – it just is because that’s how we are, at the deepest level

Enough about that. This entry isn’t about the man, the act, the statements, or the word. Rather, it’s about Google.

Read more

Nothing is impossible if you give me money

I’ve got a marvelous proposition for you: Give me a picture of a guy, and I’ll tell you if he’s a terrorist. Wait – that’s too easy. Instead, I’ll find one hidden in an Al-Jazeera broadcast.

Unfortunately for all of us, the Justice Department said “we’re listening”.

Government Tries to Keep Secret What Many Consider a Fraud –

Read more