jlaine.net

Skype 1.0 for Mac Is Out

75 words · 1 min read

Skype launched today version 1.0 for OS X (and Linux) of its great internet phone application.

I’ve been using the beta version for a while and although it’s got a few glitches, it has saved me a lot of time and cell phone bills. I still wish the sound quality would be better. Even though they claim to beat normal phone in quality, even domestic connections between two broadband nodes have been flaky at times.

Dave Thomas on TextDrive

55 words · 1 min read

PragDave writes about TextDrive customer service:

Not only did Jason Hoffman sort out all my problems, but he extrapoloted what I was trying to do in the long term, and preemptively offered to set it all up for me.

Yes, TextDrive service is that good. I wouldn’t consider anything else for me or my customers.

MapQuestioning

89 words · 1 min read

Dave Winer reports about a News.com article which describes how Norwegians wanting to go from Haugesund to Trondheim are routed through England, Belgium, Germany, Denmark and Sweden. Well, according to MapQuest you wouldn’t want to live in Finland, either, because we have no friggin’ roads!

!/images/28.gif (MapQuest Route from Turku to Vaasa)!:http://mappoint.msn.com/(mrhnz1ixqxpjzei3tudrwinr)/directions.aspx?&EndName=Vaasa%2c+Länsi%2c+Finland&EndLocation=63.09568%2c21.61061&StartName=Turku%2c+Länsi%2c+Finland&StartLocation=60.45269%2c22.25119&DataSetLangID=EUR,409&RouteType=Quickest&RouteUnit=Miles

And you still wondered, why msn.fi is the most popular net site in Finland (you didn’t think it’s got something to do with the fact that it’s the default start page for Finnish Internet Explorer, did you?)…

More Rails Goodness

421 words · 3 min read

Rails version 0.9.4.1 is out and ohmigod. The framework is going forward so fast I have trouble following up with all the new stuff. Here’s the greatest of the latest: Caching.

Well, yeah, caching is no news as such. It’s the way David implemented it (just like other things) in Rails that can’t stop astounding me. It’s so simple it almost makes me cry. Want to cache some whole pages your controller is serving? Just do this:


  class WeblogController < ActionController::Base
    caches_page :show, :new
  end

Phew, that was all good and well. But what if you have some personalized content? You can’t cache whole pages then, can you? That’s right, dear Watson. But you can cache the actions. Using action caching means that the request will go trough Action Pack so all the filters are processed before the page gets served. That way you can use authentication and other magic in your pages without having to give up the glory of caching. Here’s an example of controller that uses both page and action caching, stolen straight from the api docs:


  class ListsController < ApplicationController
    before_filter :authenticate, :except => :public
    caches_page   :public
    caches_action :show, :feed
  end

This controller has a public action and two private actions that need authentication — and thus action-level caching.

The most granular way to do caching in Rails is fragment caching. It’s what the two higher-level caching schemes use internally. Using fragment caching is a gem when you have pages that have both highly dynamic and pretty static parts. The downside is that it’s a bit more work and you have to do it in templates. Here’s an example of fragment caching:


  <b>Hello <%= @name %></b>
  <% cache(binding) do %>
    All the topics in the system:
    <%= render_collection_of_partials "topic", Topic.find_all %>
  <% end %>

There. But, wait! What if the content changes in between. Will the users be served old stinkin’ cheese ever after. Glad you asked. It turns out David did notice this possibility. That’s why controllers now have methods like expire_page, expire_action and expire_fragment, for all you busy bees who can’t settle with the content you once created. Here’s an action where the cache for page show is flushed:


  class WeblogController < ActionController::Base
    def update
      List.update(@params["list"]["id"], @params["list"])
      expire_page :action => "show", :id => @params["list"]["id"]
      redirect_to :action => "show", :id => @params["list"]["id"]
    end
  end

OK, enough rambling. Now, go create some apps swift as an arrow.

Oh, one more thing. Rails can use a bunch of different methods to store the cache. But that’s another story.

Back

96 words · 1 min read

Sunset

Sorry for my absence from here. I spent last week in Vuokatti, an XC skiing paradise in Northeastern Finland. With no internet connection. That can be a relaxing experience, mind you. Well, ok, I checked my email every now and then with my cellphone, but with no serious job-related thoughts involved.

Skiing track

Anyway, the week was pretty productive. 26,5 hours and 359 kilometers of training in 8 days is pretty near my training record. And two of those days were travel days. The weather was excellent, most of the week between 0 and –10 °C and sunny.

Integrating Simulation With .LRN — an OpenACS Microgrant Proposal

237 words · 2 min read

Background

Simulation is an OpenACS package originally developed by Collaboraid for project RechtenOnline, a consortium of Dutch law faculties. As Collaboraid was having a lack of resources last fall, I was hired to finish the system. Version 1.0 of system was released in the end of November and a revised version 1.0.1 just before Christmas.

Simulation is a package which can be used to simulate virtually any common workflows and processes. The most common example used by the original clients is the setting of a new law, with multiple students playing different roles in the process. Simulation is based on the newer, Finite State Machine Workflow package of OpenACS.

The Proposal

My proposal is to integrate the Simulation package with .LRN because the target audience of the two is clearly orthogonal.

Why would .LRN benefit

Integrating Simulation with .LRN would give it another member in its already extensive set of collaborative tools.

The Deliverable

Simulation package will be possible to be installed as a part of .LRN and they will work seamlessly together. I will also create all the needed portlet packages for both normal users and simulation administrators. All the code will be committed to the OpenACS codebase (as simulation already is). As a part of this project I will also take care that the end-user documentation of Simulation will be taken to a level expected from a .LRN package.

Tampere, January 6th 2005,
Jarkko Laine

Integrating S5 With OpenACS/Wimpypoint — an OpenACS Microgrant Proposal

276 words · 2 min read

Background

S\^5\^ (A Simple Standards-Based Slide Show System) is a standards-based slide-show presentation system developed by CSS guru Eric Meyer. It’s fully based on XHTML, CSS and W3C DOM, thus making it work in virtually all modern web browsers. An S\^5\^ presentation consists of a single XHTML file, so for users of browsers that don’t support standards the presentation is presented as a plain web page, without losing anything of the content. S\^5\^ is licensed under a Creative Commons Attribution-ShareAlike 2.0 License

So where’s the benefit?

Wimpypoint is a great tool in conjunction to .LRN. It makes it possible to integrate lecture slides to other course material. However, as it presents every slide as an individual html page, using it for presenting is kind of clunky. An S\^5\^ presentation, on the other hand, consists of a single page and supports all the usual slide-navigating keys (see the introductory slide show for examples), making it responsive to the point where it competes head-to-head with desktop products like Apple Keynote and Microsoft Powerpoint. Additionally, because of the single-file paradigm S\^5\^ makes it a whole lot easier to export a presentation for offline situations.

The Deliverable

The Wimpypoint package will use S\^5\^ as its primary presentation mechanism. The old mechanism can be kept as an alternative method for backwards-compatibility if needed. Wimpypoint will also sport an export function which will export the presentation and all related files as a zip (or equiv.) package for offline presenting. Also the templating system of Wimpypoint will be integrated with S\^5\^. I will also do everything that is needed for fully integrating the revised package with .LRN.

Tampere, January 6th 2005,
Jarkko Laine

Improving the Contingency Design of OpenACS — an OpenACS Microgrant Proposal

256 words · 2 min read

Background

The admin backend is a major part of a web framework like OpenACS. As Philip Greenspun once noted, roughly half of all the pages in a dynamic website are more or less admin pages. Making administrating a system a pleasure is vital for any system, including OpenACS.

37signals published a book called Defensive Design for the Web last spring. The book was lately selected as the best web design book of 2004. Defensive Design for the Web is about improving the contingency design of a website, including e.g. error messages, help and forms. The book also provides a heuristics to analyze the contingency level of a service.

The Proposal

I will go through all the major OpenACS components, including core and .LRN, and analyze their contingency design level with the help of heuristics developed by 37signals. As a result of this analysis, I will improve the administrative and end-user visible interfaces to the point where they will score at least 80% of the applicable parts of the test.

The deliverable

A system that is slicker and more pleasurable to use out-of-the-box. The UI of OpenACS has gotten a lot better lately, but has still room for improvement.

Concrete improvements include e.g.:

  • Real double-click protection. Adding functions to ad_form that disable buttons when one is clicked and give a visual clue that the process has started. Current double-click protection protects from duplicate entries but results often in user-visible errors.
  • Improved error pages.
  • Improved “inter-page” notification/error message delivery and display system.

Tampere, January 6th 2005,
Jarkko Laine

Call for Aid

139 words · 1 min read

Airbag -Greg wrote a thought-provoking article about the aid for the victims of the tsunami disaster in South-East Asia. As he also deliberately shared his help icons, I’m going to put two on this page, too.

!/images/24.gif (Help your local Red Cross)!:http://www.ifrc.org/address/rclinks.asp

Here’s what we’re going to do with Maria: As one commenter in Greg’s post proposed, we’re not going to buy any drinks for the New Year’s eve. On top of that, we leave firecrackers in the store shelves, a common gesture in Finland. Instead, we donate 70 euros to Finnish Red Cross catastroph aid. That’s not a whole lot, but we’re both still students.

And to all (two) Finnish orienteers who are reading this blog, there’s a campaign in Suunnistus.net to raise more aid for the Finnish catastroph fund. Please consider mobilizing your club for the effort.

Evolution? What's That Again?

188 words · 1 min read

One thing that was widely accepted as a potential explanation for the result of US presidential elections was that almost half of Americans believe that God created human beings in their present form about 10,000 years ago. The same research revealed that only a third of Americans believe in Darwin’s evolution theory.

Fair enough, but that was just a gallup, right? Dream on, pal. Now a school district in Georgia has ordered these stickers applied to science textbooks teaching Darwinism:

!/images/22.gif (Evolution sticker)!

Scary, huh? I thought so, too. And what’s really horrifying is that the mentioned school district is probably not alone. But now the scientists are striking back. Some guys at Swarthmore have prepared a page of stickers, ready for you to print out and consume. Take a look, they’re hilarious (in a sad clown way). This is one of my favorites:

This book discusses evolution. President George W. Bush said, <q>{=html}On the issue of evolution, the verdict is still out on how God created the Earth.</q>{=html} Therefore, until 2008 this material shood be aproched with an open mind, studeed carefuly, and critcly consid’rd.

(via Joel)