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

Hi.

This is the project website for Ode (pronounced oh-dee), a personal publishing engine for the web. Ode is unique in that it is designed to be simple – not necessarily easy.

Simple means understandable (at least it does here).

  • Tue
  • |
  • 10
  • Apr
  • 2012

A quick fix to a fixation with easy

Think about what you need to do today to accomplish your goals. Plan around those things that you need to do. As part of that plan, reserve a little time for short term wants.

I don't believe there are shortcuts for accomplishing meaningful goals and by extension living a fulfilling life. That always involves a lot of hard work, and is never easy. Nor should we want our lives automated away or reduced to clicking a couple of buttons others have provided for us.

What we want?

We maybe getting today what we want today. It turns out that might not be what we will have wanted a few years from now. In other words, maybe we should be focused on what we need, i.e. what's in our best interest, and then trust that what we want will follow, rather than buying into the easiest possible thing today.

Let's look at some easy things and some not so easy things:

  • Meaningful relationships - not easy

  • Learning - not easy

  • Physical fitness - not easy

  • Independence and self-sufficiency - not easy

  • Adventure, exploration, and discovery - not easy

  • Fast food - easy

  • Accepting what we're told without questioning - easy

  • Watching television (watching without doing in general) - easy

  • Inactivity - easy

In general you could say that learning (and practicing), doing, and building (i.e. creating or engineering) are not easy. On the other hand not learning, not doing, and using rather than building are all easy.

Accomplishing a goal typically involves work, and as a result is not easy.

So why is it that we assume we want what's easy?

  • Fri
  • |
  • 27
  • Jan
  • 2012

Do the simplest thing that could possibly work

This post was inspired by a comment on the forum. I'll quote the short bit of that comment that's relevant to this post. As I have a tendency to do, I've sort of gone off track a little bit.

I am visually oriented ... having everything out were I can touch it feels better. (as opposed to it disappearing into a database)

I think there are a lot of us like this and for good reason too. We (i.e. people) are tuned to be 'visual thinkers'. Why fight it?

That question is not entirely rhetorical. There are lots of good uses for what we think of as databases BUT I would argue that there are fewer good ones than would be suggested by the number of databases in use.

Databases are like taking all of your stuff and putting it in a separate room. Next you hire a person to stand at the door and, when requested, go get stuff for you and put it back.

All of your stuff is available to you, but not directly. It saves you from having to arrange all of your things, because the person at the door handles that, but is that nec a good thing? After all, you don't get to arrange and interact with all of your stuff.

Read the rest of this post

  • 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

  • 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!

  • 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