Desk

The internet is awash with nonsense and people that really want to be heard. That's not entirely the case for me and I'm not planning on adding to the nonsense. I've spent too much time working on websites for other folks to really concern myself with my own. However, I've grown really tired of communicating using third party websites and I wanted to use this as a way to archive any notes, ideas, or anything I want to share. Right now, this site is clogged up with lots of old posts about mostly computer related ramblings, but I'll clean that up over time. I mostly leave commenting off, but please feel free to contact me if you have any feedback, questions, or just want to say hello.
Thanks for visiting,

David Windham Signature Who Needs a Computer Anyway?
David A. Windham

2019

Around the end of every year I always start thinking about goals and reflecting on the past. I suppose that’s good. This essay started as a couple notes to myself but I decided publish it to share with a couple folks. To those of you who got a link to this page, it’s way better than the card my wife would have whipped up and I signed. Or maybe just a cathartic exercise in reflection and self importance. Regardless, Merry Christmas, Happy Hanukkah, Kwanza, Winter solstice1, and Saturnalia2. We only did a few cards this year. I’ll try to make this note a bit personal so that we might feel connected. I’d sincerely ask how you’re doing if I had seen you in person this year. You’re welcome to send me a response anyway to let me know. Regardless, I hope you and your’s are doing well and would like to wish y’all a happy new year.  

Well. My year? Let’s see… the first quarter was made up of a bunch of home renovation projects, summer was pretty much slacking on work to play tennis, and the last quarter has been mostly me ratcheting up work to catch up on the cost of said improvements from the first quarter. I think we spent twice what we had budgeted. I had always heard that would be the case. Oh well, It was well worth it. Our abode is where we spend our time and we’ve put our some sweat equity into it. Literally… we found ourselves mid summer rebuilding our deck in the South Carolina heat. My development work has shifted a bit in the last six months. Although I’ve been enjoying the challenge of being immersed in learning new tools, I’ve also been struggling with the fact that my pace isn’t as quick as it once was. Ginny has been doing double time as well taking on new responsibilities in her work world. It’s paid off though and we’re about caught up on the renovation costs. Otherwise, I’m very happy to say that our concerns are relatively few. Our dog Zeke turned 17 this year. He’s slowed way down and we just want him to pass peacefully in his sleep even though we’ve been telling ourselves that he has a couple more in him. We have 93 and a 97 year old grandmothers who we wish the same. I’ve got a younger brother who’s health issues with Crohn’s disease are concerning.  My eyesight. I’m getting closer to 50 and I’m pretty sure these computer screens are taking a toll on my eyes. I’ve got three pairs of reading glasses lying around the house, but I don’t carry a pair around and haven’t seen an optometrist yet. I’ve gotten to where I just ask Ginny to read me menus and other print when we’re out. It just kinda snuck up on me to where I was starting to get headaches from eye strain when working. It’s been my second real wake up about my own age.

Health and aging would be one of my 2019 themes. Several years ago… 2014. Six years now. Time flies. I really made a hard turn on my health. The reason being is that I thought I was having a heart attack one night. After a bunch of test, it turned out to be a panic attack and heartburn. You make a lot of promises to yourself when you think you’re dying. I quit smoking finally… and I say finally because I had been on and off, mostly on, for the previous ten years. I used to get up and drink an entire pot of coffee and smoke a pack of cigarettes while sitting at my desk. I’m pretty sure that cut into a couple years of my life. In the last six years, I exercising regularly and I eat healthy. Aside from my own mortality, both of my parents are starting to get up there in years. I’m sure that, not unlike everyone who proclaims their new years resolutions to be about health and diet, aging might sound like a dull year end theme. Alright. It Is… Let’s talk about figuring out how to live healthily until at least 2070. Now that’s better. Makes it look like time is a long stretch of road ahead. It’s much more fun to be future focused. After having done the renovations here, we’ve been putting some serious thought into custom designing and building a new house. A sustainable net-zero house with some land for a small farm. That’ll be another chapter though for a different year end summary. 

Another thing that has persistently stayed on my mind 2019 is something I’ve been trying really hard to work on in the last five months trying to complete a couple projects. It’s a bit abstract so bear with me. It’s mostly about focus and anxiety. I think the idea of retiring and more specifically investing money is what started me down this trail. The idea that I could make money off of money without working has been sounding oh so nice especially since I knew the bulls would make a run. The reality is that I also started reading the news again daily. I had stopped for the previous five years or so. I feel like it’s stolen my time and energy. I’m not sure it’s all worth it. I’m a pretty anxious person to begin with, but I’d say that anxiety could be part of the general zeitgeist in the last several years. I had been trying desperately to purposefully disengage from connective-ness as a means to simplify and make my life more rewarding. You know the ‘be here now’3 mantra. As I moved past my understanding that the anxiety of constant connection is mostly manufactured tool designed to take your attention, personal information, and sell you shit. The addictive apps, the infinite content streams, the apocalyptic headlines, the political postering, and the exploitation of our psychological weaknesses. These are all very much manufactured anxiety which some have dubbed the attention economy. The closest explanation to this trend that I’ve come up with is that we have essentially invented a new communications medium of which we are unequipped to use in the most appropriate means. I’ve started to frame that same sort of information age ‘era’ thinking to other events as well. I read a long paper on peak oil this year from a series of energy companies and soon thereafter was able to quickly frame the whole of current climate debate and regional political struggles into a framework. Using that sort of long range thinking has helped me frame any discussion about the current headlines and relegate them into more digestible bits that make sense in context. My point here is this… being consciously aware that the the world around you is dizzyingly complex and the information thereof is moving at unconscionable speed. The “Turn on, Tune in, drop out”4 approach is why I think you’re seeing things like legal cannabis, the opioid epidemic, minimalism evangelists, mega-churches with rock music, organizational coaches, and everyone acting like they do yoga even though it’s mostly just wearing the pants. To me, it’s all evidence that part of our collective consciousness is trying to counteract the effects of the information age.  

Anyway, back to what I was saying. FOCUS. How to avoid distraction in lieu of meaningful awareness. I’m not sure I have the answer yet. I try to set all kinds of rules for myself. I think that maybe it just might be a luxury to be unfocused. My essay on the 20 hour work week from last year might be supporting evidence. Kierkegaard writes “anxiety is the dizziness of freedom, which emerges when the spirit wants to posit the synthesis and freedom looks down into its own possibility, laying hold of finiteness to support itself.”5 I’m certainly not in much of an existential crisis even though evidently a lot of folks are since I just saw that ‘existential’ was the word of the year for something or another. Mine is more of a “be here now” mindfulness approach to life that I’m working on. I am trying to be very mindful of the affects that all of my actions have on a daily basis. I’ve grown from dealing with issues of attention and anxiety. I often find the later to be a source of motivation6,7. I think Herman Hess’ Glass Bead Game8 nails this theme since he wrote it in anxiety prone times with the message that wisdom is only when knowledge is applied to the real world. I encourage everyone I know to take control of their attention and don’t let the systematic influence of the information age give you anxiety. Put down the endorphin driving devices and tune into the world around you. This is coming from someone who legitimately suffers from periods of hypo and hyper focus. I think the reason I took the time to write this essay today is because I told my better half this morning over coffee that sometimes when I have ‘flow’9 answers just seem come to me. I had an early morning epiphany of sorts in that I am constantly reminded that when I have the mindset of just trying to be helpful to my fellow human beings things just tend to work out and when I’m mired in the self protection and competition they don’t. Yesterday morning I mentioned to her that my driving force is curiosity and that the reason I appear to be lucky in life is because I turn over a lot of stones. 

Here’s to being helpful and flipping those stones in 2020. 

~ David


  1. Winter solstice – https://en.wikipedia.org/wiki/Winter_solstice
  2. Saturnalia – https://en.wikipedia.org/wiki/Saturnalia
  3. Be Here Now https://en.wikipedia.org/wiki/Be_Here_Now_(book)
  4. Turn on, tune in, drop out – https://en.wikipedia.org/wiki/Turn_on,_tune_in,_drop_out
  5. The Concept of Anxiety – https://en.wikipedia.org/wiki/The_Concept_of_Anxiety
  6. Kierkegaard on Why Anxiety Powers Creativity Rather Than Hindering it –https://www.brainpickings.org/2013/06/19/kierkegaard-on-anxiety-and-creativity/
  7. Kierkegaard On Using Existential Anxiety to One’s Advantage – https://medium.com/@mustaphahitani/kierkegaard-on-using-existential-anxiety-to-ones-advantage-5ec266dc9b45
  8. The Glass Bead Game – https://en.wikipedia.org/wiki/The_Glass_Bead_Game
  9. Flow (psychology) – https://en.wikipedia.org/wiki/Flow_(psychology)

Update – 12/28/19: Ram Dass died December 22nd. That’s really weird how I was wrote this essay the days prior and had listened to two of his lectures in the previous days. Maybe the ‘be here now’ mantra has me more ‘in tune’ than I’m even aware of. As he said “The next message you need is always right where you are” and “The quieter you become, the more you can hear.” – https://en.wikipedia.org/wiki/Ram_Dass

 
David A. Windham

How Does a Website Know My Name?

Well… it finally happened to me today. While reading the news this morning I noticed that the Bill.com1 IPO managed to gain 60%2. I wanted to dig a bit into their business model since I’ve been thinking about reworking the invoicing application I use.  In doing so, I headed over to Bill.com, scrolled down a bit, and viola… the inevitable new-fangled chat-box appears. However, this time the chat bot correctly identifies me with my full name. I’ve know about this practice for years and I’ve seen the exponential growth in the arena, but today is the first time, I’ve actually had it happen to me. I’ve previous figured out and am pretty well versed in all kinds of methodologies for various privacy invading tracking techniques used by the likes of LinkedIn, Facebook etc, but this one is a bit different because I was on a mobile device using a browser in incognito mode so it wasn’t cookie or tracker based. It was done just using my IP address. I headed to my desktop, changed my IP address, and tried it again using an IP set to Central America. The site chatbot misidentified me as “Jobcluster” which turns out to be an employment agency in Florida.

So, of course I’m intrigued and I set about to reverse engineer the feature. Firstly, I can see why the Bill.com IPO gained so much traction and I’ll give the companies involved kudos for being able to do so. The chat feature on Bill.com is powered by Drift3 which offers a ton of integrations and is a sophisticated project4. Drift is able to add datapoint integrations with MadKudu, Demandbase, 6Sense, and Clearbit5. Combining this data into or alongside of another system such as Segment, Saleforce, Google Analytics, or Facebook Pixel can create a powerful dataset on any person. I say person whereas most of the typical language about the tracking is either customer, consumer, market, etc. If you then combine that data with that of the big name companies like IBM and Equifax who compile and sell personal data, then you’ve got a bunch of data-points originating from a single web requests6. The are vast amounts of resources being put into closing down the ‘last mile’ of the anonymity of the internet. I suspect that it won’t just be IP addresses for long as the telecommunication providers and governments make strides in pushing to identify the devices on their networks7 for regulation and legal purposes even though vendors are had been trying to randomize those addresses8. If you’re following along, you might have noticed the recent attempt by the US Government to impose restrictions on encryption9. I’m not going dig into all that here for the sake of focusing just on the little feature I ran into this morning. I’ve previously written about privacy and tracking online10 so I’ll just leave you with the fun fact that folks are now attaching beacons to identify you on everything from churches to those little roadside political signs11 so the tracking is not just online, it’s in real space in real time12.   

In order to reverse engineer the identifying info on the Bill.com site I saw this morning, I ran through each of the their third party Drift chat APIs quickly and determined that the identifying information on my IP is most likely the data coming from Clearbit. I say ‘most likely’ because I’m unwilling to set up thousands of dollars in accounts to test my theory.  Drift integrations with Clearbit indicate that the Clearbit Reveal13 feature is what is trying to identify the user. Try it out by loading up a VPN and flopping around your IP addresses while viewing this page https://clearbit.com/reveal. As far as I can discern, it’s using a combination of IP and cookies. I set up a Clearbit account and starting making some API requests out of curiosity and sure enough, the IP address I was using identifies me by my name, my job, my address, my website, and my social media accounts. It’s still kicking up null for my annualRevenue, but I tried some other folks I know who work for larger public companies and it was able give me the annual revenue using the combined Enrichment API request14. I have implemented a number of structured data15 elements into my website including Open Graph elements which are also a form of structured data16. That data explains much of the data present using the Clearbit Enrichment API. However, it doesn’t explain how the Reveal API is able to pair the IP address assigned by my ISP to that data. My first guess was that I signed into an another identifiable service using the IP and it’s stored and shared that data with Clearbit. My IP has been static for years, so it could be any number of services. (Please Clearbit don’t send me a cease and desist over this post… or do and then help me explain to others how my IP is being matched to my identity). I double checked my ISP policy on customer data protections which simply stated that they can ‘share’ data with their business ‘partners’ and I also tried looking at any other identifiable service I’m using that could pair that data. I tried running a bunch of other IPs through the API and can see some of the more obvious data collection points, but I’m still baffled as to which data point is exposing my real identification through my ISP’s assigned IP address.  

So what do I do with my newfangled discovery. I know… I can use my knowledge to make money… if you can imagine that. These type of services and APIs can provide some serious firepower to client facing web applications and sites. It’s potent stuff for marketing. Although I have some reservations about privacy, I’d certainly recommend them to other companies trying to engage ‘customers’ online. It’s a powerful marketing tool when used added to a CRM or funneling tool. The more advanced tools do come at a price though. The costs for the Clearbit Reveal Google Analytics plan is a thousand a month. The costs for the Reveal API subscriptions are two grand a month17. For any business of scale that’s just a drop in the bucket. I’m already trying to figure out ways to incorporate it into projects and I can see where these are going to be an invaluable tool for folks trying to reach customers or improve their sales and customer retention tactics. Just thinking about it this morning has given me some fun ideas as to how to customize a bunch of different aspects of applications based on third party data points. As of now, I enjoy messing around with the AI bots in an effort to garner humorous responses, but I suspect that these AI data driven features in applications will inevitably be messing with me given more data. 

Of course there is a drawback… I think the other message here is that as these types of services start combining data points from various sources that the majority of folks will inevitably lose a large piece of their perceived anonymity online. The type of targeted messages being published by the clients of Cambridge Analytica18 showed some of the vulnerabilities of the exploits of personal data. I’m not too personally worried about my anonymity online mostly because I’m educated about the practices and have been sharing personal information online for 15 years now without issue mostly because I quarantine it under my own control. I also admit that I’m very much guilty in that arena by running reverse IP searches on everyone, tagging emails with trackers, tracking user locations via IP address through the headers in their emails, and just ‘Googling’ people to find out more about them. I recently had a conversation with some folks where I had done a bit of cyberstalking on the person and just outright asked them about their history to which they said ‘how do you know this?’. I replied with ‘the internet’… like it’s what everyone does. I just assume they do and make no bones about it because I’ve been working with this stuff for years. Maybe abuse is the wrong word here… marketers might call it a strategic advantage. But, let’s just say if I can identify you before you visit a website or other application and I know your address and can infer your wealth, I might decide to price a product or service accordingly. It’s already being done with geolocation data. Is it fair? Is it abuse or is it strategic? Does’t it happen in real life all the time? I sometimes have to give consent as to when my data is pulled in the fine print of whatever agreement I’m signing. In many ways I’ve understood very clearly that this is the direction that it the internet has been heading and I’m wasn’t entirely surprised to see a website correctly identify me by name. My experience this morning is more evidence that it’s happening online already. The last time I had that type of eye opening web experience was in the early days of LinkedIn’s connection recommendations when I was baffled as to how they understood all of my email contacts. Although I’m not a fan of treating everyone like a ‘user’, it does personalize the experience and in doing so, it makes it more effective and personal. Let’s hope the data rich developers and companies who use these tools decide to do so wisely and not just for maligned interest. I believe that the privacy laws in other countries are heading in the right direction and I’m leery of the unchecked use of this data. Just something to chew on this morning… I’ll leave you with this quote from my favorite tweeter and futurologist ~ “The Future is here – it’s just not very evenly distributed”.19

  1. Bill.com – https://www.bill.com/
  2. Bill.com, of Palo Alto, gets an early Christmas present as shares climb 61% in IPO – https://www.mercurynews.com/2019/12/12/bill-com-of-palo-alto-gets-an-early-christmas-present-as-shares-climb-61-in-ipo/
  3. Drift – https://www.drift.com/
  4. Drift Intel Integrations – https://gethelp.drift.com/hc/en-us/sections/360003545753-ABM-And-Intel-Integrations
  5. MadKudu, Demandbase, 6Sense, Clearbit – https://www.madkudu.com/, https://www.demandbase.com/, https://6sense.com/, https://clearbit.com/
  6. Here are the data brokers quietly buying and selling your personal information- https://www.fastcompany.com/90310803/here-are-the-data-brokers-quietly-buying-and-selling-your-personal-information
  7. Home Affairs floats making telcos retain MAC addresses and port numbers- https://www.zdnet.com/article/home-affairs-floats-making-telcos-retain-mac-addresses-and-port-numbers/
  8. Behind the One-Way Mirror: A Deep Dive Into the Technology of Corporate Surveillance- https://www.eff.org/wp/behind-the-one-way-mirror
  9. Distrust of Tech Could Be Encryption’s Achilles’ Heel – https://www.axios.com/newsletters/axios-codebook-9630f129-ae8b-4813-b64d-4712b65e9835.html
  10. David A. Windham – Privacy and Cookies – https://davidawindham.com/privacy-and-cookies/
  11. Campaign Put Beacons on Lawn Signs to Track Phones – https://mashable.com/article/beacons-location-tracking-republican-campaign/
  12. Beaconstac – https://www.beaconstac.com/
  13. Clearbit Reveal – https://clearbit.com/reveal
  14. Clearbit Enrichment API Docs – https://clearbit.com/docs#enrichment-api
  15. Schema.org Structured Data – Wikipedia – https://en.wikipedia.org/wiki/Schema.org
  16. Facebook Open Graph https://en.wikipedia.org/wiki/Facebook_Platform#Open_Graph_protocol
  17. Clearbit Reveal Subscriptions – https://help.clearbit.com/hc/en-us/categories/115001976668-Reveal#Subscriptions
  18. Cambridge Analytica – https://en.wikipedia.org/wiki/Cambridge_Analytica
  19. William Gibson – https://en.wikipedia.org/wiki/William_Gibson
 
David A. Windham

Dorian

Well… it’s about that time a year again that I’m glad I don’t live on the coast. This screenshot gave me pause, because I like how the shape of Hurricane Dorian1 perfectly curls along the beaches between Charleston and Wilmington.


  1. https://en.wikipedia.org/wiki/Hurricane_Dorian
 
David A. Windham

Joshua White

I’d like to share a story that I think is important and relevant to modern times about Joshua White. Today is the anniversary of the “I have a dream” speech by Martin Luther King Jr.. Every morning after I get up and have my half of cup of coffee I do a bit of reading. I’ll scan my email and the news quickly and try to find something interesting. What gave me pause this morning was a tweet from the “People’s Daily”, the largest newspaper in China and the official newspaper of the Communist Party of China. The tweet1 referenced the words of “I have a dream” with images of the speech.

Although unrecognized by many folks, the movement that lead up to the “I Have a Dream” speech was largely initiated by the labor movement of organizations such as the Brotherhood of Sleeping Car Porters2. The speech was made at the March on Washington for Jobs and Freedom. That march was organized by Philip Randolph3 and Bayard Rustin4. Rustin was able to pursue an education because he was an accomplished tenor vocalist and earned music scholarships to college. He performed with Josh White and the Carolinians in the recording6 below.

Gottlieb, William P – [Portrait of Josh White, Café Society (Downtown),
New York, N.Y., ca. June 1946] – Library of Congress

Joshua White7 was born in Greenville, South Carolina in 1914. His father threw a white bill collector from his home in 1921 for which he was beaten so badly that he nearly died. His father was subsequently locked away in a mental institution and died there several years later. Two months after his father died, White left home to drift with a blind street singers often sleeping in fields and stables while still a teenager. This was documented by Barlow, William Barlow in his 1989 book “Looking Up at Down”: The Emergence of Blues Culture. White eventually returned to Greenville to take care of his mother and siblings working various labor jobs. Later, in the 30’s, White was sought out back in the Carolinas by A&R men interested in his talent. He eventually was cast as Blind Lemon Jefferson in the Broadway play John Henry to which he received some notoriety. but late run the 40’s he recorded “One Meatball”, the first million-selling record by a male African-American artist.

In the 1940s Joshua White became close friends with Franklin and Eleanor Roosevelt. He would spend Thanksgivings and Christmas at their home in New York. They became the godparents of his child and he became a friend and confidant of the president. After the death of the president, White’s younger brother William White became Eleanor Roosevelt’s personal assistant, house manager and chauffeur for the remainder of her life.

In the 1950s White was tagged by Red Channels: The Report of Communist Influence in Radio and Television8. In an effort to clear his name, he consulted Eleanor Roosevelt and Paul Robeson. On September 1, 1950, White, appearing with only his wife Carol at his side, sat down before the House Un-American Activities Committee (HUAC) and explained his childhood background and read the lyrics to the song anti-lynching song “Strange Fruit” which was placed into the congressional record. Because he volunteered to testify before the HUAC, it greatly affected his posthumous reputation in America, causing him to become the only artist of the era to be blacklisted by both the political right and left. Mrs. Roosevelt had an astute understanding of the political climate in Washington and in America when she warned White that the government would turn his testimony against him. Indeed, this was the case, and White’s blacklisting would not be lifted for years. White relocated to London for much of 1950s, where he hosted his own BBC radio show, My Guitar Is Old as Father Time. White’s blacklisting in the American television industry was finally broken in 1963, when President John F. Kennedy invited him to appear on the national CBS television’s civil rights special “Dinner with the President”.

Joshua White died in 1969 during heart surgery. He was the first black singer to give a White House command performance (1941), to perform in previously segregated hotels (1942), to get a million-selling record (“One Meatball”, 1944), and the first to make a solo concert tour of America (1945).[26] He was also the first folk and blues artist to perform in a nightclub, the first to tour internationally, and (along with Lead Belly and Woody Guthrie ) the first to be honored with a US postage stamp. The 1956 book The Josh White Guitar Method9 is still in print. While White has undeniably left an indelible mark on American culture, this story should serve as a warning that a friend of presidents and the organizer of one of the most significant civc events in American history could be pushed into virtual obscurity by a political process motivated by fear.

I find this little artifact significant and timely, given the recent press about the rapid deforestation in the Amazon, the ongoing protest in Hong Kong, Boris Johnston trying to push through a ‘no deal’ Brexit, and the press that Trump has financial ties to the same folks campaigned for him using fear tactics. Often times, the juxtaposition of newsworthy items and cultural artifacts are fascinating enough to me that warrant sharing. This story started just a couple mile up the road from me when a young teenager left home with a blind musician because he father had accosted a white bill collector. I’m just guessing here, but I’d put my money on the the bill collector being a crook. I played an Ovation guitar for some time because I liked the ease on my fingers. That guitar evolved from White’s bleeding fingers. The song Jerry, by Josh White and the Carolinians is about a prized mule who’s driven hard because “Lord, this timber gotta roll”. Jerry got spooked from the sound of timber crashing and “kicked the boss in the rump”. The “Boss tried to shoot him in the head” and Jerry the mule “stomped him dead”. Jerry is a poignant folk story. The warning of Joshua White’s life being pushed by fear, racism, and political process, is similar to the the fear in a mule driven hard leading to the demise of the boss. It’s a fable that’s has contemporary implications. My favorite reference to Joshua white is from Shel Silverstein and Bob Gibson who remembered White with the first verse of Heavenly Choir10.

Last night I heard Josh White playing
From somewhere on the other side
In an orchard full of strange fruit hangin’
With his head thrown back, he stood there singin’ He snapped those strings till his fingers bled
He bent those notes till his guitar wept… now he’s…
Part of the Heavenly Choir
Where all the poor restless souls can be found Ain’t that a heavenly choir
Ain’t that a hell of a sound


  1. https://twitter.com/PDChina/status/1166538390856245250
  2. https://en.wikipedia.org/wiki/Brotherhood_of_Sleeping_Car_Porters
  3. https://en.wikipedia.org/wiki/A._Philip_Randolph
  4. https://en.wikipedia.org/wiki/Bayard_Rustin
  5. https://www.loc.gov/item/gottlieb.09081/
  6. https://www.youtube.com/watch?v=RDpjPm143dI
  7. https://en.wikipedia.org/wiki/Josh_White
  8. https://en.wikipedia.org/wiki/Red_Channels
  9. https://www.amazon.com/Josh-White-Guitar-Method/dp/B07C479SJR
  10. https://www.bobgibsonfolk.com/song-heavenly-choir/
 
David A. Windham

The Magical Number Seven

It seems that almost every time I’m involved in designing a new user interface for an app or website, I inevitably bring up the magical number seven1. Although I’m using it in design terms, it’s origins are actually from a psychology paper published in 1956. It’s also commonly referred to as Miller’s Law2, which refers to both working memory and communications. It’s a simple concept about our working memory which you can read more at the Wikipedia page linked below in lieu of repeating it here. It’s also cited by the US CIA in Psychology and Intelligence Analysis3.

The reason I refer to the concept is generally in an effort to try and simplify user interfaces. I believe, as Miller had cited in his original paper, that anytime more options than needed are presented, the information becomes confusing. I like for any menu navigation item to contain less than seven options. I actually believe that closer to 3 is optimal and if you can fold the options out like a tree in steps of three you’ll get better results. Now, don’t get me wrong on this, I’ve built menus with 40+ items. Sometimes is necessary if you’ve got a directory of information that a user might want to try and navigate to a specific piece of information. This is also where search plays a vital role… or in the case of this website, I’ve playfully made the whole thing a maze of information. However, if you’re presenting the user with new information and trying to elicit an objective response to the stimuli, then my recommendation is to always limit the choices to seven or less. Some folks might cite the KISS (Keep It Simple Stupid) principle3 on this, but I think the Magical Number Seven is more appropriate to what’s really going on. I always try to present users with seven or less choices as to their next action. If you’re really only trying to get one single action from a user, limit the choices to one or none. I like to think of users as savvy and not just Pavlovian4 mouse clickers. That’s why I think it’s all about the magical number seven.


  1. https://en.wikipedia.org/wiki/The_Magical_Number_Seven,_Plus_or_Minus_Two
  2. https://en.wikipedia.org/wiki/Miller%27s_law
  3. https://www.cia.gov/library/center-for-the-study-of-intelligence/csi-publications/books-and-monographs/psychology-of-intelligence-analysis/art6.html
  4. https://en.wikipedia.org/wiki/KISS_principle
  5. https://en.wikipedia.org/wiki/Classical_conditioning
 
David A. Windham

Twenty Hour Work Week

I’m often out working in the yard, riding the bike, swimming, or playing tennis midday mid-week and folks are always saying “don’t you have a job Windham”. Since the majority of the folks saying it are retired and I like to respond “It’s not my fault it took you so long to retire”. In reality I work hard and more importantly I work efficiently. In an effort to respond to those folks I figured I’d write a short little post this morning about how I try to be efficient with work my work. And don’t let the title fool you, that’s just what I’d like to shoot for and in reality I’m sometimes working fifty hour weeks.

Quality of life… I can’t emphasize it enough. It’s always the little details that drown folks in the traditional work week nonsense. Even though most folks are doing the nine to five, I don’t think they are getting any more work done. Every time I’ve taken a traditional job, I’ve been discouraged by the amount of time my co-workers spend ‘riding the clock’ and the amount of time I have to spend on site twiddling my thumbs. In fact, the last full time position at a local university I left simply due to the fact that our new dean was cutting down on tele-commuters and I was being forced to drive into the office. Prior to that, I actually liked coming into the office certain days just to socialize with my coworkers. One of the first corporate jobs I had was as a web developer for a publishing company where I learned all kinds of bad work habits from the seasoned developers there. After one of our first ‘code sprints’, a fellow developer came to me and said “don’t do the work too fast, they’ll come to expect us and you’ll make the rest of us look bad”. They also taught me to leave broken items in the development repositories just so we’d already know what was going to be requested of us by the project managers. I attribute this to Parkinson’s law 1. in that “work expands so as to fill the time available for its completion”. This type of time wasting stuff is nonsense. I prefer to just do my work in such a way that the faster and more efficiently I do it, the more time I have away from the office.

Reducing the number of office hours has made some headlines in recent years. Given that I’m doing remote IT development work from home, it makes sense that I’d be learning towards the shortened work week. However, a lot of decent research suggest that we are all moving towards shortened work hours. I think we’re all kinda contaminated with the ‘busy-ness’ disease. I think It makes us feel like we’re valuable and productive. I’m no expert, but it’s been an idea in the making for years. Bertrand Russell wrote in his 1932 essay, “In Praise of Idleness”, that “if society were better managed the average person would only need to work four hours a day”2. John Maynard Keynes noted in a 1930 essay, “Economic possibilities for our grandchildren”, in which he reckoned people might need work no more than 15 hours per week by 20303. I’m not going to philosophize on production, consumption, and work hours. There are plenty of others doing it3. However, I will tell you that my quality of life has increased by concerning myself with issues of time management.

I’ve always been easily distractible. I had an English teacher in high school who made it a point to contact my mom about my inattentiveness in class. Being the hypochondriac she is, my mom and some psychologist quickly accessed my condition as ADHD. I still think it’s just general boredom with the mundane and uninteresting. That’s another issue for another essay. I now mostly do contract development work. This work is generally within a team development environment that makes me accountable for my time in that I’m often pair programming. I also manage to take on other smaller projects for additional billable hours. This type of work has given me the liberty to devise ways to use my time the best I see fit and over the years, I’ve developed little habits that help shorten my work week and make me more efficient.

  1. I go to bed early and I wake up early. At our house, we’re almost always in bed by nine. We’ll talk, read a book, or watch a film and I’m usually out by 10pm. I get up around 6am, have a cup of coffee and get right to it. I’ve found that the midday chaos of communication is really distracting and I get my best work done before noon.
  2. I exercise often so that I sleep well. I evaluate how I’m sleeping often and I will sometimes meditate or take a nap if I’m not feeling particularly on task or focused.
  3. The smartphone is rarely an entertainment device for me. (unless of course, I’m stuck somewhere, like the doctors office waiting room or airport with nothing else to do) I’ve turned off all notifications on my phone and when I’m working, I turn the ringer off as well and leave it in a drawer downstairs.
  4. I try to only open up an email twice a day in the morning and after lunch. I draft my responses and send them out in the afternoon.
  5. I use project management software to keep a list of projects, tasks and calendars that keep me current at a glance. It functions like a Kaban4 board as an easy way to manage tasks.
  6. I spend very little time doing invoices or paying bills. I write up each billable hour every day and I auto pay all bills online.
  7. I try to communicate efficiently in that I only respond to emails/texts/calls that need an immediate response and I always wait until I have all of the questions I need to put into an email/text/call before I make it.
  8. I try to spend a couple hours every week playing with development tools and servers in an effort to continually make leaning new skills fun and keep me interested in my work.
  9. I write code efficiently. I make notations and document as I’m writing it.
  10. I learn tricks to speed up and automate development.

  1. https://en.wikipedia.org/wiki/Parkinson%27s_law
  2. https://en.wikipedia.org/wiki/In_Praise_of_Idleness_and_Other_Essays
  3. http://www.newyorker.com/magazine/2014/05/26/no-time
  4. https://en.wikipedia.org/wiki/Kanban
 
David A. Windham

BioTherm Solutions

Although I’ve mostly stopped posting technology related ramblings on this website, I have to remind myself every so often that I should be keeping up with my projects in an effort to self promote. I built a new website for BioTherm Solutions this last year and I’m going to run through the highlights. If you’d prefer to just take a look, head on over to BioTherm Solutions to view it online or the code repository at https://code.davidawindham.com/david/biotherm.

BioTherm Solutions has been in business since 1980 designing and manufacturing greenhouse environmental solutions. They are based out of Cotati, California which is just north of San Francisco and west of Sonoma. I was introduced to the company through a project had previously done for another greenhouse based company. BioTherm had pretty much the same set of web issues that most projects I work on… outdated content, non-responsive1, and a design dated site. I reworked the main logo and created additional vector graphics to match their new divisions. I gathered an assortment of other graphic resources, created a color theme, and started in on the site.

They had an old site based on Expression Engine2 which hadn’t been updated in a number of years. I went through the process of migrating the site locally and gave them a number of options about upgrading Expression Engine, redesigning the content, migrating the existing content to a new content management system. The owner had a brochure that had been updated and I worked form the design from a print brochure which had been updated. For this project I settled on a couple of standard libraries to build out the templates. I primarily used Bootstrap from Twitter and Material Design3 from Google. All of the pages have been built as static HTML assets. Sometimes I really miss working with static files because of the simplicity. There was a minimal amount of JavaScript added, so there was really no need to further complicate it with additional preprocessors4 although I generally like to use a task runner5 to compiles assets on a project like this. Ideally, I’m left with one single CSS and JavaScript File. The only other technical considerations on this project were some forms and third party analytics. I used PHPMailer6 to handle the forms. I used Google ReCaptcha7 to deal with form spam and I used Google Analytics.

I think the design on this one is clean and provides a simple experience that guides users to action. They’re happy with it and that’s mostly what makes my job rewarding. As with most projects, I always make a promise to support them for the lifetime of the project. In this case, I’ll likely be doing some additional work by migrating to a CMS8, maybe a new host, and adding an SSL certificate9. Although I do the majority of my work for other agencies, it’s kinda nice being directly involved with the company. This also cuts out a lot of potential for feature bloat10 since I can recommend only what they need and I’m not pitching them new fangled solutions. I wish all of my projects could be so straightforward.


  1. https://en.wikipedia.org/wiki/Responsive_web_design
  2. https://en.wikipedia.org/wiki/EllisLab
  3. https://en.wikipedia.org/wiki/Material_Design
  4. https://en.wikipedia.org/wiki/Preprocessor
  5. https://en.wikipedia.org/wiki/Build_automation
  6. https://github.com/PHPMailer/PHPMailer
  7. https://en.wikipedia.org/wiki/ReCAPTCHA
  8. https://en.wikipedia.org/wiki/Content_management_system
  9. https://en.wikipedia.org/wiki/SSL
  10. https://en.wikipedia.org/wiki/Software_bloat
 
David A. Windham

2018 Playlists

Every month I make a new music playlist. I usually do this while I’m avoiding work at my desk. I’ve started doing these playlists in 2013 and I just post them online for anyone interested ( here’s last year ). I like going back and listening to old playlist just like the old mixtapes I used to make. I generally try to only include new releases for each month. Sometimes these will include reissues and remastered releases from that month. I keep statistics and track my listening habits at https://davidawindham.com/studio/music/ and http://radio.davidawindham.com/. If you see anything I missed last year, please let me know.

Looking back through these tracks… here are some that stuck out to me last year. ( in no particular order )

  • Phil Cook – People Are My Drug
  • Ry Cooder – The Prodigal Son
  • John Grant – Love Is Magic
  • Courtney Barnett & Kurt Vile – Lotta Sea Lice
  • Kurt Vile – Bottle It In
  • Courtney Barnett – Tell Me How You Really Feel
  • David Byrne – American Utopia
  • Brian Eno – Music For Installations
  • Phosphorescent – C’est La Vie
  • Dr. Dog – Critical Equation
  • Kamasi Washington – Heaven and Earth
  • Mark Knopfler – Down the Road Wherever
  • First Aid Kit – Ruins
  • Neko Case – Hell-On
  • Blood Orange – Negro Swan
  • Ziggy Marley – Rebellion Rises
  • Medeski, Martin, & Wood – Omnisphere
  • Olafur Arnalds – re:member
  • of Montreal – White is Relic
  • Douglas Firs – Hinges of Luck
  • John Prine – The Tree of Forgiveness
  • St. Paul & The Broken Bones – Young Sick Camellia
  • Ben Harper & Charlie Musselwhite – No Mercy In This Land
  • Willie Nelson – My Way/Last Man Standing
  • Keith Jarret – La Fenice (LIve at Teatro La Fenice)
  • His Golden Messenger – Virgo Fool
  • Unknown Mortal Orchestra – Sex & Food
  • Jason Isabell – Live from the Ryman
  • Superchunk – What a Time to Be Alive
  • Elvis Costello – Look Now
  • Parquet Courts – Wide Awake!
  • Rayland Baxter – Wide Awake
  • Gregory Porter – One Night Only (Live at the Royal Albert Hall)
  • Paul McCartney – Egypt Station
  • Brad Mehldau Trio – Seymour Reads the Constitution!
  • Jim James – Uniform Clarity
  • Grateful Dead – Pacific Northwest ’73-’74
  • Soulwax – Essential
  • Father John Misty – God’s Favorite Customer
  • Chick Corea & Steve Gadd – Chinese Butterfly
 
David A. Windham

Peoples Pants

I just set up another server for a side project: Peoples Pants1. The pants thing has been a little idea in the back of my mind for some time and I’m not sure where the name came from. I think it just hit me while running a domain search.  Sometimes I think that maybe I just enjoy setting up servers. Perhaps I’m just procrastinating other work, but given a little free time to dabble and I usually end up with some sorta new side project… either around the house or on the computer. I’m kinda a serial tinkerer and sometimes entrepreneur where my capital is all sweat equity of the time spent ‘behind the machines’.  I just build out the ideas as they come to me. There are a bunch unfinished, quite a few I’ve abandoned, one I’ve sold, and this one now makes two out there floating in cyberspace. I guess it’s the ‘if a tree falls on the internet’ sorta reason for publishing them or posting it here. 

This one got started because while I was building a demo for an upcoming contract and I started using hypothetical pants orders for the models. I might have been thinking about getting some new pants or the pants I had on. Who knows. I had also just read about the legalization of hemp with the farm bill.  And in my opinion, this is something that should have been done a long time ago. I first read about the sustainability of hemp was when a buddy gave me his copy of The Emperor Wears No Clothes2. I was in college. I had just moved from Savannah to Charleston. And for the record… I definitely inhaled. I remember buying a pair of hemp shoes in New Hampshire. They had recycled plastics for the sole and hemp canvas for the upper… like ‘hippy chucks’. Although the shoes are long gone, I currently have two current shirts from Patagonia that contain hemp. The hemp is imported. I’m guessing that this farm bill is going to ramp up domestic production. I think it’d be great if we were to re-invent modern domestic textiles with hemp. Hemp is far more agriculturally sustainable and environmentally friendly. 

Earlier this year, I built a project for a greenhouse environmental control company that does a lot of new business related to the legalization of cannabis. At one time, I starting working up a business prospectus and looking for property for my future greenhouses because, well money…. I’ve toured a facility in Colorado and I had seen that our former state attorney general was getting into the business.  But that’s another story and another business all together even though technically hemp is cannabis. I think hemp is going to be a viable agricultural product and I’m hoping it turns out to be a successful agriculture crop in the states.  From what I remember, part of the introduction to The Emperor Wears No Clothes was about the historic prevalence and uses of hemp in America. I still see a good number of cotton fields in and around the countryside, but I know that the majority of the textile outfits in these area are gone.  I wonder what kind of impact hemp production will have.  

I’ve played with the pants idea in conversation with folks in the past.  I almost always get the ‘you can’t do that here.. that’s why they’re all made in _blank_ third world country’ reply.  I tend to roll through all kinds of those types of lofty aspirations regularly, so I know the context in which the responses from my acquaintances derive. Peoples Pants is ‘pants’ software and it’s one thing to build software on your computer and another set of considerations for how it performs under the weight of users.  These days, I tend to think about scalability from the start because I seem so many good ideas choked off from implementation issues. That’s one reason I spun up a server for this. I like having all of the code modular and the infrastructure in place for high availability.  There is an about page I just wrote for the site and there’s not much more that I need to add here. We’ll see how it goes. I’m sure it’ll take a big chunk of money to ramp up production and at this point is merely a minimum viable product5. Although the software is primarily handling customer service and e-commerce, the idea is that I’m going to build it to handle everything from generating patterns,  passing those to the laser cutter, supply chain management, and human resources.  You can head over to PeoplesPants.com to plug in your email address for updates or check back with me when you need some pants.



1. – Peoples Pants – https://peoplespants.com/
2. – The Emperor Wears No Clothes – https://en.wikipedia.org/wiki/The_Emperor_Wears_No_Clothes
3. – Patagonia Hemp – https://www.patagonia.com/hemp.html
4. – H.R.5485 – Hemp Farming Act of 2018 –https://www.congress.gov/bill/115th-congress/house-bill/5485
5. – Minimum viable product –https://en.wikipedia.org/wiki/Minimum_viable_product

 
David A. Windham

WordPress 5.0

In the tradition of my various old posts about how this website is published, this is the first post I’ve published on this site with the new Gutenberg editor1 for WordPress. I like it. I like how it’s built. I think it’s the future. I think it is smart that they pushed it into core. However, I didn’t decide to write a post based on how much I like it or my opinions on the future features. The reason I’m writing this post is that I spent the better part of this morning and yesterday fixing websites with errors due to the upgrade.

I know that there has been quite a bit of discussion on the subject, but I think my opinion is garnered mainly through experience and figured it might be valuable to share with anyone else out there who may be contemplating the same issues. The reason the website I was working on had issues is because of the Enfold theme2 and it’s Avia Framework and Layout Builder. Let me share a little backstory first for those finding this post. I’ve been working with WordPress since version 1, over ten years now.  I originally built this website with static HTML and CSS. I migrated it to WordPress at version 2. I’ve since built a bunch of websites on WordPress and I’ve started to developed some highly opinionated, which I’d consider educated, ways of doing so. 

I realized a long time ago that having fewer moving parts is the sort of aesthetic I prefer when it comes to working with software or content management systems.  In the last couple of years, I can’t load a YouTube video without a website builder advert in front of it. I remember when GoDaddy and others like WIX started forming their site building tool teams and I saw a lot of good JavaScript developers go to work on them. I often recommend these sorta of site building tools to folks that don’t have more complicated requirements because they are easy to use. These site builder tools are just an effort to make the tools more user friendly. WordPress is merely following this trend in an effort to make sure that it doesn’t find itself antiquated in coming years. However, these type of JavaScript site building tools made their way into WordPress themes and plugins before the new Gutenberg editor did and now some of those tools aren’t exactly compatible.

With the sites I just worked on, I didn’t build them or choose to use the Enfold theme. I often inherit projects built by others because, unfortunately, that just seems to be the modus operandi of the web dev world. I don’t mind inheriting projects because it pays the bills and you learn more from maintaining websites than building them.  The websites had been built entirely using the Avia Template builder and the errors started happening right after the update.  After heading off to the user forum for the theme, I discovered that the theme author is dealing with the same issues and cites them in their most recent post3.  The theme author has written a simple workaround to enable and disable the new Gutenberg Editor.  ( Although I might note in this case, I’m not sure they should be calling their editor the ‘Advanced’ one. )

In conclusion… ( I can’t seem to escape the fifth grade five point essay and a lame fifth paragraph introduction ). I like the new Gutenberg editor and I think it’ll do a good bit to help modularize some of the components of a good plugin or theme. That doesn’t appear to be the popular opinion  because the reviews are full of negative comments from inexperienced users, which is really indicative of the majority of internet forums these days. My recommendation is to always try and build highly modular systems that aren’t dependent on boated features or lots of third party code so that interoperability is prioritized to prevent deprecation. And no matter what frameworks or content management systems you’re using, it’s always best to try and stay closely aligned with the code base of those systems. As much as I could rant here about this and that, it’s just something that happens with all software. I can’t even turn on my phone now without an update notification. And in the end, it only took me a little bit of time to run the upgrades and troubleshoot the issues. And I’ll get paid for it. So the lesson is…  please don’t heed my advice here and keep making stuff that breaks so that I can keep fixing it. The “move fast and break things”4,5,6 motto of development is working out for me. 

 



1. Gutenberg editor – https://wordpress.org/gutenberg/
2. Enfold theme – https://kriesi.at/themes/enfold-overview/
3. Kresi blog – https://kriesi.at/archives/wordpress-5-0-and-enfold-4-5-1
4. Move Fast and Break Things – https://commons.wikimedia.org/wiki/File:Move_Fast_and_Break_Things.jpg
5. Move Fast and Break Things – https://en.wikipedia.org/wiki/Jonathan_Taplin
6. Move Fast and Break Things – https://xkcd.com/1428/