bliki: Strangler Fig
Inspired by the strangler figs in Australia, a strangler fig application gradually draws behavior out of its host legacy application
Topics /
The most popular blog posts about software engineering on Hacker News. 14,545 posts.
Inspired by the strangler figs in Australia, a strangler fig application gradually draws behavior out of its host legacy application
In 1991, I was working at Lucid Inc., and our newest product, Energize, was an integrated development environment for C and C++ on Unix. The design of this development environment involved very tight integration between the various tools: compilers, linkers, debuggers, graphers, and editors. So of course we needed a…
This means that while hardware computing horsepower increases at roughly 60%/year, compiler optimizations contribute only 4%. Basically, compiler optimization work makes only marginal contributions.
Slides and video from my talk "Domain Modeling Made Functional with the F# Type System"
Ok, so here's where I tell all about how I (now we) got to be tied for third place on the netflix prize . And I don't mean a sordid tale of computing in the jungle, but rather the actual math and methods. So yes, after reading this post, you too should be able to rank in the top ten or so.
You’ll find your components much easier to reuse and reason about if you divide them into two categories.
A common problem I see in object-oriented design is: A wizard is a kind of player. A warrior is a kind of player. A staff is a kind of weapon. A sword is a kind of weapon. A player has a weapon. Bu…
I've written previously about the problem recursive descent parsers have with expressions, especially when the language has multiple levels of operator precedence.
This is an essential truth of async in its purest form: There is no thread.
It's everywhere . Sometimes they tell you to ignore certificates as well (looking at you, Salt). That's dumb.
I couldn't remember every UUID so I wrote them all down
The Modus themes for Emacs meet the highest accessibility standard for colour contrast. This is their official manual.
Find and mark the next part of the buffer matching the currently active region, while also keeping the current region. Get it here .
This post is a more carefully thought out and peer reviewed version of a floating-point comparison article I wrote many years ago. This one gives solid advice and some surprising observations about…
"If it hurts - do it more often". Good advice if the amount of pain raises exponentially with the time between actions, such as for integrating software.
A frequently emphasized advantage of XML is the availability of plenty tools to analyse, transform and selectively extract data out of XML documents. XPath is one of these powerful tools.
I love regular expressions. No, I’m not sure you understand: I really love regular expressions. You may find it a little odd that a hack who grew up using a language with the ain’t keyword would fall so head over heels in love with something as obtuse and
Craft is a demo running on its own minimalistic demo platform. The demo platform is based on an ATmega88 microcontroller.
What goes on behind the magical macros in the C protothreads library? Why are they macros? How do the macros work? Read on for the explanation.
Have you heard of the Bitcoin Lightning Network? It is a proposal that claims that:
Numerous claims about Judy's performance are made in the Judy whitepaper . I don't think any of those claims are wrong. However, it does not appear that sufficient effort was put in benchmarking Judy against other data structures. Now, it is unlikely there is another data structure that is both as fast and as small as…
As we’ve discussed, in Batman Begins 1960s-style full employment and antipoverty programs lead to skyrocketing crime while in The Dark Knight Rises 1980s-style tough-on-crime policies and neoliberal economics lead to a revolt of the economic underclass. The films are mirror images, one about the failure of liberal…
This post evaluates the programming languages ATS, C#, Go, Haskell, OCaml, Python and Rust to try to decide which would be the best language in which …
This page collects resources about implementing regular expression search efficiently.
The ‘Unix philosophy’ originated with Ken Thompson's early meditations on how to design a small but capable operating system with a clean service interface. It grew as the Unix culture learned things about how to get maximum leverage out of Thompson's design. It absorbed lessons from many sources along the way.
A lot of people remarked that in my post on Tail Recursion Elimination I confused tail self-recursion with other tail calls, which proper T...
Use urandom. That is the whole answer. Why the entropy-depletion story is a myth, and why userspace CSPRNGs are behind most of the last decade's randomness disasters.
May 2002 "We were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp." - Guy Steele, co-author of the Java spec In the software business there is an ongoing struggle between the pointy-headed academics, and another equally formidable force, the pointy-haired bosses. Everyone knows who…
Google’s Chris DiBona emailed me this morning to tell me that unless I removed a specific line from the license of my jsmin-php project (a PHP port of Douglas Crockford’s JSMin ), Google Code would no longer host the project.