macOS Facebook

Tuesday, February 16, 2021

Had some free time during a long mandatory training session at work and started perusing Apple’s macOS Sketch file with all the components that go into making a desktop app. I love imagining how components come together to form something useful 🤓 The training session I was enduring had minimum time limits. For someone who reads fast and watches video at 2x I decided it would be fun to throw together a desktop version of Facebook between modules — the most BORING version possible with nothing fancy, just standard macOS components.

Continue reading →

2020 Retrospective

Thursday, December 31, 2020

Books Attempted The Body Flight Behavior The Uninhabitable Earth Quiet Astrophysics for People in a Hurry The Gene Awareness Sacred Economics White Fragility The Fifth Season The Upswing The Surrender Experiment The Fabric of the Cosmos The Common Good North Projects Building initial version of Steady Refactoring Logger Personal content manager

Continue reading →

2019 Retrospective

Tuesday, December 31, 2019

Non-fiction The Square and the Tower The Fall of Public Man The Effective Executive Possible Minds Draft No. 4 The Innovator’s Dilemma Fiction Consider Phlebas Articles Status as a Service Warrens, Plazas and the Edge of Legibility Conversations Jordan Peterson on Mythology, Fame, and Reading People Palaces for the People Lance Armstrong and Malcolm Gladwell Series Adam Grant — Work Life The Dropout Presentations Martin Rees — Prospects for Humanity Chip Conely — The Modern Elder and the Intergenerational Workplace Ian McEwan — Machines Like Me Movies & TV Free Solo The Dawn Wall Icarus

Continue reading →

Running Cone Peak Trails

Monday, December 2, 2019

Vincente Flat Trail → Cone Peak Rd → Cone Peak Trail ◭ Cone Peak Trail → Cone Peak Rd → Vincente Flat Trail Last Sunday I packed up all my running gear for another long and steep trail run. Nate recently acquired an old van from the 90s that would be our ride to Big Sur. Old vehicles kinda put me on edge but this one felt oddly familiar because growing up at Lake of the Ozarks we had a van like this so all kinds of memories were lighting up.

Continue reading →

Running Muir Woods Trails

Friday, November 8, 2019

Decided it was time to run three continuous hours and picked a series of trails in near Muir Woods that added up to a really beautiful 18 mile adventure.

Continue reading →

2018 Retrospective

Monday, December 31, 2018

My first complete year living in San Francisco felt much more eventful than the six in Palo Alto. The constant pull of the city meant less downtime for side-projects but I think the tradeoff was well worth it. The following is a bunch of stuff I read, watched, listened to or attended in 2018. Non-fiction Kinda jumped all over the place this year, my goal for 2019 is to form a discipline writing more notes and summaries.

Continue reading →

Blind spots

Saturday, February 14, 2015

Hours of my youth were lost to a game called Age of Empires. This game was crack cocaine for kids and should have been illegal in some states. Each new game plopped you in the middle of nowhere with an axe, a small hut and a goat or pig nearby. You could only see the little parcel of land around you, everything else was pitch black. As you wandered around the world revealed itself.

Continue reading →

Self-Driving Vagabonds

Saturday, February 14, 2015

14 February 2015 — Self-driving cars are going to change the world — not many folks will disagree. It’s beginning to feel like our space race, the next leap towards a more efficient future. Google’s got prototypes, Mercedes-Benz and Volvo have adaptive cruise control, Tesla almost has autopilot and Apple’s leaking. Great, but these are baby steps when it comes to experience. Of course, solving the intelligence bit is really hard but the way we experience this future is where we’re gonna need to decide what type of world we want to live in.

Continue reading →

Imitation as a Tool

Friday, February 14, 2014

“Imitation is the sincerest form of flattery.” We’ve all heard this, it’s how the level headed react to “copycats” or “ripoffs.” The truth is imitation is natural. We may not like to admit it but we’re all skilled imitators. Without it there would be no way to talk with one another or possess similar value systems. There’s a famous chapter in Richard Dawkin’s The Selfish Gene where he coins the term ‘meme’ to explain a non-biological form of evolution — an evolution of culture from one ‘survival machine’ to another.

Continue reading →

My experience learning iOS

Wednesday, October 9, 2013

Twice while living in Kansas I attempted to learn Objective-C and Cocoa. Getting past the first few chapters was pretty mind numbing. It didn’t really have anything to do with the difficulty curve. I already knew other languages—Python, Javascript—and didn’t really have a reason to learn something else. The third time I tried was early 2012 when I started reading iOS Programming. This time I needed a project or I’d fail yet again.

Continue reading →


Saturday, April 27, 2013

We’ve witnessed a lot of products in our lifetimes. Some have faded away without even realizing it. Products like fax machines, AOL, desktop computers, atlases, home telephones. Sure, some of us still use these but they’ve all been replaced with better alternatives. The best companies and people are capable of predicting when these shifts happen — some even have the capacity to obsolesce their own products. They understand if they don’t, someone else will.

Continue reading →

State Machine

Sunday, March 3, 2013

Last year Philips introduced Hue, a dead simple way to automate all your home lighting. After living with it for a few months and buying into Sonos — a wireless multi-room audio setup—I’m beginning to realize how accessible home automation is becoming. They’ve both forgotten one thing though, automation. Automation is the use of machines, control systems and information technologies to optimize productivity in the production of goods and delivery of services.

Continue reading →


Saturday, January 12, 2013

I’ve never been fond of arbitrary markers in time. Holidays, birthdays, anniversaries, they all seem odd to me and I’ve never been one to celebrate them. Every day should be special and accomplishments, small and large should be relished, not random days. As you would correctly suspect I don’t do resolutions. But I do think constantly about a question Buckminster Fuller used to ask his grandson, “What is the most important thing we could be thinking about today?

Continue reading →

Ghetto Facebook Registration with Django

Monday, October 8, 2012

I’m going to quickly walk you through how to build a server-side Facebook registration flow with Django. This is really basic and doesn’t rely on special libraries aside from httplib2 and urlib which are pretty standard. First you need to create an app. I set my App Domain to localhost and Site URL to http://localhost:8000 for development purposes. You’ll probably need to do the same if you’re using Django’s built in development server.

Continue reading →

Setting up Apple Push Notifications

Saturday, September 15, 2012

While trying to figure this out I came across a great article by Matthijs Hollemans. I suggest following it if you’re interested in an in-depth tutorial. What follows is a more concise version of that article and instead of using PHP I’m using a variant of Jacky Tsoi’s Python script. This is pretty tedious and there are a lot of steps you have to get right in order for this to work properly so hang in there.

Continue reading →

Sending Multipart Forms with Objective-C

Wednesday, September 12, 2012

It took me a few evenings to figure this out so I’m writing a quick explanation based on what I’ve found to work. My use-case is pretty simple, I want to POST some data to a form on a server from an iOS app I’m building. I’ll be using NSURLRequest to build the request object and NSURLConnection to make the actual connection to the server. The first thing we need to understand is how Multipart Form requests should be structured.

Continue reading →

Getting Started with MQTT

Sunday, July 22, 2012

I wanted to play around with MQTT this evening so I put together a little tutorial on how to get started using Ubuntu and Mosquitto. Installing Mosquitto Enter the following into your terminal. Remember to replace YOUR_UBUNTU_VERSION_HERE with the version of ubuntu you’re using, I was using Maverick Meerkat at the time so I replaced it with just maverick. First add the following two lines to /etc/apt/sources.list deb YOUR_UBUNTU_VERSION_HERE main deb-src http://ppa.

Continue reading →

Simple Panic

Sunday, July 22, 2012

Today I posted a public photo of how nicely done a bank start-up’s packaging was and didn’t realize my card number was in plain view. Now, I’m a pretty rational individual so I did what everyone else would have done which is call the customer service number on the back of the card. Apparently they have Sundays off so I had to leave two anxious messages on their answering machine.

Continue reading →

Adams and Jefferson

Wednesday, July 4, 2012

One hundred and eighty six years ago both Thomas Jefferson and John Adams passed away on this day, exactly fifty years after the adoption of the Declaration of Independence. It’s hard to ignore the coincidence of this timing. A couple summers back I bought an old book containing a eulogy given by Daniel Webster in August of 1826—I think this sums it up nicely: No two men now live, fellow-citizens, perhaps it may be doubted whether any two men have ever lived in one age, who, more than those we now commemorate, have impressed on mankind their own sentiments in regard to politics and government, infused their own opinions more deeply into the opinions of others, or given a more lasting direction to the current of human thought.

Continue reading →

A private afterlife

Wednesday, March 14, 2012

I spent a while last weekend thinking about death and privacy—for no particular reason aside from taking notice of a couple books I own: The Adams Jefferson Letters Jack Kerouac and Allen Ginsberg: The Letters Rub Out the Words: The Letters of William S. Burroughs There are countless collections of correspondence floating around from a time when an envelope was considered a form of privacy. In many cases privacy died with the individual.

Continue reading →

Less is more

Tuesday, December 1, 2009

Hopefully you read my previous post ../sass-isnt-me about Sass and CSS preprocessors and felt my angst toward learning a new syntax. I’ve been using LessCSS for about a week and I’m really impressed. For starters, no new syntax to learn. This is simply an augmentation of existing CSS syntax. You get mixins, nested rules, and most importantly, variables. You also get operations but I’ve yet to find them that useful. Here’s my critique:

Continue reading →

Sass isn't for me

Monday, November 30, 2009

I’ve been window shopping the CSS preprocessor world the last week or so. Sass seems to be everyone’s new bicycle but it hasn’t won me over and here’s why: It’s a new syntax that I don’t want to learn or support. I have an awesome job where we often hire new people and (hopefully) acquire new clients and the last thing I want is the added friction of having to teach (and sell) a new styling syntax.

Continue reading →

Curiosity rewarded the cat

Friday, November 20, 2009

Good user experience is often found in the most unassuming places. We have a new restaurant opening in my neighborhood this week and I’ve been anticipating their arrival for a few weeks now. They officially open today but two days ago revealed a very important lesson in user experience. Two days ago I was walking down the street this new restaurant is on to get lunch from a neighboring location. The lights were on and it looked like people were ordering and eating inside before their scheduled opening.

Continue reading →

Interface harmony

Sunday, October 25, 2009

Interface consistency is one of those things that, if done correctly, should go unnoticed. I’ve slowly been working on a new interface for a side project and thought it’d be a treat to share my approach. Interfaces evolve based on the needs of people using them. Each task may require a different element. Common elements include buttons, dialogs, drop-downs, select boxes, checkboxes, input fields, etc. These elements are like notes in a composition seeking harmony.

Continue reading →

Save RAM with mobile middleware

Wednesday, October 7, 2009

A while back I wrote an article on how to set up a mobile site with Django ../going-mobile. Currently I have a Slicehost account which includes 256MB of RAM. My resources are tight and I really dislike having another set of unnecessary Apache processes for a mobile site that, aside from different templates, is using the same code base. The solution is quite simple, write a middleware. The following code checks the incoming request for ’m' or ‘mobile’ in the domain name.

Continue reading →

Working with Python and RabbitMQ

Wednesday, May 20, 2009

I recently installed RabbitMQ to handle some message queuing needs at Readernaut and thought I’d share how everything came together. If you’d like to learn more about RabbitMQ please read this. To use RabbitMQ with python you need py-amqplib because Rabbit uses the AMQP standard. To make amqplib a little easier to use I needed a simple script that did three things: Easy way to connect to RabbitMQ. Easy way to pull stuff out of the queue.

Continue reading →

Capturing content in Django templates

Saturday, February 28, 2009

As a template designer there are times when you have structural code surrounding a block which is waiting on content from a child template. It may look something like: <div class="content_title"> {% block content_title %}{% endblock %} </div> Sometimes this block is never filled so ideally I want the DIV element in this case gone. This isn’t easy because there’s no way to know whether content is headed towards the block so one solution that I’ve used is:

Continue reading →

What's next

Friday, December 12, 2008

Does it make sense to reinvent the wheel every time we start a new project? No. My work echoes my past and I stand by it. Some say, “that looks like Readernaut” or “that looks like Playground Blues” and I say yes, they are me. If it worked there it will work here. When a problem is solved I move on because each project has its fair amount of new problems and I’d rather spend time on new, more interesting problems.

Continue reading →

Message Queuing imports

Friday, September 5, 2008

Last week I ran into some problems dealing with large book imports on Readernaut. I tested the system for around 50-100 books but had no idea people would upload lists of 900+ books. This begged the question, how do you handle importing very large sets of data before the browser times out? Brief example User uploads a list of 1000 ISBNs to be imported into their library. Each book, if not already in the system, needs to be imported via another service like Amazon.

Continue reading →

Creating a basic API with Django

Monday, August 11, 2008

Creating a simple public API for your site is a lot easier than you may think with Django. You’re basically just creating another view and serving it as XML or JSON instead of HTML. What’s public? Decide what you want to be public. The best answer is the stuff you’re already displaying in your HTML templates. Then you need to create an entry in your url conf. url(r'^api/v1/(?P<username>[-\w]+)/notes/?$', 'readernaut.api.views.user_notes'), Create the view In the case for Readernaut I wanted to provide an XML feed for users notes.

Continue reading →

Capistrano rules

Saturday, May 17, 2008

I’ve grown tired of committing changes to my subversion repository, logging into my server, updating my live checkout, and restarting python processes. I finally decided to implement Capistrano and eliminate this repetition. Here are my repetitive set of commands: $ ssh $ cd ~/projects/playgroundblues $ svn up $ cd ~/www/ $ touch django.fcgi Now, with the help of Capistrano, I just type: $ cap deploy You’ll first need to install Capistrano which is as simple as gem install -y capistrano.

Continue reading →

Aspen Simulator

Tuesday, May 13, 2008

As much as I’d like to blog about my trip to Austin and SXSW last week I’m just too excited over the iPhone SDK goodies that dropped last Thursday. You may be asking yourself, “he’s a web guy, why does he care?” Well, there happens to be a beautiful gem tucked away called the Aspen Simulator. This is a complete pixel and functionally perfect replica of the iPhone and it’s fantastic for testing web apps.

Continue reading →

Ah-ha Event Delegation

Monday, May 5, 2008

Wrapping my head around things like OOP took months. It’s not because I’m an idiot (I don’t think) - it’s just because I needed all the explanations to marinate before having an ah-ha! moment. I had an ah-ha today, with regards to Event Delegation. I’ve never seemed to completely understand events, yet I use them all the time. They’re an essential aspect of Actionscript and Javascript and there are two basic ways of capturing events, Event Handling and Event Delegation.

Continue reading →

Gadget fast

Friday, April 18, 2008

My iPhone and laptop will be unplugged starting Friday evening for two days. I’ve let the fog of distractions generated by these two devices grow too thick so for the next few days they’ll be turned off. It doesn’t stop there. The following week Twitter, Flickr, an my feed reader will be muted. I have nothing against these services, but it’s time to step back and take the pulse of things around me and see if I’m missing something.

Continue reading →

Going mobile

Monday, February 18, 2008

Over the weekend, I decided to whip up a mobile (iPhone) version of Playground Blues. I walked into Broadway Cafe around 3pm on Saturday, and by 5:30, I had Here’s how it went down. Step 1 Since I’m still using Dreamhost and FastCGI, I created my .htaccess file along with my dispatch.fcgi file for my new sub-domain as usual. Made one little change to my dispatch file: instead of having DJANGO_SETTINGS_MODULE pointing to playgroundblues.

Continue reading →

iPhone bookmark iconage

Tuesday, January 15, 2008

If you’re wondering how to control the icon that gets generated for your webpage with the new 1.1.3 iPhone release, look no further than Apple’s iPhone Dev Center. Apple has added a section called “Create a WebClip Bookmark Icon” and it calls for a 57x57 pixel icon. After some testing today I’ve concluded this recommended sizing results in a fuzzy icon, largely due to the iPhone being a 163 ppi display.

Continue reading →

Flash, meet H.264

Tuesday, December 4, 2007

Adobe just released Update 3 of Flash Player 9. This is HUGE. Streaming video is no longer a laughing matter. Streaming High Definition video will become common place and it starts today. Everyone talks about BlueRay and HD-DVD, but what they don’t realize is they’ve already been obsolesced before catching stride. VHS is dead, brick and mortar video rental is on life support, and DVD just checked in with chest pains.

Continue reading →

Django Basic Apps

Sunday, December 2, 2007

I’ve been working on abstracting some Django applications from past projects so they can effortlessly be plugged into future projects. I hate writing the same blog application repeatedly, so this is an attempt to make life easier. I think this will be a fun, little suite of plug-n-play Django apps that everyone can benefit from. I’m calling this suite Basic Apps with the hopes they’ll live up to their name. They’re freely distributed under the New BSD License and hosted at Google Code.

Continue reading →

Django Sprint

Saturday, December 1, 2007

Armed with high levels of legally addictive stimulants, silver laptops, and brilliant minds, Django will get even closer to 1.0 today. If you have any interest in being apart of today’s event, scurry over to the Django site and scan for tickets that catch your eye and expertise. Join us in IRC ( in the #django-sprint room or if you’re lucky enough to live near Lawrence, Kansas come join us!

Continue reading →

Juggling Django settings modules

Tuesday, November 6, 2007

If you find yourself juggling multiple Django projects and constantly changing the DJANGO_SETTINGS_MODULE variable, try this simple shortcut. Upon diving into a particular project I define an alias in my .bash_profile that gets me to the project directory in as few keystrokes as possible. For example, to get to my playgroundblues directory I simply type ‘pb’ and I’m in the root of Here is the line of code in my .

Continue reading →

Care to scrum?

Wednesday, October 17, 2007

We need more scrums and less meetings. A scrum ( is a 5-10 minute stand-up meeting. About 80% of the meetings I’ve ever attended have included at least five people. Any meeting over three becomes a presentation while one bloviates and others wander. It’s been a while since my last scrum. It included seven people, complete participation, no dominance, one referee, and was contained within a 10 minute package. Rather than walking away in a typical post-meeting cloud of confusion, I left the scrum feeling clear and informed.

Continue reading →

Trials of the I-70 commute

Monday, October 15, 2007

A while ago I began working back in the big city while remaining in modest Lawrence. This required a 40 min. x 2 drive into the sun five days a week. It wasn’t so bad at first, but the race through traffic and mass of incandescent gas started taking its toll. I decided to evaluate what was wearing me out. The sun, for one, was melting my retinas and giving me headaches.

Continue reading →

Subliminal Culture

Friday, September 21, 2007

Lately I’ve been reading more of Lev Manovich’s ( Language of New Media. Manovich discusses the methods in which we access new media. He mentions some research done by Paul Virilio on the collapsing effect technology has on the distances between people and content. Before, if a person wanted to see the works of Da Vinci they’d have to travel to a book store or an art museum. With the advent of new media it’s as simple as pulling up a browser.

Continue reading →

Manually Compressing PNGs

Tuesday, September 18, 2007

With the advent of some very clean hacks to make PNGs work in IE I’ve found myself working them into my designs more. Using them has allowed me to achieve some effects that were next to impossible with JPEGs and GIFs. The biggest hurdle in using PNGs is their file size. The export tools in Photoshop tie your hands behind your back, not allowing you to tweak anything that may lead to a more compact file.

Continue reading →

iPhone dead; $30 rental?

Wednesday, August 15, 2007

This morning I woke up on my own. Normally I hear little crickets chirping around 7am which is my iPhone letting me know it’s time to face the coming day. This morning, no crickets. At first I thought maybe the battery was flat, but that’s not possible. I charged it the day before and didn’t put it through any rigorous usage. So iPhone CPR commences. First I try a hard restart, holding down the home and on/off button for a few seconds.

Continue reading →

Blueprints are not final

Friday, August 10, 2007

So apparently a little framework called Blueprint ( has reared it’s head, born from a few stylesheets that look very familiar. I’m somewhat conflicted with its release because I don’t think it should be used. Don’t get me wrong, it’s great, but don’t use it. About five or so months ago I was working on the Journal-World ( redesign. News sites tend to be very column heavy and I was getting tired of writing the same code over and over to accommodate for my design iterations.

Continue reading →

First impressions

Sunday, July 1, 2007

How does a machine have soul? We could try and answer by throwing around terms like usefulness, elegance and grace but all our attempts would sound prosaic next to the device I recently became acquainted with. Run and hide Crackberry, the iPhone is here. For people to be drooling over a 4.8 ounce device is not unfathomable especially coming from Apple. This is different. During my first hours with the iPhone I literally felt nervous.

Continue reading →

The waves of creativity

Thursday, May 17, 2007

There are a lot of environmental factors that go into fostering a creative environment. As creative persons mature, we become more in-tune with what works best for us when it’s time to dream up new ideas and solutions. Some of us trek to coffeehouses while others listen to Bach, Satie or Mogwai. Whatever we do we’re all essentially trying to achieve a certain state of mind. Before I go any further here is a quick explanation of the human brain by neuronal scientist, Richard Restak):

Continue reading →

Transmedia newspapers

Sunday, May 6, 2007

I just finished reading chapter three of Convergence Culture where Jenkins discusses transmedia storytelling. He focuses on the Matrix franchise and how it basically rewrote the rules for Hollywoods future. It got me thinking on my walk home from the coffeehouse, why aren’t newspapers doing this? We’re all familiar with the Matrix and have varying depths of involvement with it. Most of us have seen the first film, some the second and third but have any of us played the video game, or seen the Animatrix, or been to Matrix Online?

Continue reading →

LJWorld redesign

Wednesday, May 2, 2007

So for the past five months or so we’ve been working on a redesign for the Lawrence Journal-World. For those of you that don’t know, it’s a daily newspaper that circulates the town of Lawrence, Kansas. It’s quite small compared to surrounding markets which makes it very agile and free from shareholders and their evil agendas. I had a feeling this project would be special and challenging but I had no idea of the scale.

Continue reading →