donderdag, juni 12, 2014

Just an average workday of a lecturer

7:25 Waking up. Breakfast, shower, getting dressed.
8:15 Driving to Arnhem.
8:45 Say hi to the students who are preparing a workshop on Reactive Programming for other students. Will have to assess the workshop this morning, best way to assess is to participate myself. Reading mail on my way to the coffee machine.
9:03 Few minutes late for the workshop. Students starting with some short theory on Reactive Programming and Rx.
9:30 First programming exercise. Playing with RxJs, done within a few minutes, but other attendants struggling a bit with some JavaScript thingies and a unknown API. A small timeout for a cup of tea.
10:30 Built my first Reactive JavaScript chat client using web sockets and the ws-echoserver.
11:30 Refactored code to make it talk to a chat server built with C# and Rx.NET. Checking if other attendants are able to keep up.
12:00 Small quiz about some Rx concepts, glad I could answer most questions correctly.
12:30 Passing feedback to the organising students, together with my colleague Debbie.
12:45 Helping out students working on a JMS assignment.
13:00 Picking up graduation reports, dropping reports in the car. Reading will have to wait until tonight, wait, ehhhh, tomorrow night, maybe next weekend. Answering mail on my way to the lunchroom.
13:00 Small lunch, eating on my way back to the office. Discussing names of some potential colleagues with members of the selection committee. We still have vacancies. Talking to several colleagues about assessment criteria and delivering course descriptions on time. Still on my way to the office.  
13:30 Finishing mail: some stuff about handing in assignments, making some appointments for next two weeks. Agenda is filled up with graduation presentations, project assessments and teammeetings. Planned to go to Goto Amsterdam, but what was I thinking: going to a conference does not match the two busiest weeks of the year. Better luck next year....
14:00 Welcoming guest lecturers about Prolog, getting coffee and water.
14:15 Start of the guest lecture. Cool subject, but I'm almost dozing off. Maybe answering some questions will keep me focussed.
15:30 End of guest lecture, heard this presentation before several times but still got new insights of how this funny language works.
15:30 A quick run to the coffee machine, students are waiting in line for a grade on their JMS implementation of the Dare2Date case. Also a late grade for a Spring-WS implementation, nice work using DI, ServiceLocator pattern, too bad it's not unittested.
17:00 Finishing class, dropping laptop and other gear at the office.
17:05 Small meeting about the information night for new students.
17:25 Few minutes for some sandwiches and a coke.
17:45 Preparing laptop and slides (thanks Gerrit for mailing the last version) for the first session.
18:05 First guests coming in for a chat and to attend the session about the three different ICT studies we host at the HAN University.
18:15 Start of first session. Mixed audience, small group but some good questions asked and answered.
19:10 Drink. Check whether I'm done for today, it was supposed to be a quiet evening but the second session already has some audience waiting for me.
19:30 Start of second session. Almost no empty chairs. Again a mixed audience. Again lots of questions about graduation assignments, whether to start with media design or software development, which laptop to buy...
20:30 Done. Well, almost done. First grab a drink. My feet hurt. On my way to the car.
21:00 Came across a colleague and friend. Had a very similar day like me, so I guess this was just an average day.
21:30 Home. Taking my shoes off. Say hi to my wife. Maybe I should write a blog about my day...
22:00 Watching TV. Should I really write this blog now?
22:30 Starting with the blog. Does anybody care to read this at all? Well, first write, crossing out later.
00:11 Done. Saving blog. What the heck, publish the damn thing. Sleep. Well. Sleep well.  

dinsdag, mei 27, 2014

Creating JIRA tasks right out of Apple Mail

Being a developer and lecturer I have lots of things on my mind, never a dull moment during programming, coaching or teaching. I sometimes feel like a juggler trying to keep as much as balls in the air as possible, so a few years ago I decided to adopt the Getting Things Done time-management method and apply it to my mailbox.

The result is a highly organized Apple Mail application with every day at most 5 unanswered e-mails, but most of the time the mailbox is empty and e-mails are answered or marked because action is needed. Recently I started doing extra projects having lots of small tasks that I have to do myself or tasks that need my supervision. Communication about these projects is done by e-mail, so I looked for a way to couple these emails to issues in a planningboard.

I decided to keep track of my tasks in JIRA Greenhopper, but after a few days I started to hate the context switch and the copy-pasting of issue contents so I took Automator for a test drive ending up with a nice extra context menu item that enables me to create JIRA tasks directly from Apple Mail. I took JIRA CLI for the heavy lifting instead of the JIRA SOAP API.

The Automator script outline looks like:

Outline of the Automator script
There are three major parts in the script:
  1. Three blocks combining "Ask for Text" and "Set Value of Variable". This leads to three variables, IssueDescription, IssueTitle and JiraProject holding the description and title of the issue and the project key to add the issue to.
  2. The Run Shell Script, preceded with three stacked blocks holding the variables. This leads to having three parameters in the Shell Script, the IssueDescription, the IssueTitle and the Project.
  3. Passing the result of the Run Shell Script through the Clipboard to the Display Notification.
Run Shell Script

This leads to a nice extra Context Menu Item that can be used to add the issue "Write blog about Automator and JIRA" to my personal project:

If you need the source for the Automator project, please feel free to drop me an email or a comment on the blog.

zondag, november 11, 2012

Kickstarting your Android project with Maven and Androidx86

Let's assume you want to develop Android applications and you want high quality code and high productivity. I just found out two tools that really help kickstarting your Android project.


  • Java 6 installed
  • Android SDK installed


AndroidKickstartR is a simple tools that creates an Android project together with a Maven project with all required dependencies:

Just fill in your ApplicationName, packagename and Main activity, enable the Maven option and click Download it! Extract the zip file and run mvn clean install android:deploy eclipse:eclipse. Notice that when you didn't start any emulator or forgot to create an AVD this step fails, but don't worry. The first thing you're going to hate when developing Android applications is the slow emulator, however there is a nice alternative using Androidx86 that can be executed using VirtualBox: 


Create the VirtualBox image using the directions and get the ipaddress of the emulator, in my case that's Start the adb process and connect it to the Android VirtualBox image: 

adb connect

Now we can re-run our maven targets: mvn clean install android:deploy. Open up your Android VirtualBox image, and run your favourite app!


Using AndroidKickstartR you can use Maven for deployment, codequality (i.e. Sonar, mvn sonar:sonar) and continuous integration (i.e. Jenkins). Androidx86 speeds up the development process, every android:deploy really redeploys the app.

Last hint: don't use too much IDE features from Eclipse or IntelliJ and use your IDE just for coding, let Maven handle the build, deployment en quality part.