Today I came across a post on Twitter (via Hacker News) called Cars Kill Cities. It uses Atlanta as an example, and since I grew up there, I feel compelled to explain why the author is way off the mark.

First: is Atlanta -- the 9th largest US city, world's 15th largest economy, and 4th-largest concentration of Fortune 500 companies -- dying? Not at all. Atlanta was hit hard by the collapse of the real estate bubble, but it still has a rapidly expanding, very highly educated population. It's a global economic center with a significant concentration of high-tech and white-collar industries and good local universities. This suggestion is silly, probably a poorly-researched one made out of convenience rather than conviction.

So let's address the topic of the article instead:

Recent discussion sparked by opposition to the SOPA and PIPA bills has mostly been along the lines of "piracy is bad because it hurts the entertainment industries, but SOPA and PIPA go too far..." I agree with Jonathan Coulton that statements like this make too many unproven assumptions. So let's start from the beginning.

Assumption 0: People should pay money for art

I participated in my first (!) hackathon this weekend, a 48-hour student-run event at UPenn known as PennApps Hackathon. A friend and I wrote UnStock.Me, a stock trading game that -- at one point at least -- was intended to be educational. "Codecademy for the stock market" was the original idea, which we intentionally chose because it wouldn't take very long. We used the extra time to sleep and attend rush events for our fraternity (Phi Kappa Psi).

Daleks: A Robot Puzzle Game

I wrote a game in HTML and JavaScript called Daleks. It's based on a game I played when I was a kid with the same name, which is in turn based on an old BSD game called Robots. Check it out!

http://www.isaacsukin.com/sites/daleks/index.html

I talk to a lot of startups. I have a lot to say about what (not) to do if you are on the hiring side of this exchange, but for now I'll cover the minimum set of information you should be prepared to discuss if you want to hire a developer for your early-stage company. This is the first real interaction you'll have with a potential coworker. If you struggle with convincing someone to join your company, you can bet you'll struggle with convincing someone to buy your product or service, so you should be prepared with the information a potential hire will want to know. These are questions I will pretty much always ask you about your startup in an interview, and they're pretty similar to what a VC would want to know. When I say "I" below what I really mean is "any developer" but it's more convenient to write in the first person.

 

I'm writing a game in JavaScript for fun (I'm almost done, it'll be out within a few days). I've written dozens of games in traditional desktop languages, and I've written a lot of JavaScript designed to make user interfaces prettier, and I've even written some useful JS tools -- but this is the first time I've written a full application in JS complete with complex hierarchical entities. That is to say that I've never had to care much about the fact that JS more or less supports OO architectures before. I could have made this an opportunity to learn about OOP in JS, but I didn't. Instead I wrote the game basically without using (custom) objects at all, resulting in some redundancy and confusion. I did this because it was fast and easy and I already knew how to do it. The code's a mess, but so what? It works. It's good enough. I had fun, and I'm about to ship.

But I have this little note at the top of main.js:

Facebook hasn't switched everyone to the new Timeline profiles yet, but they will soon.

ViralSpread is a FOSS program that simulates a competitive contagion scenario. You can adjust the simulation's parameters and it will report various statistics about the simulation including graphs and exportable data. You can download the program (including the source code and screenshots) or check out the source code on github.

You can also read about the development process.

Labeling Subgraphs

On Friday I went to a series of talks for the kickoff of the Marketing and Social Systems Engineering (MKSE) department at UPenn, chaired by one of my professors. There were four speakers -- I missed the second -- and the talks ranged from monetizing people's browsing behavior on the internet to proving that humans exist.

I've been building an open-source suite of social networking software as a hobby since 2007 so the underlying topic of network science has interested me for a long time. I have mainly focused on building user engagement. Towards that end I've thought a lot lately about the right way to represent relationships on a social networking website given varied successes and failures of Facebook's Friend Lists and new Smart Lists as well as Google+'s Circles. My expertise is in Drupal and the choices there all require tediously, manually building your network. I'm convinced that the best approach for usability is to automatically identify people's friend groups. In general it's a good principle not to make users do anything that is not directly related to accomplishing their task of participating on your site, and manually maintaining friend lists is awkward anyway.

I happened to be working on a Java project recently where I needed to let the user save files through the GUI. The Swing toolkit has a nice JFileChooser class that lets you show a file save dialog so that the user can choose the directory and name of the file to save. However, not all filenames are valid, and Java doesn't validate them for you by default. If you try to save a file with an invalid name, Java will throw an error, and this is often considered the only way to know if the filename is valid. That's bad practice though since you should never rely on an exception being thrown as a condition of your program running correctly; by definition, exceptions are unreliable and sometimes unpredictable. Additionally if your file saves successfully then you have to immediately delete it (because you were only saving it to test the filename) and that's messy. So I wrote a ValidatedFileChooser class that checks various criteria to make sure that filenames are valid before attempting to save the file, and alerts the user if one of the criteria fails. The class is below, and I'm releasing it to the public domain.

© Isaac Sukin 2008-2012. All rights reserved. Contact Isaac if you are interested in any of his work.