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 »
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 »
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.
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 »
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 »
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!
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 »
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 »