I'm going to appear on a panel of speakers tonight at USC's ACM general meeting, to talk about careers in computer science. In my case success is directly proportional to amount of star trek TNG watched.

edit: Whoops: it's in MHP 105 @ 7PM

Posted
Authorddini
CategoriesMethod in Mind

This past weekend I was a judge at a weekend long programming competition at USC. It was very kind of the ACM to ask me to do it and I definitely had a lot of fun. Here was the situation: something on the order of 10 teams of students were assigned the theme of "Change in your Pocket" on Friday evening, and had until Sunday evening to make a mobile phone application. Nearly all of the teams had no prior experience whatsoever with iPhone or Android development, so the fact that they had anything working at all on Sunday evening that was more than the most trivial application is extremely impressive. Hopefully this fact alone inspires people reading this - if these kids can put together what they did in 48 hours, there's nothing stopping you from making an awesome mobile app.

I don't want to post exactly what they came up with quite yet because many of the teams plan on doing a legit App Store release, so I'll wait for that to happen. But suffice it to say it gives me faith in humanity after seeing abject shit like this for so long.

I ran into an exec from another LA startup over there who was a very nice fellow and he said some things that make me want to punch the web in the face. I mentioned how this amazing talk by David Heinemeier Hansson at startup school was full of all kinds of great old fashioned advice like "your company should make money" and "there was a time when $1,000,000 was a lot of money." He responded by saying that 37signals is a lifestyle company. I said I hesitate to call a >= $30,000,000 business a lifestyle company. He said they're not going to get VC funding with their attitude.

Somehow this perverse notion that getting funding is a signifier for success has got itself into web businesses. It is as if the lifecycle of the web company is supposed to be 1. idea 2. launch 3. get funding 4. DONE. As if getting people to actually buy what you make is secondary.

Here are some pics from the Hackathon event.

And here's one of me being a judgmental prick whilst drinking redbull.

Anyways. Hooray humanity!

Posted
Authorddini
CategoriesUncategorized

Often in writing web applications, one is in the position of having to validate and parse something like:

alice@alice.org, Bob <bob@bob.com>
Charlie C <charlie@charlie-charlie.org>

One wishes to, in addition to verifying that the text represents a valid "jumble of emails", extract a list of the addresses:

[alice@alice.org, bob@bob.com, charlie@charlie-charlie.org]

Below I provide a javascript routine that does exactly this. Perhaps you will find it useful.

One of the reasons this task is not straightforward is because emails can come in a few formats. Let's (briefly) consider the W3C specification:

address = mailbox OR group

mailbox = addr-spec OR phrase route-addr

group = phrase ":" [#mailbox]";" (where "#mailbox" means one or more 'mailbox' tokens)

In other words an "email address" can appear as one of the "mailbox" types: either an addr-spec (Address Specification), e.g. "john@smith.com", a phrase route-addr (Phrase Route Address Specification), e.g. "John Smith <john@smith.com>", OR it can appear as a group, e.g.:

"Some Group Name":john@smith.com, strongbad@homestarrunner.com

The W3C spec of course breaks down each of the above keywords like "phrase", "addr-spec", and "route-addr" into totally unambiguous terms which the interested reader can check out. I think what appears in most people's minds when they think of "email address" however is the mailbox types, Address Specification and Phrase Route Specification.

The problem we would like to solve is: given some arbitrary sequence of Address Specification and Phrase Route Specification email addresses, do two things:

  1. Make sure valid email addresses are specified. This means that in addition to meeting the W3C spec, the top level domains, for instance, make sense (e.g. you can't have "john@yourface.yourface" as your address, even though it meets the W3C spec)
  2. Produce a list of Address Specification addresses.

For example, given the text string:

'john@smith.com Strong Bad <strongbad@homestarrunner.com>'

OR

'john@smith.com, Strong Bad <strongbad@homestarrunner.com>'

OR

'john@smith.com
Strong Bad <strongbad@homestarrunner.com>'

turn it into:

['john@smith.com', 'strongbad@homestarrunner.com']

In the file linked below is the javascript for you to do exactly this. It is composed of the following two functions:

  • function checkIfValidJumbleOfEmails(aString):

    If it's a valid jumble of emails (meaning some sequence of Address or Phrase Route Specification emails separated by either whitespace, a comma, or a semicolon) returns true. Else, returns false.

  • function stringToEmailList(aString):

    Assuming 'aString' is a "valid jumble of emails", extract and returns them as a list of Address Specification emails.

The javascript is tested to work in IE, Firefox, Safari, and Chrome.

A text file containing the two functions is available here.

Posted
Authorddini
CategoriesUncategorized

Perhaps you remember a movie from a long, long time ago called "The Wizard of Speed and Time"? If not, and like me you have an inexplicable desire to make references to obscure, obscure, funny, films, and you're into nostalgia like a crazy person, you should check it out, if at least to have something interesting to say to your friends instead of staring awkwardly at the ground while you pray for the moon to crash into the earth or something just so you'll have something to talk about. Created lovingly by a special effects technician named Mike Jittlov, over a period of about 5 years (!!) (and expanded from this short film) he uses stop motion to make himself appear to do things like appearing to walk on walls, and, uh, run really fast. The tone of the movie is like a mix between Disney and Monty Python.

Anyhow it's basically about how the creative spirit is awesome and hollywood producers are a bunch of assholes.

What brought this to my attention recently is having come across one of Jittlov's more recent works, "Darth Vadar's Psychic Hotline," which is basically Darth Vadar as Miss Cleo. You must be a giant Star Wars dork to enjoy this. Here's the short. Enjoy!

Posted
Authorddini
CategoriesUncategorized

Just saw this sketch comedy show in the chicago land area by a group called The Comic Thread, and the show was called "God? Dammit!" At the end of the thing Jesus had a barmitzvah. Anyways, they usually put on a string of shows every summer, so if you ever have the occasion, I highly recommend it.

I bumped into this girl there whom I've met like twice and she had this look on her face like "....who the hell are you?" Perhaps all the hair on my face creates a mystifying effect upon the mind. I'm like a freakin' shadow

Posted
Authorddini
CategoriesUncategorized

There's the announcement appearing many places today regarding IBM Information Security Systems' Mark Dowd and VMware's Alexander Sotirov claim that they've discovered a method for completely bypassing Vista's security infrastructure. What I thought was of particular interest is Dowd and Sotirov's claim that their method completely bypasses the Address Space Layout Randomization (ASLR) scheme. For those unfamiliar, ASLR was created to make buffer overrun exploits much more difficult to accomplish, by relocating the contents of a running program into a random location. For an overview of buffer overflow based security attacks see here

Security through randomization was precisely the subject of my master's thesis. I wish I could find some technical write up of their method.

Posted
Authorddini
CategoriesUncategorized
2 CommentsPost a comment

Here's a link to a story about Clearflow, software from Microsoft Research being used to model and avoid traffic jams.

The research is partially described in a Microsoft Research paper linked here.

In uncharacteristically logical fashion for Microsoft, Clearflow is a good example of taking an extremely complicated problem of traffic data analysis, and presenting it to a user as the solution to a straightforward problem: How should I get there from here?

The Clearflow system will be freely available as part of the company’s Live.com site (maps.live.com) for 72 cities in the United States. Microsoft says it will give drivers alternative route information that is more accurate and attuned to current traffic patterns on both freeways and side streets.

What's nice is it sounds like the interface will be exactly the same as using any old normal route planning software.

I'd like to know how much of it's traffic data is being pulled from some live source, rather than predicted through some model.

Posted
Authorddini

Let's say you're somewhere in the field of AI. You are somewhere from AI researcher (only uses their keyboard to check their mail, every 1 minute) to AI developer (fingers rarely leave keyboard). You know what AI is. AI is simply the automation of things, under various circumstances. There are certain laborious, dangerous, prohibitively difficult tasks, so we make software or machines to do them.

If you utter "Artificial Intelligence" to a non-technical person, a completely different image appears in their mind. It's something a bit more like this:

 

Terminator

or worse, this:

AI Movie

I've actually had people ask me if machines will one day "love".

The non-technical person has a completely different image of what constitutes AI than you do. The consequence of this for the entrepreneur is, if you tell someone "My software is revolutionary because it uses Artificial Intelligence!!", they will undoubtedly become excited, and then become utterly disappointed when you actually show them your software.

No where have I learned this lesson more bluntly than when I was pitching my startup to a venture capitalist.

Brief story. This was back when our software was something completely different, and we were pitching it as basically an intelligent task management system. We walked into the meeting, and by this point, all the investor knew was it involved artificial intelligence, and he was very excited. As we were giving the presentation, you could slowly see the man deflate. When it finally came time to give our demo. He watched the system assign unfinished tasks to time slots, and exclaimed "it's just putting tasks where ever there's free time." I tried to explain that no, the system is actually sorting through many constraints, and figuring out what the possible orderings there are for tasks given the goals that have to be accomplished, but he was having none of it. "This isn't...artificial" he said in disappointment.

AI is about solving problems that are too difficult to do by hand. It enables you to solve extreme, prohibitively difficult problems. For example, finding content on the internet relative to your query involves looking at TRILLIONS of pages and examining them. One person could not do it in his lifetime, so Google uses AI to do it for you. But you'll notice Google does not ever say "We use AI! Come use our search engine!" They just solved a problem no one else could nearly as well, and let this fact speak for itself.

A similiar sentiment has been expressed recently by the infamous Ted Dziuba, one of the creators of Pressflip (formerly Persai), a new content recommendation site:

How Does it Work?

That's a good question. After dealing with angel investors, VCs, users, and anybody who isn't an engineer, the answer in my mind is, nobody gives a shit. Really, nobody cares about your algorithm or how revolutionary you think it is. All people care about is a system that shows them things they want to read.

I'm here to tell you, man, that is right on.

Your software is not revolutionary because it uses Artificial Intelligence. Your software is revolutionary because it is able to solve a problem that was until this moment not solved. *That* is what you must pitch.

Posted
Authorddini