The amazing adventures of Doug Hughes

To paraphrase Monty Python:

It’s not pinin’! It’s passed on! This business is no more! It has ceased to be! It’s expired and gone to meet it’s maker! It’s a stiff! Bereft of life, it rests in peace! If Doug hadn’t dragged it out so long, it’d be pushing up the daisies! It’s metabolic processes are now ‘istory! It’s off the twig! It’s kicked the bucket, it’s shuffled off this mortal coil, run down the curtain and joined the bleedin’ choir invisible!! THIS IS AN EX-COMPANY!!

As of the first of October, 2014 I have officially ceased operating as Alagad Inc. This has  been a long time in coming, but the time has arrived. At the ripe age of 18 Alagad has ended. Enter Doug Hughes LLC, stage right.

Running Alagad was a wild, amazing, horrifying, unforgettable, stressful, heartbreaking, astonishingly awesome experience. I founded Alagad in 1996, while still in high school. Initially it was supposed to be a graphic design company, but that didn’t take off. Around 1997 it started to gain traction as a web development company. Throughout college it fed me, kept me housed, and stocked me with plenty of beer.

In the years since I have had the pleasure of working with a diverse range of more than 80 companies and organizations around the world. (I think… part of me wonders if that number gets bigger every time I say it…) I have worked with dozens of employees and contractors. I have worked tirelessly with some very awesome teams.

But now I’m moving into a new phase of my life. I’ve stopped imagining that Alagad will someday be my ticket to retirement. I am now working with a single steady client, less than 40 hours a week. I’m not working on any side projects or a Next Big Thing. I’m idling and recuperating and I couldn’t be happier about it.

As I idle I’m working with new hobbies such as engineering a homemade CNC machine, 3D printing (eventually), wood working, reading, spending time with my kids, any anything else that strikes my fancy. I’ve even returned to college via Arizona State University Online to finish up a bachelor’s in Software Engineering.

I’m also on what I call a Unicorn Hunt. What is this Unicorn Hunt, you may ask? Well, I’m keeping my ears to the ground for an amazing opportunity as a traditional employee. This opportunity would allow me to learn and use new programming languages, techniques, frameworks, approaches, etc. I would be a junior to mid-level team member working under some amazingly brilliant people from whom I can learn new things. I would be working on a single project that I believe in and which is interesting and challenging. And I want to be paid like an executive (or at least what I am currently making) and be able to either work remotely or within 15 minutes of home. Oh, and I want my own pet unicorn too!

If you have an opportunity, checkout my resume!

Doug Hughes LLC is the new Alagad Inc. Eventually I’ll move good blog entries from alagad.com to doughughes.net. If you have my doug@doughughes.net email address in your contacts you may wish to update it to doug@doughughes.net. My phone number is still 651-252-4234.

So, for now I idle. Life goes on.

I’m back again this week with another installment of Office Hours. Last week’s Office Hours went well and we all learned a bit about Git. This week Phillip Senn has asked to go over how to setup a local development environment for ColdFusion.

The show starts here at 3:30 pm today, Thursday November 8th. I’ll post a link to the Google+ Hangout and a link to the streaming video in this post around 3:15. I hope to see you this afternoon.

Join the hangoutor watchthe YouTube stream:

Office Hours: Git

I announced on Wednesday that I was going to start holding Office Hours as an open forum where I can help someone work through a problem they’re having. This week I’ll be working with Phillip Cenn to get him started with Git. Our session begins at 3:00PM ET. Up to eight people can join into our Google+ Hangout. Everyone else is welcome to watch the life stream below.

Google+ Hangout:https://plus.google.com/hangouts/_/20d73fe568f5f674d1d7370072e2a2358ae3af26?authuser=0&hl=en

And this is where the live video stream will be:

A couple of weeks ago I was honored to speak at the very excellent NCDevCon. While there I had a very interesting conversation with a guy by the name of Phillip Senn. Phillip expressed that he was looking for a mentor, someone who would push him towards better development practices and help him get unstuck when he encountered a problem he couldn’t get past. For example, he needs a bit of a push to get started with Git. He’d like to see how people setup their development environments, etc.

While I don’t really have the time or inclination to be a traditional mentor, the request got me thinking. I certainly don’t know everything there is to know about programming, but over the years I’ve gotten really good at learning new things quickly. I feel comfortable being thrown (or throwing myself) into new technical situations. I recognize patterns and can Google with the best of ’em.

So, Phillip and Iconceivedof what he dubbed “Office Hours”. The plan (at least for now) is for me to have a scheduled time to do a screencast where I help someone get started with or learn something new for free. I will be doing this in a Google+ hangout and streaming it live to my YouTube channel. I also plan to make archived sessions availableonline.

The first Office Hours will be this Friday, November 2nd from 3 to 5pm EST. Right before the office hours is set to begin I’ll publish the Office Hours Google+ Hangout URL, the live stream video, and any other relevant information. Those who are interested (up to 8 additional people) can join in the hangout and help out or follow along. Anyone else will be able to watch the video in real time.

For this first I will beworking with Phillip to help him get started with Git. Truth be told, while I use Git, I’m no Git guru. My intention, however, is to help him get it installed, create a new repo, commit code, branch, merge, etc. Basically, to give him a tour of as much of it as I can. I imagine this will be rather organic with a few false starts and dead ends before we really get anywhere. To me, part of what makes Office Hours interesting is that I’ll be learning while I do it too.

I want to make Office Hours a weekly event. I also want you to feel free to email me with your requests and suggestions. For example, perhaps you want help getting started with Node.js (or anything else). Just send me an email and, if I choose your topic, we’ll schedule a time for your Office Hours. I would request that you not limit your questions to what you expect me to know. If the topic is new to me I’ll work ahead and be ready to hit the ground running in our Office Hours session.

So, do you have any thoughts or suggestions? I’d love your feedback on the concept.

 

 

Back in 2009 my company, Alagad, had what I think of as The Big Layoff.  We went from about 13 employees and contractors down to three people in a matter of a fifteen minute phone call.  This wasn’t the first round of layoffs I’ve had to do, but it was the hardest.  I loved the people who worked with me.  I cared about them and their families and I felt as though I had personally failed them. Frankly, I did.  I’m sure that I could have done more to protect them, their jobs, and their families.  That said, they’ve all gone on to bigger and better things and I’m extremely happy for them.

In the year or so leading up to these layoffs I was constantly assaulted with panic attacks. My chest would seise, I’d get tunnel vision, my mind would shut down everything except worry.  White hot worry. I worried about the people who worked for me and the overwhelming responsibility I had to them.  I worried about paying my bills.  I worried about my family.  Through the support of my family, the remaining employees, and the miracle of modern pharmacology I somehow made it through that period.

Sometimes I wonder if I didn’t completely fry my nerves. I wonder this because I am again tearing Alagad down.  Three weeks ago we were faced with the very real fact that we would likely go out of business.  Both my personal and business accounts were overdrawn and we couldn’t make payroll.  Again.  We had to leave the PEO that provided our health benefits and payroll service.  The walls were coming down.

So I held a call with all four of us, three family members and one employee who may as well be family at this point.  We talked about shutting down and what that would mean.  Throughout this experience I felt calm.  Not happy, but calm, collected.  Worried too, but not like in 2009.  I sincerely felt as though I had done everything I could and that, if we failed, no one could blame me for not trying.

What’s interesting to me is that I don’t feel the same panic I did in 2009.  I don’t feel like a hole is being burrowed in my chest.  I can breath and sleep. I’m not entirely sure why.

I imagine that when death is imminent – when you are terminally ill – that a certain peace and calmness comes from that knowledge.  I imagine that you release your desperate grip on everything that holds you to the physical world. Nothing can harm you now.  There are no more consequences. You transcend fear.

That’s where I am. Nothing can hurt me now. And strangely, because of this, I am free.  I can do anything I want.  I can take tremendous risks without fear.  I am like the terminally ill patient who decides to live each day as if it were their last, because it might be.

Much to my surprise, out of that phone meeting was born an entirely new strategy we’re calling Alagad 2.0.  I’ve detailed it on an all-new Alagad.com website and will spare you the details here.  Suffice it to say it’s not the traditional way of running a software company.

I feel like the terminally ill patent who is given experimental treatment.  It might save their life, but might just kill them even faster.  There’s only one way to find out and I’m comfortable with this.

I can’t lie and say that I’m entirely at peace.  I still worry.  We don’t currently have health insurance and we depend on our prescriptions for our mental well being.  Many have criticized our new approach saying that we don’t understand the business.  But others have suggested it’s might actually be a good idea.

Maybe I’m just delaying the inevitable, but I’m ok with that. The picture that has emerged to me is that there is in fact life after death.  It’s a rebirth of some sort – a renaissance.  A new start. I look forward to it with an open and calm mind.

NCDevCon LogoI was pleased to find out that I’ve been invited to speak at at NCDevCon again this year. NCDevCon is a ColdFusion and web development focused conference event held annually at theCentennial Campus of NC State University in Raleigh, North Carolina. The even is put on by the fine folks at the Triangle ColdFusion User Group, aka. TACFUG.

Here are the details of my session:

Javascript: things you never knew you didn’t know.

So, you think you know JavaScript? I think not! There are a ton of small features hidden under the covers that many developers either don’t know about or don’t know how to use. This topic will go over an ad-hoc list JavaScript related goodies that I’ve picked up over the last year or so, including typed arrays, accessors, array folding, object inheritance, various tips and tricks, and more. Many of the topics relate to newer revisions of JavaScript and may not work in older browsers.

I hope to see you there!

Also, thanks again to TACFUG for inviting me to speak again! You guys are awesome.

Unborking VPN on OS X

For those of you using the inbuilt VPN features on OS X, you may have noticed that from time to time it will stop wanting to connect. For me, pretty much any time I disconnect from VPN, the next time I try to connect I will get an unfriendly message that looks like this:

VPN Connection An Unrecoverable error occurred. Verify your settings and try reconnecting.

This happens to me way too often. It can happen when trying to connect, it can happen after disconnecting and then reconnecting, it can happen without any apparent provocation.

In the past it seemed like the only option was to completely restart OS X. As you can imagine, this is not an acceptable solution to someone who keeps a lot of apps open, needs to use VPN frequently, and who doesn’t wish to waste time rebooting for no good reason.

Thankfully, Joe Bernard was able to track down the solution and was kind enough to share it with me.

Apparently there’s a process in OS X called “racoon”. Racoon is in charge of VPN connections. Here’s what Apple’s man pages have to say about it:

racoon is used to setup and maintain an IPSec tunnel or transport channel, between two devices, over which network traffic is conveyed securely. This security is made possible by cryptographic keys and operations on both devices. racoon relies on a standardized network protocol (IKE) to automatically negotiate and manage the cryptographic keys (e.g. security associations) that are necessary for the IPSec tunnel or transport channel to function. racoon speaks the IKE (ISAKMP/Oakley) key management protocol, to establish security associations with other hosts. The SPD (Security Policy Database) in the kernel usually triggers racoon. racoon usually sends all informational messages, warnings and error messages to syslogd(8) with the facility LOG_DAEMON and the priority LOG_INFO. Debugging messages are sent with the priority LOG_DEBUG. You should configure syslog.conf(5) appropriately to see these messages.

In a nutshell, Racoon gets borked. Sometimes this means that the racoon process needs to be restarted, but in my experience 99% of the time it means that it’s not actually running.

So, you can restart racoon from the terminal like so:

sudo /usr/sbin/racoon

I’ve also found that sometimes you need to restart the various networking interfaces you’re using. Because of this, I ended up writing a shell script I call fixnetwork.sh:

sudo ifconfig en0 down
sudo ifconfig en1 down
sudo ifconfig en0 up
sudo ifconfig en1 up
sudo /usr/sbin/racoon

I put this in my home directory, set it to be executable, and can run it like so:

~/fixnetwork.sh

Works like a charm for me. No more reboots to fix borked VPN connections! Productivity, here I come!

I’ve had a thought niggling at the back of my mind for a while now.  I feel like our current form of government in the US is badly broken.  I have an idea that, for lack of a better term, could be described as an alternative system of governance.  Perhaps this sounds crazy, and maybe it is, but I figured it couldn’t hurt to throw it out to the world and see what people thought about it.

This idea comes from my own personal perspective on the US government, how it functions, it’s shortcomings, and where it seems to get things right.  There’s a good chance that my opinion and perspective lays well outside of the mainstream.  I should also state for the record that I truly admire and respect how my country has led the world towards greater freedom and I think there’s room for improvement.

My thesis for this article is that representative democracy is failing US citizens.

How do I see representative government failing us?  Here are some of the ways I personally see the government failing us:

  • There is too much money in politics.  A few rich people can, with relative ease, swing an election in their favor and buy favors from politicians.
  • Representatives are not consistently well informed about the issues on which they are voting.
  • Lobbyists have undue and unproportional influence over politicians.
  • Representatives cannot fairly represent all of their constituants.  In particular, those who voted for the “other person” are under represented.
  • The political parties gain unfair advantages by gerrymandering and otherwise manipulating the system.
  • Two parties – or any number of political parties – can not effectively represent the full range of political opinions held by citizens.
  • We are stuck with a two-party political system with few realistic alternate parties to choose from.
  • The government does not trust its citizens and spies on them.
  • The government is not completely transparent and keeps secrets that it does not need to.
  • We have a complex and unfair tax system.

Many citizens do not trust government to make decisions or implement programs effectively or efficiently.  I can’t speak for citizens of other countries, but I suspect that many of them also feel similarly about their government.

So, what can be done about this?

The classic answer to this question is that we could get involved and try harder to elect people (or ourselves) who will beter represent us in government with the hope that it brings about positive change.  I believe that almost all (if not all) politicians enter politics for this reason.  I don’t think many people enter public service just for the power and privilege.  However, it’s impossible for an individual to represent any more than their own opinions.  Elections are simply a tool by which the citizenry, as much as possible, try to select the least offensive candidate from a very small pool of options.  And, the longer a person holds a position of power and influence, the harder it is for them to not to be corrupted.

Additionally, citizens of non-democratically elected governments have even fewer options to change their system of government.  This is one of the primary reasons the US government has worked so tirelessly over the decades to try to bring democracy to the whole world.  Unfortunately, this effort has had mixed results.  Many countries resent the arrogance of the US and its citizens, others are outright hostile to us.

So, again, what can be done about this?

When life in the colonies became unbearable, our US forefathers declared independence from England.  The Declaration of Independence states that a government’s power comes from its people and that it’s primary role is to protect its people’s inalienable rights.  Furthermore, it says that if a government should fail its responsibilities that the people have a right to abolish that government and establish a new one.

To be clear, I am not at all proposing that the US or any other country or people should abolish their government.  However, perhaps it’s time to consider experimenting with new forms of government and new forms of countries?

Historically, countries have been united by the land they are founded on.  Countries have clearly defined borders  in the physical world.  All people within these borders must obey the laws of that country.  But, the modern age has, through invention of the internet, world wide communication networks, telephones, overnight mail delivery, easy and inexpensive travel, and many other modern conveniences, opened us up to an alternative which may not have been feasible in the past.

What if a country’s jurisdiction were not based upon its physical location on this planet, but merely on a social contract among its citizens?  What if all citizens of this new form of country were beholden to following its laws, no matter where they were physically located?  Furthermore, what if every citizen of this country had an equal say in the laws that are formed?

I would like to paint for you a hypothetical form of government:

Imagine, if you would, that a population of people decided to come together and use modern tools such as the internet to establish a new, virtual, country.  This new country would not have any physical borders and would not have a claim to any physical territory.

This new virtual country would establish its own government.  The structure of the government and its laws would be defined in a set of legal documents.  The very first draft of these documents would define the basic underlying structure and function of the new government.  For example, it would define the following:

  • How is the government structured?
  • What is the definition of citizenship and how do people become citizens?
  • What rights do citizens have?
  • What rights does the government have?
  • and much more…

These documents would be entered into a distributed version tracking system, thereby constituting the government.  The most recent “trunk” version of these documents would be law.  This new government would coexist with, but always be secondary to, the whatever the local government is in the physical world.

Any citizen of this new virtual country would be permitted to make their own personal copies of these legal documents and to revise them as they see fit.  If the citizen so wished, they could submit revisions of these documents back to the government for consideration.

Durring the consideration period, all citizens of the country would be encouraged to review and debate the proposed changes and to cast a vote on whether the changes should be approved or rejected.  If approved, the changes would be applied and the laws of the country would be changed.

Anyone in the world who wished to do so would be permitted to become a citizen of this new virtual country and would be able to gain the benefits of citizenship.  Citizens of this new country would essentially have dual citizenship in their physical country as well as in this new virtual country.  All citizen of this new country would be obliged to follow the laws enacted by this new country, so long as they don’t conflict with the laws of the physical country where the person is located, or risk losing their citizenship.

So, what we’ve established is a country that is directly under the rule of its people.  Changes to government and law can be proposed by and voted on by any citizen.  This country’s laws are always secondary to the laws of the country where the person physically is located.  Citizens of this new country must always obey the laws for their physical country as well as the laws of their virtual country.  When in conflict, local laws will always supersede.

I imagine that eventually, this new virtual government might levy taxes, establish a judicial system, establish its own currency, and provide services to its citizens including health care, social safety nets, roads, and anything else that its citizens wish to have their government do.  Of course, this all depends on what laws the citizens of the country enact and how well they collectively manage it.

I even envision a future where corporations and businesses could be formed within the framework of this government.  These businesses would likely exist in parallel with businesses in the physical world.  But, these businesses would be beholden to the laws of the new country.  This might be useful, for example, if this new government does offer health care for its citizens.  Perhaps only medical providers who are citizens and who have also registered their business entity with the new government would be eligible to provide services paid for by this government.  And, when this happens, they are now beholden to the laws of these people.

Furthermore, if the people do form their own currency, and banks are formed to hold this currency, or perhaps banks in the physical world decide to accept deposits in this currency, then they may need to follow the laws of this country.

Instead of having a prison system to punish criminals, perhaps we have an excommunication system where the convicted criminal loses their citizenship and associated benefits for a period of time?  For less serious crimes perhaps the government would collect fines?

I also imagine that the citizens of this country may work to define subsets of the over-arching virtual country.  This could be considered states or provinces or counties or cities or whatever.  Each of these subsets would define their own rules and may in fact actually be tied to physical boundaries in the real world.  Citizens of the over-arching virtual country would be beholden to local variations of laws, though the none of these laws could override the base laws of the country.

This would be similar to how the united states is divided into states, counties, cities, etc, each with their own laws, none of which supersede it’s parent government.

Perhaps some day in the far, far, distant future some physical countries may elect to dissolve their governments and to live exclusively under this new form of government?  It could happen!

I personally feel like the overall structure of our world-wide society is beginning to change.  While technology creates new efficiencies and new jobs, it also seeks to save labor and eliminate jobs.  Labor and the ability to earn money is the foundation of our world economy.  In the very long run, as technology evolves, I believe almost automation will replace almost all workers and dramatically transform the nature of our economy.

How will society cope with these drastic, foundational, changes to the world and economy?  If history is any guide, it will be through violence, war, and suffering.  Perhaps this hypothetical form of government I am proposing could somehow be used to mitigate the impact of this?  Perhaps the people of this virtual country can come together to find new ways of structuring our society and our social contracts to protect its citizens?

What do you think?

Dear Gameloft support,

My good friend Jessamy Green-Husted recently emailed Gameloft about an accidental purchase her pre-school aged son made in the game Oregon Settler. The in app purchase price was $50, which is no small amount of money. She did not approve this purchase and did not want this purchase to be made.

I understand that she wrote this support email address (support@gameloft.com) about the issue and requested that the purchase be refunded. She corresponded with Lyudmila Granovskaya who rejected her request.

I am happy to say that I have not yet had the misfortune of buying any of Gameloft’s games. And, since this is apparently how you treat your customers, I am greatly relieved.

I thought Gameloft should know that Jessamy had posted on Facebook how much she was enjoying this game before this issue. So, where I previously had a positive attitude about Gameloft and their games, I now have a rather bluntly negative attitude.

I hope Gameloft chooses to resolve this issue for Jessamy. Wouldn’t that be a nice story for her and her friends to share on Facebook and Twitter?

In the meantime I will be posting a copy of this email publicly on my website, Facebook, and Twitter this as well.

Doug Hughes
doug@doughughes.net

I’ve ranted and raved on this blog previously about how having ADD can make it hard to actually accomplish anything that’s not strictly necessary.  It’s also no secret that I have entrepreneurial aspirations, but I’ve had a really hard time successfully executing on them.

I have also been known to avoid doing other things that I should, like cleaning, laundry, etc.  Unless it’s a responsibility, like keeping the kids, cats, and chickens alive or doing work I’m contractually obliged to do, it’s rare that I willingly do it.  Trust me, my grass needs mowing like you wouldn’t believe, and I’m just not very likely to actually do it.  As far as I’m concerned, laundry is for schmucks who care if their shirts are wrinkled.

While drugs have helped me, they’re not a panacea.  They can give me the extra wind behind me that helps make things like lawn mowing a tenable idea.  However, I still have to decide what to do at any given moment, and that’s where I fall down.

It turns out that ADD is an impairment of working memory.  Working memory is essentially the memory associated with goals and task execution.  The net effect of this (I once worked for a company called the NetEffect) is that it can be really hard to remember why I’m doing something.  Essentially, every time I decide what to do I have a different perspective on the world and therefore my decision making process changes.  This is why I could work for two or three months on a personal project and then switch to something new and exciting as soon as the first project becomes something less than thrilling.

There’s a ton of frustration, self flagellation, and guilt that goes along with this.  I really, really, want to get beyond these roadblocks!

My psychiatrist recommended that I create a flow chart of my decision making process that I could hang on the wall.  The purpose of this is to keep all the little variables that play into what I could be doing visible and harder to forget.  I tried making this flow chart and got pretty much nowhere.  However, after a little more consultation, she helped me come up with another approach.

What I’ve done is break things that I can or need to do down into categories.  For me these categories (currently) are:

  • Family Responsibilities
  • Chores
  • Recreation
  • Personal Projects (Not Committed)
  • Entrepreneurship (Committed)
  • Contracting Work

These are categories of things that I need or want to do.  For example, a family responsibility might be to take a kid to the doctor.  Recreation is anything I enjoy.  Etc, etc.  There’s also a seventh category of On Hold, which where my personal projects go to die (but now with permission).

For each of these categories I’ve created a list of categories of my life that they relate to, general notes about them, examples of these types of things, best time of day to do them, best moods to do them in, and ways to convince myself to do them.

My goal is to take this document and use it to help keep in focus what I’m working towards and what’s really important to me.  I assume this will morph over time as I learn better how to use it.  Heck, maybe I actually can make that flow chart now that I have so much information about each category easily accessible.

For those of you who might find it useful, here’s the final document I created (click for a larger version):

This is my table of stuff to do, when to do it, and more.

Who knew life could be so complicated?

So… what do you think?  Would this work for you?  Any bets on this being useful for me?

Tag Cloud