LCD-like banners in Python

Back in 1998 or so, I wrote a CD player application for Microsoft Windows in Borland Delphi. It was for a magazine tutorial article, and I wanted a cool LCD-like display to show track elapsed and remaining time. There was a good one available for Delphi, called LCDLabel, written by Peter Czidlina (if you’re reading this, thanks once more for your cooperation). I’ve been thinking about doing a modern version of the LCD display component for several times over the years, and I even got pretty far with one for OS X in 2010, but then abandoned it because of other projects. []

Photos framework and HipStyles

HipStyles was removed from the App Store over a year ago, but from time to time I still think it could be resurrected. However, after taking a long hard look at Apple’s new Photos framework in iOS 9, I think it is just not feasible anymore. HipStyles and the Assets Library Framework HipStyles was a photo finder for Hipstamatic and Oggl photos, looking for snaps taken with some Hipstamatic lens, film or flash of your choosing. []

Learning Clojure

About one year ago I wrote a multi-part tutorial on Clojure programming, describing how I wrote a small utility called ucdump (available on GitHub). Here are links to all the parts: Part 1: The Clojure REPL Part 2: Definitions Part 3: Higher-order functions Part 4: Logic Part 5: Project However, Carin Meier’s Living Clojure is excellent in many ways. Get it from O’Reilly (we’re an affiliate): My little tutorial started with part zero, in which I lamented how functional programming is made to appear unlearnable by mere mortals, and it kind of snowballed from there. []

BusMonTRE-sovelluksen tulevaisuus

BusMonTRE on pysäkkiavustinohjelma älypuhelimille. Se on tehty tarjoamaan helppo tapa selvittää milloin kulkee bussi käyttäjää lähellä olevalta pysäkiltä Tampereen joukkoliikenteen toiminta-alueella (johon kuuluu Tampereen lisäksi useita ympäristökuntia). Tähän tarkoitukseen se käyttää Tampereen kaupungin tarjoamaa avointa dataa sekä Tampereen joukkoliikenteen ylläpitämää sinistä virtuaalimonitoria. BusMonTRE on tällä hetkellä saatavana iOS-, Android- ja Windows Phone -älypuhelimille. Tässä kirjoituksessa kerron hieman ohjelman taustoista sekä tulevaisuuden kehitysnäkymistä.

Virtuaalimonitori omaan tarpeeseen

Nettisivupalveluna toimiva sininen virtuaalimonitori on ollut käytössä Tampereella jo pitkään. Tavaratalot ja pienemmät liikkeet ovat käyttäneet sitä tiloissaan esimerkiksi näyttämällä isolla televisioruudulla asiakkailleen lähimmältä pysäkiltä kulkevien bussien tietoja. Kaikiilla Tampereen joukkoliikenteen pysäkeillä on sekä nimi että numerokoodi, ja virtuaalimonitorin saa helposti näyttämään yhtä tai useampaa haluttua pysäkkiä tämän numerokoodin avulla.

Sain ajatuksen BusMonTRE:sta jo vuonna 2011, mutta silloin en vielä ryhtynyt suunnittelemaan sovellusta, vaan käytin omissa laitteissani muutamaa valmiiksi leivottua nettiosoitetta, joilla sain kätevästi haluamani monitorinäytön nettiselaimeen. Osallistuin vuosina 2012-2013 useaan avoimen datan tapahtumaan Tampereella, ollessani muutenkin aktiivisesti mukana Tampereen startup-yhteisössä. Eräässä näistä tapahtumista Tampereen joukkoliikenteen edustaja antoi vahvan signaalin siitä, että heidän intresseissään ei ole kehittää sovelluksia itse, mutta he tarjoavat datan ilmaiseksi sovelluskehittäjien käyttöön.

[]

Functional programming without feeling stupid, part 5: Project

In the last four installments of Functional programming without feeling stupid I’ve slowly built up a small utility called ucdump with Clojure. Experimentiing and developing with the Clojure REPL is fun, but now it’s time to give some structure to the utility. I’ll package it up as a Leiningen project and create a standalone JAR for executing with the Java runtime.

Creating a new project with Leiningen

You can use Leiningen to create a skeleton project quickly. In my project’s root directory, I’ll say:

lein new app ucdump

Leiningen will respond with:

Generating a project called ucdump based on the 'app' template.

The result is a directory called ucdump, which contains:

.gitignore   README.md    project.clj  src/
LICENSE      doc/         resources/   test/

For now I’m are most interested in the project file, project.clj, which is actually a Clojure source file, and the src directory, which is intended for the app’s actual source files.

Leiningen creates a directory called src/ucdump and seeds it with a core.clj file, but that’s not what actually what I want, for two reasons:

  • I want ucdump to be a good Clojure citizen, so I’m going to put it in a namespace

    called com.coniferproductions.ucdump.

  • My Git repository for ucdump also contains the original Python version of the application, which is in <project-root>/python, and I want the Clojure version to live in <<em>project-root</em>>/clojure.

[]