Burlington Coat Factory, I Love You
Your search for “bowtie” did not match any of the products we carry.
We searched for “potties” instead. Did you mean “bow tie”, “bow”?
[source…]
I almost spit up coke when I read that.
21:49 CST | category / entries / links
permanent link
The Soul of the Guitar
The guitar is one of the hardest instruments, right up there with orchestra
conductor and concert pianist, because of the the high level of “personal
leadership” that is expected of us. If I were an orchestra player, I would
have a conductor to start me and stop me and bring me back in if I got lost,
to show me what tempo, where the beat is, to write in the bowings, breathing
and articulations, to tell me what phrasing and dynamics are expected of me,
and so on — you know, the 130 things that the conductor does.
And then I would have someone sitting next to me doing the same thing as me.
Someone I can peek at to see what I’m supposed to be doing; if I play a wrong
note, I can catch it before it becomes apparent to the world. And if I get
lost, they can play a little louder to cover for me until I get back in. As
guitarists, we are expected to do all those jobs: start yourself, stop
yourself and bring yourself back in when you get lost before anyone notices;
cue yourself for entrances. And everyone expects you to smile even though you
wish you were at home with your loved ones.
[source…]
Thank you, Kevin.
23:39 CST | category / entries / links
permanent link
Kicking and Screaming Towards Lisp
A great article, worthy of it’s own pullout (not just an anonymous del.icio.us bookmark link):
My point is that it may be too late to start with Lisp so you don’t have to
reimplement all of its features. Because all of those new languages have
already implemented them. At least what most people consider the important
ones.
I imagine people will disagree with this view. People might say that although
Java and C# have many of the features that made Lisp great, it doesn’t have
the essence that makes Lisp still the best choice for discriminating
programmers. That essence might include meta-programming facilities, or
first-class closures, or macros.
Macros let you subsume more code into less code. Macros let you write more
functionality with fewer lines. Macros let you abstract away boilerplate into
new syntax.
But the corporate manager will say: if everyone writes their own syntax, my
programmers can’t read each other’s code. So instead of having to learn a
language once, they will have to learn a new language each time they approach
a program for the first time. And the value of macros is lessened.
Code as data lets you manipulate code at runtime. It means you can optimize
it, count it, store it, send it somewhere, and more importantly, write it in
itself. The possibilities are endless.
But the corporate manager again has an answer: Java is already written. Why
would I want to rewrite it? I have a program to develop—-and you’re worried
about optimization? Let the folks at Sun worry about that. We’re not language
developers!
And so do each of the features fall like dominoes. Either they hinder some
unforeseen corporate best-practice, or they just aren’t really as powerful in
that environment as one would really hope their expressive purity would like.
[source…]
…really great article talking about essential lispy-ness. C and C++ are dead to me (an interesting thing to say, and I’ll probably regret it :^). Java replaces C++ … C is OK, but it’s like adding salt to a dish- put it into a well-written library off to the side and write everything else in a different language that is ~easier~ or ~better~. The cases where machine efficiency outweighs development or maintenance efficiency are limited (and valuable!), but brutal machine-efficiency is steamrolling the less-people-efficient languages for many cases.
People seem to groove on Objective-C, I haven’t had a chance to use it and comment, but perhaps it strikes a better balance between people-efficiency and machine efficiency. Certainly any language that drives against people-efficience is now doomed to failure. I just hope we don’t go to drag+drop flowchart programming. :^)
16:54 CST | category / entries / links
permanent link
Simple PHP Framework Performance Comparison
| |
Average |
Tuned |
| Baseline HTML |
1327.9 |
| Baseline PHP |
331.8 |
| CakePHP |
3.7
|
| CodeIgniter |
21.5 |
118.0 |
| Zend Framework |
9.2 |
52.0 |
[source…]
Up at work Rasmus always dogs on PHP frameworks due to their “high per-request overhead at scale”. There was another article I read recently about PHP itself being a web framework more-so than other programming languages. Ah, here it is - the article comparing PHP out of the box to rails.
Sure, Cake, Symfony, CI - they all help you build PHP applications. But
unlike a Ruby framework or a Python framework, coding is perfectly tolerable
without them. Of course, most developers tend to create their own framework
as they go along - I call this PHP’s DIY framework mentality, where you
build the last level in your stack, and by extension you know exactly
what’s going on under the hood.
[source…]
The idea being that when you take on a framework, you get a rapid increase in initial development speed, but a lot of decisions have already been made for you, and it might not be convenient to shake out those rough spots after you’re significantly invested in the platform. It is extremely easy to make the case that if you have this problem, it’s a pretty good problem to have.
Personally when working with frameworks, my goal is to have as little framework-dependent code as possible, such that when I do feel the need to switch from framework a to framework b I don’t lose my “logic”. My strategy is generally to have as much code as possible in library classes with unit tests, then layer functionality on top of that in whatever framework du-jour happens to be appropriate.
The other thing Rasmus talks about (which feels funny to most PHP programmers) is that you shouldn’t really program in PHP. He thinks that you should do your serious work in C (making it a PHP extension) and use PHP just for the HTML, etc. When people come up with “I’m looking for a good templating language for PHP”, his general response is: “PHP makes a pretty good templating laguage.” :^)
See the principle of least power for an example of what people asking for a PHP templating language are really asking for. Maybe it’d be nice to add an extension to PHP like:
<?simplephp … ?>
…that only accepted echo, foreach. It’s not about PHP’s fitness for purpose, but that it has grown to be too powerful, and people now tend to use it as the general purpose language, muddying some of the benefits that it started off with.
10:19 CST | category / entries / links
permanent link
You Don’t Have a Cell Phone?
- 1998: Solidarity (“Yeah, me neither—I hate those things!”)
- 1999: Envy (“Lucky you; I had to get one for work.”)
- 2000: Indifference (“Okay, what’s your home phone number then?”)
- 2001: Encouragement (“You should get one—you can play Tetris on them now!”)
- 2002: Confusion (“I thought you were, like, a tech guy.”)
- 2003: Sympathy (“They’re getting pretty cheap. You’ll be able to afford one soon.”)
- 2004: Irritation (“So how am I supposed to get a hold of you?”)
- 2005: Derision (“If we go out tonight I’ll send you a fax.”)
- 2006: Skepticism (“Are you serious?”)
- 2007: Awe (“Wow, you’re like the last one.”)
- 2008: Incomprehension (“You don’t … how …?”)
[source…]
…as someone who got into the cell-phone game probably around 2005-2006, I might have held out until 2007 if I had known that awe was the next reaction in line. It’s like the twelve steps of luddite-is.
20:38 CST | category / entries / links
permanent link