Peter Christensen

  • Presentations

Hacker vs Engineer – Know The Difference!

March 6, 2008 by Peter 8 Comments

Some of the most commonly used terms are often the most misunderstood and least agreed upon. One example of this is the difference between a startup and a business. Now I’m no expert (having run neither of them), but I do read a lot and I pay $8 a month for hosting, so I can pretend to be! Here are my definitions for startup and business (again lifted from a Hacker News comment I made):

Startup: This is when your revenues can’t support the company and its employees at a standard they would expect. This could mean a lot of things, for instance

  • You’re self funding but doing the ramen/living on a friend’s couch/wifi-freeloading super cheapo route. Maybe you’re making a profit but you don’t want to live like this forever.
  • You’re living off of investment money unrelated to what your startup is producing: angel/VC money, cash from a prior successful exit, student loans, day job money, etc.

The key thing is that your idea and execution are currently unproven. You should be getting noticeably better each day as you improve your technology, your product, your marketing, your brand, your sales cycle, etc, (all these things create wealth but not necessarily money), trying to find the right combination of those things that lead to market acceptance and self-sustaining revenues. Or your goal might not be self-sustaining revenues but to create a product or technology or business that will be bought by another, larger company.

Business: A business is funded by its customers and revenues, and it has found a successful niche in the market. Once you get to this point, some of the pressure is off, although your niche and success is a moving target and you need to continue working and executing in order to get knocked out of it. There are completely different skills and personalities needed to nurture and grow a successful business/product as opposed to developing a new one and finding a market for it.

[Read more…]

Filed Under: Programming, Startups

How To Learn Lisp

March 3, 2008 by Peter 42 Comments

In the spirit of my last post, I decided to turn one of my favorite long comments on Hacker News into a blog post in the hopes that someone would find it useful. There was a good discussion last week about how to learn Lisp, and since I was a little late to the thread, most of the things I wanted to say had already been said. So, in an effort to pull it all together, I made a nice long summary comment, which is reproduced and cleaned up below.

Before I started learning Lisp, I have (in reverse chronological order) worked with .Net for several years, disliked C++ in college, loved Pascal in high school, dabbled in (Assembly?) programming my TI-82 graphing calculator, and started with Hypercard. Here’s my advice based on ~1 year of part-time Lisp education.

  • To learn “lispiness”, functional programming, and get a feel for the computational approach to programming, read The Little Schemer and The Seasoned Schemer. Also, use the resources for the MIT Intro course Structure and Interpretation of Computer Programs. Watch the video lectures (30 well spent hours) and if you’re ambitions, read the book (Amazon). Doing these things will help keep you from writing PHP in Lisp.
  • To put it into practical perspective and learn the nuts and bolts of modern common Lisp, read Practical Common Lisp (Amazon).
  • If you read PCL, you will run into Emacs and SLIME (the generally preferred [NO FLAMES, PLEASE. I KNOW VI IS AWESOME TOO] open source way to edit Lisp files). I wrote some resources to help with that:
    • Emac/SLIME Cheat Sheet
    • Commentary on the SLIME screencast
  • I’m surprised no one has mentioned PAIP (Peter Norvig’s Paradigms of Artificial Intelligence Programming). Probably because there’s no free version online and it’s a pricey book. I got it for myself for Christmas and it’s well worth the price. It’s half AI book, half tutorial on Lisp programming and Lisp style. It’s a good read with lots of example programs written in good Lisp Style.

There are three hurdles people usually run into when learning Lisp:

  1. The language looks different – this goes away with practice and familiarity. It starts looking normal fast. The parentheses are a bit tough to manage unless you use a capable editor, which leads to:
  2. Emacs is different – really powerful, fun to use, but it takes investment in learning. It’s really tempting to quit when starting, but worth getting over the hump. Once you do that:
  3. The way of thinking is different in Lisp – Lisp seems a little awkward to use until you get (don’t need to master them, just get the idea) the following ideas: 1) code can be manipulated as data because the syntax is so simple, 2) creating your own syntax (using macros – code that writes code) means that you can express your program in a way that closely matches the problem you’re trying to solve. Some good articles to help get these points are:
    1. The Nature of Lisp
    2. Functional Programming For The Rest of Us

Don’t worry if you don’t get these “big picture” things at first, they click at some point and everything makes a lot more sense. You can speed that up by putting a lot more Lisp in your head in the meantime.

Does anyone have any more tips on learning Lisp?

Also: read comments on this post at comp.lang.lisp, reddit, Hacker News

 

Filed Under: Education, Lisp

Why We’re Not In A Startup Bubble

March 3, 2008 by Peter 1 Comment

Normally, when I read something on the Internet, I have one of three reactions:

  1. “This guy is so wrong he’s not worth acknowledging.”
  2. “This guy is stating the obvious so he’s not worth acknowledging.”
  3. “This guy is so right there’s nothing to add.”

Sometimes, very rarely, there’s a fourth reaction: “This guy has a really good point, but something’s not quite right.” So, the Reaction #4 award of the day goes to this post on Entrepreneur2Be, called “Why There Will Never Be A Startup (Bubble) Bust“. I realized I was entering #4 territory when I started writing a really long, well-formatted comment that I had to use PageDown several times to read. If I have so much to say, I might as well put it here so others can read it to. So here goes (I think I’ll add more #4 posts in the future):

SUMMARY:

He says that people think there’s a startup bubble because so many crazy little companies are getting funded. There is no bubble because:

  1. There are billions of people still waiting to get on the Internet
  2. People can switch products quickly online
  3. The Internet makes real life products and services (package tracking, listening to music, etc) better
  4. The audience wasn’t there in the 2K bubble burst

These factors mean that Internet growth will eventually slow as they catch up to the real world, but since the cost of starting a company is going down, more and more startups will continue to be created.

MY ANALYSIS:

I agree with the main point (no bubble bursting) but not so much with your arguments. (well, I do like #3 and #4). If I had to give my arguments for it, I would say:

  1. The internet lets people with common interests that would never have found each other find each other and create new markets that wouldn’t otherwise exist (like the zillion dollar internet knitting communities that keep getting mentioned, or Lisp programmers, etc). This lowers the cost to supply a new product, which will create more value (in a microeconomic sense).
  2. Innovation in the physical world has been going on for thousands of years, and online for about 15. There’s lots of room for trial and error and improvement. I’m sure there are big ideas (like the equivalent of car financing in the real world) that will change the way people work on the internet.
  3. There hasn’t been a generation of programmers/entrepreneurs yet that had the WWW around for their whole life. I think their perspective will create a lot of new ideas because they will lack older (possibly outdated) assumptions
  4. The economics of starting a startup in college (something Paul Graham and others are promoting) are so favorable now that participation will continue to increase. A lot of really awful startups will get done by college students, and a few outstanding ones will also happen. A la “The Black Swan”, if 10,000 new startups are formed a year, and 100 of them become successful businesses or acquisitions, and 1 of them IPOs, that’s a lot more value created than the 99,899 that go nowhere lose (especially if they just go back to school or try again next year).
  5. Some big problems still exist on the internet (trust, privacy, identity segmentation, etc) that will open huge new opportunities when they are solved.
  6. As long as the only bubbly characteristic is “lots of little angel and VC investments”, then generally the only people that can get hurt are rich people. I’m sure it still stings, but the difference between and angel investor blowing $500K on some college students or a ski condo is a wash for the economy as a whole.
  7. In the 90s, a successful company was one that IPO’ed for 9 figures and sucked cash out of investors from around the world. The much more common successful exit now is acquisition by a big company. That’s not a big deal because
    1. most acquisition prices are small compared to the acquirer’s resources (even a $1B purchase by Google won’t break the bank) so there’s little chance of completely wiping our investor value
    2. acquisitions are generally inline with the same company fundamentals that cause someone to buy stock in the parent company, whereas Bubble IPOs were based on a bunch of enthusiastic question marks
    3. Acquisition pairs a new innovation with a successful business model. IPO pairs a new innovation with a one-time financial windfall that doesn’t mean jack for the ongoing success of the business

Overall, it doesn’t matter what reasons anyone offers for why we are or aren’t in a startup bubble because history will decide that for us. But I think that E2B and I are onto something.

Filed Under: Startups

Sleeping Too Much and Fighting With Emacs and ASDF

February 29, 2008 by Peter 11 Comments

So it has been a while since I wrote something useful. I have either an excuse or an explanation, (depending on how you value excuses). Two weekends ago, I got sick and, long story short, I got better but I had to sleep a lot to do it. Ergo, no polyphasic sleep during that time. I’ve been sleeping like a normal person, except my wife has had trouble sleeping so I’ve been sleeping for maybe 6-7 hours, with a 30-60 minute interruption somewhere in the middle. What did this do to me? It made me really, really tired! I’ve been sleeping too much and doing a bad job at it, and I’m sick of it. I’m taking one last night sleep tonight and then tomorrow I’ll start taking my naps and staying up at night. And I’m very much looking forward to getting that time back.

So with 5 fewer hours a day to work, what did I cut out and what did I keep? Well, I haven’t a) written quality blog material, b) done housework chores, c) programmed as much, or d) made all the great improvements people suggested to my SLIME/Emacs cheat sheet. I decided that if I only had a little time, I should spend it on what’s most important, which right now is sharpening my Lisp skills. I’m trying to get to a point where I can work on programming for my startup without referring to documentation for every single thing I try to do. That consists of 3 things:

  1. get better at Lisp (currently working through Practical Common Lisp)
  2. learn to use ASDF (so I don’t have to only use one file)
  3. customize Emacs and learn more commands

#1 is going nicely. Unfortunately, #2 and #3 pose a bit of a problem. I’m currently using the Allegro-bundled LispBox for Windows from the PCL website. It’s been great for getting started, getting comfortable with basic commands, and getting familiar with SLIME and Emacs. However, it’s not conducive at all to customization. I’m not saying that it can’t be customized, just that it is a minor distribution for new users, so there’s not a lot of documentation out there for working with it. Three big strikes: (Windows, LispBox, Allegro) means that there are very few users, very few comments, and very little help.

For instance, ASDF is included and configured correctly, with the code from PCL already setup and easy to load. However, I tried for (too long) to get ASDF to load my code. I wrote my own packages.lisp and .asd files, I tried pushing values for my directory to the asdf:*central-registry* so I didn’t have to make a zillion shortcut files, etc. Long story short, it didn’t work and nowhere on the Google did anyone have specific advice for my setup. Ditto with .emacs customization with Lispbox (for anyone who’s wondering, I think it’s at C:\Program Files\acl81-express\misc\dot-emacs.el, but I couldn’t get the settings to load. YMMV). It’s just too obscure and I don’t have the time to figure out everything on my own, so I’m moving to a more mainstream setup.

So I put development and practice mostly on hold so I could get a more common setup that will make it easier to get help with when (not if) I have issues. I’m still working on the setup, becuase I spent a lot of time researching recommendations and best practices. I want to get it right (or at least mostly right) the first time so I don’t have to go back and re-do everything again. Tweaking is fine and I plan to keep doing that forever, but no more redos. I’ll put out another n00b type giude (along with rationales) when I get my own setup working, but here’s what I’ve come up with:

  • Emacs 22.1
  • SLIME 2.0
  • CLisp
  • Cygwin(?) – I’m trying to limit the number of tools I have to deal with so I wanted to leave out Cygwin. Can anyone give advice on whether it will make my life easier or harder in the short term?

Thanks to everyone who has expressed interest in the meantime. Keep your eyes out for more guides and an update to the cheat sheet. That’s my motto, helping the n00b in all of us!

UPDATE: I wrote this on Thursday but haven’t been able to post until Friday night. I’ve taken two naps, planning on staying up at night, and I feel great! I’m already happy to be back on a polyphasic schedule!

Filed Under: Polyphasic, Programming

Lisp is Great Because It’s An Ordinary Language

February 27, 2008 by Peter 5 Comments

Kenny Tilton just wrote a great article that I think cuts through a lot of the clutter that gets spoken about Lisp. Among the great quotes in the article, he says:

“The first reason you should be using Lisp is a non-reason, an answer to an objection, a negation, a let-down: Lisp is just an ordinary programming language.”

and

“Lisp at one level of understanding is just a normal high level programming language. Those parentheses look quite different but constitute only a superficial difference from the conventional chicken scratch syntax of semi-colons, braces, full stops, and brackets. When a conventional programmer sits down to program Lisp, they feel quickly at home: Lisp is just another 3GL.”

“I feel terrible about this. I am supposed to be up on a soapbox preaching eternal salvation and ecstasies glorious and unknown”.

I couldn’t agree more. While I haven’t officially taken the Road to Lisp survey, I will say that I started out by reading Paul Graham’s essays, which sparked my interest but didn’t convince me to ask. Paul is an honest, straightforward, persuasive writer, but in a world where everything is overhyped and “The Greatest, Most Extremest X EVER!!!!!!” I looked for some more confirmation before taking him at his word. Well, I found it. Not in any specific place, but in the sum of a year of experience reading reviews, comments, history, blogs, and books, and doing some programming of my own. And the answer I came up was that Lisp is simply a great general purpose language. And since everyone else has the same wariness about any “Most Extremest EVER!!!!”, I think Kenny can close sum it up better:

“Lispers are accused of religious fanaticism and zealotry — nope, our enthusiasm is all about getting applications built faster with less pain.”

Amen.

Filed Under: Lisp

That’s One New Year’s Resolution That’s Resolved

February 22, 2008 by Peter 1 Comment

Something very delightful on a Friday afternoon:

Google Result

Go ahead, try it, it’s fun! (If I’m not #1 when you click it’s YOUR fault for not linking to me more often! ๐Ÿ™‚ )

That was one of my New Year’s Resolutions that’s now resolved (be the #1 search result on Google for my name). Now I’ve just got to lose 30 pounds and get some revenue out of my startup!

Filed Under: Fun

Public Beta Open For “Ultimate N00b SLIME/Emacs Cheat Sheet”

February 14, 2008 by Peter 28 Comments

On this Valentine’s Day, give the gift people really want – complex key chords!

In other news, I’ve got fans!

Well, at least one anyway. A lot of the feedback I’ve received on this site so far has been from experienced Lispers who appreciate my enthusiasm and contributions for new users. Yesterday, I got the first (I think) comment and reply from another new Lisper who’s actually getting some use out of my stuff. Aaron Feng wrote up my SLIME movie reference, and he even caught my later reference to my upcoming “Ultimate N00b SLIME/Emacs Cheat Sheet”. Well Aaron, wait no more!

I’ve been using it for a week or so, and I’m sort of pleased with it. First the positives:

  • It includes all of the SLIME commands from the SLIME manual
  • It includes all of the Emacs commands from the built in tutorial
  • It includes the main Emacs help keys
  • The commands are sorted and grouped by functional area
  • It’s all fits on one page

Here are some of the things I’m not so pleased with:

  • It has very few Emacs commands, relative to what’s available
  • It doesn’t include any advanced text manipulation options
  • It doesn’t have the sexp-based manipulation commands. I couldn’t find standard bindings for these and I’m not up to Emacs tweaking yet. Adding a key for the slime-selector was enough for me at this point.
  • It’s pretty crowded (~100 commands and descriptions on one page)

The Emacs section is weak mainly because I haven’t dived into Emacs the way I have into Lisp/SLIME. I figure for now I can use it as a standard, powerful IDE for writing, testing, and debugging Lisp, and I can add Emacs wizardry later. I think I hit the point of diminishing returns where focusing on my tools will help me learn to code in Lisp. Now I need to get my coding up to par with my tools! I need to improve to the point where it’s worth getting a copy of Learning GNU Emacs.

So without further ado, here is my unfinished yet eminently usable cheat sheet:

[NOTE: These links were broken for a while. They work now]

Ultimate N00b SLIME/Emacs Cheat Sheet (pdf)

or customize your own!

Ultimate N00b SLIME/Emacs Cheat Sheet (xls)

Enjoy! As usual, feedback is appreciated. If you’ve got an Emacs trick that you use a jillion times a day that you think a new user could use, this is a great way to share!

(PS I hope it goes without saying but there isn’t any kind of beta process. Just that I consider it a work in progress and that it will definitely change in the future, hopefully in response to useful criticism.)

Follow the discussion at: Hacker News, programming.reddit.com, comp.lang.lisp, comp.emacs

 

Filed Under: Lisp, Programming

Now With 70% More RSS!

February 14, 2008 by Peter Leave a Comment

When I looked at my stats, I saw that very few people appeared to be coming from RSS. I know that RSS readers are hard to track down (that’s why Feedburner sold for $100 million), so I just used Google Reader as a proxy. There were about 6 people per day coming from there, and I wondered why it was so low, considering that thousands of people have seen my blog through various social news hits. Then I looked at my page and saw there was only the lame RSS link in the WordPress footer.

I looked for a different theme that included RSS in the sidebars. I did this for a (n embarassingly long) while until I realized that WordPress is just PHP, and as a typical elitist hacker, I could make a minor change to PHP code (even if I had to wash my hands afterwards :). So, now it’s done, and the RSS links and icons are now in the sidebar.

So, what are you waiting for? Subscribe!!

Filed Under: Blog

Tooting My Own Horn

February 12, 2008 by Peter 3 Comments

After spending a (very) long time on the Reference for the SLIME/Lisp/Emacs Screencast and getting lots of good reviews of it, I’ve taken a little pause from writing to actually do some coding! A few months ago, I started going through Practical Common Lisp, but found it too painful to work in Emacs. I believed in Emacs, I just need to invest the time and practice in getting more comfortable with it. The SLIME movie was part of it, and I’ve been working on the Ultimate Noob Emacs/SLIME Cheat Sheet. I’m beta testing it right now and I’ll post it when I feel more comfortable with it. (EDIT: A beta version is up now) I’m going through Practical Common Lisp again and this time it’s much better. I’ve read the book and I’m following along in the Practical chapters, coding alongside the text and testing, running, debugging, etc. Right now I’m a little hung up on the magic of how asdf knows where to find the files. I’ll have some more later this week. Probably a startup or business article – I’ve got a couple ideas ready to burst from my head.

In the meantime, I’ve received some glowing praise. First, my Lisp: The Golden Age… article was nominated for the first ever Battle of the Technorati Challenged, a little contest for excellent writing from little-known bloggers (I certainly qualify there!). I ended up winning, since 6 out of 14 voters chose me! So thanks to Caffeinated Coder for nominating me, and thanks to his dozens of readers for participating in the contest.

Second, I got some nice feedback from some of the people on comp.lang.lisp about the SLIME screencast reference. Here a few of my favorites:

“er, Hip hip hooray? This is my dream come true, fresh blood invigorating the CL landscape. We get a /lot/ of noobs who whine about the tools learning curve, and I understand that it is hard, but I also understand that the situation will not change until folks like you make the climb and before charging off to create the next Viaweb take a moment or week to make things easier for the next bloke.” – Ken Tilton

“Seconded. This is really cool! I hope you’ll stick around a create more resources like this.” – Peter Hildebrandt

“Very impressive! Good work. Next step, make another screencast that add to what Marco covered! ๐Ÿ™‚ ” – Andreas Davour

Thanks everyone, I appreciate everyone that has read and commented, and there’s more good stuff to come!

Filed Under: Blog

Reference for the SLIME/Lisp/Emacs Screencast

February 8, 2008 by Peter 17 Comments

Following up on my transcript/review of the UCW “Hello World” screencast, here is my review of Marco Barringer’s SLIME movie. (Description, 150MB .mov, Torrent, watch online). This screencast was more difficult to annotate because:

  1. It was almost 3x as long (55 min vs. 20)
  2. It covered more topics (Linux, Emacs, Lisp, SLIME)

I did find it much more interesting though because it showed off a lot of the cool features in those topics, whereas the UCW screencast was mostly just instructional. Also, I don’t know if I’ll ever use UCW for an app, but I’m already using the LELS stack and plan on using it for a long time to come.

(See what other people have said about it)

Looking back at my UCW reference, I think the format worked for that screencast because it was mostly just straight Lisp code. In the SLIME movie, the Lisp code is the least useful part – it’s just the vehicle for showing off the tools. So there’s a mix of Linux commands (unfortunately omitted because WordPress or Apache or somebody thinks they’re a security problem), Emacs key chords, Emacs Lisp code, and Common Lisp code. I’m leaving out most of the Common Lisp code for the morse code translator to focus on what’s more relevant. Also, I added links to documentation for the features shown. Hopefully this will make it easier to watch the movie and get straight to work on your own projects!

[Read more…]

Filed Under: Lisp

« Previous Page
Next Page »

Categories

  • Blog
  • Book Review
  • Business
  • Clojure
  • Education
  • Emacs
  • Fun
  • iOS
  • Lisp
  • Personal Sprints
  • Pictures
  • Polyphasic
  • Presentations
  • Programming
  • Rails
  • Startups
  • Uncategorized

Copyright © 2025 ยท Minimum Pro Theme on Genesis Framework ยท WordPress ยท Log in