How an Ancient Philosophy Problem Explains Software Dependence| www.pathsensitive.com
Lessons on code quality start in the first few weeks of learning to program, when a newcomer to the field is taught the basics of variable naming and told why programming languages have comments. They continue in countless blog posts and in every debate on a pull request.| Path-Sensitive
The title of this post should be in double quotes, but it seems parts of Google have not learned about abstracting sanitization. Screenshots of bug here.As systems grow, they become more complex, overwhelming the mind. And yet we humans have a trick to build objects of far greater power than could be understood by any one person. That trick is modularity: the ability to create something out of parts which exist independently yet combine into a far greater whole.| Path-Sensitive
Software engineers are continuously improving in ways deep and shallow. The easiest things — surface knowledge like how to use git bisect or how to file an expense report — can be taught by straightforward practice or even by post-it notes. The hardest things — the assertiveness to say no, and the confidence to admit when you don't know — are foundational changes thought to require years of reinforcement.| Path-Sensitive
In my day job, I work with programs that write, analyze, and transform other programs. You can't do this unless you have some special insight into how programs work. Much of my night job is finding these insights and making them accessible to non-specialist programmers. A few months ago, I spent a week in St. Louis, where I gave my first industry conference talk, at Strange Loop on this topic, as well as my first academic conference talk at ICFP: Capturing the Future by Replaying the Past.| Path-Sensitive
Update 3/20/2019: Previous versions of this post used the terminology Level 1/Level 2/Level 3 and "Level 3 bug" a lot. I'm diminishing this ...| www.pathsensitive.com
As you’re working day-to-day, every so often it’s nice to take a step back and improve things.| www.pathsensitive.com
The Benjamin Franklin Method of Reading Programming Books| www.pathsensitive.com
The Practice is not the Performance: Why project-based learning fails| www.pathsensitive.com
As you’re working day-to-day, every so often it’s nice to take a step back and improve things.| www.pathsensitive.com
As you’re working day-to-day, every so often it’s nice to take a step back and improve things.| Path-Sensitive
You’re a line programmer for EvilCorp, and it’s just an average day working on some code to collapse the economy.| Path-Sensitive
There’s a ubiquitous piece of startup advice: “Sell painkillers, not vitamins.” With painkillers, the story goes, you fix something that’s been bothering the customer immediately. With vitamins, all you have to offer is some vague future wellness benefit. Through this lens, a lot of product ideas are bad businesses because they are vitamins. But is it true?| Path-Sensitive
Resume-writing is a game.| Path-Sensitive
As a high schooler in the 70’s, my father enjoyed playing the Star Trek game written for the Sigma 7 mainframe. You play as the Enterprise surrounded by Klingon ships, and to shoot them down you have to look at a grid and figure out which angle (in degrees) to fire at.| Path-Sensitive
Update 6/14/21: Now available in Chinese.| Path-Sensitive
I’m currently taking my 5-person advanced coaching group on a month-long study of objects. It turns out that, even though things called “objects” are ubiquitous in modern programming languages, true objects are quite different from the popular understanding, and it requires quite a bit of theory to understand how to recognize true objects and when they are useful. As our lessons take this theoretical turn, one asks me “what difference will this make?”| Path-Sensitive
The C++ STL may be the most impressive achievement in language standard libraries. Where most programmers are stuck complaining that their language’s default strings aren’t performant enough, about every standard C++ function for strings actually runs on arbitrary character sequences. Design your own container? std::find_if works just as well as for the built-ins. And it does this while often being more performant than the code you’d write yourself.| Path-Sensitive
A few months ago, I sat down with Adam Gordon-Bell of CoRecursive to share my thoughts on software design and self-improvement.| Path-Sensitive
Update 12/31/2019: I have also written a guest post on this topic for PL Perspectives, with fewer details but more applications.| Path-Sensitive
I want to make something clear: I am not, and have never been, an advocate for formal verification of production systems. Sometimes people think I am because I talk about ideas from that space, but my perspective has always been to use knowledge about how machines reason about code to better understand how humans reason about code. There’s a small core of people pushing the technology, and a smaller core pushing for using it today, but anyone who works near that space has watched adopters g...| Path-Sensitive
A few weeks ago, I sat down with Steve Krouse of Future of Coding. Steve is a thinker who left full-time work many moons ago to pursue his dream of making programming better. His podcast is full of interviews with people who are doing something to try to change the way we write code.| Path-Sensitive
Last night, I encountered an old post by Zach Holman where he pushes the idea that traditional school-based CS is useless; project-based learning is the way to go. I’ve heard this idea repeatedly over the last 10 years, and know at least one person who’s started an education company with that premise.| Path-Sensitive
Let’s face it, programming books suck. Those general books on distributed systems or data science or whatever can be tomes for a lifetime, b...| www.pathsensitive.com
Update Oct 30, 2022 : Professor Daniel Jackson wrote a response to some of the criticism this post experienced on Hacker News. This po...| www.pathsensitive.com
Big up-front planning phases are out. Rapid iteration is in. With all this movement towards agile, it’s increasingly tempting to throw ou...| www.pathsensitive.com
Programming seems to become more about memorization every day, with advocates pushing for memorizing lists of design patterns and refactorin...| www.pathsensitive.com
One of my coaching clients was designing a program, and came to me with a data-modeling question. The program was for making interactive sto...| www.pathsensitive.com
I’m trying to read all the good writing about software design. This is very easy because not very much has been written: it turns out that i...| www.pathsensitive.com
“Interfaces are abstractions” — Olaf Thielke , the "Code Coach" “Interfaces are not abstractions” — Mark Seeman , author of Code that Fit...| www.pathsensitive.com