Why I Work From Home

To be honest, I had no idea this was going to happen, so I do not suppose that it would be fair to say that I chose to work from home for this specific reason, but things like this are a huge motivation.

This evening, my daughter picked out the melody of a song. As soon as she finished, she asked me to suggest a song she could do next. I could not think of anything. So instead, I suggested that she come up with chords for that song.

Five minutes later she had chords. Color me impressed. I have been playing with a new recording tool, so I recorded her playing it. I was thrilled to be there for a defining moment in my daughter’s development as a pianist.

How to apply for a remote technical job

Everybody wants to work from home (or the nearby workspace of their choice) and cut out those wasted hours of commute time. Governments and businesses should be encouraging this as well. It is better for the environment and for productivity. However, there are a few things slowing down the switch to an all-remote workforce. Today we are looking at the application process.

With a traditional application, recruiters can assess your writing skills and skim through a stack of paper you have provided. They can administer tests or challenges with little fear that you have someone else taking the test for you. They can evaluate how you handle tough situations and hold up under stress. Companies rely heavily on these because they work.

The remote application process is a little different. Many things that work in-person fail in a remote environment, but there are alternatives. A recruiter can potentially get a much deeper understanding of you and your skills much faster and find a position that is a better match than they ever could in a traditional process. That will only work, though, if you have provided all the information they need and made it easy to find.

Here are some things you can do to help recruiters get the information they need to make a good decision:

  • Keep all of your social media up to date and interlinked.
  • Pay attention to what you make public. Use PM’s when it makes sense.
  • Talk about lessons learned. Use a blog or public social media.
  • Journal your progress in learning new tech.
  • Participate in StackExchange, Quora or other forums.
  • Don’t be afraid to be wrong or ask noob questions. They show growth.
  • Dream out loud. Talk about the things you would like to build someday.
  • Talk about what is important to you: quality, speed, cost, learning, sustainability.
  • Share code snippets. Change file and variable names and other details that might impact security or an NDA if the code is not open-source.


Bring all of this together with a master list of links to everything about you.

  • Use deep links to multiple pages on the same site if necessary.
  • Never require more than two clicks away from the master list.
  • If a second click is required, the first click should lead to a page of just links about you.
    • A link to your gist.github.com/ is good.
    • A link to the project page for a project you built is good.
    • A link to a project you contributed a few tickets to is not helpful.
    • Link to the specific tickets you worked on or a list of just your contributions if the repo/bug-tracker site provides one.
  • Include links to the most significant projects first.
  • Include a 10-20 word description for each link explaining what it is and how it relates to you.
  • Link to this master about-you list from every place where people might land after searching for you online.

If you have other suggestions or questions, please comment. Comments are moderated, but I do read, release and reply to them.

Proposal for a Cryptocurrency to Support Open Source and Responsible Media.

This is rough-draft I will be developing over the next few weeks. Please comment or contact me with ideas to make this better, questions, links to similar projects, arguments against the whole idea, or anything else that might be useful.

One of the biggest blockers on the road to better software, better content and a better world is lack of funding for high-quality creative work. We could argue all day about micro- and macro-economics, politics, and philosophy but at the end of the day, it is hard to think creatively when you are hungry. So how do we fund the things that we all agree need to be done but that are not profitable on their own?

I would like to propose a new cryptocurrency specifically designed to fund solutions to big problems that neither business nor government is equipped to handle. The intent would be to purchase for the collective well-being of all people, the intellectual property of certain key technologies and information.

This could be done through the use of two different tokens, also known as coins. The first type of token is purchased and then donated to open-source projects, responsible media organizations, and any web-resource that the donator considers worthy of support. The second token type acts as proof of how much has been donated in the last year. Sites can then “pay-wall” content and downloads by requiring proof that a certain amount has been donated.

The second token would only be earned by donating the first token to a qualified receiver and is good for the current year. Sites would accept the previous year’s tokens as proof for the first two months of the new year giving everyone time to decide who to give their tokens to, or maybe we can come up with a method for a rolling year method. Either way, sites do not get paid per pageview, they receive donations based on how valuable they are to their audience. This reduces the incentive for click-bait and ads, but there is still an incentive to give because all of the “free” stuff on the web will require proof that you have supported the ecosystem.

So end-users donate to consumer services, but then those service providers can, in turn, donate part of what they receive to support the technologies that they rely on. So an API might require that a client has proof of giving amounts proportional to the amount they using the API in a way similar to commercial services, but instead of the donations directly funding a service, the donations can be distributed to the people that helped build the tech rather than to the people that currently own a particular patent.

There is obviously still a lot to work out, but what do you think? Is this the start of something that might actually be helpful?

Essentials First Deliverable

The term Minimum Viable Product MVP is great in an environment where you are building your own product and everyone is familiar with ship early, ship often agile processes. Plus it sounds like Most Valuable Player and who doesn’t want their product to be an MVP?

In many cases the acronym can be confusing though. Clients may want you to deliver their ideal for a most valuable product at the minimum viable product price and timeline.

Other clients may be put off by the word minimum. They may think that you are trying to get away with the least amount of work possible failing to realize the benefit of getting something out the door quickly.

Notice that in both cases, the challenges I am mentioning are related to external teams. For an internal team MVP might still be the best term. For teams that primarily work on client projects, however, I would like to propose a new term and see if I can get your help to iterate on it. Yup, I am taking an agile approach to term development.

This all started in a meeting with XWP (the best WordPress agency in the world), today. As I listened the word essential really jumped out. Based on that and several other concepts mentioned in the meeting I started to come up with a new name for the MVP concept. A name that hopefully will work better for client work.

So now it is your turn:
What do you think of the term Essentials First Deliverable?
What are your thoughts on the EFD acronym? (Wikipedia lists Enterprise Function Diagrams as a possible namespace conflict)
What other words could be used to better convey this concept?

How do we make tool building more profitable?

Background: We have a huge income disparity returning after a century of middle class success. One component of this disparity is that building a popular product (iPhone, self driving car, amazon.com, etc.) requires a lot of technical knowledge and skills. These skills only come naturally for a small percentage of the population. Normally that would be fine because they could do what they do best and everyone else could do everything else that needs to be done, but as we automate everything we are approaching a point where technical knowledge will be required to do anything.

We can try to teach tech to everyone, but right now the tools are so terrible that getting someone to the point where they can make something useful takes too long to be economically practical in the majority of cases.

If every tech genius focused on building better tools that could be used for creating products instead of building the products themselves, then anybody else could come up with an idea for a greener air-conditioner and design a prototype in a few weeks. I would love to build better tools myself, but fixing Linux, PHP and WordPress is not going to feed my family.

Question: How do we get the best and brightest in the tech world to focus exclusively on building tools when all the money is being made by makers of products. Is there a way to make tool building more profitable?

I am specifically looking for a business solution, not a government solution or grants. Extra bonus if your idea involves starting a business that will drive up demand for tech tools.

Comments copied from Stack Exchange

Really you could build a greener air-conditioner if you only had the right tools? Do you know the laws of thermodynamics? Do you know what a Carnot cycle is? You really think inventions are limited by tools? Eisenstein discovered the theory of relativity with a pen and pencil. Franklin discovered electricity with a kite, sting and a key. I want the best on brightened focused on stuff to make my life better. And there are LOTS of tool makers out there today. If you know how to fix Linux then you should have no problem feeding your family. – Frisbee yesterday

Let’s say that this was my field and I came up with an idea I wanted to test. In addition to being an expert in my field I would have to learn about 3d modeling, circuit boards, programming, etc. or learn to get funding and hire people just to get a prototype to test my idea. If I can buy an arduino, use a vr-gloves designed to manipulate 3d objects, and code in a language that doesn’t require hours just to setup a dev enviro, I might be able to do it on my own. The stuff that makes your life better gets built faster and more bright people are able to participate because of better tools. – Luke Gedeon yesterday

As for the kite and key or pencil and paper (I always assumed he used chalk but anyway), my point was that those days are fading, not that they never existed. Those were exciting times. And to some degree we can still do a lot of pure science with simple tools, but when it comes to applied sciences, things are getting downright complicated. And I do know how to fix linux, but it is going to take 10,000’s of hours to do it. How do I feed my family while building that? You said it was possible, please tell me how. That is what this question is all about. – Luke Gedeon yesterday

Oh, wow! I was totally not suggesting taxes. I was trying to say that I want business suggestions not government solutions. I will reword that. Yes, I am feeding my family quite well, but that is because I am building products not tools. I am surrounded by brilliant people whose products could turn out so much better if they had the tools that I could be building for them. Did you say raising capital for a better open-source OS, and a better programming language and IDE is simple? Please teach me how to do this. – Luke Gedeon yesterday

The fact of the matter is, there are people that spend all their time improving tools. Even outside of all the hours put into open source projects, think of for-profit tools like Visual Studio. Microsoft spends tons of money improving that. Additionally, there are lots of programs out there for non-technical people to gain domain knowledge. So what makes those not fulfill your target here? – Matthew Haugen♦ 22 hours ago

Intolerance No Longer Tolerated

We often speak of tolerance as if it were a virtue or a weakness. It is neither. It is a preference. If we choose not to tolerate certain things, actions, or people, we can expect to bring on ourselves some degree of intolerance as a result. If that is an acceptable result then it is a reasonable course of thought.

On the other hand, if we choose to be tolerant, we cannot expect by virtue of that attitude toward others to receive that same tolerance toward us or our views. On the contrary, we are likely to be despised by antagonists on all sides of us for our failure to join them. We might have to become quite tolerant of intolerance itself or seek shelter from the crossfire.

In either case, tolerance is not something we should or should not do. It is one of several equally legitimate ways to cope with the reality that humans have different preferences, beliefs and even convictions. Other solutions include separation or seclusion, persuasion and even coercion. None of which is a moral requirement. They are simply different ways to live.

Coercion, however, is not recommended except in the rare case where the highest of powers is in complete agreement with the nature and direction of that coercion. Since possession of that power is rare and agreement is seldom the case, we generally recommend one of the other options.

Those who believe tolerance is a moral imperative have most likely rejected separation and persuasion leaving a false dichotomy between coercion and tolerance. Then recognizing the dangers of coercion they are left with no option but to concede that intolerance is intolerable.

These are the saddest of all people. They feel compelled to coerce into seclusion those who have chosen persuasion, persuade into confrontation those who would choose seclusion, and alienate those who truly understand and practice tolerance.

Port WordPress from PHP to Swift

Note: This is still a draft. I will be editing it as I continue to discuss it with the community, and as I get time to fill in more details.

Apple is open-sourcing the super popular Swift programming language this year. With the language now available on Linux and probably windows shortly after that, it is only a matter of time before many projects written in flavors of C will be ported to Swift. Even PHP could eventually be written in Swift. But, why wait?

We could port the subset of PHP functions that WordPress plugins and themes use along with porting WordPress core. If we do it right, a simple script could convert plugin and theme code to (not-very-efficient) Swift code. Then as plugin authors learn Swift they can make there code more efficient by using native functionality instead of the interface functions we created for the transition.

There are probably nuances of how a ternary is treated that will make using a search and replace code conversion very difficult, but I wouldn’t it be awesome if it worked? I am quite literally thinking of creating a library of functions that allow running WordPress in Swift. After the conversion is done, we can continue developing WordPress in Swift and start taking advantage of its native capabilities.

Ok, your turn. Tear the idea apart, and I will update to make it more feasible.

Profile Update

Not being one to toot my own horn, I have never been much for profiles. However, I am frequently asked for a list of sites I have built or worked on, and so I figure having a place to keep track of them will be handy. Also, I am including screenshots because some have been subsequently redesigned (a site’s design should be updated every few years at least) and/or domains have changed.

Sites where I was responsible for both (re)design and development – frequently on a very tight budget:
http://www.ryanwellnitz.com/ (screenshot)
http://www.malawforum.com/ (screenshot)
http://the212resume.com/ (screenshot)
http://jackieshawministries.com/ (screenshot)
http://amcraft-asi.com/ (screenshot)

More recently, I have been working primarily on the backend code for existing sites and building new sites based on designs by someone else.
http://caroleannpenney.com/ (screenshot)
http://seoslides.com/ (screenshot)

Playing with CSS3 and overlapping borders

I needed a dotted border for a project I am working. No problem. Right?

border: dotted 3px #bbb;

Except that I needed to connect the dots. To do that I needed to overlay one border on top of another. The best way to do that right now is with :after positioned absolute.

.dash {
position: relative;
box-shadow: inset 0 0 0 1px #fff,
inset 0 0 1px 1px #000;

.dash:after {
content: '';
box-sizing: border-box;
width: 100%;
height: 100%;
left: 0px;
top: 0px;
position: absolute;
border: dotted 3px #bbb;

Notice that I used box-sizing: border-box; to get my border on the inside where I need it.

Worked out pretty nice. I also added:

border-left: 3px solid white;
border-right: 3px solid white;

Since I only needed the border on the top and bottom. I would have to get a bit more creative if I had a textured background.

A New Kind of Maze

While promoting our kickstarter project http://kck.st/MrV4Rz I decided to build a simple visualization of a 3d maze.

I have seen quite a few and (even after doing this) I still haven’t found one that I am happy with. The method I show below has the advantage of showing two levels at the same time. Somehow switching between layers and having the walls marked more clearly seems a little easier.

Here is the combined image. As you start in the top left and go from block to block you can cross over any gold lines but not any of the blue ones until you come to a gray box. When you get to a gray you can change layers and start crossing blue bars but not gold or you can stay on the same layer and just cross over the gray. Your goal is lower left where you can cross out of the maze on the gold level.

Screen Shot 2014-03-14 at 5.34.54 PM

To maybe make it a little easier I have included the two levels separately. The rules are still the same. The paths are just easier to see.

Screen Shot 2014-03-14 at 5.23.50 PM Screen Shot 2014-03-14 at 5.20.49 PM

I also experimented with having holes that you can pass through to the other layer and used the gray boxes as a solid floor. Essentially the inverse of the first example.

Screen Shot 2014-03-14 at 4.04.56 PM

Let me know if you have any ideas about how to make this easier to read.