Archive for September, 2007

Banana Chase: The First Race

Friday, September 21st, 2007

My alarm went off at six AM and I immediately shot out of bed. I’m usually a pretty early riser, but for a college student, six on a Sunday was definitely too early. Yet I was awake and alert, excited for the race I would be running in just a couple of hours. I quickly showered, ate a couple pieces of toast, and jogged to Kroeber Fountain, where all the racers from running club had arranged to meet. We waited there for a bit for our drivers to arrive; I was excited and nervous, ready to start running.

The Banana Chase 5K/10K started at Kezar Stadium in San Francisco, so we drove over there, checked in, and relaxed while waiting for the rest of the team. By way of warm-up, we jogged some of the course, returned to the stadium and stretched, chatted and mentally prepared ourselves. Most people on the team were pretty serious. As for me, I was just excited to be running in a race. I wanted to do well, but it was irrelevant what time I got. The race started at nine AM, so around then we jogged up to the starting line, ready to get things under way.

The race was over pretty quickly (I ran the 5K), but I really enjoyed those 20 minutes. We ran near and in Golden Gate Park, which is a tranquil area of San Francisco, so the route was awesome. Even though it was just 3 miles, I ran it pretty hard (it was a race after all), so I was exhausted afterwards. I was happy with my time, for my first race it was quite good (and vacuously a PR!). More importantly though, I had a lot of fun just being there and taking part in such an event with so many people.

I haven’t been involved in competitive sports for a couple of years, and I realized that I miss the adrenaline and anxiety of athletic competition. Sunday was a great reminder of that, but it was a little different than the soccer matches I used to compete in. First off, here it’s entirely individual, but there are so many people around you, that I got a sense of camaraderie rather than competition. At the same time, I was still energized to compete. On the whole though, it was amazing to see so many different people participating in the race, and it has motivated me to keep training in a race more often.

The Banana Chase was essentially my first race (I did cross country in middle school), and I loved it. Hanging out with the running club was really fun, I enjoyed seeing so many people warming up, socializing, and running, and of course, the actual run was really good too. I’m working on building up my distance, so hopefully my next couple of races will be longer, but this was definitely a good start.

If you’re interested in the race results, they’re here.

Voice Recognition Media Library

Thursday, September 20th, 2007

It’s time to finally let the cat out of the bag. I announced about a month ago that I was working on a really cool project and now I’m finally going to talk about it. From the title, it’s pretty obvious that the project involves voice recognition and media libraries. Well, here we go!

I worked at a company called Tellme this summer, and all of their technology revolves around voice recognition. Anyway, after working on voice applications for them, I thought it’d be really cool to extend iTunes to take voice commands. I talked to some of my fellow interns about third party voice recognition software that I could use, and got started.

First, let me talk about some of the software I’m using. My voice recognition tool is called sphinx. It’s an open source Java package provided by Carnegie Mellon that’s really easy to extend. Sphinx was a bit difficult to install, but once that’s done, they provide a lot of demos that you can just look at and add on to. I just took their “hello world” demo, and added a bunch of stuff to it to get my media library recognition to work. If you’re at all interested (and because you’re still reading, I take it that you are) I strongly recommend checking out their software, playing with it and extending it to build your own applications.

On the other side of the application, I’m using a perl module to control iTunes. The module just has functions that output some applescript, so unfortunately this project can only be installed on top of OS X right now, but it’s a really simple, easy to use interface to applescript and therefore iTunes. This is what I really love about perl; there are so many libraries for perl that you can do pretty much whatever you want, just with installing a couple of modules onto your computer. I’m also using perl for XML parsing and other file handling, while I’m using Java for the user interface and interaction to sphinx.

Ok, so what exactly does my prototype do? Essentially, I have a java program that starts up the sphinx recognizer, waits for the user to say something like “itunes play”, “itunes pause”, “itunes next”, or “itunes select”, and then it processes the command, and sends a command to iTunes. “Play”, “pause”, and “next” are self explanatory, but “select” is a little more intricate. When the users says “itunes select,” the program prompts you to say an artist name, and then a track name by that artist and then it searches your iTunes library and plays that specific track. That’s the program from a high level.

Looking deeper down, the Java code is just a loop that waits for recognition, but I use different grammars each time. The main procedure just has a grammar that accepts the “iTunes” commands. Each command outputs a different string, which I send as the argument to a perl script. The perl script then uses the applescript library to send a command to iTunes.

Prior to loading the recognizer, I use perl’s XML libraries to parse “Itunes Media Libary.xml,” the file that stores all of iTunes’ track information. Then when the user says, “itunes select,” I dynamically generate a grammar composed of a list of all the artists in your music library. Then when you say an artist name, I dynamically generate a grammar of all the song titles. Once I have the artist name and the song name, I pass the information into the perl script, which again sends the commands to iTunes. On the whole, the project doesn’t seem too complicated, but there’s quite a bit of code involved, and it’s definitely more challenging than any of the other projects I’ve worked on.

My current prototype is fully operating as I just described, but it’s certainly not complete. Before I actually publicize and maybe distribute my software, I want to fully integrate it into iTunes as a plug-in. I also need to improve recognition, because my ultimate goal is to just leave the plug-in on, but it should know when it should be listening and when it shouldn’t. Finally, I also want to let the system learn artist and track names, because as of now, it only understands legitimate English words and a lot or artists names aren’t English words. I want to build a feature that allows you to train the system when you first run it, so that it learns this names and recognizes them for later runs.

Of course all of my aspiration and additions are a lot more challenging than just getting my prototype running, but I really think this project is cool and that it’s worthwhile for me to spend my time on. It would be amazing to show off to my friends, peers, and, of course, recruiters. What’s more important, though, is that I’ll learn a lot about building a stable, user-friendly, product that integrates a lot of different technologies. I hope to make this a project that I take from start to finish, spending time on all aspects of product development. It’s a challenge, but it’s been fun so far, and it’ll be so worth it when it’s complete.

New features to akrish

Wednesday, September 12th, 2007

As I’ve been perusing other blogger’s sites, I’ve picked up some general trends that blogs seem to follow. I’ve been working on adding some of these features to akrish, which is partially why I haven’t been writing that much recently. Very briefly, here they are:

Archives: This is my third month of blogging, and I have a decent amount of articles on the site. The archives allow me, and other readers to browse articles by month. I really see this as a way for users to find my most recent articles.

Tagging: A work in progress (it’s running decently on my local server). I’m trying to enable tagging of articles so that users can browse articles based on tags. It’ll let users find the stuff that they’re really interested in. Hopefully I’ll finish this up this weekend and deploy it on the production server.

Comments improvements: A lot of blogs allow users to link to their website in their comments, so I jumped on the boat and did the same thing. there’s a weird behavior if a user doesn’t include a URL that I need to get around to fixing, but for the most part it works.

I also want to implement a more general search engine on the site, but I probably won’t get around to it for awhile (now that school’s really started I’m very busy). Are these features useful? Do they work as you want them to? Do they contribute to the blog? Any criticisms? Thanks.

August Music Recap

Wednesday, September 5th, 2007

A quick summary of my musical interests in August

What I’m Listening to (Albums):

Paramore – Riot

Mae – The Everglow

Lorene Drive – Romantic Wealth

Saetia – A Retrospective

Bring Me the Horizon – Count Your Blessings

Circle Takes the Square – As the Roots Undo

Daphne Loves Derby

Dashboard Confessional – A Mark, A Mission, A Brand, A Scar

What I’m playing (Acoustic):

Jimmy Eat World – Hear You Me

Taking Back Sunday – New American Classic

Dashboard Confessional – Standard Lines, This Old Wound

Daphne Loves Derby – Hopeless Love, Come Winter, Midnight Highway

Three Doors Down – Here Without You, Away From the Sun

What I’m playing (Electric):

John Petrucci – Glasgow Kiss (some of it), Wishful Thinking

Joe Satriani – Love Thing

As I Lay Dying – Confined

I’ve been playing a lot more acoustic guitar recently. I think it’s because my acoustic is on a stand right next to my desk, while my electric is in it’s case hidden away in the corner. At any rate, I’ve started playing and singing a lot more; it doesn’t sound that great but I’ve noticed improvement.

I just got the new Chiodos album today; September looks like it’ll be another good month for music!

What project ideas have revenue-generating potential?

Monday, September 3rd, 2007

I’m very fortunate to be living in Silicon Valley. Both my parents work in highly technical areas so I can bounce ideas and implementations off of them. They give me really good feedback about anything, both technical and not. What’s more, many of their friends are equally technical and entrepreneurial, so I’m in a great place to bloom as an entrepreneur. Recently I met one of my friend’s uncles, and I started talking to him about entrepreneurship and all that good stuff. Turns out he’s a venture capitalist, so he gave me a lot of advice, and input from the point of view of a VC. I’ve only known him for about a month, but I think I’ve already learned quite a lot from him.

I had a chat with him earlier today; we talked first about school, work, and music, but I asked him for some feedback on an idea that my friend and I just started working on. I won’t go into detail on the idea, but both my friend and I were pretty excited to work on it; it seemed interesting and also pretty useful to the general public. Anyway, I explained the idea, and needless to say, he didn’t particularly like it. Yet, he didn’t just rag on it as most people do, he gave me really good reasons why he didn’t like it that I can apply to other ideas.

The first point he made was that any idea that you want to profit from needs to have some “hard problem” to it. Sounds pretty obvious, but in retrospect, most of my ideas have nothing really hard to them. They’re just a lot of mindless coding, with some tricky areas. His reasoning was that if there isn’t anything challenging to what you do, competitors will just imitate you, and no one wants more competition. You need something that really separates your product from everyone else’s, something that’s not easily reproduced. If you’re product solves a problem better than anyone else can, then you’ll probably be successful. Our idea, unfortunately isn’t that hard to implement.

I agree with this statement from a business standpoint, but not having a challenging problem doesn’t mean that you shouldn’t implement your idea. It’s always great to contribute to open source projects and build free services, just don’t expect to generate revenue from them. I still want to build this project that my friend and I are working on, because I think it’s a cool idea. Even if it’s not challenging, it’s still something fun to work on and it’ll be a good learning experience. I’m not at the stage in my life when I need to be making a lot of money (it’s always good of course), so I’ll still work on my ideas that I think are cool, regardless of a challenging they are. On the other hand, things that aren’t challenging aren’t nearly as fun, and stimulating as things that are. I think that should be the real deterrent from working on certain ideas: not that others can replicate, but that they aren’t as fun.

The second point he made was about building off of someone else’s (lets call them company A) infrastructure. If you’re doing this, you better add something really unique to it that makes it significantly challenging for the owner of the infrastructure to imitate. If you’re product is trivial here, as soon as you become remotely popular, company A will devote some resources to imitating you, and they’ll do things a lot better than you ever can. While you only have access to their API’s, they can configure everything about the base infrastructure to optimize for what you’re doing and probably beat you out. This goes along with the challenging problem bit, but it becomes even more important when you’re using someone else’s work.

In thinking about this, I’ve become even more turned off to using external infrastructures. With a lot of my projects, I like to do as much as possible by myself. Rather than rely on other people’s code and API’s, I prefer to build things myself, customizing them to suit my needs. I like this for two reasons: I build a more optimized application and I learn a lot more by designing everything. The lesson here is: don’t expect to make a lot of money off of mash-ups. Don’t get me wrong, many mash-ups are really cool, but they’re not going to generate a lot of revenue.

We also talked about generating revenue from an idea. He affirmed my belief that a lot of money can be made with advertisements, but advised me not to worry so much about income, and focus on building something good that attracts visitors or users. We started talking about this site, (it’s my only project with some hope of generating income right now) and he encouraged me to just keep writing and focus on publicizing and building subscriptions. What I took from this is that you shouldn’t worry about generating revenue at the onset, but instead concentrate on building something really good.

Since talking to him, I’ve been reassessing my current projects and deciding whether I should keep working on them or not. Some of them I’ll definitely scrap; they don’t sound like much fun and I don’t think they’ll make me any money. Others, I think I’ll continue. At this point, none of my ideas really have anything “challenging” about them, but I’m still a pretty young student with a lot to learn. I still have plenty of time.