devin venable bits

Note: This site hasn't been actively maintained since 2011. I keep it around as a historical reference. The social feed is continuously updated by code I wrote back in 2009. It will be interesting to see how long it runs without human interaction. - Devin 2017-07-12


Thought Stream Follows

Tue Feb 25 18:14:29 2020
Still learning new Vim tricks after all these years

Prompt with yes/no/quit etc for each replacement in file. 

Sat Dec 7 00:07:51 2019
This is what it means be Gen-X

Gen-Xers don't like to be categorized

So already, the very title of this blog post disqualifies me for speaking for all of us.  After all, no single person can define a generation of individuals!  Which brings me to...

We're Individual

We resist being categorized unless the category highlights our individuality.  We want to stand out for what makes us unique.  We like the label "non-conformists", so as long as you are categorizing us an being resistant to categorization, we'll give you a pass.

Things we said: "If you call yourself punk rock, you're not punk rock."

We don't trust Wealth

This is our idea of a bad guy.  A pretentious, jerk-wad who comes from money.

But then we do trust Wealth

This poster was also popular with our generation.  You see, some of us were pretentious jerk-wads, or wanted to grow up to be one.

We look up to Rebels

Our heroes came in many forms, but they all had this in common: they weren't afraid to speak up, defy authority, or otherwise just give a middle finger.

We respect the nerds 

From DEVO, to the cast of Revenge of The Nerds, to Weird Science, we embraced the smart kids who were a little bit different.

We objectify women

I wanted the title to read "objectified" rather than "objectify" to suggest we've grown up and changed our attitudes.  But I think most male Xers would say, "So I like sexy women?  What of it?"

I mean, come on, these stills are from the same videos and movies above.  It was a bit built into our culture that women were supposed to be fit, sexy and, if possible, naked.  I think a lot of us are still grappling with our own expectations of women, and the tension that exists between our cultural upbringing and our relationship with women in the modern day.  It's complicated.

Well this light-hearted blog post is getting kind of deep, so maybe I'm going to just leave it there.

Mon Apr 22 16:53:30 2019
My kid is cool and released this EP on Spotify

And my other kid is cool and is playing drums in this Tiny Desk Concert submission.

Sat Feb 9 15:30:59 2019
Linking custom fonts React Native
For future reference
Mon Nov 26 20:27:54 2018
Elastic Beanstalk and
After many years of spinning up my own AWS EC2 instances to run Django, I thought I ought to finally try Elastic Beanstalk.

I use a lot of management commands in my workflow, like createsuperuser.  Surely there is an easy way to log into an EC2 instance after spinning up beanstalk to run these commands manually?

Yes. From this stackoverflow...

  1. SSH login to Linux
    • (optional may need to run sudo su - to have proper permissions)
  2. Run source /opt/python/run/venv/bin/activate
  3. Run source /opt/python/current/env
  4. Run cd /opt/python/current/app
  5. Run python
Mon Jul 10 22:41:56 2017
Disabling dnsmasq on Ubuntu solves Chrome DNS resolution lag (for me)
I noticed that something was causing a name resolution lag on my Ubuntu 16.04.1 LTS system.

Linux devin-OEM 4.4.0-83-generic #106-Ubuntu SMP Mon Jun 26 17:54:43 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Yeah, so it worked like this.  I'd type any search term into the Chrome search bar, hit submit, and sometimes it would just lag, lag, lag. 

After confirming that I had no such similar problem using Firefox, I decided to clean out my Chrome install and all config files.  After re-installing...problem remained.

I configured my router to use Google's DNS as another step.  No change in behavior.

But wait, it turns out my distro uses dnsmasq, a "lightweight DHCP and caching server".  Do I need this, I wondered?  I'm happy to go straight to Google for my name resolution needs.
I found someone else who had a similar thought, way back in 2012:

From Mark's blog:

  1. sudo gedit /etc/NetworkManager/NetworkManager.conf
  2. Comment out the “dns=dnsmasq†line by putting a hash “#†in front it.
  3. sudo service network-manager restart
After that, /etc/resolv.conf was populated with the DNS servers my DHCP server wanted me to have in the first place, and DNS resolution was back to the happy mess it always is.
After restarting, my issue was solved.  Now I'm wondering, was my cache just really full, or the package buggy, or if something more nefarious was to blame?
Thu Jun 29 14:08:54 2017
Why are we hording WIFI?
When you click on your phone or computer's WIFI icon in most parts of the United States, you likely see a long list of password protected WIFI hot spots.  Each spot represents an individual or company choosing to keep the Internet to themselves.

This is the normal.  When we buy a new wireless router, setting a password to limit access is one of the first configuration steps.  Even routers with built in guest modes password protect access by default.

Free public access to WIFI could be good for everybody, the poor and affluent alike.

I know that I pay way too much to a cellular provider every month, and I bet you do too.  If only WIFI signals were ubiquitous and available, I would be closer to bypassing the cellular company.

I pay about $50 a month for broadband Internet.  I pay more than $300 a month for cellular Internet.

Government won't step in to provide public WIFI anytime soon, at least not where I live.  But what if wireless routers were sold with a voluntary public band by default, configured to be open?  If it were possible to give up 10% of your wireless and Internet bandwidth for the common good, would you do it?

As a civic minded individual, I would.  But it would need to be dead simple, a zero-configuration option.

I'm imagining a wireless router company selling a product---call it ShareFI.  It's just a typical 802.11 type router pre-configured to allow up to 10% of the bandwidth to be publicly available to neighbors without a password.

Such a system would allow civic minded consumers to make the decision to share once: at the point of purchase.  From that point on, bandwidth would be shared without any further thought or effort for as long as the wireless router is in use.

Having wireless access is a bit like owning a swimming pool.   Does every home in the neighborhood really need their own personal in-ground swimming pool?  Of course not.  I grew up in a neighborhood where only one neighbor had a pool, and if you were lucky, they'd invite you over to swim.  Everyone else was out of luck, including me.

Community pools make sense: when neighbors combine resources everyone gets to swim.

If every private hotspot in my city shared 10% of the bandwidth, I'd be able to make a call from practically anywhere without using a cellular service.  That's good for me as someone who can afford bandwidth, because it drives down my cost of communication.  And its good for those who can't afford bandwidth:  The poor unable to pay their phone bill would have a fail-over plan, one allowing them to stay connected during times of crisis.

It's not likely that everyone would join in.  But I believe that many would.  People of good intention are likely to share when given the hassle-free opportunity.

Sun Oct 23 15:56:42 2016
White kids, Hip hop and the 1980s
So I just read that Eric B. and Rakim are back together and going on tour.

This news made me think back to when I was a teenager, driving my Dodge Colt around Dallas, TX,  delivering pizzas and listening to the album Paid In Full.

I had been a New Wave kind of kid throughout the early to mid-80's, so Depeche Mode or New Order or The Smiths were my more typical jams. A girlfriend started buying rap LPs, and before you know it, I was buying a big amp and subwoofer for the car.

The first acts I listened to were Public Enemy, EPMD, Eric B. and Rakim, Ice T, and Big Daddy Kane.  I literally got to know them by picking up the albums at the record store and listening to them.  At the time, I didn't hear a lot of hip hop on mainstream radio.  Not even on the R&B station.

I got into the music initially because I dig groove based music.  Stuff that makes me want to bop my head.  But soon enough the lyrics started to penetrate and I that's when I started getting a new perspective.

It's hard to imagine now but in 1987, culturally, in the midwest at least, we were very much segregated by race.  I mentioned my job as a pizza delivery driver.  The white dudes talked to each other, the black dudes talked to each other, but there was minimal interaction.  I didn't think much about it; it was just the way things were.

But as I listened to hip hop, I started to hear things that made me curious. I started thinking about what it must be like to live in a poor neighborhood, or to have to contend with violence, or to just live in a country with a history that's not quite so impressive if you look at from a non-white perspective.

Most of my heroes don't appear on no stamps
Sample a look back you look and find
Nothing but rednecks for 400 years if you check

--- Public Enemy

I was also listening to a public radio station that played a lot of underground hip hop, KNON.  I don't remember the names of the artists but I remember thinking, man, rap music is like CNN for the black perspective. While there were a share of songs about "straight up dissin' and dismissin'," commentary on community was another major theme.

In a lot of ways, rap and hip hop music really broadened my entire world view.

And now today's interesting observation.  The white kids that I knew who were like me, now in our forties, who spent time listening to early hip hop, are much less likely to feel threatened by Black Empowerment movements like BLM.  I mean, why would you feel threatened?  You've got to stand up against injustice when you see it.

And the white kids I knew who didn't get on the hip hop train?  Who would never listen to the tunes because it was "black music"?  I'm still hearing the same old tune from them.  I swear to God they think that BLM is some kind of radical militia.  When I see the way BLM is covered in right-wing media, I shrug and think, I guess some white people are never going to get over their prejudices.

I little empathy is all that is needed to really put yourself in someone else's shoes.  Just imagine for a moment what life is like for someone who didn't grow up in your suburb, or in your city, or your country.

I'm glad hip hop came along when it did, because for me at least, it gave me a peek into a world that I didn't really understand.   Oh, and on top of's still so much fun to bop my head to those tunes.

Wed Sep 28 15:52:41 2016
Thank God I found the following.  I use XFCE and I have been annoyed by the minimal, overlay scrollbars for months.

Get back to good old fashioned, easy to grab, no mouse over waiting, 1999 style scrollbars with the following command.

gsettings set com.canonical.desktop.interface scrollbar-mode normal
Thu Feb 11 15:31:13 2016
Advice for sons wanting to become professional drummers
Dear son,

So you are thinking you might want to grow up to be a professional drummer.

Go for it.  You should always pursue your dreams, as the vigorous pursuit of dreams brings much happiness in life.

But if you want to make a living, that is, pay for things, live in your own house or apartment, eat and have stuff, you'll need to be strategic about how you build your career.

Your average professional studio musician makes $64,979 a year, at least according to this site.  That's a reasonable middle-class salary.  To make this amount, you'll need to be a truly excellent drummer, able to play flawlessly in any style of music.  And you'll need to be a hard worker, and reliable.  You'll probably also need to live in a major city where studio musicians are in demand.

I do worry that advances in technology will make it easier and easier for studios to simply program realistic sounding drum tracks, meaning that technology may eventually put you out of a job.

You could join a band and tour constantly, building a name for yourself.  At worst, you'll get paid in free beer.  At best, you could work up to playing big festivals and making decent money---from time to time.  Ask our barbers, both of whom have toured in major festivals.  There were moments when they were paid well.  But the money was not consistent enough to keep them touring full time for their entire lives.

When you play a club, a bar, a venue of any type, or produce recorded music for any entity, you will typically be paid a fraction of the money your music earns.

Working for fractions of pennies on the dollar isn't new.  Rush, The Foo Fighters, Pink Floyd...all of the mega-music bands in the last 50 years, made a lot more money for someone else than they ever did for themselves.

If you care about earning money, try to emulate those who profited from the music of the last 50 years.  Spend your time studying capitalism and business in general, in addition to practicing your musical chops.

I suggest you form a band and think of it as a business entity.  In fact, you should make it a business entity if you are going to invest a considerable amount of time in it.

Make sure the roles are clearly understood.  If it's your band and your brand, make sure you protect your interests.

Band members will flake. Make sure your brand (band name and identity) remains yours when they do.  Start out with clearly defined roles and ownership positions.

Make music that appeals to others.  You can play music all day you love but no one else does, but you won't make money.  Respect your audience if you expect to be paid for your efforts.  Give them something that excites and interests them.

Get out and play.  Play anywhere that will let you play while you build your brand.

Control the venue as soon as you can.  When I was younger and played in bands, I occasionally played to crowds of around two-thousand people.  Each person there paid $10 to get in, generating $20,000, and that doesn't include profits made at the bar or merchandizing.  My cut was $100.  This is not uncommon.  Bands are suckers, driven by ego, and they often fail to understand the value that they are producing for others.

Control the venue.  Find a venue, and rent or buy it.   Do your own PR, rent or own the PA and lights, make sure you have staff to control the crowd, have appropriate insurance.  Be aware that hosting a show is an investment and a lot of work.

Do this, and at the end of the night, you'll go home with a lot more than $100.

Merchandise.  This is capitalism 101.  Make stuff at a low cost and mark it up and sell it.  This is how you make a living in America.

Don't ever buy into the dream that some big record label will come along and "discover" you and make you star.  That was always fiction, and now more than ever.

It's up to you.  Roll up your sleeves, work hard, adapt when change is necessary, play well, put on a good show, and you can make a living at this.

But if you want to really live well, you'll need to be more than just a drummer, you'll need to be in the business of entertainment.  Notice the keyword is business.  Considering the business aspects of music doesn't make you a sell out, in fact, quite the opposite.  This is your thing, that you get to do your way.  And if you are smart about it, you can have it all.  You can make the music you love, find an audience, and make a living off it at the same time.

Making a living doing something you love---it's the ONLY way to live.

Good luck!

Tue Jul 14 13:11:20 2015
My friend Jason Pottorff (a.k.a. Jazzyspoon) and I have put together a musical collaboration worth listening to.  This is the first track.
Mon Jun 1 16:29:54 2015
Wed Mar 11 13:32:42 2015
My business oriented blogs are moving
As an independent software developer who does much of his work using web technology, I thought it fitting to build my own site.
Sat Feb 21 20:23:42 2015
Goodbye Programming Books
As a life simplification step, I'm discarding several programming books that have been collecting dust on my self for years now.  I read them all, and some were even relevant to my work for awhile.  Here is a nod to each book...

Applying C++

It's a text book on C++ plain and simple.  It's not even one I used personally.  I believe a friend gave it to me when he gave up on the idea of learning to code.

Why you might want it:

You want to learn C++ and you enjoy the tactile sensation of real pages.

3D Game Programming with C++

I bought this one way back in the 90s when I first started coding in C++.  Naturally it's more fun to dream about building games than business software, and this book gives a good overview of the latest technology and techniques available in 1997.

Why you might want it:

Modern game engines now abstract away many of the gory details of game programming, leaving modern coders working at a much higher level.  But this is a great reference for the game programmer who wants to go a bit deeper.  Or who wants to build the next Wolfenstein 3D.

CGI Programming in C and Perl

My first web programming book.  Because it covers standard technologies that are still supported, like the HTTP protocol and HTML, it's not totally irrelevant.

Why you might want it:

Fun trip in the wayback machine.  Also you might learn some details that are not often addressed by higher level web frameworks.   (This book is probably more instructive than, say, the Programming Java Servlets book below.) Or maybe you need to support a really, really old website running off CGI scripts.

System Analysis and Design Methods

A detailed look at modeling techniques that were popular during the 90s.  I haven't cracked it in years but I seem to recall a focus on CASE tools.  In my real-world experience, CASE tools were never used, except for Rational Rose which was lightly used during my tenure with Visional Corporation.  I suspect these tools were popular with managers who then gave up on them once they realized that providing all of the detail required to make the tools generate software was more work than just writing the software.

Why you might want it:

You want to understand the mindset of 1990's technical managers. 

Eclipse Rich Client Platform

Do you have the desire to customize or productize Eclipse for your own purposes?  This book gives the lowdown.  

Eclipse has had a relatively long shelf-life.  I used it for Java development back at Visionael and at Vetsource, and still use variants for RoR and Django debugging.  

Eclipse has been the foundation of the ADT (Android Developer Plugin) for years.  The ADT is a good example of the kind of plugin programming this book addresses and I would not be surprised if the Google developers who built the ADT read this very book.  

It should be noted that Google is no longer actively developing ADT, and is moving toward Android Studio built on IntelliJ, yet another JAVA IDE.  

Open Source ESBs in Action

All of the JAVA-based service bus implementations I worked with were bloaded, configuration-heavy headaches.  But the promise of a Service Bus is compelling to many managers, and they remain in service today at many enterprise companies.  I'm personally not a fan as I prefer lean, best-technology-for-the-job integrations over cross-platform try-to-be-everything-to-everybody ones.

Developing Java Servlets

This is one of the two ways we developed web content with JAVA way back when, the other being those ASP wannabes, JSPs.

I liked this simplicity of the Servlet abstraction.  Let's model a web request as just that, a request.  Let's process the input arguments and then output a response.  Very straight forward.  Java Servlets didn't exactly go away, as they are still buried at the bottom of the JAVA web stack.  Peel back enough layers of code and you will likely find a servlet if you are running a JAVA based web server or service.

I'm guessing though, as I haven't done a deep dive into a JAVA stack for at least five years now.  (Well, there was that integration with VISA, yes, the credit card company.  Talk about a challenging many layers of security, so secretive about the function of their APIs.)

Programming Amazon Web Services

O'Reily books are fantastic and most will stay on my shelf.  But the information in this book is better found on the web.  It's grown pretty far out of date too.

Programming Flex 2

Even though a beloved O'Reiley book, this Flex 2 reference needs to be burned along with everything else related to Flex 2.  I still get job offers because I have experience building apps with Flex 2.  Never again.  Not for any amount of money.  (Hmm...I will for one billion dollars.)

Web 2.0 Heroes

The title has "Web 2.0" in it.  Enough said.  

Actually these are great little stories about some startups you know and some which have already been forgotten.  It was a good read.

Managing Raid on Linux

With the advent of "the cloud" I have been able to free up any synapses utilized for storing information about Raid.  No more striping.  No more thinking about which level gives me the best speed and redundancy.  I'm letting Amazon handle it from now on.

Programming in Python

This book weighs 48 lbs.  Or at least it seems to.  I love Python but haven't cracked this reference in years.  The information is all online anymore.  No need to carry around a 48 lb trophy.   

ModSecurity 2.5

A book dedicated to an Apache security module.  I may never know the luxury of working for a company where my one and only job description is "secure the Apache webserver".  This book was theoretically relevant when I worked for a prepaid debit card processing company.  Probably an interesting read though if you use Apache and want to research security techniques.

Google Web Toolkit

I love Google.  I have loved them for a long time.  However, not everything they invent is awesome.  The GWT created object-oriented libraries that wrap standard web protocols and languages.  I always found it easier to work directly with the web protocols and languages than to get wrapped up so deep in a framework that you are writing at least as much code as you would using the standards based code.  Plus, I never write web content using JAVA, which I believe was the main point of building this library.

For the record, JAVA is the absolute worst choice for writing web applications.  (Who me?  Opinionated?)

UML Distilled Third Edition

During my nine and a half years at Visional, there was much talk about modeling languages.  There was much experimentation with modeling languages.   I mentioned Rational Rose above.  There was this dream that we would be able to create models that described software, and then those models would compile down to actual code.  The reality was that the level of effort to actually accomplish this using a tool like Rational Rose was prohibitively expensive.

For those who don't know, the leading modeling languages of the day were unified to create the one true modeling language, UML.  It was thought (at Visionael) that UML would help state-side technical managers communicate detailed requirements to offshore developers more efficiently.   But in my experience, the offshore developers were struggling to keep up with the programming languages, the cultural differences between our countries,  communication styles etc. and the last thing on their mind was learning UML.  So in fact, I'm sad to say that my substantial investment into learning the ins-and-outs of all of the UML modeling techniques were wasted, as I've never once worked with another developer who wanted to communicate ideas this way.

Well, not wasted per se, as any thinking spent on software engineering helped make me a more well rounded developer.  One figures.

I'm down to the last four and needing to wrap this up, so here comes the short versions.


For a minute there I thought that getting my RHCE would be a nice feather in my hat.  But before getting through the process I determined that I'd rather focus on Debian.  Then Ubuntu.  And why did I need a certification anyway?  Story of my life.

Spring In Action

ESBs and JAVA configuration frameworks were in vogue when I worked at Vetsource.  I think I already mentioned that I didn't love them.  (Can we get back to programming already?)

JBoss at Work

JBoss at Work?  I'd rather not.  Regal eagle or no.  As mentioned, I grew fatigued with JAVA frameworks during this era.  In fact I did a pivot soon after completing this book, started working with Django, and have been using Python or Ruby to build web systems ever since.

Success with C++

It's a primer from a class I took at TCC.  I actually quite liked this book, or maybe it was just the C++ language that I liked so much.  I'm still nostalgic for C++ programming.  I still occasionally contribute C++ code to open-source projects to scratch that itch.

So where did the books end up?  I donated them at the local Goodwill drop station.  So if you see anything you want, and if you live in the Tulsa area, you might be able to find them at a local Goodwill store!
Wed Jul 30 08:40:18 2014
Staying Stronger
How do you stay strong?

When you mind is full of memories and you want a do over.
When your body gives way to time.
When someone you love is sick and growing sicker?

How do you believe?

When your faith is tested and is graded an F?
When your hero is revealed to be a sham.
When you've been lied to.

How do you keep moving forward?

When you don't want to know what's around the corner.

You might medicate.
But you won't feel better when the medicine wears off.
You'll be the same, feel the same, struggle the same---except with more lines around your eyes.

You might follow a guru.
And if she's magical, give her my number.
But she's probably not.

You might turn it over to God.
But what does that really mean in pragmatic terms?
That you believe that something you can't see, feel or touch
in a context provided by gurus, chieftains and ancient texts?

If it works for you, this might be a good solution.
For me it's just an infinite series of unanswerable questions.

Death.  There I said it.

Can you face it?

I want to turn and see it, but not embrace it.
I want to be strong.
I want to be able to cope when my parents are dying.
Or God forbid---my children are dying.
I want to feel good as my body is aging.
I want fewer regrets.

So I'm going to write about it.
I'm going to work out even though I don't want to.
I'm going to try to only eat what really nourishes me.
I'm going to keep my mind as sharp as it can be sharpened.

I'm going to muster faith---as much as my heart will tolerate.
I'm going to simplify.
I'm not going to be a Democrat or a Republican or a Liberal or a Conservative or any other stupid label.
Life is too short for that crap.

Damnit, I'm going to be strong.
And I'm not going to be selfish.
And---by God--- I'm never going to eat shellfish.

Tue Jul 22 20:21:24 2014
Living like great-grandpa

Tarynn and I are trending towards a life that resembles the actual life of my great-grandparents.  Instead of a maximum square foot home in the suburbs, we prefer an older, smaller house in the city.   The style of our house might be described as urban-farmhouse.  We try to eat natural foods, we garden.  We dream of getting a chicken coup.  (My mother-in-law, who lives next door, has one!)  We try to consume less and create more.

We're by no means trend setters in this area; if anything we're on the same bandwagon as so many others, as evidenced by so many Pinterest boards.

So what's up with this back-to-Grandpa's style of living?  Here are a few of my guesses.

1.  We're burnt out on consumerism

We're tired of buying stuff.  Why are we buying anyway?  Why are we following the instructions of our corporate overlords?  We are we so easily influenced by commercials?  After much reflection on issues such as these, many of us are deciding to step outside of consumption culture.  An alternative reason for some: we're broke and looking for ways to buy meaningful supplies with what money we have.

2.  Technology makes us feel less human

We're so plugged into our devices that we no longer know how to live and interact with each other in meaningful ways.  Getting back to nature, back to history, back to the way Grandpa lived reminds us of a time where phones were not our Gods.  We've tried modernity.  So far it has not provided a life full of purpose.

3.  We want off the grid

There are many reasons we want off.  Some people are conspiracy nuts, preparing for the end of times.  Others want to avoid government and taxation.  Yet others simply want to be more self sufficient.  Some simply want to reduce their dependency on external systems like the gas and electric company.

4.  Ecological concerns

Some of us are in it to reduce our footprint, to produce less waste, or to buy less junk that will become future waste.

5.  We're searching for meaning

This is really a variation on item two.  What does it take to feel good about our daily lives?  For some of us, growing a plant from seed to harvest is the ultimate reminder of our humanity, that we live in an interconnected system of life and death, of food and need.  It reminds us that indeed we are alive and have the natural instincts to keep ourselves that way.

Mon Jul 21 00:20:56 2014
A SPY story - part 2
Without the new gear I'd just purchased, I don't even know if Todd and David would have let me join the band.  But they were broke and equipment poor and I was ready and willing to contribute my gear if it would help me achieve my dream.

They'd been working together for some time and had written at least two original songs, one of which was Ministry 6.  Todd had been reading a novel about British spies and the CIA's English counterpart, the MI 6.  The concept thus inspired their first original song and gave them inspiration for a band name: SPY.

Eventually David Lee moved out from Todd's apartment got his own.  I showed up at his place with Todd one early afternoon, keyboards in tow.  I knocked on the door.  No answer.

We knocked again.  Then again.

Finally lanky Lee opens up, one eye squinted shut to to avoid the "morning" sun, his face twisted up like he was sucking on a lemon slice.  No words came from his mouth.  He just left the door ajar and stumbled back inside.

Todd and I came in and put our stuff on the couch.  From where we stood we could see Lee, over the counter top ledge that separated the living room from the kitchen, rummaging.  As was his habit he was wearing the same outfit he had on the night before, typically his work suit, crumpled from being slept in.

David loaded his pipe, lit it up, took a deep inhale and held it.  He slowly exhaled a few seconds later .  Then he repeated the process.

Finally he spoke.

"So," he said.  "I guess it's time to work on some music."

I took note of the CD cases strewn across the table, some open and laying on the floor.  I spotted a few  of my favorites, like Cabaret Voltaire's C.O.D.E. and Ministry's Twitch, which might have belonged to Todd.

David had several disks from the Waxtrax and Netwerk labels, including a few Skinny Puppy CDs.

We got down to the business of setting up our gear, connecting power sources and MIDI cables between the keyboards and sequencer.  David played a sound and said "sick, isn't it?"  He had an uncanny skill of squeezing ugly sounds out of pretty synthesizers.  He pushed a few buttons to change sounds, and found something that sounded a bit like the opening keyboard part from Van Halen's Jump.  He kept clicking on buttons, moving through the sound menus, assigning LFOs, changing waveforms, twisting knobs and altering settings until the patch sounded like the devil's vagina.

The habit and trend in industrial music at the time was to source audio snippets from old movies, radio programs or from conversations recorded on the street.  These would overlay the music.

A radio preacher from an AM radio broadcast made it onto the SPY track Ressurection.

We were searching the dial for sounds during one session at David's when we took a break to listen to community radio station way down on the left end of the dial, KNON.

KNON was not new to us.  A guy named George had a pretty good show called Chicken Gristle that we would listen to on occasion.

I don't remember the name of the show that was on that afternoon, but the DJ said something that caught our attention.

He was talking about the ongoing fund drive, an event that anyone who has ever listened to public radio knows all about.  The DJ was looking for pledges, and talking about the great lengths he would go to get the listeners to call in.  This is what we heard.

" fact, maybe you are a musician or are in a band and you are looking for a bigger audience.  If you will pledge at least $10 right now, I will put you on the air.  That's right.  I don't care what your music sounds like, if you will pledge, you can come down to the studio before the end of my show today and I'll play your music."

Todd raised an eyebrow and said, "Let's do it."  He picked up the phone and promised to pay the ten bucks.   (Honestly and regrettably I don't think we ever paid that pledge.)  Todd jotted down the directions to the studio.


A half hour later we were pulling up in front of little run down house in what I considered to be a bad neighborhood.  Paint was peeling off the outside.  We walked up to concrete porch and knocked on the door.

A girl opened.  "What?" she said.

We explained what we'd been promised when pledging and she disappeared inside.  A few minutes later she reappeared.  "Yeah, you can come up."

We shuffled up a creaky staircase and through a door that dumped into a tiny room.  We shook hands with the DJ and his pal and he said he'd put us on next.  He invited us to stand next to the microphone.

"...and keeping with our promise of putting on the air anyone who will pledge, we have with us here a new band.  What are you guys called?"

Todd stood forward to speak on our behalf.  "We're called SPY."

"Tell us a little bit about the song we're going to hear."

I can't remember what Todd said next, but before we knew what was happening the DJ took the cassette, put it into the deck and hit play.  And just like that Ministry 6 was playing on the airwaves.

"Holy shit," Todd said smiling.  The DJ nodded and said it was pretty good.

The phone rang and the DJ answered.  He put his hand over the phone and told us, "It's George from the Chicken Gristle show.  He says he likes your song and wants for you guys to come see him during his show on Saturday."

To be continued

Sun Jul 20 20:49:51 2014
Prescription for de-stress and recovery

Feel like crap?  Body hurt?  Work related stress?

You should try this for five days.  This is what I do when I'm in your shoes.  It's ONLY 5 can do this!

1.  Don't touch alcohol 

Drinking weakens your immune system and messes with your brain's communication pathways, affecting mood and behavior.  And hangovers just feel terrible---duh!  Try going cold turkey for one week.  I know that some of you drink socially all the time; just tell your friends and loved ones that you are on a five day fast and that you'll get back to your wild drunkenness soon.  You want to feel better, right?

2.  Don't smoke anything

Inhaling smoke irritates the respiratory tract.  Didn't you know?  And even though we all know someone who swears by the medicinal benefits of marijuana, it's still smoke and still irritates the respiratory tract.  Just give it up for 5 days.

3.  Go to sleep when the sun goes down

Tonight in Tulsa the sun will go down at 8:38 P.M.  Now this may seem like a ridiculously early time to hit the sack, but in fact, the natural world around you is going to sleep at this hour.  Join the plants and insects and begin your recovery sleep when it goes dark.

Be patient and stay in bed until you get to sleep.

4.  Determine when the sun will come up tomorrow, and set your alarm for 15 minutes later than that time

Some people require alarm clocks.  But if you go to bed when the sun goes down, you should also awaken naturally when the sun comes up.  Make sure there is a crack in your curtain so that the natural light will come into your room to awaken you.  The alarm clock will still be there to ensure that you are up in time if nature doesn't get the job done for you on day one.

5.  Exercise in the morning

Once awake, do the following routine three times at least: 10 push ups, 10 sit ups, 10 jump squats

6.  Say something positive to yourself

I know this is cheesy, but I believe that positive affirmations work.  These will get you started:

7.  Eat high nutrition raw foods

Eat some green peppers!  They're nutritionally dense.  Here are some other ideas:

8.  Don't overeat

Stay away from big meals that leave you feeling heavy.

That's it!  It's simple: just get your sleep cycle in sync with nature, eat what is good for you, move your body, and avoid putting things into your body that wear it out.  It works for me when I need to recharge.  Let me know if you try it and if it works for you!

Fri Jul 18 11:11:32 2014
My Juice Recipes
In late 2013, early 2014 Tarynn and I explored the idea of opening a juice bar.  In the end, we decided against the plan.  But before we threw in the towel, we spent a considerable amount of time working on our juice recipes.  We wanted to serve (and drink) juices that were not only healthy but that tasted great.

Below are some of our creations, as well as some standards.

The obligatory Green Juice.  Good for you, made tolerable by the two apples.

Basic Green Juice

Recipe items
2 Apples, Cameo, U.S. Extra Fancy
2 stalks celery
1 cucumber
6 leaves Kale
1 lemons
1 inch Ginger

Sweet and spicy.  Jalapeno adds a little zing.

Spicy Garden (Devin's favorite)

Recipe items
1 apple
2 stalks celery
2 carrots
2 leaves Kale
0.5 lime
1/8th inch thin slice jalapeno 
1  green or red bell pepper
1/2 cup spinach
(optional) 0.5 chard
(optional) broccoli

Love this one.  Kind of like a spicy V8 or a bloody mary.

Fiesta Mouth (Devin's favorite)
vegetable count Recipe items
4 roma tomatoes
1 tiny bit onion
1 bell pepper green
1 inch jalapeno pepper
2 kale
1/2 cup spinach 
2 celery
2 carrots
salt, pepper, Tabasco
try adding red peppers and vinegar instead of Tabasco
also good with 1/2 garlic

Got a sweet tooth?  Sure it's a lot of sugar, but some nutrition too.

0.3 pinapple
1 pear
4 carrots
1 lemon
0.2 spinach

Tarynn prefers juice that is primarily carrot juice with strong ginger overtones.

Tarynn 3

Recipe items
1 Apples, Cameo, U.S. Extra Fancy
7 carrots
2 leaves Kale
1 lemon
1 inch Ginger
1 oz parsley

The pear gives it a distinctive sweetness.

TV Juice 1
vegetable count Recipe items
1 spinach 2 oz
8 carrots
2 pear
1 lemon
1 inch Ginger

Not for everyone, but check it out.

Fennel Juice
vegetable count Recipe items
2 Apples, Cameo, U.S. Extra Fancy
2 stalks celery
2 bulbs fennel
1 lemon

Wed Jul 16 01:39:44 2014
A SPY story Pt. 1
I thought Todd Dixon looked like Billy Idol crossed with a pear---if Billy had a spiky mullet. He was a smiler, a drinker, and while he stood there skinny and shirtless in the dirty Texas lake talking about music, beer in hand, I thought we would hit it off. We were both huge Depeche Mode fans both had tickets to the upcoming Music for the Masses tour date at Reunion Arena."You're not going to believe this," he told me, and proceeded to explain that his high school sweetheart had left Texas, become a model, and was currently dating Martin Gore. All the more incredible was the fact that she had invited him and a small group of friends to a meet and greet the band the night before the big concert.

I told Todd how I'd just bought my first keyboard, a Roland sampling S-10, and how I was looking to join a band. He smiled excitedly and told me, "I play keyboards too."

"No shit?" I asked.

"NO shit. And I'm looking to do the same exact thing. In fact, I'm already working with a guy."

Todd had another musician with him that day at the lake, a thin guy with Rockabilly sideburns and a scraggly tuft of hair on his chest and chin, a guy a bit older than us who I would later learn had a penchant for paisley shirts, black skinny jeans and pointy boots.  Like me, David Burdick was a transplant from Tulsa, Oklahoma.

Todd and I were talking and I learned we were looking to do the same kind of music, synth-based like Depeche Mode, but maybe more aggressive than European synth pop. Before long Todd had invited me to join his yet unnamed band---and invited me to be his guest at the private Depeche Mode party a few nights after.

Meet Depeche?  To say I was excited is an understatement, but a little voice inside my head also warned that I'd just met this guy at the lake, drinking with a group of high school kids from a private school, and that he might not be on the up and up.

But the phone rang the following day and it was Todd, confirming everything that had been said at the lake.

And true to his word, a few evenings later I met him at the fairgrounds where the party was to be held. I had no idea what to expect. I couldn't believe that I'd actually get to meet my musical heroes. In my imagination I played through the coming night: an elegant event, groups of record industry types standing around sipping wine, having polite conversations. For a moment a spotlight would come on, directing our attention to a balcony on which Depeche Mode would be standing, waving to the regular people below.

But instead, I was met in the parking lot by a group of excited kids, probably seven or eight of us in total, decked out in black and chains and giddy about what might happen next. Susanne (somehow I remember her name), Todd's high school sweetheart, approached us and told us to follow her.

We entered what appeared to be a biker bar, nearly empty. I don't think any of us were old enough to drink, but someone wheeled out a cart full of beer and ice and we were told to help ourselves. The room was rustic, furnished by wooden picnic tables. Todd and I sat down and chatted about our plans for the band while nervously waiting to see what would happen next.

In walked all four members of Depeche Mode and a manager. We were introduced and shook hands around the table before they popped open beers of their own and sat down.

Starstruck, the other kids (we were all in our late teens) and I acted like complete fan morons, giddy with the opportunity to be up close and personal with our teen idols.

So what happened next?

The next morning I woke up thinking "where am I" and "how did I get here?"

Apparently I'd had too much to drink and blacked out. Somehow I was back home at my parents house. My car was missing.

While nursing a Godzillian hangover, I racked my brain for memories from the previous night.  I had spotty memory blotches, a vague recollection of David Gahan brushing me off when I tried to start up a conversation, peeing next to Andrew Fletcher at the bathroom urinals, dancing to Blue Monday with Martin Gore and Todd in the corner of the little bar.

Todd was apparently cogent enough to document the evening, as someone snapped this photo of him  standing next to Dave Gahan.  That's Todd on the left.

I was able to remember leaving the biker bar and going to Club Clearview in Deep Ellum as guests of Depeche Mode.  They gave us the VIP treatment and for a moment in time we felt, and probably were, absolutely cool.  The last thing I remember is asking Martin how old he was. He claimed to be 27. I asked him to sign my shirt.

Later, I washed that shirt and the signature came out.  So much for keepsakes.

I got together with Todd to make music the following week at his apartment off upper Greenville Ave, an area overbuilt with complexes to house minimum wage workers, young couples, and oversexed tanned twenty somethings trying to get lucky while hanging out by swimming pools. Todd's apartment was sparsely furnished and dark, lit only from light coming through cracks in the curtain. The place smelled of cigarettes.

I'd been saving money from my pizza delivery job, I told Todd, to buy a Roland MC-500, a stand-alone sequencer.  He showed me what he was currently using to sequence, a software-based solution called Voyetra running on a Commodore 64. He'd been working that day on a cover of Black Celebration.

I'd been working with my own keyboard for about six months already and had made a little music with a guy name David Jones. We'd called ourselves Blessings In Disguise and our act consisted of David, who knew nothing about music theory, playing feedback through a Marshall stack while I simultaneously banged out drum samples on on my keys. We'd played one gig, a high school party, a show that climaxed when David bit down on the blood tablets he'd bought at a costume store, producing spittle quite epic when spewed under our strobe lights.

Before that day, I didn't have the know-how to sequence sounds or music. Todd's arrangement of Black Celebration sounded great.  I would come to learn that Todd liked working on cover tunes.

This is what filled the only apartment bedroom: a mattress which was lying on the floor, a desk covered by a keyboard, a computer, a four-track recorder and several wires. We plugged in my keyboard and, using a microphone, took a few short digital recordings, known as samples, of ourselves breathing.  We assigned them to the lower half of my Roland S-10 keyboard.  It had only the capacity to store four samples and with a total sampling time of 4.4 seconds. Once we were happy with our new sounds they were added the to the mix. Todd and I took turns laying down vocal tracks on the four track recorder, with Todd taking lead and me taking backup.

"So tell me about this other guy you are making music with." I said.

"Didn't you see him?" he asked?


"On the couch, on the way in?"

I peeked around the corner and into the living room. There was a lump under a blanket on the couch.

"He's your roommate?" I asked. "He's asleep. It's two O'Clock in the afternoon."

"He doesn't get up until the sun goes down. Unless it's time to go to work at the country club."

I came over a few more times without ever meeting David Lee.  He was always out-cold or absent.  The first time I remember seeing him awake he was just about to leave for work, trying to scrape up enough weed fragments for one more hit before he went out the door. 

Todd was a social guy, liked being out at night, drinking in night clubs and just hanging out, the same as me.  We'd been out one night drinking too much, and I dropped Todd back by his apartment. David Lee had been working on a sequence while Todd was away, a song later titled BulletProof.  I thought it was good and for the first time realized that the roommate had real talent.

Here some of the early SPY recordings from 1988 here:

David Lee with Ensoniq EPS

Todd Dixon (Right) with David May (Left)

To be continued...

Thu Jun 5 06:22:01 2014
A poem for 1:23:21 AM
What can I control?

The sun?  The air? Can I ensure that tomorrow comes?
Can I stop death? or the sad lives of unwanted children?
Can I control pain? or guarantee happiness?

I can give my family a safe place to sleep tonight.

Whom can I trust?

My 4th grade teacher, Steve Jobs, Oral Roberts or President Obama?
A newspaper rack or TMZ? The wisdom of crowds? Manufactured celebrities?
Any girl who has whispered in my ear?

I will trust those who truly love me.

What should I believe?

In a God benevolent and omnipresent?  Worlds beyond science?
In a liberal or conservative political vision?  In words from men cleverer than me?
In a hopeful view of humanity?  In pragmatism? In fatalism?
In life?  In Death?

I will err on the side of hope.
Mon Jun 2 17:50:04 2014
Using FormData correctly
Using FormData to upload images via Ajax is easier than most examples you find on the Internet make it.  Just define your form in HTML, include as many files as you want, then pass the document element of the Form to the constructor of the FormData class.

Most examples in the wild suggest something like this:

var data = new FormData();
jQuery.each($('#file')[0].files, function(i, file) {
    data.append('file-'+i, file);

If your form is defined in your HTML, it is easier to pass the form into the constructor than it is to iterate and add images.
$('#my-form').submit( function(e) {

    var data = new FormData(this); // this is the form element

            url: '/my_URL/',
            data: data,
            cache: false,
            contentType: false,
            processData: false,
            type: 'POST',     
            success: function(data){
Mon Apr 21 18:00:39 2014
A better way to zip archive a git project
Why have I been zipping up my git projects with the .git directory intact?  Here's the right way:

 git archive my_branch --format zip -o ../

Creates a zip file from branch my_branch and leaves out the .git files.  Useful for upload to

Fri Apr 4 16:01:45 2014
Change bash comment color in Vim

Ever notice that it's almost impossible to read the dark blue comments on a black background in a Vim file?  What a bitch.

Change them to light blue:

Open ~/.vimrc

Add this line:
hi Comment term=bold ctermfg=lightblue guifg=lightblue

Thanks David C. Rankin!

Tue Apr 1 08:35:53 2014
Musings on art

Many of us spend countless hours of our lives on art projects.  There are many reasons to make art.  For some it is about perfecting a craft or technique.  Others make art to communicate ideas or feelings.  Some are simply makers for whom art is a means for either making new stuff or reinventing old stuff in new ways.

We consume or enjoy art for different reasons.  Sometimes a piece simply strikes as a beautiful, unusual, or interesting.  But more often than not, we really appreciate art that successfully communicates with us, that reflects us, or that gives us insight into who or what we are.

Think of the song writer whose lyrics seem to describe you exactly, as if the writer understands you personally---completely.  Or think of the movie or book that moves you to tears.

This is the most successful art, as it satisfies both the maker and the observer.

Most of the art I make is musical, and though I also enjoy writing and drawing, I think my musical efforts are the most mature.  I can tell you that, for me, making art has always just been about play and experimentation.  I find satisfaction in being able to imagine sounds or music and turning those ideas into something audible for others to hear.

The artist who says they don't care if anyone else really appreciates or understands their work is probably not being honest with themselves.  Art is a conversation between the maker and the audience, and it takes two parties to have a conversation.

Art matters.  In it we see human potential.  It's so easy to become disgusted with the world, with the selfishness, the greed, the cruelty, the hatred.  But art reminds us of our better selves, or at least it has the potential to do so, because in it we see the spark that ignites, the seedling pushing up through the dirt, the breath of air that keeps us alive for another few moments.

We're alive, and yet, we for some reason we are frequently unable to marvel at it.  I'm thankful for the artists who spend their hours working to remind us, who serenade and shock us into seeing life for what it is or could be and for who and what we are.

Thu Mar 13 12:52:17 2014
PhoneGap and offshore development lessons

I've spent the last two months working on a PhoneGap app.  In an attempt to keep momentum going even when I'm sleeping, I hired several offshore developers to assist.  Lessons:

1.  Time is not on your side

It takes time to communicate design and implementation details to a third party.  It takes most developers some time to ramp up.  (Okay---all developers.)  I set the expectation that I would be able to build this app in a month because I thought I could build it if I worked on it 24/7, but none of the resources I hired had agreed to such a schedule.  In fact, in my experience, most if not all offshore developers are working multiple contracts and will give you at best a few hours of effort per day.

2.  Good help is hard to find

How do you really know if an offshore resource is quality?  The amount they charge per hour?  Their odesk rating?  No, none of this is a true measure.  The only way to really know what an offshore developer is made of is to give them access to source, assign them a task, and see how they perform.  You can generally tell within 48 hours if you have a keeper or not.  But Lesson 1 is the downside.  I found too many that were not keepers, so too much of my time was spent hiring and testing and then retiring developers that didn't work out.

3.  One offshore trip up can cost you big

Actually I had two offshore trip-ups.  The first, I found a competent PhoneGap developer.  He went to work but didn't check in soon enough.  When he finally did I discovered that he'd changed our whole approach to development, replacing our Twitter bootstrap multi-page based layouts with jquery-mobile and a single-dom layout for the sake of gaining the page transitions.  He'd implemented new functionality, but broke the existing.  Three weeks into the project I was left with two bad options: rewrite several ajax handlers to use the new dom structure and styles and stay with the jquery-mobile approach,  or rewrite his new functions, adapting him to the (three week old) style.

Did I mention that I had told this resource explicitly NOT to add any new libraries without first getting my approval?  After struggling with the decision, I decided to stay with the new approach and fire the developer.  After all, how could I work with a developer who wouldn't follow directions?

The other trip-up?  Giving an "Apple IOS expert" access to your developer account.  Without going into details, I will only say that I spent a week trying to figure out why push notifications were not working on our production system.

4.  Don't fire your only competent developer

After a week of churning through other resources, I couldn't find anyone who was qualified to do the work who was also available.  Oh sure, I found some that said they were qualified.  And I found some that said they were available.  But in the end, they wouldn't work, or couldn't do the work.

Remember the developer I fired?  I rehired him. What else could I do?

5.  Build it yourself

This advice won't help a non-technical manager, but in my case, I faced the reality that no one else could get this done but me.  The fact that I could no longer meet my deadline was crippling for me, as this is not typical for my projects.  Frankly, I shutdown under pressure, which is one of the reasons I ordinarily front-load my projects.  Without pressure, I think carefully, methodically, and with intention.  With time pressure, I have to make bad choices and that's really hard for me to do.  I'd rather not do the job at all than to do it wrong.  But of course, this is reality, and I don't always get to control everything.  So I struggled through.

6.  CSS selectors can be evil

Developers know that css rules are used to style web pages, controlling every detail of the look and layout.  Javascript is the language that does, and javascript code controls most dynamic behaviors, control flow, api communication with the server.

CSS selectors let you chose elements in the DOM (on the page) and manipulate them one way or another.  A CSS selector is like a query tool, allowing you to grab an element by its ID, class or even its ancestors or descendants' ID and classes.

So what happens if you let a resource who doesn't really know javascript, but who is good with CSS styling, update your stylesheets?  Unless careful attention is given to any selectors, the selectors get broken, meaning bugs are introduced.  Any time the DOM is modified post-initial-development, such as the introduction of a new element in the hierarchy, there is a risk (no a probability) that javascript selectors will no longer work.   And the stylesheet rules, which are often hierarchical, may also break, so styling will be destroyed.

This means that you can't really bring a CSS resource back to do more work in the middle of the project.  In fact, you had probably better lock them out once the initial styling is done.

A good best practice for the future:  Lock down the DOM.  Tell your resources it simply can't change without your approval.

7.  Too many cooks in the kitchen

Even when working with competent developers, it's really difficult to collaborate on a jquery-mobile project.  All pages are embedded in single DOM, leading to CSS rules that are more complex than would exist with smaller, dedicated pages.  It's too easy for developers to break each-other's CSS rules.  Some best practices for my future projects:

  • With CSS Selectors, prefer IDs to Classes, except in cases where a Class is the only solution (such as selecting every matching element). $(".wrapper .red .spanky .britches") is more likely to become invalid as development progresses than $("#the_britches_element").
  • Commit to the completion of HTML, CSS and layout before introducing the javascript and logic
  • Consider using a templating engine to reduce code duplication

8.  You can find a good offshore resource

I found a really great PSD-to-HTML resource last year and I really enjoy working with him.  He's responsive.  He does a good job.  He replies quickly.  He does what he says he's going to do.  Going it alone is not the best approach.  It should be possible to proceed as a team, and I'll continue in my efforts to build an effective one.  But throwing together a team to complete a project within one month?  Probably too ambitious.

Fri Mar 18 15:25:43 2011
Tue Mar 16 15:51:21 2010
Tue Mar 16 15:51:20 2010
Tue Mar 16 15:51:20 2010
Mashup Editor
Tue Mar 16 15:51:19 2010
Object with links to Related Records
Tue Mar 16 15:51:19 2010
Search Result Page
Fri Mar 12 21:28:26 2010
Sitting Under Canvas (8-bit)
Thu Feb 11 19:24:07 2010
I love my retro layout.
Mon Dec 28 15:24:03 2009
ZynAddSubFX Packaged
Mon Dec 28 15:24:02 2009
ZynAddSubFX Compiled
Fri Nov 20 19:54:23 2009
Thu Nov 19 19:13:45 2009
Crypto Nerd's Imagination