The whole place looks like a beautiful sugar-coated village out of a fairy tale!
The difference being only that something of half a million lines of code needs to consist of a core/engine which makes it easy to write the rest in at least an order of magnitude less lines of code. Today's TLA for that approach is "DSL" - a concept which only few languages adequately support, IMO: Lisp/Scheme par excellence, along with FORTH and Tcl (and Ruby + Lua trying).
Is that the modern rendering of the phrase "when hell freezes over"?
Except it wasn't. The original specs were so wildly different from the end requirements that we ended up doing a lot more work (mostly paid for). Some major organizational changes as well. Anyway, 10 weeks later, this project is again finished - but this time it's for real, the final DVD image was frozen today.
Many interesting aspects, technically. A Windows + Mac product, of which both GUIs were developed separately, but with a common engine. A pleasant and respectful level of collaboration between the Win and Mac teams, with a willingness to adopt each other's choices, leading to two apps which clearly are native on each yet show a strong resemblance and commonality. One big reason IMO is the use of some strong visual cues, making it obvious that the apps are essentially the same thing (it's all about multi-lingual dictionaries, with a bunch of features aimed at professional translators). All sorts of interesting stuff on the side as well, such as internet-based licensing and automated software updates.
Many lessons also for me in how to carve up an app between developers, how to plan against a strict deadline, how to manage when you're not the manager, how to prepare and push through the final stages, and of course numerous lessons on mistakes to try and avoid next time around.
All in all, a project I'm very pleased with and proud of. Finishing is good.
Speaking of which... it's time to gently but decidedly return to that other project of mine.
The purple entries were automatically marked as spam and hence ignored. It's both encouraging and depressing - depending on how one looks at this...
APL - the terse language
C - the implementation language
Forth - the lowest high-level language
Java - the sellable language
Lisp - the malleable language
Lua - the RISC-like language
Perl - the TIMTOWTDI language
Python - the maintainable language
Ruby - the upcoming language
Tcl - the deployable language
Absent in this summary are the FP languages, as I know too little about them.
On the plus side, energy consumption of the tech stuff that's always on here is now under 25 watts per hour (adsl/wlan box, nslu2 server with 2.5" hd, mac mini in sleep mode). Plus the fridge, of course.
Do the two balance out? Not by a long shot. Maybe I can do better in 2008.
Well, times have changed. TM is revolutionary, because its overhead is proportional to the amount of change. Every hour, my (quiet) external HD spins up, rattles for a few seconds, and then spins down again after 5 minutes (not 10, see "man pmset"). All you need is a disk with say 2..3x as much free space as the backed-up area. One detail to take care of is to not include big changing files such as VMware/Parallels disk images and large active databases in the backup, because TM backs up per file. So I put all those inside /Users/Shared and exclude that entire area.
Oh, and TM does the right thing: it suspends and resumes if its external disk is off-line for a while, such as with a laptop on the road.
Note that attached disks cannot protect from malicious software and major disasters such as a fire - but this is something an occasional swap with an off-site disk can take care of.
I no longer "do" backups. I plugged external disks into the two main Macs here and TM automatically asked for permission to use them. End of story.
I can only conclude that this all happening and anyone with broadband access being able to find out about it illustrates how the internet is enabling a new renaissance. What an extraordinary times we live in. And what an opportunities for improving our world!
(Having broken a leg last weekend - silly me - I'm being forced to work at a slower pace the coming weeks. Then again, probably wouldn't have gone through the above presentations otherwise - so there seems to be a silver lining to everything, as they say...)
UPDATE: Dan Gilbert's presentation (#6) is really incredible, IMO.
This, in a nutshell, is one of the properties of the Vlerq project. And yes, I've been thinking about a revised design...
Am currently taking notes (on paper, the ultimate sketching environment!) and mulling over some core data-structure design changes.
This time, I'm looking into supporting missing values from the ground up. Looks like it could simplify a number of issues. Without leading to "null values" or three-valued logic. It can actually conform to Tcl's everything-is-a-string mantra, even though a missing value is not representable as a string.
Anyway, today was the deadline for a very tight schedule, and we made it with a result I'm really proud of. On time, on specs, and on budget. So now I'm celebrating... cheers!
There are of course many other trade-offs involved (e.g. Google ...) - but this 3-minute video is excellent (from 43 Folders).
No rush, though: 1) I have no time for it right now, 2) the current Ratcl code is humming along nicely, 3) still can't wrap my mind around some of the more advanced aspects, so there's a definite risk of failure.
(Having said that, none of the above has stopped me before. Will just have to wait and see!)
The Trellis "sees" what values your rules access, and thus knows what rules may need to be rerun when something changes -- not unlike the operation of a spreadsheet.But even more important, it also ensures that callbacks can't happen while code is "in the middle of something". Any action a rule takes that would cause a new event to fire is automatically deferred until all of the applicable rules have had a chance to respond to the event(s) in progress. And, if you try to access the value of a rule that hasn't been updated yet, it's automatically updated on-the-fly so that it reflects the current event in progress.No stale data. No race conditions. No callback management. That's what the Trellis gives you.
VMware has a quick setup whereby it asks your name and a password and then lets the whole setup run with no further questions asked. After the whole install process, the system comes up logged in and ready to go - which is great.
Except that I did not enter a password, which leads to a system which does an auto-login with a password I do not know. It's definitely not the empty string. I don't even know who is to blame, VMware or Vista... After trying a few things and googling a bit, I was about to conclude that a full re-install would be my only option. No info on special boot keys to bypass/reset things, the built-in help says you need to know the admin password (or have a rescue disk, which... needs an admin password to be created). It all makes sense of course, but I wasn't getting anywhere with all this and left with a setup I couldn't administer.
But guess what: as admin, you can create a new user with admin rights, and it doesn't ask for your password! So I created a temporary user with full admin rights and with a known password, and switched to it. Then I reset the original admin's password - bingo. Did this after all the latest updates were applied, btw.
In other words: anyone can do anything on a machine running Vista if the current user is an administrator, without ever having to re-confirm the knowledge of that admin's password: simply create another admin and switch to it.
Pinch me. How many years has Vista been in development? How long has it been out as official release? On how many systems has it been installed?
Haven't used it - beyond a quick tryout. JD only caches files up to a (configurable) limit, the rest gets pulled from S3. Also, it looks like offline mode is not supported (yet, apparently) - though setting the cache big enough to always hold everything might do the trick.
- chances of a coding mistake are way too high
- complete testing of race conditions is next to impossible
- full code review in OSS projects with plugins/extensions is not feasible
- failures are not repeatable, i.e. essentially non-deterministic
- one weak link can bring down the application
No thanks - I'll be sticking to async I/O (one of Tcl's strengths) and pipe- / socket- / mmap- / shmem-connected processes.
That's instant access to almost a decade of tracking what and where I posted on Usenet and Google groups. Not to mention every search over the past 18..24 months,and my ISP being required by law to remember every IP address I've contacted in the past 6 months. It's a small step to permanent storage.
Imagine another Joseph McCarthy: have you or your parents or relatives ever...?
This isn't about "big brother" today. This is about creating the preconditions for a big brother scenario any time in the future.
svn co svn://svn.equi4.com/metakit/trunk metakit
Use "svn list" to get the full list of projects, or any directories / branches in them.
All mini.net/tcl/* accesses are redirected to wiki.tcl.tk/* - and revision history access has been switched off, since mini.net is now a fully static site.
Combined with the fact that I need to repartition the disk with no console access (just a remote reboot / rescue system) and the next few days might be quite, ehm... interesting. Luckily, the people at IPX know their stuff and can bail me out if I mess up.
Starting tomorrow, Thursday morning (Europe time), the www.equi4.com and mini.net domains will be unavailable and return a "503 - Service Not Available" message until the upgrade is over. Emails to jcw @ equi4.com are ok and will reach me, since they do not go through this server.
Fortunately, the other 7,857,999 are ok :)
I can't help but think that the Tk browser plugin could have filled this spot ages ago. And much more, by now.
The news is that Flex will be open sourced before the end of the year. Think about it: open source code, written for a presentation engine that is fully controlled by Adobe. Clever. It's not easy to come up with scenario's whereby you get to lock-in open source developments.
Update: another player in this field is Microsoft with Silverlight.
Fast forward to today and Alan Kay explains how this might just be the tip of a very new iceberg (PDF). As can also be inferred from the name of a new mailing list, btw. There's also a video (sound gets better after 20' or so).
It's slightly unfortunate that several developments with a potentially fascinating connection to Vlerq all come from a different setting (Lisp, Smalltalk, APL) and that my mental bandwidth and time simply isn't up to giving each of these the deep attention they really deserve. Oh well, I can do my best - but no better...
(With thanks to Arto Stimms for passing on several great pointers)
Update: fixed the above link...
Tech Notes are more technical / factual than my musings and more concrete / focused than my earlier ramblings. Oh, and they are exclusively about Vlerq & Ratcl.
This is part of a range of changes on the site. The domain "equi4.com" no longer works at all, for example - it has to be "www.equi4.com", i.e. with the www prefix.
The plan is to update the server in a few weeks, at which point I can add svn to it and maintain a r/o replica of my main repository for public access. I'll post here when that step is complete.
Do whatever you like with it - all I ask is that credits to me as original author be kept in the sources, at least for those files from which substantial portions are being (re)used. Hopefully others will have as much fun with this code as I had when coming up with all this, many years ago!
I find it fascinating that 30 years on, his 2006-dated comments are still as important to refer to as ever. More so perhaps, with programmers coming on board from a strictly scripting-language perspective.
• This weblog - http://www.equi4.com/jcw/files/rss.xml
• The Metakit mailing list, via Google or Gmane
• The Starkit mailing list, via Google or Gmane
• The Vlerq mailing list, via Google
The Google & Gmane pages also list other access/notifications options.
The main points to note are:
• The www.equi4.com main website is changing but remains in place.
• I can be reached by email if anything bad happened or got lost.
• This blog will be replaced by a new one, using the same URL.
As a result of switching to a different software package, the RSS feed for this weblog will change in the next few days, from
I'll provide more details once the dust settles... in my new blog!