Professional

The Re-Education (Part 2): Linked Lists

May 25th, 2008  |  Published in Professional, Re-education

Linked lists, sometimes simply called lists, are a fundamental data structure in computer science. Languages such as Java and C# do an admirable job of abstracting away the details behind lists, but understanding them is absolutely crucial when building efficient programs.

The way in which linked lists are structured varies, but we will consider a doubly-linked list with external data. By that, we mean that each link in the list will refer to the previous link and the next link in the list, and that the data type that represents the list itself will not contain the data itself, but instead each link will contain a reference (pointer) to its corresponding data. In C++, a naive implementation might look like this:

struct LinkedList
{

LinkedList *prev;
LinkedList *next;
DataType *data;

};

Read the rest of this entry »

The Re-Education (Part 1)

May 22nd, 2008  |  Published in Professional, Productivity, Re-education

I bill myself out as a “software developer.” This is fair, I think, since I’ve written a lot of software over the past ten years, and this combined with my college education has enabled me to develop solutions to rather large and difficult problems.

Sometimes, though, we all need to reminded of the basics. It’s been a couple of years since my basic data structures and algorithms class, and it’s now gotten to the point where the difference between a red-black tree and a leftist tree is pretty fuzzy. Fuzzy to the point that I’m not sure I ever really grokked the difference.

So, it’s time for a refresher. I don’t have a copy of Leiserson/Rivest/Cormen handy, so I’m just going to use what’s on the shelf. Here’s the rubric for each topic: Read the rest of this entry »

Grooveshark is a Pretty Horsie.

May 16th, 2008  |  Published in Professional, Personal, Music Industry, Startups

This post has been redacted due to an illuminating discussion with a member of the Grooveshark team.

Valley of Broken Dreams: A YC Postmortem

April 29th, 2008  |  Published in Professional, YC, Silicon Valley

So, it turns out Paul Graham was right: the problem with going through tough times is not that they directly spell failure, but that they rob the momentum you have, which in turn leads to stalls and ultimately to failure. Within minutes of hearing about our rejection, I was so turned off by our project that I just picked up something else to work on, something I could still believe in. Call me fragile.

But let’s rewind a bit. Read the rest of this entry »

Saving Africa and Building a Business

October 8th, 2007  |  Published in Professional, Global-reach

If you haven’t seen it, this might be the best use of statistics to give a persuasive presentation I’ve ever seen: Hans Rosling on the democratization and analysis of world statistics on health and wealth.

This talk is good throughout, but what strikes me most is the inhomogeneity in homogeneity in each cluster of countries. By that, I really mean the spread in the economic strength among these groups, specifically the continent of Africa. Considered as a continent, Africa is in poverty, but contrary to the opinion of the average American, there is much wealth in Africa as well, and not just in the form of blood money for diamonds.

Wealth that comes from trade, that comes from countries exchanging on even parity in the global market with every other nation.
Read the rest of this entry »

RabidRead - A Speed-Reading Utility

May 6th, 2007  |  Published in Uncategorized, Professional, Personal

Over the last couple of days, I’ve put together a little program I’m calling RabidRead*. RabidRead was conceived when I read a forum post by someone about how he was able to achieve very high comprehension at very high speeds by using a piece of software he wrote.

Programs of this sort are called “serial readers,”and they work by presenting a single word (from a long text) at a time, in rapid succession (say, between 200 and 1000 words per minute).

Read more here!

I, AI (On the Unlikelyhood of Achievement of Human-Equivalent Cognition in Computational Neuroscientific Explorations)

April 18th, 2007  |  Published in Professional, Personal

I have to preface this post by saying that I happen to be reading Douglas Hofstadter’s latest book, I Am A Strange Loop, and, while some of these topics are covered in it, my discussion predates (and presages) my encounter with them in the text. In other words, while I am riffing on Hofstadter, I’m not ripping him off.

I believe that it will be extremely hard - well beyond the current estimates of futurists and Singularitarians like Ray Kurtzweil - to duplicate human cognition in silicon and code. While I was, and still am to some degree, wildly optimistic about the future of the computational study of cognition, reading Hofstadter’s new book has made me reflect more deeply on what has been called “Strong AI,” its possibility, its likelihood, and the form it would take.

I have become skeptical of predictions of human-equivalent artificial intelligence for three reasons, explained below. First, though, I have to say that I don’t think the limits will be strictly technological. In other words, I believe we will, within a couple of decades, have the raw processing power to emulate a sophisticated (if still somewhat simplified model) of a human mind, the sticking point being how to coax the hardware and software to give rise to such a thing.
Read the rest of this entry »

What Design Forces Us Into

April 13th, 2007  |  Published in Professional

I’ve been a hacker since before I can really remember. But one common factor present during my whole hacking experience is a tendency toward short-sightedness.

Specifically, the adjectives “quick” and “dirty” are hardlinked to the concept of hackery, and one would be hard-pressed to find such things as “discipline,” “process,” “design,” or, God forbid, “UML” heralded as the flying buttresses of the craft, though crafty it is.

Recently, though, it’s become apparent that the hardasses that do champion these notions might actually have something going for them. And that’s consistency.
Read the rest of this entry »