Natural Complexity

Minimalism is overrated. A small core is good, but richness lies in complexity. Complex software is interesting. Simple software is boring.

I want simple installs. Installing software should be simple.

I want simple configs. Configuring software should be simple.

But, I want rich software. Rich software has complex behavior. But, it shouldn't be artificially complex.

Right now, EFX is hard to install. It is also difficult to configure. There isn't enough magic. And, by magic I don't mean unexpected behavior. I mean "Oh, that was nice!", or "Cool, I'm glad I didn't have to do that!".

EFX 1.0 uses XHTML for page specification. XHTML is too rigid. You've got to line the brackets up and stuff. HTML is only a bit better (for humans). Maybe I should take a clue from AFT. It is very forgiving of humans. It doesn't expect you to construct a document. It expects you to write a document. In the case of EFX, XHMTL is artificial complexity.

EFX 2.0 should have some natural complexity.

- Submitted by Todd Coram

Permalink |  Friday, April 28 5:17 PM


Although the end-user of a typical EFX distribution is not a layperson (this ain't a Gooey APP), I'd like to see the distribution come with EFX, Storybot and a sample site template (a weblog!). It would ideally look like this:

  1. storybot.exe
  2. storybot.cfg
  3. efx_plugins/
  4. blog_template/

The user would edit storybot.cfg, modify blog_template/blog_settings.cfg to customize their site, and run "storybot.exe". This isn't what I have right now.

Now you have to install ActiveState Tcl (20+ MB), set a couple of environment variables (OS dependent!) and invoke a batch/shell file that runs storybot.tcl.

This needs to change.

- Submitted by Todd Coram

Permalink |  Wednesday, April 26 11:43 AM

Big Buddha!

I really like this quote:

Schemer: "Buddha is small, clean, and serious." Lispnik: "Buddha is big, has hairy armpits, and laughs." —Nikodemus Siivola

I think about organic code as being the big Buddha. Organic code is code that grows, evolves and is a bit hackish. Architected code is like the small Buddha. It has proper packaging, structures, a clear/clean API and design patterns that dictate extension.

In that same vein:

I've had the most fun doing EFX Storybot, AFT, Tcl, Perl, Korn Shell, TeX, C and Emacs. (Awk was fun, but definitely a small Buddha.)

- Submitted by Todd Coram

Permalink |  Monday, April 24 9:55 AM

I am a programmer

I am a programmer. There--I need to say that sometimes to remember what I am. No, I am not a Software Engineer; not a Software Developer; not a hacker; not a craftsman; not an artist; not an explorer; not an inventor.

I am all of these and more. There is no vocation/avocation in the world quite like programming. I won't let this joy be sucked out of me.

I am most happy when I cut code, baby. Computer Keyboard = Electric Guitar. Jimi Hendrix, Eddie Hazel, Ry Cooder, Albert Collins, and Frank Zappa must know what I mean.

Okay, why this missive?

I've misplaced my copy of Jon Bentley's "More Programming Pearls" and I miss it :-(

... back to my regularly scheduled ramblings.

- Submitted by Todd Coram

Permalink |  Friday, April 21 11:18 AM

Now I only have to get it working ;-)

A weekend of testing and then deploy?

- Submitted by Todd Coram

Permalink |  Friday, April 14 11:14 PM

EFX 1.0 is running in production!

If you can see this, then it means that EFX 1.0 is now running in production (powering this blog).

(EFX 1.0 is a 100% Tcl powered content management system)

- Submitted by Todd Coram

Permalink |  Friday, April 14 9:39 PM

EFX 2.0 as Paradigm Shift

I've been thinking that I don't want EFX 2.0 to use XHTML. I don't want it to use HTML either (nor any XML variant). The more I look at (X)HTML/XML, the more my head hurts.

XML is really just a syntax. I can ignore it for now. Whether or not EFX 2.0 uses XML as the syntax or not, so as long as it can produce it (XHTML) and possibly read it, everything will be okay. It's probably HTML that bothers me the most.

When I think about laying out a web page, I think about much higher level abstractions than lists, tables (as layout mechanisms), divs/spans with classes, etc. I know I want a navigational menu here, some text here, pictures here and other stuff here and here.

My AFT does this for documents, but web pages aren't documents (at least not the ones I'm talking about here).

What would EFX 2.0 page markup look like?

- Submitted by Todd Coram

Permalink |  Monday, April 10 8:49 PM

New Monolith is being tested

The new EFX 1.0 Monolith is being tested periodically to this blog.

Almost all the features are present. I just need to bang on this for a while!

- Submitted by Todd Coram

Permalink |  Friday, April 07 11:33 PM

EFX 1.0 is getting close...

    Its getting close....
Its almost here............
Nothing to see yet....
Please ignore this message.

- Submitted by Todd Coram

Permalink |  Friday, April 07 11:08 PM

Coding in Tcl is like...

One thing I noticed as I started my EFX 1.0 codebase migration back to Tcl. As I started to remember the syntax my fingers started moving quite rapidly over the keyboard. The code flowed.

Now, this isn't a gush about Tcl. In some ways I found it quite disconcerting. With tcllib at hand (through the ActiveState 20MB distribution), I was able to lay down productive code much faster than the Unix-y approach of the past few months. But, my Tcl code isn't as well thought out.

This is okay, because I have quicker turnaround with Tcl, but because of the limitations of awk and ksh, I found myself thinking deeper thoughts about my design. How can I do this in awk? Is there a better representation of this data? How do you really write a mime parser?

The past few months have given me a great deal of insight into the problem domain. I don't think I would have done this if I stuck with Tcl all the way through. I think all of that experience is going to feed into making EFX 2.0 an even better release.

For now, I am hacking away in Tcl and making great progress.

- Submitted by Todd Coram

Permalink |  Friday, April 07 10:04 PM

The Monolith is landing (back to Tcl)

Okay, back to EFX 1.x, otherwise known as The Monolith. Its about 70% done. I'm moving the codebase to 100% Tcl (ActiveState's distribution -- at 20MB it is quite a beast).

I started the Storybot rewrite in Tcl tonight. I got about 127 lines written (which is probably around 80% current functionality). Obviously, I am relying on tcllib (pop3, mime parsing, etc).

I haven't done much Tcl in the past 6 months. It feels quite lisp-y compared to ksh and (g)awk. This is an example of the kind of stuff I missed most:

file rename $f [file join [file dirname $f] .[file tail $f]]

It felt good.

- Submitted by Todd Coram

Permalink |  Wednesday, April 05 11:34 PM

Having fun scripting..

I'm having fun writing scripts in ksh at work. Unlike, Perl, awk, Tcl, Scheme, etc I feel like I have direct access to system commands. I don't have to ask nicely, or adopt an unusual syntax -- its all there at my fingertips, perfectly integrated with the programming language.

Suddenly you find that you need to know find, dd and friends. Unix is your library (man is its documentation) and all is well in the world. Stick to POSIX or a small smattering of GNU and your stuff will be portable.

- Submitted by Todd Coram

Permalink |  Wednesday, April 05 12:20 PM