Myles Braithwaite

Episteme

Back in February I tweeted "Starting work on #Episteme today."#. A few hours latter I got the following query in an email:

From: Ivan Avery Frey To: Myles Braithwaite Date: Thu, Feb 4, 2010 at 3:24 PM Subject: What's Episteme???

Self-explanatory.

Episteme is a wiki engine (more of a wiki library) I am currently working on (I have actually been working on it for the last two years). It was originally a fork of Yaki (which powers The Tao of Mac), then was powered by CouchDB, and now is a fork of Hatta (not so much as a fork because I am still going to be using Hatta's WikiStorage module).

So why am I working on yet-another-wiki-engine?

  • I like flat files (easy to backup using rsync).
  • I think that Relation databases (like MySQL and PostgreSQL) were not design for wiki documents.
  • I like storing the documents in a Revision Control System so I can edit them in a text editor.
  • I like being able to search.
  • I don't ware the same cloths every day why should I have to use the same markup language.

This is an example of a wiki document:

Title: Python
Tags: python, programming
Content-Type: text/x-wiki

**Python** is a dynamic programming language.

== Resources

* [[http://www.enricozini.org/2009/debian/using-python-datetime/|Tips on using python's datetime module]]
* [[http://diveintopython.org/|Dive into Python]]

I am using RFC822 (similar to an email) for meta information (title, tags, markup, date, author, etc).

Episteme will always be a work in progress and many never be released.


Some Thoughts on the iPad

This is a blog post I wrote the a few weeks after iPad was shown to the world and never got around to publishing it on this blog. It was on an internal company blog though. Sorry for bring up such an old news item.

A lot has been said the last two months about how Apple's iPad will kill the Kindle and how the iPhone/iPod Touch has already killed Sony's PSP and Nintendo's DSi (because the iPad will be able to play games it will some how destroy a extremely large industry). Personally I never like the idea of a device that did it all, Multi-Function Printers always gave me a bad feeling why combine the three most complicated systems in an office Printer, Fax, and Copier? Yes I will be buying an iPad when it comes out (not sure if Wi-Fi or 3G) but I will not be replacing my Kindle that has a better screen for reading and it will not be replacing any of my portable video game systems. I will use the iPad for the purpose I believe is servers: a netbook.

Yes the iPad can only run one application at a time. But if I need to run more than one application at the same time I can easily take out my laptop. I see the iPad as more of a internet device than a computer.


PyGTA - PyCon Dress Rehearsal

This month's PyGTA we will have three presenters talking about their upcoming PyCon talks. Leigh Honeywell will be presenting Teaching Python in Your Community -- her experience teaching a Python class at HackLabTO. Greg Wilson on What We've Learned From Building Basie -- what a bunch of undergraduates accomplished building a Django-based replacement for Trac called Basie. Mike C. Fletcher on Debating 'til Dawn -- will be presenting some of the best discussion/ideas/talks at PyGTA the last three years in his attempt to make PyCon cool again.

Remember to bring your laptop because Mike will have a Real-time feedback tool for chatting with the presenters and give feedback on their talks (he has been working for the last three months).


I ordered a second Linode (a 360) on the weekend for some PHP applications (Fever and DokuWiki). I have been with many VPS services and Linode is by far the best you can buy (shared host I will have to say Nearly Free Speech). It is hosted in the same data centre (Newark, NJ) so I have an internal IP address connecting both of them. I am running Nagios and Munin on both computers (Panda is monitoring Fox and Fox is monitoring Panda) that way if one goes down the other will notify me.

I also moved my Wiki from DokuWiki to Hatta. Hatta is a really simple wiki engine written in Python that use Mercurial for storage. Which means I just have to clone a repository to edit a page (you can clone the my draft wiki or my published wiki). I am going to miss some of the more powerful features of DokuWiki so I have started working on my own wiki engine called Episteme.

Episteme will have some of my favorite feature of DokuWiki, Hatta, Confluence, and Yaki.


Tornado at PyGTA

Last night at PyGTA, Mike gave a short talk/demo about his findings using Tornado and CouchDB to write a real time chat and voting application for his PyCon talk.

Tornado is a lightweight non-blocking web server created by FriendFeed and Open Source by Facebook. The API is similar to web.py and App Engine's webapp framework. Mike's ending comments was that Tornado can out perform Twisted. But he found he had to write a lot of code to do things that were built into Twisted (or any other modern web framework) already.

His thoughts on CouchDB:

I'm really beginning to regret the choice of CouchDB for the back-end. It's working perfectly well, but I have literally dozens of pieces of code hanging around for doing SQL-based paging... none of which are applicable to CouchDB.

Referenced: Things I'd like to play with (given enough time)

This website (and a few other sites I manage) will be moving from Apache 2 and WSGI to Tornado and Nginx #. It will still be built on top of Django thought so most of the issues Mike was talking about wouldn't apply to me.

Other people who wrote about this event:


Geektool Setup

I recently installed Geektool on my MacBook Pro. I used so many sources to set it up that I thought it would be a good idea that I write a blog post about some of the more complicated configurations.

My Geektool Setup
My Geektool Setup

Sunrise & Sunset

Sunrise <span class=& Sunset data-downloadable="true" >

I am getting the sunrise & sunset data from weather underground mobile website.

Sunrise

curl --silent http://m.wund.com/global/stations/71265.html | grep 'Sunrise' | sed -e :a -e 's/]*&gt;//g;/&lt;/N;//ba' | sed -e 's/Sunrise/Sunrise: /g' | sed -e 's/EST//g'

Sunset

curl --silent http://m.wund.com/global/stations/71265.html | grep 'Sunset' | sed -e :a -e 's/]*&gt;//g;/&lt;/N;//ba' | sed -e 's/Sunset/Sunset: /g' | sed -e 's/EST//g'

IP Addresses

<span class=IP Addresses data-downloadable="true" >
#!/bin/sh
myen0=`ifconfig en0 | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}'`
myen1=`ifconfig en1 | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}'`
wip=`/usr/bin/curl --silent http://checkip.dyndns.org | awk '{print $6}' | cut -f 1 -d "<"`
INACTIVE='INACTIVE'

if [ "$myen0" != "" ]
then
    echo "Ethernet: $myen0"
else
    echo "Ethernet: $INACTIVE"
fi

if [ "$myen1" != "" ]
then
    echo "Wireless: $myen1"
else
    echo "Wireless: $INACTIVE"
fi

if [ "$wip" != "" ]
then
    echo "External: $wip"
else
    echo "External: $INAVTIVE"
fi

Weather Image

Weather Image

I am using Yahoo Weather to get the weather image.

#!/bin/sh
# Get weather image
# Add this to your crontab.

YAHOO_WEATHER_HTML=`curl --silent "http://weather.yahoo.com/canada/ontario/toronto-4118/?unit=c"`
curl --silent -o /tmp/weather.html "http://weather.yahoo.com/canada/ontario/toronto-4118/?unit=c"

if [[ $YAHOO_WEATHER_HTML ]]; then
        curl --silent -o /tmp/weather.png $(grep 'div class="forecast-icon" style="background:url' /tmp/weather.html | awk -F"'" '{ printf $2 }')
fi

Weather Forecast

Weather Image
curl --silent "http://weather.yahooapis.com/forecastrss?p=CAXX0504&u=c" | grep -E '(Current Conditions:|C<BR)' | sed -e 's/Current Conditions://' -e 's///' -e 's/<b>//' -e 's///' -e 's///' -e 's///' -e 's///'</b>


A Spam Email Message I Got Today

This is some spam I received today.



Inspired by Andrew Currie What I'll be checking out at #oglf09 here is what talks I am going to be attending at this years Ontario Linux Fest.

10 a.m. - Enterprise Content Management Meets Open Source with Cheryl McKinnon

Digital content is the lifeblood of any business in the information economy and companies ignore the care and feeding of electronic content at their own peril. ECM (Enterprise Content Management) could be one of the hottest areas of open source in 2010 and beyond. Attend this session to learn about the fundamentals of ECM - why the technology matters and why business users care about it. Learn the basics of content lifecycle management, what compliance means to information management professionals and why the time is right to change some of the perceptions about open source for business applications.

11 a.m. - Ubuntu Netbook and Moblin Remixes with Jorge O. Castro

Netbooks are all the rage lately and there are a plethora of choices of what to run on your netbook. In this talk I will demo the newest versions of the Ubuntu Netbook Remix and the Ubuntu Moblin Remix and highlight the features of both environments. This talk is meant for people who might be new to Linux and want a glimpse of what's happening with netbooks.

12 p.m. - Introduction to the Beagleboard with Robert P.J. Day

For only $149 (US), you too can get into the world of embedded Linux computing with the ARM-based Beagleboard. Speaker Rob Day will give an overview of the board, plus demonstrate it running at least one of the Angstrom and Android operating systems.

2 p.m.

My Apache CouchDB talk.

3 p.m. - Enterprise grade messaging in Fedora with Apache Qpid with Rajith Attapattu

Apache Qpid is an enterprise grade messaging solution with a proven track record and a growing community. It is currently in live production in several large scale financial institutions. Qpid is a multi language implementation of the AMQP protocol with brokers in c++ and java and clients in c++,java,python,ruby and c#. It provides infrastructure for scalable, reliable, secure, low latency messaging that can be used in a myriad of applications not just enterprise messaging. From a community aspect it is one of the first open source projects to receive a substantial contribution from Microsoft. Recently Microsoft contributed a WCF client and provided substantial support by way of funding developers to work on a windows port of the c++ broker. It has a growing community with contributions from large organizations, academic institutions, individual contributors and google summer of code students ..etc. This talk will provide an overview of Apache Qpid and discuss how it could benefit your community project or your organization using examples. It will also cover how to get hold of the bits and better yet how to become a contributor.

4 p.m.

I will be in the GTALUG booth talking to folks.