Tons of powerful features included, with Bootstrap at the core.


Productivity: Is There a Silver Bullet?

Think about learning to be an architect. You have to become acquainted with mechanical drawing skills, which takes one or two semesters. Then you start honing your mechanical drawing skills. Part of your effort is in mastering the “language” of your profession, but this is hidden beneath the fabric of learning the facts and techniques of that profession.

But drawing is not the only language of architecture. Remember Alexander’s enable building habitable buildings and towns—are not, in general, capable of doing their jobs as well as they might. Another way to put this is that architects fail when they ignore the task of becoming masters of the languages they need to master.

Can you write a program which has the productive power of Watt’s steam engine?

I know Richard Gabriel opens these kinds of doors. I feel, blowing through these pages, a breeze, an inspiration which could begin to make a programmer ask herself these kinds of questions, ones that reach for the stars.

The Quality Without a Name

Most of these problems can be eliminated or reduced if the user is encouraged to build small abstractions only. This is easier if the language provides other mechanisms that help the programmer build the larger structures needed in a program, structures that would normally be constructed from abstractions.

Pattern Languages

When we couple this advice with that of building hierarchies slowly, keeping them shallow as long as possible, we might find that we have paved the way for habitability, piecemeal growth, and healthy, usable compression. In fact, if we put in place an explicit process of piecemeal growth, hierarchies will naturally grow slowly, and they are more likely to be correct, because their use evolves over time. The resulting compression also is natural, not forced, and it is less likely that the compression will backfire.

Toggles / Accordion

What is the Chartres of programming?

Van Fraassen hints at this idea: "But in certain cases, no abstraction is possible without losing the very thing we wish to study." He means that the object of interest is captured only by the name of the abstraction rather than by the thing itself. For example, when we speak of redness and go no deeper, redness disappears and all we have left is the name red.

Richard Gabriel focuses, very much, on unsolved problems, on the struggle and the path to almost ineluctable difficulties in architecture. He does not comment, perhaps enough,on the fact that these problems are solvable in practice, in fact are being solved right now. The geometry of life, in buildings, which I wrote about for 25 years, in order to attain it, is finally being attained, just now.

If the heart of human existence, what matters most deeply to man, woman, child, really can find its way into computer programming, and into the programs, and into the meanings of those programs, and into the actual code and substance of those programs, and into their effects—then the future world will be changed immeasurably.

Even though it was a disaster, the methodology was to modify an existing solution, and when it failed its failure was analyzed. How often does that happen in software? Almost never, because such failures are simply locked away and forgotten—perhaps the folks who participated learn something, but the project is rarely viewed by people outside the project, and there is little interest in the failure itself except perhaps because of its effects on the organization that sponsored it



  • Slide Image

    Consider the ways to approach writing software documentation.

  • Slide Image

    This is not learned by studying a book but by years of experience, including reading great programs.

  • Slide Image

    Informal reasoning about a program using a complex language construct.

  • Slide Image

    Think about learning to be an architect.


Progress Bars

40% Complete (success)
80% Complete (danger)
35% Complete (success)
20% Complete (warning)
10% Complete (danger)



You can easily add one of 50+ animations to any element. Just add the class animated, the animation name using the data-animation attribute and optionally a delay using the data-animation-delay attribute. For example:

< div class="animated" data-animation="fadeInUp" data-animation-delay="300">This element is animated!< /div>

For a full list and demo of all available animations, go to https://daneden.me/animate/


Heads up! Please read this before continuing, it's important.
Holy guacamole! Best check yo self, you're not looking too good.
Oh snap! You got an error! Try again or abort.
You did it! Whatever you did, it was a great succes, congratulations.

Looking for more features?

There's plenty more to see around the site!
For example, have you seen the typography page? And don't forget to explore the rest of the site, for example the services, pricing or team pages.