Thursday, December 17, 2009

Do One Thing Every Day That Scares You

I washed a cheese grater with my bare hands.

Monday, December 7, 2009

Basketball Announcer

"2 in the paint, 1 in to sink, whooooaaahhh folks! that's a shocker."

(did he do that on purpose?)

Weekend

finished out the week's 10.5 miles early with a quick 2.5 mile run.

bros, chicken bones, breweries, and standing on the rooftops of stl history. Foam: Sharon Jones & The Dap-Kings on the jukebox and a wall of '70s pachinko machines. rad.

CL find of the month: practically new snowboard, bindings, bag and boots that fit for $50.

400 mile quest for parts. got nothing but sage advice: Find an easier hobby.

Friday, December 4, 2009

Bishop Allen

Ugh. This is turning into a music blog. I will post more stories about the Porsches soon (lots of news but I haven't had time to pull the photos together.) In the mean time, this is one of my favorite songs of late 2009:



This isn't the album version. It is more raw, but I picked it because of the video. Amazing, no?

I like Bishop Allen because they're all smart and stuff (Proof: They met while attending Harvard.)

I like this song because it made me hit wikipedia:

USS Monitor

Battle of Hampton Roads

Thursday, December 3, 2009

Square Gets My Vote for Startup of the Year

I am a beta tester* for the new startup, squareup.com. The service is amazing. I can't imagine an easier way to accept credit cards on the go. As an added bonus, my profits nearly doubled in the first week.

I'm using it to charge admission to hobo fights on the street down here by work. Getting the fight started is easy. Find a hobo, mention something about the hobo down the street and vodka. Before you know it, a fight ensues. I won't let anyone stop to watch unless they give me a CC to swipe.

simple.


*not really.

Speaking of MusicIUsedToListenTo

After my last post I dusted off the "Crap I Used to Listen to" playlist which is chock-full-o Taking Back Sunday. The first song on shuffle happened to be Hit or Miss by A New Found Glory. I never noticed it before, but that's a whole lotta autotune:



It is especially obvious every time he says Thriller... but you can hear it on "long" and "someone" every. single. time. I love that the singer because now we have 2 things in common. Same name, neither one of us can sing.

I kid... I kid... My last name totally isn't Pundik.

Speaking of autotune, let's talk about music I'm listening to right now. Ra Ra Riot is amazing. Saw them under a hot tent at SXSW 2008 and became an instant fan. Have a listen and tell me if you hear what I think I hear in their song, "Can You Tell"



The oddly tuned floor tom (starts at 0:32 in the video) throws Wes Miles off key when he says, "It's hard to stay cool." Listen closely to "it's hard" and you'll hear what I think is the warble of a pitch correction. I might be imagining it, but I think his pitch is pulled down the whole time those toms are going. It doesn't sound quite right until the band kicks in. Sort of a shame, but you can't blame him. I think everyone who has spent some time in the studio has had these moments.

NeatThingsThatILike:Songs that Mention Other Songs

I think you have to be a fan of Andrew McMahon (Something Corporate, Jack's Mannequin) to appreciate the lengthy song, "Konstantine." I am a fan, so I effing love it.

Something Corporate - Konstantine


As an added bonus, I am also a fan of bands who mention other bands/songs in their songs. This works out quite nicely for me because right around the 5:52 mark we get the verse that says:

it's to jimmy eat world
and those nights in my car
when the first star you see
may not be a star
I'm not your star
isn't that what you said?
what you thought this song meant

Found the song:

Jimmy Eat Word - For Me This is Heaven


On a related note, I still (it's been what, like 7 years?) get a kick out of when Jesse Lacey of Brand New and John Nolan of Taking Back Sunday each wrote songs about their last telephone conversation. FFWD to 2:00 in Seventy Times Seven and 2:22 in "There's no 'I' in Team."

Brand New - Seventy Times Seven


Taking Back Sunday - There's No 'I' in Team

Sunday, November 1, 2009

Say Anything (the band)

Five years and it finally hits me why I like Say Anything's ...Is a Real Boy so much. It is simple. The guitar tones are phenomenal and there are so damn many of them.

Thanks Max.

Monday, October 19, 2009

an office and a window

My favorite part about moving into a different space is getting to know the new sounds. Knocks, slams, footsteps, and whispers - Whose are they? What do they mean?

Saturday, October 17, 2009

almost felt sorry for the feller.

We were at a show last night where a band called "As Tall as Lions" opened. At one point, the bass player and vocalist talked to the crowd about local sports and what not. The audience loved it. After the next song there was a little bit of a pause so the guitarist got on a mic and said something along the lines of:

"I did some reading up about your town before the show. The ice cream cone was invented here... so was iced tea. You guys must like iced things. [mumbles something...] in st louis."

The room changed.

He was right - those things were invented in St. Louis.

We were in Kansas City.

Wednesday, October 14, 2009

zero motivation

The engine in montgomery city was a bust. Kenny wasn't exactly truthful about its condition.

Things I do not understand: it's or its? i look it up almost every time i use it but, at the same time, I know... wtf?

The 968 chassis is amazing. The owner is in no rush so I have time.

The 924SE engine is out, on a stand, and apart in my garage. The cylinder walls aren't scored. Now what? Do i rebuild it?

My mind has seized. Not an original thought, idea, or action in weeks. Awful, really.

Did I tell you about BBQ alligator on the banks of the mississippi near the uss inaugural? that wasn't weird at all. Soulard market was amazing (I've never been.)

Open bar at the science center? yes.

Scored a set of used struts/shocks for Marcie super cheap.

Primer == my new favorite movie.

Marcie (the E36) had a bad week. Fuel pump died an ugly death. I removed the back seat and was able to keep her running by banging on the pump with a pry bar while driving. Not the safest thing on 44 during the morning rush.

Missing 2 shows because they sold out is dumb.

Working 2 jobs is dumb.

2 irish whiskey hangovers in 2 weeks is not dumb.

2 spaces after punctuation is dumb.

Friday, October 2, 2009

Hanging with Famous People

Here's a great shot of me and Forrest Kline chumming around at the Pageant after doing a dozen shots of Patron:



enhance (tap tap tap)... enhance (tap tap tap)... enhance (tap tap tap)...

Thursday, October 1, 2009

Harper Lee

I love when an author nails it. Harper Lee got me twice in To Kill a Mockingbird. These aren't as powerful taken out of context, but I'm sharing anyway:


Until I feared I would lose it, I never loved to read. One does not love breathing.



My stomach turned to water and I nearly threw up.

Tuesday, September 29, 2009

Tonight's Rules

Take a drink every time a creditor calls.

It turned out being a pretty good game.

(Still trying to figure out what that means.)

If These Walls Could Talk

It didn't hit me we were moving until it got all echoey - like the house and memories were trying to say goodbye.

Monday, September 28, 2009

a simple http server with libevent

I'm starting my "stupid code tricks" by digging into libevent. This is how I wrote my first http server that should be able to quickly serve zillions of requests:

1. Download lib event, extract it, make configure, make install.

2. simple.c:


#include <stdio.h>
#include <stdlib.h>
#include "event.h"
#include "evhttp.h"

short http_port = 9999;
char *http_addr = "127.0.0.1";
struct evhttp *http_server = NULL;

void request_handler(struct evhttp_request *req, void *arg)
{
struct evbuffer *evb = evbuffer_new();
fprintf(stdout, "Request for %s from %s\n", req->uri, req->remote_host);
evbuffer_add_printf(evb, "garbage");
evhttp_send_reply(req, HTTP_OK, "Hello", evb);
evbuffer_free(evb);
return;
}

int main (int argc, const char * argv[]) {

event_init();
http_server = evhttp_start(http_addr, http_port);
if (http_server == NULL) {
fprintf(stderr, "Error starting http server on port %d\n", http_port);
exit(1);
}

evhttp_set_gencb(http_server, request_handler, NULL);

fprintf(stderr, "Server started on port %d\n", http_port);

event_dispatch();

return 0;
}




3. Write a makefile:


INCDIRS = -I/usr/local/include
CC = gcc
CFLAGS = $(INCDIRS) -Wall -g -O2
LIBS = /usr/local/lib/libevent.a

all: simple

simple: simple.o
$(CC) $(CFLAGS) simple.o -g -O2 -o $@ $(LIBS)

%.o : %.c
$(CC) $(CFLAGS) -c $<

clean:
rm -f *.o simple


4. run it: ./simple

5. point a web browser to http://127.0.0.1:9999

That's it. More to come soon.

Friday, September 25, 2009

Overheard

"It was great till she moved in and I had to deal with girl shit."

"like what?"

"goddamn candles... and the bleaching of facial hair... what is that?"

Wednesday, September 23, 2009

Adventures with Crap Porsches

Floating around somewhere on my fictitious list of goals is one simple one - "Do a few PCA DE events." Out of all the goals, that's an easy one because you just sign up, send some cash and run the event. Well, I guess it isn't really that easy because I can't keep any of my Porsches running long enough to accomplish it.

Saturday morning I'm driving out to St. James to pick up an engine that came out of an '86 944 NA. I need it for my 924SE. Why waste a weekend driving to get an engine that may or may not run? That question really got me thinking about how and why I am working on these cars. What is the real reason for all the headaches? Is it worth it?

After a little soul searching, I realized I drive a lot. When I get stuck driving a car to work every day that isn't fun, I get a little depressed. Retarded? Yes. Hey, everyone has got their quirks. I just happen to get a lot of satisfaction from driving a car that is fast, balanced, well engineered, unique, and understated.

I don't like luxuries like power locks, GPS, computers, fancy seats, or any bling. I want something simple, utilitarian, uncomfortable almost. I want to have to watch the gauges to make sure the engine isn't going to grenade itself. I want to shift. I want to feel the road. I want to know exactly when the car is going to break loose and I want to be confident the car will let me straighten it out. Finally, I want my car to be a little beat up so I don't have to worry about door dings or rock chips.

For whatever reason, old, water cooled Porsches just feel right. About a year ago I decided to buy another one. I wanted something special, though, so I started the search for an '88 924SE. The SE was an option package Porsche offered in 1988 that was sold as a track ready, lightened, utilitarian car. Sunroofs and AC were optional. The car came with a lightweight, cloth interior, minimal insulation, manual windows/locks, M030 suspension with adjustable ride height and dampeners. The engines for the '88 year had higher compression than their predecessors which increased HP slightly. They were all black with a maroon interior and tiny mud flaps. Porsche only sent 500 of them to the United States.

It took a few months, but I finally found THE ONE on the Louisville Craigslist in November, 2008. I talked to the seller several times on the phone and decided to pull the trigger. It had some issues, but the majority of the SE parts were intact and the numbers matched. It did not have a sunroof which made it even more rare. I bought it sight unseen for a price that took into account it was an SE that was in good shape, but needed maintenance... whoops. When it arrived in my driveway I knew I made a mistake.

It, uhh.... had some issues. I was pissed, but decided that I was going to stick with it. Like a good owner, I re-did the belts, seals, struts, bushings, etc. It needed fuel injectors, had some spark issues, and it had little compression in cyl #2. That pissed me off more than anything. Even the engine was shot. I decided to put it together and just drive it until the engine died.

Little did I know, the engine would blow on the second test drive.

What to do? I really missed the power that our M Roadster had - approx 250 HP - and I was pretty sick of dealing with the timing belts and leaky seals on the 4cyl. Swapping a Chevy V8 (specifically, an LSx) into a 924/944/968's chassis seems to be a popular modification. There are web forums and plenty of people out there willing to lend advice and machine parts. Everyone who has driven one raves about it. The swap seemed like a no-brainer until the voice of reason chimed-in.

R was concerned about me dumping a ton of time and money into a car that we both couldn't enjoy together. She had issues with the comfort, driveability, and general ugliness of the finished product. She's not too big on driving or riding in a smelly POS no matter how fast it is. I couldn't come up with a decent argument. There wasn't one.

The engine had to come out of the 924SE so I have been slowly removing it while trying to decide what I am going to get for replacement. On Tuesday I had a flash of genius.

While deciding what kind of car to buy last year, I found a local guy who was taking the drivetrain out of his black on black 968 to swap into his 951 S. At the time I thought it might be fun to put his 951 drivetrain into the 968 and just drive that. He was in no hurry and I found the 924SE. That was that.

His 968 is a pretty car with a very nice interior. R has always liked the updated styling of the 968... Here is the genius idea - why not put an LS1 in a pretty 968 and have the best of both worlds? I get my geeky fast hybrid, and R has a pretty car she might actually drive. In addition, the chassis, brakes, and transaxle from the 968 can handle a lot more power than my 924SE. So, it will be a better fit in general.

I contacted the guy and, well, he's still working on the swap. The 968 roller should be available in a few weeks (months?) I'm not committed to doing it. My plan is to put a stock engine in the 924SE (the one i'm picking up Saturday) and get the car drivable. Eventually, and if the price is right, I'll buy this guy's 968 roller (and the Turbo S LSD 5 speed transmission he has sitting in his garage(!)) and build myself a mean little 400 HP car.

Brakes on a Volvo

R came home last night at about 9pm and said her brakes were making all sorts of rukus. So, I went out and put new rear pads on it. Why did it take an hour and a half? Let's just say it is difficult to wind back a caliper with the e brake engaged.

Saturday, September 19, 2009

Fuck Yeah! (Urban Exploration)

When someone calls you and says, "Hey, why don't you come out after the balloon glow to see some cool shit?" You go:



UE is goddamned dorky and I'm probably the worst urban explorer out but, by some stroke of pure luck, I do sometimes get to see some amazing places.

Where did I get to go? Can't say.

Friday, September 18, 2009

Apache Access Restrictions

I have a directory that I don't want people browsing unless they're using SSL. My reasoning is simple - I am using basic auth and I don't want people sending their passwords clear text.

I have 2 virtual host directives in my sites config file. One for port 80, the other for 443. To forbid access I set it up like this:

<VirtualHost *:80>
...
<Location /files>
deny from all
</Location>
</VirtualHost>


<VirtualHost *:443>
...
<Location /files>
DAV on
Options Indexes
AuthType Basic
AuthName "the share"
AuthUserFile ...
Require valid-user
</Location>
</VirtualHost>


It is like a Colt 45.

Standing on the Shoulders of Giants, or Why I Learned to Love the C

One item in my list of "Things I Do Not Understand" is people who tout the performance of an application that uses an interpreted language. Seriously, folks, if you're using Python, Ruby, or Erlang, you're not building it for raw performance. You're doing it because the language is giving you convenient features that make your life easier.

I'm not crapping on interpreted or otherwise "slow" languages. I'd bet there are many apps that flat out wouldn't exist if it weren't for the rich feature sets interesting programming languages provide. For example, while I'll argue that all apps could be re-written to scream using assembly language, I'll also argue most apps wouldn't exist if assembly was the only option. I mean, really, would we have icanhascheezburger if the guys had to code the whole thing from scratch using "mov eax, 4" and "add ebx, [ecx]"? No.

Like all things, there is a trade off between convenience and performance. This is why race cars don't typically have air conditioning and power locks. I have spent the last 10 years programming in languages that are like a heavy, comfortable Lexus. It has been nice. My apps are gratifying, easy to use, simple to understand. Are they fast? meh... They get the job done.

Recently, I have been thinking about writing distributed apps. I want to get good at writing multi-threaded monsters that take full advantage of multi-core architectures and can be distributed across many machines. I had a look at erlang. Looks awesome with all those features that help you distribute your workload across all the machines in the room. Then I had a look at the benchmarks. meh... Erlang really isn't that fast.

That was the day I decided to look at some other benchmarks to get a feel for what they really mean. A friend pointed me to this:

http://shootout.alioth.debian.org/u32q/benchmark.php

Wha?? At that time I was trying to build this super high performance thing using stackless python. I loved the microthreads, the convenient syntax. I loved how I could quickly go from a blank screen to running code.

I was shocked to see it was 63x's slower than C. I wanted to build a stripped down Porsche track car, not a fat Infinity.

The hole got deeper when I started thinking about what kind of code I wish I could write. I started digging through source code of the apps I look up to, you know the apps that are out there that get the job done and do it quickly.

memcached - written in C
postgresql - written in C
nginx - C
redis - C
sqlite - C
tokyocabinet - C
video games - most are C (i'm guessing here, not much of a gamer.)

See a pattern?

I haven't written a complete app in C or C++ in at least 10 years. I pretty much suck at it but I have this weird need get good. My plan is to grok the sources above and make it a point to code all my pet projects from here on out in C.

In other words, while standing on the shoulders of giants I'm going to build myself a stripped down track car with a 1000 HP engine. Sure, it will have manual brakes and steering, but it will go like hell. I hope it doesn't kill me.

rsync over a non-standard port

I run all of my ssh servers on a non-standard port. It helps me sleep better and I don't have to deal with logs full of failed access attempts on my ssh server (yes, I allow passwords... I know, that's dumb.) I set up ssh config on most of my machines to use the non-default port automatically:

host.com
PORT 666

That way I don't have to type in the port every time I ssh to a machine. This is great except when I'm on a machine where I can't edit the ssh_config. To specify the port manually you do something like this:

ssh -p 666 junk@host.com
scp -P 666 * junk@host.com:/tmp/.

but there isn't an obvious way to use rsync... you cannot simply do rsync -rvz --port=666 * junk@host.com:/tmp/. That doesn't work. It was fine for months until one day I simply had to have rsync while sitting at a machine that wasn't mine. Two minutes with google and I find this gem:

rsync -rvz --rsh='ssh -p666' * junk@host.com:/tmp/.

awesome.