I am running for the House of Representatives in the Massachusetts 06 District ! From the outside, Congress might look like a wild change from being a Senior Staff Engineer writing healthcare software. For me, it feels like the next step. I always put my energy where I see the most urgent problems. That has taken me into jobs. It took me out of others. I went deep into optimizing computer vision…
I have been finding it challenging to put my thoughts about code reviews into a linear format. I've realized that it is because code reviews are a part of the broader and context-specific work of engineering a productive software development process. Rather than talk about code reviews on their own, today I'm going to try something different: I'm going to talk about a specific heuristic you can…
Thinking about why aesthetic feedback on code is so valuable led me to the question of why the feedback techniques we have for procedural code don't work well for Architecture. There have been many attempts to lint architecture decisions, or write unit tests for them, or create frameworks people can plug together like libraries, or create prescriptivist languages, and I have yet to see any of…
Student loan forgiveness demonstrates why participating in primary elections is fantastic. This wasn't Biden's priority and it didn't come from his base. If it hadn't been for the primary, this wouldn't have happened yesterday. It was one of Warren's priorities. The bill that made student loan debt unable to be discharged in bankruptcy is what got her into politics in the first place, and…
A rebellion is brewing. Ideas like post-commit reviews or even a return to cowboy coding are gaining traction over the unpleasant & unproductive experience that is the bug-hunt code review. This is unfortunate, because code reviews are one of the delightful parts of our profession. They let us shape and revel in the things we build together. They let us be confident in our work, and demolish…
Wired magazine published an article about why Musk’s Plan to Reveal The Twitter Algorithm Won’t Solve Anything . Several of my non-programmer friends were interested in this, and we started chatting. Because the idea itself is obviously shockingly out of left field, I discovered this was a perfect opportunity to explain the properties of Coupling & Cohesion and why they matter. Coupling & cohesion…
As many colleges move online, I realize I have a somewhat-unique experience: I shameless ripped off the pedagogy from my small liberal arts professors and have spent the last decade+ applying it at distributed tech companies. I've facilitated video conversations with anywhere from three to fifty participants, both in the course of my work, as part of reading groups for specific texts, on social…
When using Rails routing I came across an odd bug: a URL query parameter was breaking the route. A URL query parameter without a period? Everything works fine. A URL query parameter with a period? 404. I eventually found the answer in an off-hand comment in a random blog post, and traced it back to the code. So that next time I remember what is going on, I figured I'd throw the explanation up…
Two and a half years ago I joined LTSE, with the goal of changing the incentives companies face to prioritize short-term profits over everything else. In May, the SEC approved the creation of the Long Term Stock Exchange , making us one of only a handful of venues authorized to list publicly traded companies. When this milestone happened I discovered that I still have an internalized voice that…
When building transformative experiences for our users, we begin by identifying the emotion that motivates their engagement. We then imagine how we want them to feel when we have provided for their need. Finally, we are left to build something that we think can successfully transform the first into the second. The only way to actually know if such a design works for a sufficient audience to…
I was having a conversation with some people about languages to use to teach programmers. I am not a teacher and it has been my impression that language choice matters a lot less than pedagogy when creating good programmers comfortable with all of the possible tools of software development. That said, I still have opinions and here are the things I look for in an intro language: * Some things…
Imposter syndrome is often presented as a personal failing. A lack of confidence, our wrong-headed beliefs not matching the reality of how competent we are, or worst of a flaw of our gender. Just tell yourself you are wrong! Imagine everyone else is just like you! Have confidence in all parts of yourself except that part that tells you not to have confidence! Unsurprisingly, these interventions…
Someone I worked with had asked for recommendations when I noted the speaking lineup of a conference he was attending was exclusively men, and I figured I'd share the letter I came up with in case it is useful to others: While I attended $CONFERENCE_NAME last weekend, I was disappointed to notice the oversights in your speaker line up leading to it being made up of nothing but men. Perhaps your…
I am dyslexic, and these are my experiences. They certainly won’t be universal, especially as there isn’t just one form of dyslexia [0]. To identify my strain of dyslexia, I read quite quickly (though only somewhat accurately) through pure pattern-recognition. I can look at, say, "word" and identify that the second letter is an ‘o’, but if I want to understand it as a concept I ignore the letters…
Someone somewhere, of course, was mocking Gender Studies majors for taking an easy course because they couldn't hack liberal arts. I made the point that the Gender Studies classes I took were significantly more difficult than my computer science classes. Someone then asked me why I thought that was, and I came up with an answer: Read more »
Evolution isn't about "good" or "bad". It is simply a word for a specific emergent process. It describes all the things that happened that led to the current state of affairs. Sometimes they happened for reasons, under specific and identifiable pressures, but other times just by accident. It gets way over-simplified, especially by people looking for answers, since evolution is bad at providing…
My Usenix talk this year uses various books I've drawn on for inspiration as backgrounds for my slides. The goal of this was to share some of the broader world beyond what we usually look to as computer scientists. Some of these books are accessible, while others are extremely dense. I recommend picking things up and putting them down if they don't speak to you. It's all about what is useful,…
I'm doing a workshop on putting together computers in two hours, and rather than do hand outs I figured I'd toss the links up on my blog. When buying components for a computer, I usually read: Ars Technica If you are buying the components for a machine, they do systems guilds that are a useful report on the state-of-the-art each December-ish. The one for 2012 is available here:…
The difference between Architecture and Code blurs quickly when refactoring becomes sufficiently common, so the distinction made between various pattern languages never seemed especially helpful to me. Between Architecture and Service the line is firmer: this code is mine, that code is yours, here is the interface. At the same time, I've found that the design patterns that work when I'm writing…
A summary from YodasEvilTwin on Slashdot: "The internet is dominated by sexist men, which discourages women from getting involved in related fields." I add a bunch more caveats, references and empirical data, but that is a good summary of how I interpret the evidence. Introduction There is currently a responsibility-dodging contest between industry and academia over who is to blame for the…
Scott McCloud, in Understanding Comics, uses a simple image to explain how people employ assumptions when reading comics: I may have drawn an axe being raised in this example, but I'm not the one who let it drop or decided how hard the blow or who screamed or why. That, dear reader, was your special crime, each of you committing it in your own style. I argue that the same is true when reading…
First, there is the question of “what is a Service?” W3C defines a web service as: “ a software system designed to support interoperable machine-to-machine interaction over a network.” [1] They go on to specify some specific technologies mandated by this particular standard and the role a service plays: “The purpose of a Web service is to provide some functionality on behalf of its owner -- a…
Now that Google has broken integrated Google Reader with Google+, I was looking for a replacement that would let me use my daily reading of feeds the way I always had: as a way to share long-form content with other folks who specifically wanted to read the long-form content I shared this way (opt-in broadcast). Google+ defeats the purpose: I like my RSS feed and my friends' shared items…
“Economics is basically about incentives and interaction — or, as Schelling put it , micromotives and macrobehavior. You try to think about what people will do in certain circumstances, and you try to understand how individual behavior adds up to an overall result.” – Paul Krugman The economics of open source software has generally been approached from the perspective of “why would people do this…
In a recent CMake project I was setting up, I wanted users to be able to choose one of several possible libraries at project generation, to make performance comparisons easy on multiple platforms. This is easy enough to do with a configuration parameter, but since the libraries available were a limited set offering the available options seemed better. I discovered that in the CMake GUI it is…
For those of you that write code, what term do you prefer? Programmer? Engineer? Developer? Something else? Dharmesh Shah asked this question Twitt er yesterday , and I did a quick compilation of the public responses. For the answers with more than one vote I include the total votes and also a score. About a third of responces used some form of, “I like X, but sometimes I use Y”, and instead of…
Metaphor has a pernicious effect. It encourages people to take anecdotes as proof, effective rhetoric as useful advice and to accept only ideas which fit their preconceptions. Metaphors are better at conveying values than specific, practical advice. They can obscure the areas of ignorance and uncertainty where evidence should be collected and lead us to believe we understand things we don't.…
Quantum Computers are transistor computers, except all at once. All things are true, false and unknown, until they are observed. Answers are only opinions, but infinite opinions approach truth arbitrarily closely. A race against entropy; how much can you calculate in the blink of an eye? Even that is too long to be certain. Useful quantum computation is a compromise between reality and everything…
The sorts of things that are likely to pop up here. This list is as much a reminder to me as it is a teaser for things to come: 1. Discussion of and updates on my independent projects 1.a. A GUI Matlab xUnit unit testing tool 1.b. Educational webapp games that don't reload the entire page any time you click a letter 2. Metaphors of software development: an on-going series 2.a. Interviews with…