skwpspace yan pritzker’s home on the web

skwpspace is Yan Pritzker's home on the web

Blog :: Photography :: About Me

TwitterCounter for @skwp

Get the news feed
Get updates by email
Follow me on twitter

hello, i'm yan

This blog is about startups, blogging, Ruby On Rails, virtualization and cloud computing, photography, customer service, marketing, ux and design, git, and lots more.

planypus

I'm the founder of Planypus, the place to share your plans!

cohesiveft

Virtualize your application for download or deploy to the cloud in minutes!

flickr

it's hailing in san franciscojessatianalyndaBird in the handkerimodeldanielle pettee and models-4449

Categories:

Archives

Contact

Reach me at yan at pritzker.ws

Make the easy stuff free

The other day I thought I had lost my Kirkwood ski resort season pass. So I sent an email to the season pass office wondering what it would cost to replace it. Their reply: $50. Now, that’s kind of ridiculous. It takes about 5 minutes of employee time and probably only a couple bucks in marginal material costs (plastic card and printer) to reproduce the pass. Given that purchasing a season pass I have already committed several hundred dollars to the resort, why should they charge me so much for a replacement?

I think there are two philosophies at play here. Their philosophy is that every opportunity to make money should be taken. By charging a large pass replacement fee, they capitalize on their customers’ misfortune and land a little extra cash. However, people lose their passes rarely so the question is: is the occasional extra $50 in their pocket really worth the bad customer service. Am I really going to think about buying another pass when I know it costs another $50 if I lose it? In comparison, Copper Mountain in Colorado charges $15 to replace a very similar pass, so I’m not just making numbers up when I say it can be done cheaper.

BUT, imagine if I had contacted them, and they said “because you’re a valued customer and have committed to skiing with us, your season pass replacement is FREE”. Might I not be inclined to tell my friends about the awesome customer service I just received? I might even be inclined to tell the whole world how awesome Kirkwood is. Is it better to have my $50 or my eternal gratitude, that will bring more of my friends to the resort? Which makes more money for the business in the end?

Of course at the end of the day, I did find my season pass, so I won’t be forking over $50 to them any time soon, but…now there’s inspiration for this blog post…. The moral of the story is: if it’s easy for you, make it free for your customers, and make them feel special. That’s worth much more in future dollars than the money you can make from their misfortune.


pritzkerphoto.com relaunched - portrait photography in San Francisco

Yesterday I relaunched Pritzker Photo, as a home for my portrait photography in San Francisco. I’m starting to take requests for portrait sessions on weekends and some weeknights. If you need a new headshot for your facebook page, dating site profile, to promote your business or creative work, talk to me! 100% satisfaction or your money back guarantee, and get a $15 referral bonus or $25 session credit for telling your friends. Check out the new site and don’t forget to fan me on facebook. Thanks!

(I also apologize to my readers for this blatantly self-promotional post, but you know how the SEO game goes…)


Why I left bluehost: shared hosting doesn’t work

This blog is now proudly hosted on slicehost.com! It seems somewhere in the last couple days, bluehost touched something on my shared hosting account that caused php-mysql to break, and this blog was displaying a message about this breakage.

This was the last straw for me. I previously wrote about how bluehost would not admit to overselling even in the face of clear problems and claiming that restarting mysql regularly was an accepted practice to solve problems, and storing my password in plain text. I was reminded last night why shared hosting is a failure (besides the problems of shared resources in a non-isolated way) - you simply don’t have control over what the host decided to do with the server.

Isolated, virtualized hosting is the way of the future. You get completely predictable behavior - no one will be messing with this server but me. I would run this blog on EC2, but at this point the processing needed is just way too small so I went with slicehost and their $20 256M slice because EC2 does not offer a comparable cheap product. Slicehost is not ideal because they don’t allow you to provision your images from the outside (in other words, to use a product like CohesiveFT’s elasticserver.com to create a bill of materials for a server and provision it predictably (disclaimer: I work for this company, but I also use the product for personal use with Planypus)), but it cheaper than EC2 and for my personal blog, that wins over the convenience of dynamic provisioning for now.

Goodbye bluehost, and good riddance.


What you don’t get about the iPad

The iPad is not a general purpose device. It is not a smaller version of a regular computer, and it should not be.

It doesn’t run all my programs! So what? I’ve seen netbooks running Windows on their tiny screens - the user experience is awful.

General purpose apps run on a smaller screen just don’t work. You’ll spend more time squinting at the screen than getting anything done.

It doesn’t multitask! I’ve had a phone in my pocket for the last year that doesn’t multitask.

Here’s a secret - humans don’t multitask. Not really.
Maybe we can context switch quickly but it’s actually counterproductive according to a lot of studies.

Let me tell you something else: I agree with Joe Hewitt - using Facebook on the iPhone is already a better user experience than the site itself, and on the iPad it will be significantly better.

Reading feeds on the iPhone with the NetNewsWire app - a better experience than my desktop NetNewsWire, or Google Reader.

I know, for example, I can’t read feeds on my laptop, I’m distracted after 5 minutes. When I read feeds on my phone, I am engaged, I am interested, I am learning things.

Generally, the UI for apps on the iPhone: reading email, browsing the web, watching video, looking at photos — focusing on one thing at a time — are all more pleasant, and mostly more productive than the laptop counterparts.

The only thing that’s lacking is the screen size.

So let’s really consider. Does it make sense to take a general user experience like Mac OSX and shrink it down to a smaller screen, so that the user experience sucks?

Or do we take a user experience optimized for small mobile screens, like iPhone OS, and expand it, enlarge it and make it better?

Which is really the smarter choice in moving forward in experience, happiness, productivity? I’d rather have a device that does the 10 things that make me productive really well, than one that does 1000, and all poorly. Because for all the apps, and crapps, and software that’s out there, I use about 10 of the same apps and pieces of software per day. Choice seems like a good thing, but choice actually makes you less happy.

P.S. Apple not supporting Flash on the iPad is a bold and correct move. Just like the web developers who are finally standing up to IE6 and dropping support, we must make aggressive moves to drop technologies like IE6 and Flash. They are holding back the progress of the web, and the only way to deal with them is to quit cold turkey. When the iPad gold rush hits, developers will be forced to move away from Flash, and thus the revolution will have begun.


What the iPad is good for

This is going to be one of those thinking-out-loud, trying to justify dumping half a grand on a new toy posts. So bear with me :) How I plan to use the iPad…

  • Watching movies and surfing in bed without annoying MBP fan noise and overheating.
  • Taking it with me instead of the MBP when I go on vacation. This will depend on whether light dev work is possible on it (jailbreak + terminal + vim?). Or a TextMate port?
  • Using it as a photographer’s tool - if it’s easy enough to offload from SD card to iPad, then it may become a very nice tool for getting large screen previews during photo shoots.
  • Sharing photos with friends, family, and clients (on a photo shoot). Again, this implies that iPad will have some type of Lightroom Lite that can handle my photo albums, because iPhoto doesn’t cut it for me.
  • As an accessory screen to my normal desktop. For example - leave a twitter client running on it, or something with news headlines. It could work as a non-disruptive peripheral vision information accessory to my normal desktop/laptop setup.
  • Reading books? This one I have doubts about, because of the stupid glossy screen. Have you ever tried to use an iPhone without a matte cover? It sucks. Now imagine applying one of those matte covers to a 9.7″ screen. Welcome to air bubble and finger smudge hell.

Other thoughts

  • With its lack of multitasking and inability to run native OSX apps (rather than native iPhone apps) - surprising given its powerful processor, I can see the iPad may not be targeted toward power users per se, but with a bit of jailbreaking, I bet it can be made quite useful.
  • Where to stick it? Am I going to carry my big laptop bag around for the iPad? If not, where does it go? Doesn’t fit in my pocket, and seems too small for a bag of its own. Will we see the return of the eHolster? Will I have to acquire a Jack Sack man purse?
  • The 3G versions are probably going to be useless. AT&T can’t even handle the iPhone. In San Francisco, I’ve had Edge outside the city work faster than 3G inside the city. When the iPad hits, the network will crumble completely unless AT&T steps up its game significantly. I wouldn’t mind paying $20 more per month if it means they get the network infrastructure right. I know they’re kind of in a rough spot having to maintain competitive data plan prices, yet supporting Apple’s mobile devices which get very heavy use. Anyway, I am convinced 3G and mobile broadband in general is a general fail, and with city-wide WiFi around the corner, and WiFi on planes, frankly there’s just no need for it.

Five Rules for Writing Good Code

1. Write for an audience

Code tends to outlive jobs. When we create code, we are not writing for ourselves, but for an audience of peers and progeny that will look upon it and have to maintain it. Do we want them to do so with awe and respect, or with fear and disgust? Writing maintainable code not only makes our life easier, but the lives of those around us, and garners admiration, praise, and rewards - if not always financial, at the very least karmic.

2. Establish a clean framework for future changes

If we start writing new code, and the pattern we establish is that we’ve copied and pasted a line across ten functions, what will happen when someone else comes along to add an eleventh function? Let’s face it, even the neatest programmers can get lazy. If something has been copy-pasted ten times, it will get copy-pasted for the 11th time, and a year later, when we find out we have to change the logic or content of that line, we are now changing 50 lines where we could have had one. Untangling code is always a lot harder than writing it, and we could have prevented the spread of the copy-paste disease by evaluating our code initially for repetitive statements. Always establish a framework for others to follow by writing clean code that reduces repetition, and encourages maintainability by isolating each piece of logic and content to one spot only.

3. Be brief, self-descriptive, and avoid inline comments

Five line functions with descriptive names are easy to understand. They require no comments. Thirty line functions take quite a bit of brainpower to digest, and usually have smelly comments scattered all throughout trying to explain bits of the function. Hundred line functions are an assault on all that is holy and stink to high heaven. If we see lots of comments interspersed in a method, it is a good sign that the code cannot be easily understood. Break it down into lots of little functions with descriptive names, and all of a sudden our code reads like a very clear and concise recipe, and we find that the comments become redundant. Most comments that live inside functions are parasitic organisms, treat them with suspicion.

4. Follow language standards and community conventions

If we break conventions, the next person to read our code will wonder why we did so. When our code raises questions about its style, the reader may start wondering if there was some specific reason that we coded it that way. Worse, they may perpetuate our unusual style through imitation and copy-paste tactics. This makes code harder to understand and wastes other people’s time. I’ve heard an argument from more than one person that they will code with the style they are comfortable with rather than follow language convention. This is especially true of people migrating from one language to another without investing their time in learning new habits and techniques. Remember that most of the time, we are writing code that someone else will be maintaining. Make their job easier by conforming to widely acknowledged standards, so they don’t have to spend any extra mental energy reading through it. It may take we a larger effort initially, but it will pay off with dividends when it comes to maintenance.

5. Really learn the language and the framework

Lots of bad code is written because of language or framework ignorance. If we don’t know the framework we use, we might reinvent the wheel or write obtuse code because we’re not taking advantage of the conventions and helpers already created for us. No need to be a walking encyclopedia, but remember to occasionally open up that encyclopedia and read through it so that you know at least what’s out there. I am sometimes surprised by new things I find in a framework I’ve used for quite a while, that makes my life a whole lot easier. Don’t neglect the docs, and don’t neglect to keep up with blogs that discuss new techniques.

I’m not really back, I’m just pretending. That’s all for now :)


How Facebook can dramatically improve Pages

Despite all the bitching and moaning, I think the recent facebook redesign is great. Focusing on the stream, and the ease of sharing a variety of content works very well. But Facebook Pages feel like an afterthought that was tacked on, hacked on, and clearly never thought through. And now, let the Airing of Grievances begin.

  1. Music pages need a prominent and centered Music Player. For all the fail of Myspace the one thing they got right is that a band’s page is about its music. The first thing front and center needs to be a Music Player. Instead we get a half-assed music player option which either has to sit quietly in the bottom left hand corner below the fold, or on the Boxes page (if you make Boxes page the default), but then your page looks fairly stupid, because the rest of the good content (Wall) is elsewhere. So - a very quick and dramatic improvement would be to place the Music Player box right at the top of the Wall tab, so that visitors can hear the music and read the news and talk with the band at the same time.
  2. A Page’s administrators need a way to get a solid news stream from the page including all comments, likes, and etc. Without this feature it is difficult to communicate with fans. I run a page for my photography on facebook, but I find there is no good way to get all the comments. Instead I have to notice that someone commented, then find the photoset and look at the photoset’s comments to find the actual comment. There is no good way to know that someone’s written on the page’s wall either, unless you have the wall display in Page + Fans mode, and physically check back. A page can only be an effective tool if it enables the administrators to communicate with the people, but without a feed it’s nearly useless.
  3. RSS. Come on facebook, it’s 2009! What is the excuse for not having an RSS feed for the page? What’s more, several places on the site have very carefully hidden RSS links (such as Notes), but they don’t even bother putting in the proper HTML LINK element to get it to show up in the browser’s url bar. Get with the program, please.

I don’t doubt that facebook’s engineers are busy cooking up the next redesign and improvement, but I think that if facebook wants Pages to be a successful tool for businesses, bands, and other commercial-ish entities that are starting to make facebook their home, then that area should be their next target for a redesign and rethink.


Three tips for better street photos

1. Frame without the camera

I got rid of my zoom lens and use typically a 35mm or a 50mm lens on my camera. Looking through one focal length all the time really trains your eye to see that box around everything you look at. Not only does it help you to spot good shots, but it also makes you less conspicuous if you don’t have a gigantic lens glued to your face at all times. I often frame something in my mind before I even bring the camera to my eye. This is just not very easy to do with a zoom lens, but if you know your favorite focal length by heart, you can do much of the thinking ahead of time, so you don’t miss the moment. Even better is to get a rangefinder camera, or maybe just a standalone viewfinder that you can look through.

2. Manual focus can be faster

Autofocus has several disadvantages. First, many cameras, including my Pentax K20D will not fire the shot in AF mode unless the AF has locked. This means you may miss the decisive moment. The second disadvantage of AF is that when it misses, it misses big. So instead of focusing on your subject you might focus on the background, completely ruining the shot. With manual focus you might the focus a little bit, but the shot may be plenty useable, just soft. Especially when shooting at small apertures like f8 and up, and with wider lenses, MF becomes quite useable, especially if you take advantage of hyperfocal focusing. Third, AF is a bit noisy, and often nearly useless in dim light.

3. Meter ahead of time

When an interesting scenario presents itself, you don’t want to miss it because your camera settings are wrong. Sure on gray days with low contrast scenes your camera’s meter might get the exposure right. But if you find yourself in a complex lighting scenario, I find it’s better to prepare ahead of time by setting your camera to manual exposure and figuring out the right exposure as the light changes. For this, it’s best to take a test shot and look at the histogram and make sure nothing is over or underexposed, or just use your eyes if you don’t have a histogram. You can use the camera’s suggested metering as a starting point and adjust from there. Keep your eyes on the light around you and make sure that when it changes you have updated your camera settings in preparation for the next shot. And don’t forget to adjust the ISO appropriate to the light around you - typically 100-200 for bright days, 400 for overcast conditions, 800 and 1600 for indoor lighting. For a fun bonus, learn the sunny f16 rule and try using your eyes as a meter.

Shameless plug: check out my photography on flickr.


How to land a job 2.0

Yesterday 37 Signals announced they were hiring a new designer. How did Jason land a job at a place hundreds of designers are dying to work at? He didn’t just send them a resume, he started a conversation by creating a tailor-made website just for 37 Signals. Not only did the site explain exactly why he was the right fit for that specific job and company, but he went further and redesigned the company’s Backpack website. And, importantly, the medium was the message - he didn’t just talk about his skills, he proved it by making a well designed website to deliver his pitch.

To land your dream job, you need to target your employer. Pretend to work for them and do something that proves you’re the person for the job. Show them your thought process by keeping a blog and being active in online communities. Show them your work by participating in projects and displaying them to the world.

At the same time, employers need to start getting more creative to find the talent they seek. Posting your job requests on monster with the same dry templated “5 years of experience with these 15 things” speak isn’t going to get you very far.

Why did I go to interview at CohesiveFT? It was their craigslist post that got me interested. They were quick to spot emerging trends (three years ago that was Ruby on Rails, and using Macs as dev machines), and used creative language that showed me that they were thoughtful and had personality. They stood out from a sea of dry and robotic postings produced by HR departments listing unrealistic requirements while sorely lacking a clue. And why did they hire me? I was an early adopter, I wanted to use exactly the technologies and platforms they found exciting, I had a blog where I shared my thoughts, and I had a project that demonstrated my skills in a way a standard resume could not.

Here’s the thing - it’s still early days for personal branding. Most of your peers are mass-blasting companies on Monster with the same resume template. Most of them don’t have much of an Internet presence beyond Facebook and LinkedIn. There is still a ton of room to stand out and get employers to notice you.

How to get a competitive advantage over your peers and land your job 2.0:

  • Know what job you want and tailor make a website/resume/portfolio for it.
  • Participate online - blog, tweet, etc.
  • Get your name all over the interweb - would your employer rather hire/interview someone they know nothing about, or someone they can get to know in advance by googling?
  • If you don’t know about SEO, ask a friend or use a blog platform like Wordpress which does much of the work for you. This will help you get in the top ranks on Google for your name.
  • Update your site regularly to get more Google juice.
  • Look for job opportunities in unlikely places, where fewer people are looking (facebook, twitter, linkedin, craigslist, niche job boards like jobs.37signals.com). Forget about Monster and the other big job sites.
  • Follow the companies you want to work for - their blogs, their tweets, their employees etc. Start conversations with them.
  • Create things that are of interest to your future employer. Pretend you work for them and execute a project that would make them envy your work.


Why proactive customer service works

Don’t wait for your users to complain. If you notice a problem, contact the user and tell him you’re working on it. Users often wait way too long to report problems. Usually at the point that they do, they are already filled with rage.

Such has been the story with me and Comcast. I get one disconnection, I shrug it off. I get another at 1am, and I take it as a sign to go to bed early, but today I had several disconnects during the day, while I was working, when I needed my connection to do work. At this point I was already filled with emotions built up from having terrible service over the last three days. So when I tweeted about it, I was already in a very negative mindset. Luckily, Comcast is one of the few companies that actually has very competent twitter support that can actually solve problems.

Nonetheless, how much better would it be if Comcast paid attention to the data that they already have. They know how many times my modem disconnected in the last week. If it happens once, send me an email telling me it was a minor hiccup. If it happens twice, have customer support notified right away. Don’t wait for my complaint! Email me, tell me you know the source of the problem, and when it will be fixed. How much cheaper will it be than dealing with crabby negative customers like me after 3 days of bad service?

This post takes me back to the saga I had with bluehost, who for several months would not admit that the box I was being hosted on was being oversold so badly that the database was down on a regular basis. Don’t let it get to that point. Be proactive in your customer support and your customers will love you.


← Before