I was evaluating various MVC framework to do a specific project. The project is not a simple web-based application. The web interface is just a part of the whole thing including a kind-of distributed datastore, an XML-RPC interface, a naming server and a queueing services. I was expecting a little bit of flexibility regarding the different MVC framework (like Ruby on Rails, Django or Jifty) but such framework works very well if you have a full control of all the components. This is not the situation with my current project, as the application is distributed, using different interfaces and having different datastore and model. The web (euhh…. sorry the web 2.0) interface is just a small part of the whole system. So I ended to use a mixture of perl modules like CGI::Session, HTML::Mason, CGI::Ajax… and other perl modules. MVC frameworks are cool but not for all the cases. Just pick the right tool to do the job.
I took a testing account from the Safari Bookshelf web services provided by O'Reilly Media. My physical bookshelf is largely composed of Computer Sience and IT-related topics books. So It was quite consistent to take the 14-days evaluation from them but I'm still hesitating to continue with the paid subscription (around 20 dollars each month). It's not really a matter a price as my budget for books is clearly higher than that… but the main issue is regarding the freedom of the user to use the book. You must always be connected in order to read a book. You have the ability to buy token for downloading chapter but this is very limited and it's very easy to use all the month token for 4 or 5 chapters of the same book. Another issue (at least for me), You can't easily store the book localy for offline reading or local indexing (the proposed search via the web services is not very powerful compares a local hyperestraier, Mnogosearch or Lucene). The most strange thing for O'Reilly media (known for publishing a lot of books in the free software world) is to use a proprietary software for safari built by Bureau Van Dijk and using a very basic web interface. Ok, they didn't take a fully DRMized approach for the service but … I would expected a more free approach for the personal use of the book read. Until now, I can't make my mind for the subscription.
Update: I resigned from the Safari subscription. Not being able to save a local copy is really a major issue to me. I'll come back to such services when I'll have the same capabilities of a paper book. Like being able to store it locally, keep it or share it with a friend.
Update2 - 2006-09-10 : Beside Safari Bookshelf, O'Reilly now offers the ability to buy a PDF version of their books. I bought one to test the service and I was very pleased (compared to Safari Bookshelf) that you receive a standard PDF file without encryption. Congratulation… a good move and it's really more flexible than Safari.
Update3 - 2006-11-26 : I bought a second PDF version of a pocket reference from O'Reilly. Still very nice (standard PDF, no encryption, indexable) and now they offer the ability to get an announce when there is a revised version. The current offer for the pocket references is half the price of the physical version… I hope that O'Reilly will offer more and more books in that service instead of Safari.
Jean-Etienne Poirrier made a very interesting entry in his blog about blog software. He made a small reference to a previous post on my old blog1 about the possible alternative or how to make a blog engine alternative for "technical people" like us. Jean-Etienne described an approach to store the entries per date. The date has the advantage to be a major "key" for sorting from a blog engine. I clearly subscribe to his point of view and propose (thanks Jean-Etienne for triggering me ;-) the following minimal approach using txt2tags. At a first stage, I really don't want to take care about the markup, its parsing and rendering. That's why I propose to use an existing console-based/vty document generator. Here is a potential "program flow" for this minimal blog engine when we want to generate the blog in XHTML :
gen-main.sh ./input ./published gen-rss.sh ./input ./published html-update.sh(modified) ./input ./published
gen-main.sh is a simple shell script taking all the t2t files from the input directory (where the blogs entries are) and generating another t2t for the main page (often the famous last entries and the blogroll). At the beginning, we could have a simple last 10 entries. gen-rss.sh do the same but also generating the RSS/RDF and ATOM files. The two programs could be one but two simple scripts could be better than a complex script (to be discussed). html-update.sh (already part of txt2tags (in extras dir)) is doing the conversion of all the t2t files to the target format (like XHTML) and could includes other t2t files (like footer and alike) or t2t macros.
So for updating the blog, an interface (Emacs,vim,email,Web,…) is putting an entry in the ./input directory. The only restriction is to write files in t2t files using date as a filename as described in Jean-Etienne's blog. For publishing the blog, you run the program flow described before and (maybe?) copy the published directory to your Internet hosted server using SSH.
If you have any ideas or comments, just let us know.
A small side note regarding the interface to update the blog, I already have a GTD page where I update this wiki via a simple email. For example, I'm discussing a project with a colleague and need to quickly remember an url, a ref or a todo. The colleague or I just send a mail to a define email alias 2 The source code to append an oddmuse page in a listed way via smtp is available here.
Another side note regarding the potential storage (instead of files with datetime format), the entries could be stored in an SCM (like Subversion or git) and using the different functions part of the SCM to create blog entries. But I think this is more complex than the simple datetime format approach.
Today, I'm very sad to see the escalation of violence in the Middle East. I'm really wondering why launching a war is promoting peace (as described by one of the parties), it's clearly the opposite. It's only creating more frustated people, families, citizen, and that are generating more violence at the end. It remembered me the horrible Bloody Sunday that took place in 1972 in Derry (Northern Ireland) where 13 Civil Rights protestor where killed by the British army. One of the main impact was a twenty years armed campaign made by the people impacted by the violence. Bombing and killing people is just creating the ground for more violence. Violence is a dead end, it's clearly not a solution. I just signed the petition3 for an immediate ceasefire in the Middle East. Yep, this is just a bottle in the sea… To be more funny, I'll use the quote from the Sneakers movie : I want peace on earth and good will toward men.
Before going into the post, please understand that I'm really a huge fan of anonymizer software in order to protect privacy (a fundamental right in the information society). In the last days, I discovered at least three tentatives to compromise web server or other services like SSH. They were all coming from exit node in the Tor network. I was a little puzzled from that but there is always a tradeoff to accept anonymous communication. You have to allow a little part of bad traffic for permitting the good use like protection privacy. But for what I seen there is much more bad traffic than good traffic (at least on the monitored networks). Bad traffic is often composed of probes to compromise web server and they are relying on Tor to limit the way to trace them. So what to do ? If you take the approach to block all exit node, you have to build a list of all the exit node. A script is available to list all the exit node from a tor network as explained in the tor abuse faq, this is not perfect and only give a partial view of the current tor network and its exit node. I built a basic script to extract the information from the directory services which is part of the tor client. From it, I'm generating an RDF file containing the current node in the network. I counted around 4200 and 4500 nodes in a normal day and a large part of the set is stable (meaning a part of the set is a fixed list of IPs for a period longer than one day). The difficult part is how to block (or limit4 ) the IP lists to reach the targeted networks. Blocking means that the legitimate users (using the tor network or the same machine) can't access your network and the respective services. You can update the list by injecting a nullroute for the source networks into your border router. This works but could cost a lot to update as the list is quite floating. Other ways like urpf could be also considered. Blocking is not a perfect solution but could help you when you have an intensive attack from the tor network. There is no perfect solution but you have to find a balance to live with the various anonymous network around the world.
We (rsvj and I) were this Saturday at the Nandrin (Belgium) music festival. Initialy, the festival was a mixture of electro, pop and rock. The electro scene was only taking place the Friday before. But this new 2006 edition, the organizer moved to an electro festival only. I think it's a very good move… sorry but I'm really a big fan of electronic music. The lineup was very eclectic this year but we were very impressed by the performance of daan. They performed a very nice mixture of electro with a soft touch of guitars and a nice EBM-like voice. On the side node, the drummer of daan is also very impressive but not only on the performance. A lot of local (less local) DJs played but they often took the less risky approach of playing. Praxyd (a DJ from Liege) is always playing with the same beat and it's often too monotonic for my taste (but still good for dancing…). Anne Clark (I'm sure that you know the artist from the eighties) made a very calm performance but quite good. Nandrin is indeed a very nice electro event and I'm already waiting for the next year edition.
We had a very nice discussion about the capabilities of old camera to make excellent shot in hard condition like concert and festival. But that could be another entry in my blog.
Today, I met at work a commercial representative asking us how they could enhance their proprietary product. The product is a Content Management System but this is not really important. My first idea for the enhancement was to ask them to release the software as free software. But the answer was not really compatible with the overall theme of the meeting. My main request to them is to support MySQL as a datastore, the application supports a larget set of proprietary Database and sqlite for testing. We are using various MySQL installation for different production and development systems. The funny part was the answer from the commercial representative : "Supporting a database only used by universites… no way". I was astonished by the answer. Are we living in 2006 ? Does he know that mysql is used everywhere ? The counter joke, why not supporting database used by universities ? What's the conclusion of that. Promoting or using Free Software is not really a matter of using the correct arguments (Mainly in non-technical meeting). It's just a matter of perception. A lot of software buyers are not relying on technical or usability questions… but just name or perception of support from the vendor. When a vendor is coming and asking to you for the possible enhancement in their products, they are often just giving a perception of support. Don't expect too much from a proprietary vendor… with free software, you know what you have and if you have time, just implement what you want. That's so simple to work with free software, you don't have to make meeting for asking potential or vaporware enhancement… you can actively create with free software not with proprietary software.
My first contact with Internet was a remote shell into a proprietary Unix running on a Sun Sparc station using cu, it was more than 15 years ago. The Internet was not very accessible and it was the really the beginning of the World Wide Web. Now, the web (2.0 arf arf) is more social and clearly more accessible to a larger number of people. We were thinking that the World Wide Web was just a simple hypertext system to access remote services but know it's also socializing tool. In this context, I played a little bit with xfn (XHTML Friends Network), a simple mechanism to represent relationships between human using hyperlinks. I made a quick-and-dirty(tm) xfn module for Oddmuse to automate in the markup the creation of such relation :
[[person:URL|Text|relationship]] [[person:http://www.stallman.org/|Richard M. Stallman|met muse]]
Now what's the use of that ? An example, the 'me' relationship is available and permits to show that you have control over the remote link. It helps to better represent the same person across different web services. Another example, it's linking different social networks by the relationship of the people. That helps indexer and crawler to better classify search results regarding the specific group of linked (or non-linked) people. xfn is very simple (just the rel attribute) compared to FOAF, it's easier to maintain xfn link in any blog or wiki software than FOAF (IMHO). I'm sure that more good ideas mixing tagging and relationships will come in the following months… but I just say nothing.
I'm still wondering how and when a technology is reaching an usability level where people start to use it without thinking about the technology. Very often technologies are designed for usability and they are everything but not usable. I don't know why a lot of technology designed for being usable are not usable at the end. Maybe that the inner definition of usability is difficult to describe. For example, users use hypertext system without knowing the name or what is an hypertext system. Different systems were proposed like Xanadu but at the end the simplest was selected by the users. The selection of such technology is not evolution (in the Darwin sense) as the drift is selected by the users and the creators/contributors of the technology. It's not really random but if you see the "evolution" of the HTTP protocol, you'll see that the changes are mainly coming from the use of the protocol itself. Maybe you are wondering where I want to go ? It's about Semantic Web. It looks like (but I'm maybe wrong, as you know prediction in computer science…) that we have a large stack of technologies available but usability seems to lack. Simple technologies like tagging 5 is providing a great entry into the semantic web without the cost of all the current associated technologies. It looks like that free tagging starts to be usable without thinking too much about the technology behind. That could be enhanced but it's just the beginning. Collaborative classification starts to be usable and could be a nice ground for the famous holy grall of 'Semantic Web'. Reading Folksonomies Tidying up Tags? remind me about some old article where building an encyclopedia using a wiki-like interface is too chaotic for providing good result. Maybe the evolution of free tagging usage will give us the final answer ? When and How a technology is reaching a good usability level ?
Footnotes:
1. My old blog was using tDiary and had the discussed issues of blog software. Too large, difficult to fix or adapt and very easy to lost data.
2. We hope that the email alias is not known by the spammer. When required, just renew it.
3. Found on AlexSchroeder's blog
4. You could also use the ability to limit the state per rule in PF. source-track is a nifty option.
5. often called folksonomy