Tag: programming

TileStack

HyperCard is back. Now to find those old disks…

The good news for fans of HyperCard is that once we realized the similarities between what we were doing and what HyperCard had done, we decided to embrace the connection 100%. As a result, we’ve set out to have TileStack support and be compatible with HyperCard in as many ways as possible. That’s why we took the time to build an importer that can convert your old HyperCard stacks into TileStacks, and why, when it’s feasible, we model features of TileStack around the concepts found in HyperCard.

2022-04-22: TileStack didn’t last, but the Internet archive now has emulated stacks. I certainly remember the funky clip art in one of them.

Commit Policies

Policies implement the intent of the salmon run. By placing unrestrictive policies to the left, I can checkpoint my work frequently. By placing restrictive policies on the right, I can maintain the stability of releases. And by incrementing the restrictiveness of these policies in small steps, I reduce the backlog of code that is “trapped” towards the left. Compare this to a centralized VCS, in which (since there’s no local repository), developers may keep changes out of VCS for hours or days (since the alternative is making a central branch, which is expensive to create and expensive to tear down). Or compare to a DVCS system without an index, where the overhead of either making and tearing down branches, or of pruning temporary commits, can discourage a developer from making a checkpoint every minute or 2. (At least they discourage me, even though these operations are far less expensive than with centralized VCS.)

i like the notion of having chained stores with increasingly higher bars between them. pretty obvious between head and release branch, less so between working dir and head

Git Workflow

Here’s my path to enlightment, and how I ended up using the index in my particular workflow. There are other workflows, but this one is mine. What this isn’t: a Git tutorial. It doesn’t tell you how to set up git, or use it. I don’t cover branches, or merging, or tags, or blobs. There are dozens of really great articles about Git on the web; here are some. What’s here are just some pictures that aren’t about branches or blobs, that I wished I’d been able to look at 6 months ago when I was trying to figure this stuff out; I still haven’t seen them elsewhere, so here they are now.

i hope we move to git soon. perforce is getting on my nerves.

Mondrian Open Sourced

Guido van Rossum, creator of Python and Google employee, has released a version of the internal Google code-checking tool Mondrian via the Python mailing list. The new app is called Code Review and was built with almost all new code on the Django framework. Code Review uses a lot of the same concepts and infrastructure that Mondrian does including Big Table.

so awesome. mondrian makes a huge difference for code reviews.

Donald Knuth Interview

You are one of the fathers of the open-source revolution, even if you aren’t widely heralded as such. You previously have stated that you released TeX as open source because of the problem of proprietary implementations at the time, and to invite corrections to the code—both of which are key drivers for open-source projects today. Have you been surprised by the success of open source since that time? Donald Knuth: The success of open source code is perhaps the only thing in the computer field that hasn’t surprised me during the past several decades. But it still hasn’t reached its full potential; I believe that open-source programs will begin to be completely dominant as the economy moves more and more from products towards services, and as more and more volunteers arise to improve the code.

interesting as always

Regarding The Art of Computer Programming, it’s such a fascinating project. As I was researching I realized that you started it before either of my parents were even born. When you’re considering a project of that scope, how do you go about outlining and organizing and planning?

Well the best thing is to be a very bad estimator of how much time it’s going to take. At one point I thought I would have it done before my son was born; he was born in 1965. If I had known how much work it was going to be, I would have been pretty stupid to have started because here we are almost 60 years later and I’m basically a little more than half done.

Paper Bugzilla

“I don’t know what you’re talking about, I definitely, absolutely updated it,” a coworker insisted. “I have no idea why you’re not seeing the updates. Are you sure you’re looking in the right folder?”

Eventually, Byron asked his colleague to walk him through the process of updating an issue. “Great timing, I just did a checkin. Let’s go.” Let’s go? Byron thought.

Byron’s coworker led him to a storage room lined with file cabinets. After flipping through a few folders, he found what he was after and started writing on it. While Bugzilla has a pretty impressive feature list, sadly “reading and scanning physical sheets of paper in a file cabinet to update issues” isn’t one of them.

updating bugzilla on paper. the same jokers also keep using fax machines

Search Engines are Hard

When you look at all these steps and all the complications, this process is rife with things that go can wrong. The hardest part about writing a search engine is that you’re going to process billions of URLS and serve millions, if not billions, of queries. This does not leave a lot of room for error. 1 super-linear algorithm applied over the wrong-sized list of items and you are sunk. 1 lock inside another lock and you are sunk. There will be no code paths not explored. All of those comments in your code, which print out errors like “This will never happen,” will happen. When you think that you are done, there is still the load balancing, the caching, the DNS servers, the ad service, the image servers, the update architecture, and (to take off on a familiar tune) a cartridge in a tape drive.

Gold Linker

When I switched to using gold as the linker, I was at first a little surprised to find that it actually works at all. This isn’t especially common for a complicated program that’s just been committed to a source tree. Better yet, it’s as fast as Ian claims: my app now links in 2.6 seconds, almost 5.4 times faster than with the old binutils linker!

the new google-developed gcc linker. 5x faster, you are welcome. even those clowns on the thread who can’t get over the fact that it is in C++. when did lwn turn into /.?