Until recently, I was extremely skeptical of cryptocurrency in general. In the midst of the investment speculation and mania in late 2013, when the price of Bitcoin first climbed to $500-$800, it smelled too much like digital Beanie Babies for my blood. So whatever interest I had in learning about the technology and its disruptive potential was buried underneath multiple layers of speculation sediment.
Two things piqued my interest, however: 1) I attended a Bitcoin meetup in Santa Monica and heard more about it and 2) the Jamacian bobsled team raised money to attend the Winter Olympics with a huge amount of support from Dogecoin.
The MarkedUp Analytics team had some fun over the past couple of weeks sharing horror stories about software atrocities and the real-life inspirations for the things you read on The Daily WTF. In particular, we talked about bad apples who joined our development teams over the years and proceeded to ruin the things we love with poor judgment, bad habits, bad attitudes, and a whole lot of other bizarre behavior that would take industrial pyschologists thousands of years to document, let alone analyze.
So I present you with the taxonomy of terrible software developers, the ecosystem of software critters and creatures who add a whole new meaning to the concept of “defensive programming.”
At one point or another, every programmer exists as at least one of these archetypes – the good ones see these bad habits in themselves and work to fix them over time. The bad ones…...
I’ve been doing a moderate amount of native Win32 C++ programming over the past few weeks, and occasionally I’ve needed to set up some debug points to print errors that occur during file and memory I/O.
When something goes wrong inside the Win32 API, some methods will return a system error code directly (such as all of the registry methods) and others will simple return a NULL pointer or a 0-length DWORD and require you to poll the GetLastError method yourself.
Unfortunately, these error codes are just long integers (DWORDs) and don’t contain any of that human-friendly information that I’m used to for .NET exceptions.
I created a Gist on Github that shows how we do it and have also included the code below:
This post is about how to find success in any situation and draws entirely from my own experiences. Your mileage may vary.
July was a rough month for me this year – I endured simultaneous failure on all fronts. I had put on a shitload of weight, ended a relationship, and market conditions changed unfavorably for MarkedUp. All of this occurred within a couple of weeks at the tail end of the month.
I am well-accustomed to stress and handle it well. I’ve had things not go my way before, and I’ve always found my footing again.
This time something was different. Maybe it’s because of how deeply invested I am in MarkedUp or because of everything going wrong at once, I don’t know. But the difference this time I walked away with a major dent in my self-confidence and self-sureness. That’s a new one.
I wasn’t even...
It was about four or five years ago that I had an intrinsic need to be “right” all the time.
I couldn’t let it go when someone made a mistake, or slighted me, or disputed the quality / direction of my work. Everyone else was wrong. I wasn’t alone in this regard either: a number of the people around me did the same thing.
Being right made me feel superior; it made me feel better than the idiot who did that thing wrong; it made me feel moral; it made me feel righteous.
When someone made a mistake, I felt compelled to point it out – even if it meant interrupting a speaker’s presentation during a team meeting. People started spending a lot more time perfecting their talking points and PowerPoints – time that should have probably been spent on something that actually impacted the bottom line for...
Our engineering team has been neck-deep in configuration hell lately. Editing 2000-line Solr configuration files, trying to get Apache Oozie integrated into DataStax Enterprise, Cassandra 1.2 upgrades, and more – and the one thing in common with all of these tasks is the prevalence of enormous XML configuration files.
Having wasted countless hours trying to use tools like SCP and various Sublime Text plugins to try to edit (or hell, even view) the configuration files on our dozens of Linux machines, I finally had a “fuck this shit” moment this week and wrote instant-fileserver, a stand-alone file server that you can start using a single command on any directory on any operating system.
instant-fileserver (ifs) allows you to:
I spoke at the Cassandra Summit this year about how we use Cassandra, Hive, and Solr in production at MarkedUp Analytics.
Planet Cassandra recently made all of the videos and slides available and I thought I would share. Enjoy!
This post is about stress.
It's been nearly a year since I started MarkedUp Analytics, and we've come a long way - I've raised money, won the business of some amazing customers, built the nucleus of a really talented team, and developed a product that people rave about. At the previous //BUILD conference, no one had ever heard of us - this time our logo was shown onstage during a keynote. Feels like progress; none of it was easy.
I took my first vacation in two years last week and had a chance to put some distance between myself and MarkedUp for the first time since inception, and I thought a lot about some of the assumptions I had about starting a company when I was just getting started, in particular this section from "The Seven Unproductive Habits of Startup Founders:"
MarkedUp Analytics’s customers are developers and so are most of the people who work at the company, so I spend a lot of time thinking about and refining my answers to the following two questions:
- What are the lowest common denominator skills and programming knowledge that my customers have?
- What are the lowest common denominator skills and traits that the developers on my team need to have in order to best serve our customers?
- As I’ve been exposed to more customers and as I’ve turned over members of our team[footnote: developer turnover is a natural and expected byproduct of growth in a technology company, I’ve come to learn. Don’t let anyone tell you otherwise.] I’ve started refining my answers to these questions.
- Turns out that most of our customers are fairly sophisticated and thus I expect the developers on our team to be...
I was really surprised with the positive reception 10 Reasons Why You’re Failing to Realize Your Potential as a Developer received after it got picked up on Hacker News and a few other places. One theme that became immediately clear to me in some of the feedback in the comments and in much of the feedback that was emailed to me privately was that there are a decent number of developers out there who recognize that they can do better, but don't know how to do anything about it.
As an autodidactic learner, I probably take the ability to teach myself things for granted - but I recognize that's not the case for every developer.
It can be really difficult to wrap your arms around a new programming skill when you have to learn it on your own without any outside help from an instructor or teacher, and my goal...