Samsung T5 SSD

Nov 29, 2019

SSD prices have come down significantly. Of course, when we look back in 5 years we will laugh at what we thought was a good price in 2019 and that is great. But for right now let’s take this opportunity to celebrate the fact that you can get 1TB of SSD storage for 140 dollars and I am sure if you shop around it can be found even lower.

Samsung Drive

The Samsung T5 SSD has been super helpful for me over the last week as I have set up my shiny new 16” MacBook Pro. I know Migration Assistant is great for some people, but I like to start fresh when I get a new computer every 4 years or so. That requires me to move around large amounts of files I don’t want stored in the cloud.

In theory, you could get the Samsung X5 SSD which has read and write speeds 3 times faster. But unless you are using it a lot, I don’t think you can justify 400 dollars for the same amount of space.

California vs. The United States?

Sep 12, 2019

California is drastically underrepresented in the US Government due to the systemic over representation of rural states in the Senate. North Dakota has the same number of senators as California. Which means for every person a Senator in North Dakota represents, a Senator in California represents more than 50. In order to combat this, California thinks that passing state laws will inspire other progressive states to pass similar laws normalizing progressive ideas. Over the last 15 years we have seen this happen with Marijuana and auto emissions. In a perfect world, the US Government would be more in-step with what the majority of her citizens want, but here we are.

In that vein, California’s state government passed and signed Assembly Bill 5 this week. It changes the rules of who can be considered an independent contractor. It adds an ABC test as follows:

  • A: that the worker is free from direction and control in connection with the performance of work;
  • B: that the worker performs work outside the “usual course” of the hiring entity’s business; and
  • C: that the worker is customarily engaged in an “independently established trade, occupation, or business of the same nature as that inviting the work performed”

Everyone knows the intended targets of this legislation are Uber and Lyft (and all the other gig companies). I worked for Taxi Magic, a company that was trying to color inside the lines and play nice with existing ground transportation companies. I only say that to establish my bona fides when I try to point out some of the flaws of this bill.

The gig economy has forever shaken up the status quo on the backs of people who are willing to work for less than minimum wage. When I think about this change, it is easy to ignore individual workers and make sweeping generalizations. People who are willing to be exploited, knowingly or otherwise, don’t do it because they have a lot of options. They believe they are making a rational choice. I fully support the role of government to step in and stop people from being exploited. The problem is, this law doesn’t just affect people working for gig economy companies.

If you look at the B test it conclusively excludes staff augmentation. Staff augmentation is where a company hires a freelancer on a weekly or monthly basis to be a part of their team because they are unsure how much capacity they need or they have a hard deadline they can’t meet without short-term help. I can only speak to the engineering field and my own experiences, but people who are hired based in this manner are not being exploited in a way the government can help. One can normally charge a fair market rate that pays as well or better than if you were full time. You are billing enough to afford health care. However, due to the nature of staff augmentation, you are literally doing the same thing as the rest of the team.

This happening in California means we are in for a super stupid proposition fight. California’s Constitution allows citizens to put a measure on the ballot to override the legislature. There are a number of pros and cons of this type of direct democracy that we don’t have time to discuss today. If I had to use a Facebook relationship status I would say “It’s complicated”. Uber, Lyft and Door Dash have already vowed to put 30 million dollars each toward passing a proposition to override this bill. So, I guess subscribe to ad-free youtube if you live in California?

The bill itself is a bandage on top of a broken employment system. I support California trying to protect workers, but this bill sweeps up too many people not being harmed. I am not a lawyer or policy maker so I don’t know how I would amend B exactly, but in its current form, it is too broad. Maybe adding an exclusion for people whose rates are X times the minimum wage would target people who are need protecting?

Hiring a Software Consultant

Apr 26, 2018

I have been building custom software for close to 20 years now, 14 of those years have been in a consulting role. For the last 8 of those years I have been running my own company, most recently Red Rectangle.

This is fairly obviously but, there are a few of different reasons you might want to hire a person to help you build custom software:

  • You have a specific problem that doesn’t seem to be addressed by existing software.
  • You already have software that isn’t meeting your needs.
  • Your existing team either doesn’t have enough capacity or doesn’t have a specific skill set needed in the short term.
  • You believe you have a better solution to a problem and can make money off it.

The first thing I would advise is to search the internet again, because the number of problems already solved is much higher than most people realize. There is a reason why lots of multi-million dollar companies are basically managed off an Excel spreadsheet or two.

Normally there comes a time in almost all companies where it makes financial sense to have custom software. Whether, competition comes in that is cheaper or labor becomes more and more expensive.

When is it time?

Ultimately, the decision gets made when a product owner believes they can save money with an upfront capital investment. I don’t think it will come as a surprise to anyone when I say, the main motivation is to do more with less resources. The most common resource in this case is employees.

Talking about automating work and doing more with less people is obviously a touchy subject. This is because people initially think about layoffs and the rich getting richer. But depending on the type of company the people whose jobs are getting automated, are generally not automated fully. This gives employers opportunities to retrain and reassign employees that already have some understanding of their business. This can be a big win for employees, because the most repetitive and tedious tasks are automated first.

Another big reason to automate tasks is for consistency and quality. If you have a task that is very tedious, humans tend to make mistakes more often than if it is difficult. This is because we tend to underestimate easy tasks and overestimate hard tasks. The brain is setup to put more energy into difficult tasks. These tasks also tend to be the easiest, this makes repetitive tasks an especially good target for automation.

What is it like working with a consultant?

For some people this is going to be super obvious. Start by asking friends or family if they have any experience hiring someone to help them. In my experience, you might have to go to friends of friends to find someone with relevant advice. Ask all your questions no matter how dumb or irrelevant you think they are.

This gives you some vocabulary you might not know and also helps exercise that part of your brain. Building software requires thinking systemically. You might know what your pain point is, but sometimes the steps before your pain point can be easier to fix and provide 80% of the value.

Go into any talks with a software consultant with an open mind. The best consultants will ask questions about your business that seem very obvious to you. That is ok, they might be checking assumptions, or helping themselves build a mental model of your business. Before a line of code is written or a screen is wireframed, everyone has to understand and agree what the current process is.

Try to do less. Software can always be made more complex in the future; solving evermore complicated problems. But in my experience, software is frequently over complicated before a better solution to a problem can be discovered. Then what happens is the current piece of overcomplicated software is slowly morphed into a system that more closely resembles the ideal solution. The biggest downside to this approach is wasted time and money.

How do I find a good consultant?

If only a little tongue-in-cheek, I would suggest you already found one (me). But more seriously, make sure you talk to a few people and to make sure it isn’t all smoke and mirrors and you have a good grasp on the process.

You should expect that any person you are going to work with is going to be evaluating you as well. Beyond the usual time and budget considerations. You need to consider other characteristics such as likability and temperament. If you are the type of person who likes to work with someone who is very direct then say that. Setting expectations early is the key to a good relationship.

I have personally never used any of the freelance websites such as upwork,, etc. There would be noway for me to comment on them. But I would only suggest using these sites for very small projects with easy to define specifications. They probably have their place for people who know what they are doing, but are a bad fit for building long-term relationships on both sides (consultant and business owner).

How much should I pay?

I know this is the main question every client has. There is a constant cost benefit analysis that takes place to decide both, how much software to build and whether or not to build any software. Sometimes the right answer is to not build a product.

I am not going to write down specific prices because I want this article to be evergreen. There are basically 2 different ways to structure payment for services.

  1. Money for software
  2. Ownership for software

Money for software

Fixed bid

This means the consultant and product owner agree on a price and scope before getting started. This is a good fit for well understood small projects. I usually don’t structure projects on fixed bid. This is because you have to have a very good understanding of what is getting built before the project starts.

A big down side to fixed bid contracts is change requests. When the product owner’s understanding of a project changes and a change to what the project does is needed, a new statement of work is needed that changes the original scope with the new budget. As a consultant, I usually make these additive. So any changes are in addition to the original scope, even if the project owner is removing features from the original.

One way fixed bid contracts can work is if the consultant already has a software product that solves most of the product owner’s problems. A fixed bid statement of work can be written that covers the customization needed for the business needs. But this essentially fits my definition of a small project.

Time and Materials

Time and materials generally means paying per hour, day, week, month, etc. You get what you pay for and generally have flexibility to change at anytime. I always push people in this direction first, this is because I have never done a project where the scope didn’t change significantly in the middle. Also, as apposed to fixed bid, developers don’t have to apply some multiplier on this. When I worked for consulting firms, they would ask us how long it would take then multiply that number by 2 or 3 depending on how bad each individual developer was at estimating.

Ownership for software

I personally have a lot less experience with this so I would caution anyone entering this type of agreement to do a lot of due diligence.

Percent of Profits / Stock

The most common approach I see is a business person says, I will give you X% of my profits / revenue / company. Sounds great on paper. Both sides share the risk and reward. The trouble is from the consultant’s side, if you took a stake in a lot of companies, consider the tax complications you are looking at. I already pay my accountant a substantial amount of money every year (money well spent). I assume taking a stake in a company would complicate that.

Co-licensing software

This is a less common approach. The idea is that custom software is written for a business at a discounted rate. In exchange for the discounted rate the software developer receives the opportunity to reuse the code for an internal product or another client. This usually comes with a clause that the consultant won’t compete directly with the product owner.

This is a good approach if the product owner isn’t trying to make a product for resale. For instance, I can imagine a dentist office needing some very specific integration between a piece of equipment and their billing system. The dentist just wants to automate some tedious task, but the consultant could potentially resell the same solution to 100 dentist offices for very little work after the initial project.

Venture backed companies will never take this approach, especially with small consultancies. This is because even if the product the venture company is making fails, the VC can always sell the intellectual property to try to claw back some of the money.


To sum it up; make sure you are solving the right problem, at the right time, with the right people. Focus on the easiest things first to get quick wins and to build a rapport with your team. Product owners and consultants will have a good outcome if they try to understand the tradeoffs and risks of the other party. But, it can end up falling into patterns and ruts like any relationship. Like any great relationship, the most important aspect is communication.

Musings on ARM Macs

Apr 12, 2018

Recently, respected Apple pundit, Jason Snell published an article on Macworld summarizing Apple’s previous two chip transitions from Motorola 6800 to PowerPC and then from PowerPC to Intel. The history part of the article is really good. And I think the punditry part is probably right in the very long run.

This was all in response to an article in Bloomberg about Apple designing its own chips for the mac. On Upgrade this week Jason and Myke had a pretty in depth discussion about the future of the mac and “eventually they will just switch everyone to iOS?”

When is eventually?

The thing I would really push back on is the timeline. Even 5 years seems too short to pull off this transition. Transitioning an operating system will never be as fast as transitioning the processor. The operating system is by definition a level (or 10) of abstraction from the chip. Apple can and does hide underlying differences from users, third-party developers and most of their own developers. When an operating system is slowly changing they have the opportunity to control how long they maintain compatibility before forcing developers and users to comply. A change as big as the OS forces everyone to deal with it and will never happen quickly or be mandatory. In Jason’s defense, he did say something like, “by the time this happens it won’t matter.” I definitely agree with that.

The last time Apple changed the operating system on the mac they were basically irrelevant in computing and macOS 9 was so inferior to the competition in most ways that it was mandatory to do something drastic. Right now I just don’t see the pressure or benefit of doing something drastic.

Web developers

Another one of Jason’s points was that web developers are too small of a userbase to make decisions about which chip to use for the underlying OS. I would question that assertion a bit. If the numbers were so low I don’t think there would be 3+ companies (plus docker) making software for virtual machines for the mac.

I do not have the numbers and I am not going to search for them, but I am going to bet, that whatever percent of the userbase web developers account for does not reflect the amount of revenue the company brings in on the Mac. For example, if web developers account for <1% of users, they probably still account for 2% of the revenue / profit. Of course, that is still all a rounding error on their quarterly numbers.

Server-side web developers are not the only people virtualizing x86. Some people still test on Internet Explorer. For a long time Microsoft Office wasn’t good enough on mac, so people would run Windows for Excel. I am sure there are lot of people buying macs that still want Windows.

A Dell in Apple

I think it is fairly widely accepted that Apple’s biggest weak spot is services. Which guess what? They all run on intel. That is not changing anytime soon. There are too many layers of infrastructure built up over the decades based on x86. The best server developers will not want to run the same architecture on their machines as their servers. It removes one level of abstraction, allowing them to write better software, faster.

I have a hard time seeing Apple allow a Windows / Linux laptop to be used inside their own HQ for development. Even if you could find server developers who were willing to work without native virtualization, you are putting them at a competitive disadvantage by doing so. It isn’t the reason most people work at Apple, but working on a computer produced by the company you work for is a bonus that very few developers get to have.

A reason they won’t give up intel any time soon is vanity. I think they secretly love that all throughout Google, Facebook, Amazon, Netflix, etc there are shiny macs on the desks of lots of developers. Those companies don’t care what type of computers their developers use, they care that they can ship code. As soon as their developer stop asking for macs, there will be no more shiny macs on desks. Because any other platform will be cheaper for these companies.

Well actually

If you wanted to bring iOS to the laptop and desktop, it would probably be easier to make iOS run on intel. Trivial is the wrong word, but I don’t think it would be crazy given that iOS is already running in the simulator, not emulator for development. This is something you occasionally have to deal with when writing iOS apps and testing on the simulator.

Though I don’t see any reason to do that unless they make iOS drastically more powerful. Not in terms of processing, but in terms of features. Without the ability to virtualize another OS in the background there would be almost no reason to bring out a real iOS device on intel.


I will start taking this transition seriously when Xcode works and more critically is good on iOS. The former is obviously going to happen. I expect that in one of the next couple WWDCs they will announce Xcode on the iPad Pro, but I assume that it will take 2 or more years before it is usable for anything but the most trivial use cases.

The thing about developing code is you need to be able to have full access to your system. I just don’t see Apple changing iOS to allow that. Having access to run a local server while developing a mobile client and running a man-in-the-middle proxy to inspect your network traffic just doesn’t seem like something that is likely to change soon. (Though shoutout to Charles Proxy coming to iOS)

The best scenario

From my perspective the best scenario is probably to release the 12 inch MacBook on ARM. All the other Macs could start to get more and more ARM chips in them for background processing. Eventually the ARM chip could be the primary with an x86 coprocessor for things that don’t transition over. I am not a hardware expert so I don’t know how hard this is. Though I imagine it will be difficult coordinating two different architectures drawing to the same screen, but I think it is solvable.

The vast majority of computers sold are portable. This means that the carrot would presumably be customers pressuring third-party developers to be better citizens when the battery menu shames them. I would propose that over the course of 5 years you remove your x86 processor from the lower lines and herd all the “pro” customers to higher and higher end computers. Let’s be honest Apple loves driving up the average selling price on their devices. When you start herding developers will get the signal and try to figure it out how to move to ARM.

If Apple refuses to make computers that developers can use, they might as well make the transition now. I don’t know a lot of developers that are happy with Apple at the moment. Apple has been putting out wildly overpriced lackluster mac hardware for the last 2 years, it does its job, but barely.

Not an App

May 05, 2017

Look in any direction and you will see that automation is changing the face of employment, whether it be factory robotics or tax preparation. Blue collar workers and white collar workers alike need to start preparing for the future. But recently, Century 21 recently put up a commercial so out of touch with reality.

Basically, they are trying to point out how awesome it is that they have real people. 🙄

This has been coming for a long time with real estate agents. According to an academic article from 2013, titled “THE FUTURE OF EMPLOYMENT: HOW SUSCEPTIBLE ARE JOBS TO COMPUTERISATION?”, real estate agents have a 86% chance of losing their job to automation. Other parts of the real estate process are even higher. I am not writing this with any emotion, be that anger, sadness, greif, and definitely not glee. This automation is coming, because it is too lucrative not to. It is best to prepare for the inevitable future rather than fight it.

Century 21 is in a very difficult position. If they try to start pivoting their company to focus more on automation, they risk their best agents getting angry and leaving in the short term. Since, most agents get (or used to get) work by word of mouth, the specific agency they work for is largely irrelevant.

Realogy (the company that owns Centry21), has thousands of employees and a trove of great data. I assume they have someone leading the charge to automate much of the work that real estate agents currently do. They are one of the best positioned companies and if they don’t automate … well you know what I think.

Back to the commercial seemingly made from another universe. Since Realogy is so big, I assume they give Century 21 a big enough budget to keep the wheels on while they try to figure out what is next. Or they might have no idea what they are doing. 😉

Live Podcasts - Good Idea?

Oct 25, 2016

Last night I went to a live podcast of Criminal at Jammin Java in Vienna, VA. It is a true crime podcast, hosted by Phoebe Judge. Before the show started I intentionally didn’t learn anything about what the show might be like, that is the way I consume entertainment. If I would have guessed what the show would have been like, I would have guessed one long story that would be impossible to tell without showing lots of videos and pictures, and maybe a Q&A at the end. What I got instead was six normal/short stories that were not that different from the show.

The fact that it was so similar to the regular show is mostly good because I love the show. The stories were engaging, funny and interesting. But the real reason you might go to this live broadcast of Criminal is to watch Phoebe read, in her perfect NPR voice, and Lauren Spohrer pull the strings and mix the audio in realtime.

The problem is that podcasts are generally a passive activity. So, sitting in a room with a bunch of other super fans listening to something that I normally hear while walking or doing the dishes, fundamentally changes the experience. I don’t think live podcasts are a bad idea overall and I am happy to have supported Criminal (a great show, seriously just go subscribe!) Mostly, I think they are not a good fit for me and in the future I will only attend non-scripted live podcasts¹, like FiveThirtyEight panel style podcasts.

¹As a small asside, I have purchased and watched live episodes of This American Life and Radiolab, but those are much bigger productions and go way beyond what I would consider a podcast.

How Tesla Will Change The World

Nov 20, 2015

Some websites are life-changing. I don’t know why I have never heard of “Wait But Why” before. Now that I have, it has completely consumed me. To see smart & funny writing, written for smart people in a smart way is delightful.

The post I want to talk about is about Tesla on the surface, but it is really about energy, climate change, and cars. It is not a post that can be read in one sitting and it is not a post that can be skimmed through. It requires thinking. It may even lead you to have a conversation about it with actual people. I read this post weeks ago and I still find myself frequently thinking about it.

Here is an excerpt I liked:

We use “the food chain” as a cute euphemism for this murder/theft cycle, and we use the word “eating” to refer to “stealing someone else’s joules and also murdering them too.” A “predator” is a dick who always seems to want your joules over everyone else’s, and “prey” is just some sniveling nerd you particularly like to bully and steal lunch money from. Plants are the only innocent ones who actually follow the Golden Rule, but that’s just because they have the privilege of having the sun as their sugar daddy—and humans are the biosphere’s upsetting mafia boss who just takes what he wants from anyone he wants, whenever he wants. It’s not a great system, but it works.

I said life-changing, which sounds like a cliché. When I read this post, I had just sold my car and hadn’t purchased a new one. It probably made sense for me to get a car, but I decided to tough it out for a couple years to see how the electric market turns out. As a side note I think that no matter what type of car I buy, it will likely be my last car (as cities will be fundamentally transformed by self-driving cars).

The Relative Value Of Software

Nov 09, 2015

Apple is my default platform. I earn my living building iOS apps for clients. I have been using Apple exclusively for over a decade. You could say that they are my favorite computing platform. But lately, their actions have made me consider diversifying my skills.

Since the arrival of the App Store over the past 7 years people have been constantly devaluing software. This is not surprising since the App Store has lowered the barrier to distribution. For apps that don’t require a server, there is no additional cost to distributing an app. Since there is no cost associated, it is completely rational to solve for the greatest $ where:

C = Number of customers
P = Price of the app

C * P = $

The graph of that formula is different for each app, but you can imagine more people will buy it at 1.99 than 9.99. If there are more than 5 times more people at 1.99 it is logical to lower the price from a purely financial point of view. There are other non monetary reasons that go into app pricing, but we won’t get into those now.

But when the price goes to 0, there is no number of customers that can “make up for it in volume.” You either need to make money on it indirectly or not make money on it. Indirect ways of making money include, hardware sales, advertisements, selling the user’s data or selling an upgrade. I am intentionally not talking about services that are supported by an app or apps that sell things, because those are not dependent on the app store for monetizing.

Apple themselves has done this with most of their software, including their operation system upgrades. This is great for developers building apps for those devices, but it sets an expectation with consumers that software is cheap, even complicated software. You frequently hear customers say, “I never pay for apps.” That is a completely rational thing to say. If you try an app and it is good enough most of the time, you would never pay for an app.

On the flip side of the coin, you hear developers saying, “It is cheeper than a cup of coffee. You buy coffee and don’t think about it.” The real question they are asking is, “why do you value software the way you do?”. There are a couple reasons why developers think software is worth more than non developers. Obviously, they built it, so they know how much effort it takes and they value their time more than customers do. The other reason is a developer’s definition of good enough is going to be much higher than a customer’s definition. A typical developer sees ads and only sees the wasted screen space, bandwith, battery and user attention. A typical user just ignores the ads and never thinks about it again.

Apps have to be at least 1 of 3 things to make any money:

  • Very good
  • Very lucky
  • Justifiable for work

Even better they are more 2 of those or more.

Based on all of this, I have sadly come to the conclusion that building an app and selling it is not a very good use of my time. The question becomes, what is a better use of my time?

Don't Panic

Feb 05, 2015

In a recent AMA, Bill Gates was asked:

Mr Gates, Do you feel that we are facing an overpopulation problem on this planet? If so, what do you think needs to be done about it?

He gave a short answer, stating that as people become more healthy they choose to have fewer children. To back this up he referred to the work of Hans Rosling from Gapminder. At times I found his style a bit odd. That didn’t detract from how amazing it was at tying together so many topics that seem big and hard to fix.

Over population, extreme poverty, birth rate, infant mortality, climate change, education, access to healthcare, and ignorance of the west are all interconnected in this video. The basic gist is that since birth rates are falling the population will begin growing much more slowly in the near future. He outlines a number of reasons why birth rates are falling like education, lower infant mortality rates and a general cultural shift in poor countries.

I am not sure about everything being as cut and dry as he makes it. You really should watch the whole video and judge for yourself.

Be Promiscuous

Aug 20, 2014

A friend of mine decided it was time to move on from his current long-term job. We were chatting about what he was going to do next. He wasn’t exactly asking me for advice, but I was giving it to him anyway :) It felt weird because he has done many more things than I have, worked for huge companies, small companies, consulted, etc. Still, it seemed he was unsure of what he should do next. The best advice I could come up with was “Be Promiscuous.”

When you don’t know what you want in life, the best thing to do is try a bunch of things quickly. In our society, promiscuity gets a bad rap. I think, as time goes on the stigma associated with promiscuity decreases. Our grandparents picked a company and stuck with them. Back then, you didn’t experiment - you were a company man and, as such, you were rewarded for that loyalty.

Times change. In most cases you are rewarded for jumping between companies. Constantly proving yourself over and over. By far the best way to get a raise or more responsibility is to find a new job. When an employer sees someone that has been successful again and again, their confidence increases. Crazily, they don’t reward the people who stick with them long term. I assume they do a calculation in their head about how likely a person is to leave vs how much it would cost to insure the person stays. When employers think in aggregate about talent retention, they tend to undervalue individuals. Everyone understands that people come and go. Employers know that getting 12 months of a successful engineer’s time is better than getting 4 years from someone who can merely keep their job.

Similar to life, the best time in a career to experiment is when you are younger. You need to figure out what you actually want to do with your life. Do you crave solving hard problems? Or is making people’s lives easier more important to you? Maybe an easy job, so you can take care of your family is best for you. You should experiment with the tools you use and the domains you work in. You should try anything you think you might like, and only change when you are bored, unhappy or generally feel stuck. When you make a change, at least have a vague understanding of how the change helps you accomplish one of your goals. If your change isn’t working for you, start over at square one.

Even if you are not young you should feel free to experiment with your career. It can seem like there is risk in switching jobs, but think how easy it is to get a new job with the skills you already know. Now consider how much easier it will be to find a job with the new skills you will learn. There is a saying, “the best time to plant a tree is 20 years ago, but the second to best time to plant one is now.”

I used to worry that switching jobs so often would reflect poorly on me in interviews. However, no one has ever asked me why I switched jobs so often, but it might be because I usually stay at least a year in a position. That is how long it takes me to get bored. Sometimes I stayed longer, if I was interested. Ultimately as I advance in my career, I value the feeling of change above all. Contracting was the perfect fit for that, you get to work with a team for awhile, learn from them, and when they don’t need you anymore you get to move on; no hard feelings.

I may end up taking a full time job again some day. I may end up starting a company and cursing all my employees who leave with their “institutional knowledge.” But ultimately doing my best work depends on me being motivated and happy. Until then, promiscuity awaits.