Music to program by

Sensawunda

Photo by GnackGnackGnack

Back in my youth, I spent hours pawing through the backs of record stores trying to find albums by people like Brian Eno, Pete Namlook, FSOL, and other strange electronica. Then the internet came along and opened up whole new worlds of music. Here's my favorite music to code and drift into space with.

Sleepbot. I first discovered the Sleepbot Environmental Broadcast in 1998, and a decade later it's still my station of choice. Rarely repeating, it sometimes plays hours of of street noise, leopards purring or strange medieval chants, but more usually has a hand-picked selection of haunting electronic tunes. Dan Foley's has a wonderful ear (or at least one that almost always agrees with mine), and he's introduced me to some of my favorite artists like Stars of the Lid, Windy and Carl, Solar Fields, Sigur Ros, Tear Ceremony, and Papa M. Even better, he's accumulated notes on all the artists he plays in the Ambience for the masses encyclopedia.

DroneZone. A lot newer and less eclectic than Sleepbot, I'll sometimes switch over to see what I'm missing. I'm not surprised as often as on Dan's stream, but they do have some dreamy mixes that hit the spot.

Spheric Lounge. With dozens of sessions, all produced live, these spaced-out Germans have let me fill up my iPod with mp3s. It's useful for the rare occasions when I don't have internet connectivity, but more importantly gives me a solid supply of music even if civilization collapses around me. The covers alone are worth the visit.

Low Light Mixes, Somnia, Hydrogen Cafe. I've run across a few artist blogs with long-form mixes. Some of these haven't been updated in a while, but it's well worth listening through their archives.

The Top 40 Boulder twits

Boulderlandscape

Photo by StuffEyeSee

I had lots of suggestions for people to add to the Boulder tweeters' list, so to give it a more permanent home I've created http://bouldertwits.com/. Let me know who I've missed.

I spent a couple of hours turning it into a data-driven script, so now to add people I just need to edit a csv file, making it a lot easier to update. I'm also quite proud of figuring out how to implement a one-click follow button for twitter, keep an eye out for a post on how that works. Or just look at the source if you're impatient

The top 30 Boulder tech twits

Dogmedals

Photo by Sarah …

[Update- See http://bouldertwits.com/ for a permanent and expanded version]

With a move to Boulder looming, I decided to dig through my network and find everyone who's twittering from the local tech scene. If you're not following the conversation on Twitter yet, you're missing out.

It's heavily biased to the people I've met, so let me know who I'm missing in the comments or tweet me at http://twitter.com/petewarden

Jud Valeskignip founder
http://twitter.com/jvaleski
http://one.valeski.org/

Larry McKeogh – product manager
http://twitter.com/lmckeogh

Andrew HydeStartup weekend
http://twitter.com/andrewhyde

David CohenTechstars
http://twitter.com/dgcohen23

Stan JamesLijit founder
http://twitter.com/wanderingstan
http://wanderingstan.com/

Todd VernonLijit CEO
http://twitter.com/toddvernon
http://falseprecision.typepad.com/my_weblog/

Micah BaldwinLijit VP
http://twitter.com/micah

Grace BoyleLijit business developer
http://twitter.com/gracekboyle
http://smallhandsbigideas.blogspot.com/

Heather CapriMySpaceOrYours founder
http://twitter.com/heathercapri

Josh FrazerEventVue founder
http://twitter.com/joshfraz

Rob JohnsonEventVue founder
http://twitter.com/rnjohnson

Jason MendelsonFoundry VC, OpenCoffee maestro
http://twitter.com/jasonmendelson
http://www.jasonmendelson.com/blog/

Seth LevineFoundry VC
http://twitter.com/sether

Ryan McIntyreFoundry VC
http://twitter.com/ryan_mcintyre

Brad FeldFoundry VC
http://twitter.com/bfeld
http://www.feld.com/blog/

Vikas ReddyOccipital founder
http://twitter.com/vikasreddy

Dave Taylor – All around entrepreneur
http://twitter.com/DaveTaylor
http://www.askdavetaylor.com/

Brett R JacksonGeneration Think Tank founder
http://twitter.com/brjackson

Austin VeithTravelFli founder
http://twitter.com/AustinSV

Stepan Mazurov – Developer
http://twitter.com/smazurov

Adam SachsIgnighter founder
http://twitter.com/arsachs

Carol StimmelTendril Inc product manager
http://twitter.com/traktrgrl
http://carolstimmel.net/

Jeremy Tanner – Entrepreneur
http://twitter.com/Penguin

Joe PezzilloMetafy founder
http://twitter.com/ejoep

Kevin JT Binderi2 Internet founder
http://twitter.com/i2Internet

Collin SchaffsmaQuickLeft founder
http://twitter.com/collination

Brent Ertz
– UI developer
http://twitter.com/brent80301

Lindsay YawSwarm Collective founder
http://twitter.com/lindsyaw

Liz RyanAskLizRyan.com founder
http://twitter.com/asklizryan
http://www.boulder-blog.blogspot.com/

Cameron Robertson – Entrepreneur
http://twitter.com/ccamrobertson

How do giant companies survive?

Bunyanbowling

Photo by Nicholas Davis

Big firms always contain a big proportion of slackers. How can large companies stay alive like this, when there's always hungry, slacker-less startups waiting to take their business?

The obvious reason is economies of scale, but that's less important for non-industrial companies. The real answer is information. Big companies build up deep pools of talent over many years. Somebody who's retired at their desk might still answer a crucial question that saves man-months of work. Executives watch teams over the long term, learn which are effective, and so can efficiently channel resources to projects likely to be executed well. Innovations in one group can be shared with the rest of the company.

We think of our society being based on competition, but companies are pure command and control hierarchies, more like the polit-buro than a free market. When colleagues help each other out, no money changes hands. When the system works, its because the people making decisions and setting priorities have the information they need.

I'm passionate about building Mailana because I've seen how often this information network fails within large companies. You end up with multiple teams working on the same problem, oblivious they're duplicating work. Management never finds out who really did the work on that crucial deal. Different departments give conflicting demands to an external supplier. Sales reps are chasing the same customer without knowing it.

Giant companies can only beat their inherent slacker tax when their employees pull together. The tools for making that happen are primitive today, but I know we can build something better.

Back up your Outlook account to Gmail with MailShadow

Shadow

Photo by 3 Blind Mice

I was recently introduced to Cemaphore Systems, who do some very interesting work backing up Exchange stores. Their main product is an enterprise system that replicates MAPI/RPC transactions to a backup server. This replication means that if your main system fails, its simple to switch users over to the mirrored copy, without having to mess around with file-level backups. It's a smart idea, well executed.

Looking through their blog, I discovered they've just introduced a personal version, MailShadow for Google Apps, that backs up all your Outlook mails and contacts to Gmail. Once you've installed their plugin, everything gets copied over to the Google account, and even better, any Gmail messages also appear back in Outlook. This is a really useful tool for anyone who needs the rich functionality and integration of the Outlook and Exchange world, but would like the easy access, searching and reliability advantages of a modern cloud-based service. It's not often that you get to have your cake and eat it too.

How can you mine email and not become corporate spyware?

Securitycameras

Photo by DrJohn 2005

When I talk about email data mining, people worry about losing privacy. Mail messages on your work account may legally belong to the company, but most people, including myself, would feel violated if their mailboxes were suddenly revealed to all their colleagues. Even knowing that someone in management or IT was snooping would feel invasive. So how can you persuade people to adopt a tool that exposes email information?

Utility. We publish a lot of previously private information on social networks, like our birth dates, dating status, and these days even our current location. Why? Because in return we are able to connect with our friends in new ways. Any service in the enterprise needs to offer a similar tradeoff for any privacy we give up, or it won't get adopted. Many sales reps don't enter their leads into Salesforce because the benefit goes to their managers, not them.

Control. We choose what information to expose on Facebook, and who can see it. When you've got complete control over both the content and access, it's a lot easier to trust the system. You know you can make decisions to avoid embarassment or offence at a very fine level. Any tool that surfaces email information must have the same guarantee built in.

Transparency. The rules for who can see what in social networks are simple and straightforward. It's easy to have a mental model of what information will appear, and who it will reach. Any enterprise service should have the same simplicity in its protections, or users who don't understand them will overreact by hiding an unneccessary amount of data.

Why do geeks love the wilderness?

Alaska

Tom Christiansen, a Perl guru whose documentation has helped me out more times than I can remember, recently shared his personal photo site with me. There's some beautiful shots in it, like the one above from Alaska, some from Crested Butte or this fearless fox. It got me wondering about the connection between hackers and the outdoors. Maybe it's the circles I move in, or the demographic of most techies, but most of the really good programmers I know are crazy about getting out into the wild.

I guess what really surprises me is that comparatively few Los Angeles residents even know they're surrounded by a massive wilderness, but it seems like geeks are much more clued in. For myself it opens up different ways of thinking. Biking or hiking hard, surrounded by beauty, empties my mind and brings a sense of wonder. That often leads to insights on problems I've been staring at for too long. I notice the quality of my decisions dropping when I've been stuck indoors too long.

Easily sort and share emails with Taglocity, and goodbye Sandy

Taglocity

I was recently shown Taglocity, a new Outlook add-in that lets you search, organize and share your mail messages. I haven't used it in depth, so far I have been impressed by their well-crafted interface. While some of the features have appeared before in other tools like Clear Context, their focus on collaboration leads to a very smooth workflow.  I'll be posting more once I've dug further into it, but it's great to see another innovative email tool appear.

On a sadder note, I Want Sandy is shutting down as Rael Dornfest will be joining Twitter. I'm sorry to see the service disappear, it was a fresh and quirky approach to calendars and to-do lists. It's great news for Twitter of course, I was lucky enough to share sushi with Rael a few months back, and he's bursting with interface smarts. I look forward to seeing Twitter heading in some interesting directions under his guidance.

Where’s the best place to buy cross-country skis?

Crosscountryskis

Photo by Påsketur

Liz has been teaching me to cross-country ski, and we decided it was time we bought our own equipment. No stores in LA had them stocked, and we didn't want to order online since we needed help finding the right type and sizes. As it happened, we had an upcoming family visit to Liz's home town of Hayward, Wisconsin, home of the Birkie and the US capital of Nordic skiing.

We headed to the New Moon ski and bike store once we arrived, and were greeted by Joel Harrison. Like me he fell for a Hayward siren, and moved from Idaho to join her, and has a lot of cross-country experience. He was very knowledgeable and helpful, spending a lot of time helping us pick out the right equipment. We tend to prefer ungroomed but not too gnarly trails, so he steered us toward some intermediate skis that would still fit in groomed tracks, but still had enough width to float in wilder snow.

Once we'd picked, New Moon runs a thriving mail-order business, and was able to post them off, so we didn't have to struggle with them on the plane. Joel couldn't have been more helpful, their customer service was top-notch. Even if you can't make it to Wisconsin, I'd recommend buying online from them.

How to check PHP syntax from a shell script

Shells

Photo by 500CPM

I really like the philosophy of making small incremental investments by solving frequent problems, and Eric Ries' article on the five whys inspired me to look at my development process afresh.

I edit my PHP code on my MacBook, and then upload it to my EC2 server to test, since there's a lot of data I can't replicate locally. Often there will be a typo in my code, but I don't find out about it until I have uploaded all the files, refreshed the browser, and then checked the server error log. Catching simple typos early would save me a lot of time, so I looked around for an automated solution.

The shell script below is what I ended up with. It runs php -l on all my source files to look for syntax errors, and then runs the upload process if that check passes. I've only tested it on OS X, and you'll need PHP installed locally. You can either cut and paste the code, or download it here.

#!/bin/sh
#
# Pete- Script to upload the PHP source code to the server, checking for syntax errors first
#

# Insert the path to your source directory here
SOURCE_DIRECTORY=
# The path to your ssh key. If you don't have one, remove the -i argument to ssh
SSH_KEY=~/.ec2/id_rsa-pstam-keypair
# Put the username, domain name and path to the remote server's folder
SERVER_PATH=user@yourserver.com:/www/html/

SYNTAX_RE='No syntax errors*'
PHP_FILES=$SOURCE_DIRECTORY/*.php

echo "**Checking PHP syntax**"

ls $PHP_FILES  1>/dev/null  2>/dev/null
case $? in
0)
   set `ls $PHP_FILES`
   for args
    do
     SYNTAX_OUTPUT=`php -l $args`
     if [[ "$SYNTAX_OUTPUT" != $SYNTAX_RE ]]
     then echo "$SYNTAX_OUTPUT"
     exit 1
     fi
    done
    ;;
* ) echo "No files found"
    ;;
esac

echo "**Uploading files**"

scp -i $SSH_KEY $PHP_FILES $SERVER_PATH