Title photo
Ode is simple! (Simple means that you know how it works.)

Hello, and welcome to news.ode-is-simple.com.

This is a weblog dedicated to Ode (ode-is-simple.com) and other topics relevant to the project.

If you're looking for general info about Ode you may want to start at the project homepage at ode.simple.com/home

To stay up to date with the newest news and info related to Ode, subscribe to this site's RSS 2.0 using Google Reader or your preferred feed reader.

Posts

Tue, 08 Mar 2011

Ode: Working toward embracing a more personal Web

If you've read through the project site, this blog, or spent any time on the forum then you probably know that I believe Ode and other projects like it are important - both to the continued health of the open web, and to all of us who appreciate the importance of the contributions of individuals like you and me, and the value of our participation and content.

The 'social web' is making us all bit players, or extras, in our own online lives. Increasingly our content is channeled through sites and services that we don't understand let alone have any control of over. These sites (Facebook and others) rise to obscene valuations fueled by user contributions, and by taking advantage of the our individual expertise, authority, creativity, local presence, reputation, personal information, etc. and the inherent value of our relationships.

Freely sharing is great, as is any other equitable exchange (whether we're talking about ideas, news and information, or good and services). However, in my opinion there is nothing equitable about the lopsided nature of the exchange between many social sites and their users.

Read the rest of this post

Sat, 05 Mar 2011

About 'FlatPress and other flat-file blogging system'

Steven Rosenberg has written a little article mentioning various self-hosted blogging platforms including Flatpress, Blosxom, PyBlosxom, Ode and others. I wanted to address a couple of his questions about Ode.

Though you can probably follow this post on it's own, I do recommend that you start by reading Steven's FlatPress and other flat-file blogging systems first. I'll wait...

OK, are we all back?

As I've already said, I wanted to add a couple of things about Ode and along with my opinion about a static mode, security, and some of the other topics Steven brings up in his post.

About implementing a static mode

  1. I'm experimenting with two different types of static rendering at the moment.

The first is something like 'on demand'/just-in-time static. It works the way that you might guess it does. A static page is generated when a page is first requested. Subsequent requests for the same page are served statically.

The second is a dedicated static mode with which the entire site is generated offline.

In the end, I'll probably do both because a) I like the just-in-time solution and b) offline static mode is an often requested feature. To way of thinking, a project like this is about serving the interests of the community, not just scratching a personal itch.

However, Steven's right, I'm not a big proponent of static mode operation in general for several reasons. I'll mention just two...

Read the rest of this post

Wed, 22 Dec 2010

Happy New Year

As the year the project was officially released, 2010 will always be an important year for Ode. But this little project is still a baby. The good news is that after the first year I have every reason to believe the Ode is workable. Nothing has happened to make me change my mind about that, and that's really positive. The bad news, if you want to call it that, is a lot of work to do!

If Ode were an infant it would be taking its first tentative steps, and shifting to new kinds of play (from fine motor control to bigger movements). The advice would be that each baby is an individual and develops at his or her own pace. Though admittedly somewhat of a stretch, in this context I'd say Ode is right on track.

As some of you know I believe that while intentionally small and simple, I believe Ode is an important project representing a crucial point of view.

I'm a proponent of the open web, and you're at all interested in Ode I'm guessing you are too.

Access to information has never been more important - of course there has never been a time when I wouldn't have said the same thing. The point is that the open, distributed nature of the web makes it exceedingly important. What has been demonstrated in the last couple of decades is that open and distributed solutions that scale as the web has, both in terms of architecture and acceptance, is a very rare thing. We have it now, for once, and may not get it again any time soon. We should cherish it.

Read the rest of this post

Fri, 03 Dec 2010

Why Ode? Dated themes and 'the personal web'

Ode's dated themes are a trick I haven't seen in any other package. The ability to roll back the look and content of a site to exactly what it was at any point in time is unique. It's part of my goal to make Ode a personal publishing platform. The fact is that the web is immense and most sites are not visited frequently.

As in real life, most people will never be famous on the web. (The reason why fame is so valuable is because it is a very rare thing.)

So why have a site at all?

It's a question most people with a weblog or other site have struggled with at times. Sure, occasionally you'll have people stumble onto a particular post from a search results page, but it's very unlikely that person will become a regular visitor. It certainly doesn't justify all of the time and effort that goes into maintaining an active website.

So why do it then?

My answer to that question is a question, why get out of bed in the morning? Why do so many people go to soulless jobs, and in many other ways deal with the tedium of daily life? Well there are those of us driven by a cause to the near exclusion of everything else. But, for most of us, I would argue it's just that, us. We do it for ourselves, our friends, and families. I believe you are the best reason for you to maintain a website. Because it's interesting to you (whoever you are), your friends and family.

It's tremendously powerful to be able to take a look back at what you were doing, and what you were thinking about, a year or a decade ago. It's a wonderful thing to be able to share experiences with those few people who are genuinely interested in knowing about you and what you're doing. Some of the best weblogs are stories of personal experiences with photos, videos, links to news and other things of interest, surrounded by enough text to stitch together a narrative and provide context. Sure the story may be interesting to only a very niche audience, but for those few, it is likely to be one of their favorites.

I say forget social. Let's make the web personal!

Sat, 07 Aug 2010

Nice to meet you. My name is Ode.

Be a full-fledged participant on the web and do it on your terms, using apps you're already familiar w, as easily as working w local files.

Build a website using standards compliant HTML and CSS, write posts, create photo galleries, host videos, interact with web services, and do just about anything else you might imagine.

Envision a platform that allows you to more actively participate in the web **on your terms**. A personal publishing platform that offers literally unlimited potential for personal expression and experimentation whether you're interested in web design and development - even if you think it might be too difficult for you. (It's probably not - as long as you're willing to learn a thing or two along the way.)

Now imagine you can do all of this using your favorite apps and working with local* files - copying, moving, renaming, deleting files and folders just like you already know how to do.

Is it really local?

Many of file transfer application allow you to connect to your remote storage space as if it were a locally mounted volume. It looks and acts just like a drive connected directly to your Mac via USB. This allows you to treat your Ode site as if it were running on your local drive but all of the changes that you make are taking place live on your site. This style of interaction works particularly well with Ode. With no database to worry about, and cryptic data stores, you already know how to work with Ode. Open your favorite text editor, write your post, save the file directly to your site using a standard open/save dialog box, and you're done. Your new post is now live on the web. Of course your favorite app offers a wealth of functionality that make writing your posts a joy spell checking, auto completion, advanced search and replace, syntax highlighting, etc. Maybe most importantly it offers you an environment you're already comfortable with including all of your preferences and other tweaks. What's more, you're not limited to any one single app. Simultaneously run, and switch between an text editor, and GUI HTML/CSS, photo management, video editing apps, and more.

Why trade all of this for the glorified text boxes that you get with other content management systems and weblog packages?

Sound good? (I think so too.)

Wed, 14 Apr 2010

Execution flow diagrams from an early version of Ode

What does Ode look like? These execution flow diagrams come pretty close to answering that question. (Refer to the links at the bottom of this post.)

Ode mascot w exec flow diagrams

Please keep in mind that these reflect a early (never released) version of the script. So, I wouldn't recommend spending too much time scrutinizing them. A lot has changed. What's the point then?

I am in the process of updating them. After I do, it won't take much work to keep them in sync with each new release. An up to date version of these should prove to be tremendously valuable both for new users (anyone just starting to come to terms with how Ode works), and those already familiar with it.

Read the rest of this post

Tue, 13 Apr 2010

Early design goals: Ode before Ode was Ode

This is interesting (to me at least) look back at some very early design goals for the project that would become Ode.

All of these were pulled from a document I created early in 2008 (really, wow?). Looking at these goals now that Ode is released, I'd say I did pretty good. Like it or not, it clearly is the app I set out to create. I like it.

Maybe most interesting is what's not on the list. There are quite a few big features and little touches that I aren't here, because I wouldn't think of them for months.

There is still lots of work to be done of course including documentation and finishing up a bunch of addins I have underway. If nothing else, maybe this will convince you that the project isn't going anywhere anytime soon.

I'll warn you that there may be quite a few typos and other problems here. I haven't spent much time cleaning it up, and it wasn't originally intended to be made public. (I'll try to spend some time editing in the next day or so.)

Early design goals

April 8, 2010 (originally written early 2008)

Design goals

  • General design goals
  • Code
  • Posts (content)
  • Client environment
  • Server requirements
  • Content Management
  • Modules
  • Caching
  • Templates
  • URLs and Permalinks
  • Project management
  • Documentation
  • Installation
  • Synchronization and Backup
  • Revision control/versioning

1. General design goals

Read the rest of this post

Fri, 09 Apr 2010

The why of Ode: Ode and Education

Ode and education: Today computer technologies impact virtually everything we do and yet we still treat programming and related topics as some sort of a niche special interest ... even at the college level it's seen as some sort of arcane specialization rather than an integral part of the educational framework.

The first 'why Ode' post is maybe best described as an essay discussing what I believe to be some of the problems with how we introduce new students (i.e. anyone tackling programming and other related topics for the first time) to programming and computer science. I describe the essay as a proposal, and that's essentially what it is. As such, it doesn't dig very deep, and I don't make much of an attempt to justify my assertions. This next article, for lack of a better term, is a more thorough, formal effort. From the introduction:

This paper is a survey of current educational methodologies and concepts, including:

  • Constructionism and discovery learning
  • Technological fluency and relevancy
  • Collective intelligence and distributed cognition

I will provide an overview of these, and consider how they might be applied to computer science education.

I propose a general class of tool that might be utilized to integrate these into introductory CS education in a way that complements existing practice.

The goal was to familiarize myself with educational theory, including current work, and to establish Ode and tools like it clearly within the context of existing research and practice. As discussed in the first 'Why Ode' post, I don't believe we do enough to teach programming.

Today computer technologies impact virtually everything we do and yet we still treat programming and related topics as some sort of a niche special interest. Before college, it's all but ignored. Because of this, even at the college level it's seen as some sort of arcane specialization rather than an integral part of the educational framework. In my experience, even within CS departments, there's not enough legitimate teaching going on - at least not the teaching of introductory material.

!--jump--!

This is an actual paper that I wrote as an independent study as I was finishing up my master's degree. At that point I had already started working on Ode and wanted to try to establish that it had some real educational merit.

The paper assumes no prior knowledge of programming, computer science, or educational theory.

The following are passages pulled from the paper intended to give you some sense of the character of the document so that you can decide if you're interested, before you go to the bother of downloading it. I would describe these excerpts as a collection of snippets rather than a summary. Be aware that the pdf is just approx 32 pages.

Download the full document

Constructionism

Constructivism is an educational theory which supposes that people gain knowledge and learn from their experiences by constructing an internal representation of the world around them. The existing representation forms a framework which can be extended to assimilate new information which in turn leads to a better understanding of the world.

Constructionism is a refinement of this idea which adds the qualification that people learn best when they create tangible constructions (e.g. physical objects, environments, narratives) that model the internal representations of their ideas

Technological Literacy, Fluency and Relevancy

We can clarify the distinction between technological literacy and technological fluency if we think in terms of the more common example of natural language. In this familiar case, itÕs generally understood that a literate person is someone who has acquired a minimal comprehension of the language. He or she might be able to read and understand what has been written or spoken by others but fail to grasp the subtlety and nuance of what has been said.

It was Seymour Papert who first proposed the notion of technological fluency to refer to the ability to use and apply technology in a fluent way, likening it to language fluency and emphasizing the importance of utilizing it Òeffortlessly and smoothly, as one does with language."

Collective Intelligence & Distributed Cognition

The notion of collective intelligence is a shared capacity to acquire and apply knowledge that comes from the collaboration and contributions of many individuals.

Collective intelligence can be considered a subcategory of the broader concept of distributed cognition, which is the idea that knowledge and learning exist not just in the minds of individuals but that both are distributed among the members of groups (often referred to as a Ôcommunity of practiceÕ in the literature) and the tools that are utilized in the process of learning.

I propose that we should strive to introduce computer science and related topics to more young adults as they are deciding what to do with their professional lives, so that we might help them see its relevance to their goals and ambitions, in hopes of bringing more people into the field while equipping students with new approaches to problem-solving that can then be applied to other areas of interest as well.

It seems obvious to say that computer science is an increasingly important field of study given that many 21st century problems stem directly or indirectly from the introduction and integration of new technologies as it inevitably plays a role in virtually every facet of human culture and community. Not surprisingly, this has lead to any number of advancements, but also corresponding problems: We are able to extend human life expectancy and sustain a larger world population through better healthcare (i.e. increased effectiveness and availability of medical technologies) and improved sanitation among many other factors. But this has contributed to devastating ecological issues. In the same way, increased connectedness among the people of the world thanks to improved travel and global communications has led to a better understanding and appreciation of our current diversity and accomplishments but also, increased unprecedented competition and financial interdependence on a global scale in a way that we seem to struggle to comprehend much less control and coordinate.

the emphasis has shifted toward utilizing technology as a resource to allow for the construction of novel educational solutions. Sometimes this is quite literally the case; that is, that technology is utilized as a basic building block, such as the MIT Media LabÕs Crickets project.

Of course, this idea need not be so literal. I contend that we can consider CS itself to be an immensely grander expression of what is at first an apparently simple idea, from which we can construct a universe of solutions to an infinite number of problems.

Download the full document

Thu, 08 Apr 2010

The why of Ode: Ode and CS

I've been working on Ode for a while now. But I started thinking about the project well before I wrote the first line of code. I want to share some of those thoughts. After all, Ode's motto is "simple means you know how it works", and I believe that in order to completely understand how something works, you need to know why - why it works the way that it does, and why it was created in the first place.

I realize that this may not be particularly interesting to many of you. Feel free to disregard these posts. This is not documentation in the traditional sense, and there is nothing in these posts that describes how Ode functions. In fact, Ode is not even the primary subject discussed.

Each of these posts (there will be 3 or 4) will consist of a short introduction, like this one, and a link to a somewhat lengthy PDF. I don't know about you, but I don't particularly appreciate links to lead to PDFs. I apologize for the inconvenience. These are all documents I've written before now, and a pdf was the easiest thing for me to do. It also allows you to read it in something other than a web browser, and they are easy to print, should you rather read it on paper.

You should know that these were written in the past year or so, as I was getting close to finishing the requirements for a CS Masters degree.

This first post talks about computer science education and more specifically how we introduce students to programming and CS. In it I refer to students a lot (probably too much). Don't let that throw you, everything I say is just as relevant to anyone learning to program.

!--jump--!

The following are passages pulled from the attached essay intended to give you some sense of the character of the document so that you can decide if you're interested before you go to the bother of downloading it. I would describe these excerpts as a collection of snippets rather than a summary. Be aware that the pdf is just under 8 pages long.

Download the full document

I want to address what, in my estimation, is now, and arguably has been for nearly a decade, the most fundamental problem in computer science. Namely, a lack of widespread interest in the field as a course of study. Continued progress is leading us to any number of truly difficult problems and our best hope for tackling any of them is recruiting as many capable people to the cause as we possibly can. Accomplishing this will require that we address two complex and difficult issues.

First we must rethink the ways in which we collaborate, and make a commitment to revitalizing the sense of community within and beyond academic departments.

Secondly, we must bring bright, exuberant, talented, and dedicated new people into the field.

 

How can we involve a new generation of students in the field, if we are willing to admit that the situation may not simply remedy itself? I contend that we need to answer two important questions.

What must we do to inspire an interest in CS? This is an especially important issue for our field, because unlike other disciplines, we should anticipate that many prospective students may have little to no relevant prior knowledge. (I'll discuss this point further).

How can we provide the sort of academic environment that students just being introduced to the field will require to achieve the confidence and the expertise necessary to make some meaningful contribution?

 

I claim that the web is a perfect bridge between the world of CS and mainstream computer technologies.

First, we don't have to wonder if the web is engaging. It is experiencing phenomenal growth and attracting a lot of interest generally, and among those people who we might hope to attract to the field.

Secondly, not only is the web popular but it is legitimately relevant to Computer Science. Today, the web is becoming a distributed platform for building applications, with the elegance of a modern framework and the capabilities of a service-oriented architecture; one that is already here, widely used, and global in scale. Furthermore, many familiar CS problems are making their way to the web, which suggests that it may be a useful platform for vetting our ideas related to these problems. For example, the emergence of open standards has led to the accessibility of large data sets, and the opportunity to confront the real world problems associated with accessing that data over a highly distributed application.

 

I'm developing a web-based project which is intended to take advantage of the appeal and utility of the web, and designed both to serve as a suitable introduction to programming and also to bridge the gap between what students must learn early on in their studies and what they might imagine they want to do with that knowledge.

The project is an extensible personal publishing platform, which is flexible enough to be used for any number of unique applications, but without modification is similar to a weblog or wiki. That is, an app designed to dynamically generate a website from individual posts, which are collectively the content of the site. The presentation of this content is determined by one or more themes, which dictate the overall look and layout. This sort of application speaks to the original design goals of the web.

Though the web today might be described as a consumer-oriented media space, collaboration is the key concept that drives its growth and development. In fact the web is typically identified not by the collection of technologies that describe how it functions, but by the contributions of its users (i.e. its content). In recognition of this, the project is intended to be more than a vehicle for exploring topics related to programming, but also an application that can be used to facilitate communication and collaboration.

There are a quite a few open source weblog packages and wikis available. The project I am proposing is unique in that it emphasizes key introductory concepts (e.g. flow control, data structures) that a new student would be expected to be responsible for as part of a first programming course. The entire project is written using only these basic concepts. As such, new students can be expected to understand the application in its entirety. Moreover because it?s extensible, it allows for literally unlimited creative freedom for students to explore their own interests, and can be used to bridge into more advanced topics. For example, because this is a web publishing platform, there are any number of difficult challenges involved related to communications protocols, distribution, inter-process communication, addressing, etc.

Download the full document

Tue, 06 Apr 2010

A first post to the forum, and some of my own thoughts about the why of Ode

On the new forum: a whopping 300% increase in membership ;). Also, some thoughts about the why of Ode.

For anyone reading this blog and interested in Ode who has not yet registered for the new forum I wanted to share the first post, as well as some of my thoughts about it.

Congratulations on the completion of the release version! I am very impressed, having thrown a few hundred Blosxom blog posts dating back to 2003 at the Ode installation and having a hitch-free experience. To a Perl-based Blosxom user like me, Ode looks like promising tool to carry forward my dynamics blogs and semi-static html sites that function as smartphone apps. Also, it can replace presentation software with less overhead than what I currently use plus local setup on my server instead of a third party's. In sum, here's to a flourishing development of Ode and a flourishing Ode developer and user community.

It suggests some of what I like about Ode, which is essentially *the practicality of simple*.

!--jump--!

There are more than a few mainstream blogging/content management/dynamic publishing platforms available. Many of these are actively developed, and some of them are well funded, with an organization and a team of paid full time programmers behind them.

Despite all that, it's not possible to do with those platforms, some of what can be done with Ode.

You could say that Ode is a platform that you install either on your own server, or with a hosting provider (as opposed to a service like wordpress.com, typepad, posterous, and others) and that would not be untrue. But it's not the whole story. Consider that every mainstream desktop operating system either comes with a web server and support for Perl, or at the very least, it's free and easy to get and install a web server and Perl. That being the case, Ode is not so much a platform that must be installed on a public web server as it is a platform capable of publishing a public site, but which can be run anywhere, for any number of different purposes. Furthermore, you can run Ode locally and on a remote server somewhere, and sync the content directories (which include themes). That gives you a hosted public site with seamless offline functionality, such that you can do everything locally that you can do with an internet connection (to the extent that the distinction isn't really important).

That sort of thing would be difficult to do with more sophisticated packages because their architectures are more complex and so less flexible (and less accessible). If it can be done, you (or someone else) would need to spend a lot of time and effort developing a very clever solution. On the other hand, you can do it with Ode without writing a single line of code. Install Ode locally and at the server, sync the content directories (in any number of different ways), and it just works.

It's hard to rejigger a complicated thing so that it does something other than what it was expressly designed to do. A car makes a great car (def: a road vehicle, typically with four wheels, powered by an internal combustion engine and able to carry a small number of people) but a pretty lousy everything else. On the other hand, simple things, e.g. small interlocking plastic blocks for example, can be put together, taken apart and reassembled into almost anything. What's more, complicated things made from simple components often retain many of the attributes that make the components so elegant, e.g. adaptability, reliability, accessibility, affordability.

This is why I believe that programming is such an important skill, i.e. something that can be useful to many more people than those who have traditionally found their way to computer science, professional programmers, and computer technology enthusiasts

Here is a quote I've always liked by Matt MacLaurin, a computer programmer and Principal Program Manager with the Creative Systems Group at Microsoft Research:

Programming is good for you. Even if you don't program for a living, programming stretches your mind in ways that are very beneficial.

Think about it. Even if you're just working on something boring like a calculator program, your brain has to simulate what the computer is going to do so that you can construct your plan correctly. When something goes wrong, you again simulate many different possibilities mentally to form a theory about the bug - and to correct it.

Simulation itself is a very interesting special case of programming. Building a sim is like a multidimensional form of writing a story.

You're not writing one story; you're construction [sic] a story space in which an [sic] huge number of different stories can happen. - story: keep track of who did what when - sim: keep track of who can do what and what new possibilities will emerge if they do it Learning to simulate complex systems in your head is great practice for a lot of jobs - like running non-profit organizations, effecting social change, or running a car dealership. And simulation, as we know, is just a polite word for gaming. Programming - or, more precisely, the mental facility developed by programming - is a life skill that should be accessible to everyone.

I recognized this when I first saw Blosxom, which was maybe six years ago (or more). It's interesting that despite all of the innovation and change that's happened in that time, the web is fundamentally the same, and spectacularly more important than ever. The fact that the web just takes it all in stride, says a lot about how truly ingenious the web itself really is.

Anyway, that's where my interest in Ode comes from. I see it as an expression of the original design goals of the web (the first web browser was also an editor), and way to make full participation in the web accessible to the widest possible audience, in a way that promotes the long term health and prosperity of the web, and celebrates the importance of individual contributors.