MAMP
Transactional memory
Reflection
If you want to be rich: Don't build what you want, build what they want.
If you want to be a happy geek: Build what you want but don't try to sell it.
If you want to be rich, stop doing research and start schmoozing with the rich.
If you want to be happy, stop caring about the rich and start doing research.
New disk
Bisection bug search
Disk failures
The drive was getting terribly hot, so I took it out of the 3.5" drive slot to get some more free-air cooling. Problems went away long enough to recover all partitions with a couple of restarts (and many hours of patience). Thank you Knoppix and rsync, for being there when I needed you.
As it so happens today a big new external HD arrived (Maxtor OneTouch III), so I have been busy making full backups of all the main machines around here. No fun, but I guess I got away with the occasional when-I-think-of-it full backup style I've been doing for years now. It's not the work lost that I fear (I really do backup my active files a lot), but the amount of time it takes to restore a well-running system after serious hardware failures. Copying these big disks takes forever.
The failing IBM Deskstar 120 Gb drive worked for about 5 years without a hitch, so it really did well. Luckily, there's a spare 80 Gb around here which can take its place - but it sure takes a lot of time to shove those gigs around and get all the settings just right again!
Functional Programming
More articles by the same author are here. I can't figure out who the author is, other than... By day I'm a Java developer at a mid-size Wall Street firm.
Flip the coordinates
How mis-guided.
In Fortran, collections of structs were often simulated by allocating arrays for each element, and indexing across multiple arrays to access struct fields. Somehow, we seem to have forgotten about the performance benefits that can give. I'll be even bolder and state that we're squandering huge amounts of performance by insisting on placing all fields of an object in adjacent memory slots.
Maybe one day others will see the light and figure out what Metakit and Vlerq are all about...
Update: See a related paper by Steve Johnson. Thx Andreas Kupries for the reference.
Free as in beer
I can only quote a good friend on this: You get what you pay for.
For me, this does not mean that I won't answer questions or support others - on the contrary - but that it is my choice to do so, not any sort of obligation.
Tcl/Tk Conference
A trend?
A somewhat disturbing trend is that each next step is taking longer to complete... oh, well.
VoodooPad
Unopinionated software
Dynamic languages
Papers, archived
Wouldn't it be nice is some standard browser emerged, so that we don't end up with a huge mix of supplier-specific reader software? The current situation is a bit like having a different reader application for every web site...
Data transformation
Brne
Wee.. so maybe there are some more lost souls chasing the same dream on this planet after all! Wonderful, I need to get in touch with that guy...
Update - more details.
Cohesion
Vlerq lives
I have completely rewritten the code as a C extension for Tcl, re-using many ideas and insights but also adding some new ones, and the result has shattered many of my prior assumptions. The new code is a fraction of MK's C++ code base, about 75% C and 25% Tcl, and it looks like it is turning into an incredibly good fit for Tcl.
The big surprise for me was the enormous simplification and speed increase which means Vlerq now outperforms MK's highly tuned code in many cases, often by a factor 2..3, and I confidently predict that this is not the end of it either.
Deconstructing databases
Features and bugs
Terminal Zen
Mac development
Quote
The last good thing written in C was Franz Schubert's Symphony Number 9. --Erwin Dieterich
;)
Scripting
Wouldn't it be nice if there were a place where the same problem, preferably a simple-to-understand-but-not-quite-trivial-one-to-solve, were coded in different languages and all collected somewhere?
Not as a shoot-out, but to help understand just what the different styles, formatting choices, standard libraries, and conventions are. Hey, let's call it a "sleep-in", to protest against language apartheid!
I'd really like this world to move on from "mono-lingual" language-centric communities ...
Lightweight is extinct
An easy way of checking whether your browser is standards compliant is to check whether the installation files for your browser were smaller than 50MB, or the run-time memory usage is less than 300MB. If this is the case, you should download a more recent browser to get the full Web 2.1 experience.
Pinch me, please (yes, I know it was meant as a joke).
Offline Wiki
Joel Spolsky
Globals
I'm referring to the fact that software increasingly depends on pieces spread all over my hard disk, with "configuration files" everywhere. Pick any non-trivial developer tool - the problem is not just that it's hard to get things working properly, but that any configuration change later may break things.
If that isn't global state (and the worst engineering approach ever!), then I don't know what is ... What a mess.
The big one
And today it did. I ran the marathon in Rotterdam! All 42 kilometers! In 5:15 - phew! Now I'm tired but very pleased with this moment, and seeing the preparations since July 2005 pay off.
Onwards, back to coding!!
Core Data
The interesting pieces are the very slick GUI tools to create a data model, to visually design the GUI, and the way to tie actions and code together. This seems to work with native data formats, SQL, and XML as storage engines.
A superb intro, though I'm not convinced that this is the way to go, ultimately.
Vlerq 1.0
A bit worried about the amount of work still remaining, but nevertheless: lots and lots of progress so far. One could say I'm halfway there.
Books, yummy
So here's the list that just arrived, in random order:
• Operating Systems (3rd ed: "The MINIX book"), by Tanenbaum & Woodhull
• Ajax in Action, by Crane & Pascarello
• Rapid Development, by Steve McConnell
• Data Crunching, by Greg Wilson
• The Seasoned Schemer, by Friedman & Felleisen
• Micro-ISV, by Bob Walsh
• The Mythical Man-month, by Frederick Brooks
• Practical Common Lisp, by Peter Seibel
• Joel on Software, by Joel Spolsky
• Code Complete, by Steve McConnell
Plenty to catch up on!
Keep it simple
"Complexity kills. It sucks the life out of developers, it makes products difficult to plan, build and test, it introduces security challenges and it causes end-user and administrator frustration." - Ray Ozzie, CTO, Microsoft
Yup. KISS.
No database
It sounds as silly as "no file system required, prefer raw disk blocks!" to me... What's next - no data structures required? no programming language required?
I s'pose the cause of this is the deployment hell involved in using any of the mainstream databases. Sensible objection, but wrong conclusion.
Paranoia
The fascinating issue here is how a welcome greeting turns out to have so few hints that non-geeks (that's the other 99.999% on this planet, remember?) may conclude it's some sort of threat...
Long runs
Native queries
A solid relational foundation inside a programming language (whichever one is used) still seems to be a long way off. I sure wish I had more answers ready.
Third Manifesto
Synergy
Product design
I'm the schmuck on the bottom left, btw...
Nested structures
Here's one I had not seen before: Data Shaping and Advanced Data Shaping.
I'm still not convinced that either SQL extensions or XPath-/XQuery-like solutions are the "right" way to deal with these concepts.
Alan Kay
When people react instantly, they're not thinking, they're doing a table lookup.
Not particularly relevant, but a neat quote nevertheless... Here's another one I wholeheartedly agree with:
Lisp is the most important idea in computer science.
The one thought I came away with after reading this was: thinking takes time.
osh
EvilC
W3 intro's
Column performance
Minimal LISP
Drat
So rsync then deleted hundreds of MB's from my webserver before I could hit CTRL/C ...
(Many hours later: all the data has been pushed back out through the ADSL uplink. Phew!)
Convergence
When I have time for it, am having way too much fun with Vlerq right now!
Email soup
The good news: Gmail automatically dropped some 98% of the spam. Plus another 75 daily auto-generated emails I always ignore, via a couple of filters.
I now re-route all jcw@... emails to google and then pick them up via POP. It looks like Gmail spam filtering is particularly effective - perhaps because they can detect the same email content arriving for many people and all coming from the same source, and then "undeliver" them as soon as a few people start tagging them as spam, which is very quick to do on their web UI.
Great, just a few emails a day. No distractions!
Impressive coding
Bug tracking
The base url is https://www.equi4.com/cgi-bin/cvstrac/?/ - replace ? with one of: critcl, metakit, oomk, sdx, tclkit, vlerq, or wikit.
Exceptions
If you're running under Windows XP, consider converting the exception into a null pointer dereference in the catch handler:
catch(...) { // now we're really stuffed int* p
= 0; *p = 22;
This has the advantage over an ordinary crash that you will get one of those special OS-supplied dialogs, that asks permission to send log details back to Microsoft. Naive users will interpret this as a Windows fault, and will direct their bile Redmondwards.
GTD + FMP = ActionTracker
The other tool I found was kGTD, which uses AppleScript to make OmniOutliner Pro perform the necessary steps. But this approach is doomed IMO: using a free-style outliner to move copies of information around is bound to stay brittle forever, whereas a database such as FMP can manage data in a perfectly relational structure and present numerous views on the same data using joins, selections, and ordering.
FMP is an incredibly well thought-out and mature system BTW, I'm surprised how little it seems to be appreciated and used.
Reading
- Machiavelli, a man misunderstood - by Michael White
- Getting Things DONE - by David Allen
- The Mathematical Century - by Piergiorgio Odifreddi
- Database System Implementation - by Garcia-Molina, Ullman, and Widom
- Lisp in Small Pieces - by Christian Queinnec
Ordered as a neat stack, smallest book on top. Somehow, I think this list forms a good overview...
Running
Lisp Universal Shell
If you do research and development in signal processing, image processing, machine learning, computer vision, bio-informatics, data mining, statistics, simulation, optimization, or artificial intelligence, and feel limited by Matlab and other existing tools, Lush is for you.