Sunday, December 15, 2013

First Android app

This week I released GetBack GPS, my first Android app, day to day one year after the first commit that started the development.

During this year, I put my newly acquired Java skills to use, explored the huge possibilities of the Android framework, and experimented with Test Driven Development and Continuous Integration.

GetBack GPS logo
The result so far is a simple navigation app, called GetBack GPS, that helps you find your way back to a previously visited location, using the GPS functionality of your Android device.
You can get it at F-Droid, a website that distributes Open Source software.

The app is Open Source, freely available and it does it what it is supposed to do. If it doesn't, please report an issue. ;)


So what's next? First some small improvements to the interface, some refactoring and creating a class to make rotating of the arrow easier.
Increasing the test coverage is on my list as well, but I have to figure out a way to automatically test the app, with my current setup (maven, cobertura, junit3, Jenkins, Travis CI, coveralls). I might have to make some changes to the setup to get coverage from instrumentation tests.
Unit testing classes that extend (or use) Android classes, is not possible, because the Android API is an just an interface, the implementation of the classes is only present in the System Images of Android devices. So to test the actual implementation, you need to test on an actual or emulated Android device.

Some future ideas for the app:
  • store multiple locations, from which you can choose when you set a destination
  • support both the metric and imperial system
  • share your location with others and use the current location of a friend as a destination
More ideas can be found in the milestones.

I also plan to work on some other Android projects that will use Bluetooth communication and barcode or QR code scanning.

Thursday, November 14, 2013

Choosing a name for my Android app

After finding out that the working title of my Android app already seems taken, and with a first release upcoming, it seems time to look for a good name.

First some explanation of what my app does (and will do in the future).

It is an Open Source Android app for finding your way back to a previously visited location, using GPS coordinates.

Imagine visiting a town, going to an event or doing some hiking. When finished, you have to find your car again, or the way to the station, or any other point where you started. Then the app is what you need. Store a location when you start your trip, and at the end of the day, use the app to find your way back to where you started.

In future it will be possible to share your location with friends, so that you can easily find each other at a festival or in town, or the ability to store multiple locations to select as a destination.

This is the result of a brainstorm so far :

  • Theseus, Knossos (in line with the current working title)
  • GoTo, GoToDestination, GoToLocation
  • FindDestination, FindMyDestination, DestinationFinder
  • FindLocation, LocationFinder
  • DestinationRadar, LocationRadar (inspired by future feature of the app to locate friends who also have the app, where 'FriendsRadar' could be an appropriate name)
Any other suggestions for a good name?

Monday, October 07, 2013

Travis and Android

If you're looking to build your Android app on Travis CI, using SDK r22.3 and API 19 (Android 4.4), put this in configuration file .travis.yml :

language: java
before_install: 
  # install necessary x32-libs for Android SDK 
  - sudo apt-get update -qq
  - sudo apt-get install -qq libstdc++6:i386 lib32z1
# download the latest android sdk and unzip 
  - wget http://dl.google.com/android/android-sdk_r22.3-linux.tgz
  - tar -zxf android-sdk_r22.3-linux.tgz
  - export ANDROID_HOME=`pwd`/android-sdk-linux
  - export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
# only update the sdk for the tools and platform-tools and required api level # (run "android list sdk --extended" to get the full list) - echo "y" | android update sdk --filter tools,platform-tools,build-tools-19.0.0,android-19 --no-ui --force

Up to date version is here.

What it does (and why):
  • The Travis virtual machines are running 64 bit kernels, but the Android SDK needs 32 bit, so packages libstdc++6:i386 and lib32z1 are needed.
  • The Android SDK is not installed on the Travis instance, so you need to download and install it yourself.
  • Update the tools and platform-tools and API (here API 19) related packages.
  • There is no command line option to accept the license, so piping a "y" to the installer is necessary. Please note : if you have to accept multiple licences, this will not work.
Update (08Dec2013) : Only install required x32 packages, use names of SDK packages

Thanks to Levi Wilson and Ralf Kistner for inspiration to get it working.

phpMyAdmin and Google Summer of Code 2013

phpMyAdmin logo
GSoC 2013 was great for phpMyAdmin. We selected 6 students out of 25 project proposals. The number of proposals was slightly smaller than previous years.

Students Bin Zu and Supun Nakandala refactored many scripts this summer. All the scripts in the Server view and those regarding the SQL executor, along with scripts dealing with the table Structure were cleaned up. Code was moved into functions, variable names were improved, and one of the students wrote unit tests for his newly-created functions.

Through Google Summer of Code, Kasun Chathuranga did much work on implementing new feature requests and improving the interface of phpMyAdmin. Kasun's efforts implemented a number of features requested by users and improved the interface in a number of ways.

Mohamed Ashraf has successfully contributed an error reporting tool to the phpMyAdmin code base. The tool will aid end users in reporting JavaScript-related issues and help phpMyAdmin developers deliver fixes for such issues quicker.

Ayush Chaudhary and Adam Kang were selected for the Automated Testing project. Since it was not planned to take two students, code sections to do unit testing had to be split among them.
While writing unit tests for string manipulation functions in phpMyAdmin, one of the students identified that the functions were not implemented in a way that would facilitate unit testing and went on to refactor them to add new classes before writing unit tests for them.
Besides unit tests Selenium tests for interface testing were added. Existing tests were migrated to Selenium2 and helper classes were added that are needed to write Selenium tests.
Overall the test coverage of phpMyAdmin has increased.


All six students successfully finished their projects and their code is merged with the phpMyAdmin codebase which will be part of the upcoming 4.1 release, which you can expect in the next few weeks.
Some of the students are still around fixing bugs, we look forward to more contributions from them in the future.

Thanks to Google Summer of Code, we had again some great contributions and improvements to the phpMyAdmin project. Now that GSoC 2014 is announced already, we can start preparing for the next edition and another awesome summer of coding and mentoring.

Monday, August 26, 2013

Recordings of phpMyAdmin tutorial at DebConf13 available

The phpMyAdmin team visited DebConf13 and did a tutorial about phpMyAdmin.
The tutorial was recorded and it is now available in four parts on our brand new Youtube channel :
  • part 1 : introduction and basic features
  • part 2 : relation between tables
  • part 3 : display inline picture, zoom search, using table relations, display GIS data
  • part 4 : triggers/routines/events and server status monitor

Thanks to Debian for recording our talk and making it publicly available.

Monday, August 12, 2013

phpMyAdmin Tutorial at DebConf13

The phpMyAdmin team is visiting DebConf13 in Vaumarcus, Switzerland.

On Tuesday August 13th, at 15:30 (CEST), four members of the phpMyAdmin team will do a tutorial on basic features and showcase some exciting advanced functionality, in the second talk room at DebConf13.

You are welcome to visit us if you are around, or tune in on the live stream.

It will be recorded, so you can watch it later as well.


Friday, June 21, 2013

upgrade Dell PERC6 firmware with Debian

How to upgrade the firmware of a PERC6 RAID controller in a Dell PowerEdge R510 server, that's running Debian 6 (Squeeze).
Dell does not officially support Debian, thus the provided upgrade package does not run automatically. But with some tweaking, you can get it done.

This manual works for both PERC6/E and PERC6/I integrated (onboard chip). I haven't tested it with PERC6/I, but I guess it will work as well.

Step 0 :

Install the latest Dell OpenManage Server Administrator software (OMSA 7.1). This is not necessary for the upgrade, but useful all along, because you get a (web)interface and some command line tools to manage the server hardware. You get log messages also.

There is a community supported port of OMSA for Ubuntu, but it works fine on Debian Squeeze.

Step 1 : get the firmware


You can get the firmware update packages at the Dell support pages. Select the binary for RedHat.

You will have to get the actual firmware upgrade file from this package :

bash SAS-RAID_Firmware_F96NR_LN_6.3.3-0002_X00.BIN --extract perc6e_fw

This will extract the contents of the binary into folder perc6e_fw. Using bash is needed because the scripts are intended for sh, but give errors when run on Ubuntu or Debian. You can also change the intended shell in the first line of the BIN file and run it.

The firmware upgrade file is located in perc6e_fw/payload/*.rom

Step 2 : get the firmware uploader

I couldn't get this Dell binary package to actually update the driver, so I used the firmware updater from LSI. The PERC 6 RAID controllers are rebranded LSI controllers, so this works.

Get the StorCli tool from the LSI website, choose the Linux version, it is a zipped RPM package.

First unzip it :

unzip Storcli_linux_10175.zip


Then retrieve the upgrade tool from the rpm package :

rpm2cpio storcli-1.01.75-1.noarch.rpm | cpio -idmv


This will convert the rpm to a cpio archive and extract the files from that cpio archive.

Now you have the storcli tool to upload the firmware upgrade file to the PERC controller. Here is a manual on how to use it, but we'll only need a few commands.

Step 3 : Upgrade the PERC controller firmware

Now you just have to upload the Dell PERC6 firmware to the RAID controller with the LSI tool :

storcli /c0 download file=FW1371E.rom


This will start downloading the firmware file into the controller.

After the download is finished, you have to reboot your server. The new firmware will be installed when the server is booting.

Please note that the /cX parameter defines which RAID controller you will send the firmware upgrade to. If you have only one PERC RAID controller in your server, you can use /c0. If you have multiple, it is safe to assume that the onboard PERC6/I is in 0 and that a second one is in 1. If you have more than 2, you will have to find out which controller is which. You can do this with this command :

storcli show

Monday, June 03, 2013

git subtree module, with .gittrees config file

I have written about the git subtree module before.
It has been improved, to allow defining your subtrees and imported projects in a config file, in order to update them without having to specify the repo url and branch every time you push to or pull from an imported project.

So, first you need to setup the subtree :

$git subtree add --prefix=other_project \
     git://github.com/your_tree/your_project.git master

It imports the master branch of a git repository located in git://github.com/your_tree/your_project.git into the folder other_project of your git repo.

A file .gittrees in the root folder of your git repo is created :

[subtree "other_project"]
    url = git://github.com/your_tree/your_project.git
    path = other_project
    branch = master

With the subtree being defined in .gittrees, you can make changes to this imported project and you want to push them back to the original project, you can use this :

$git subtree push --prefix=other_project

Or if you want to update the imported project with changes from the original project, you can use this :

$git subtree pull --prefix=other_project

You can also push all changes in imported projects to the original projects, with

$git subtree push-all

It will push all changes to projects that are defined in the .gittrees config file.
Pull changes from all defined subprojects is done with :

$git subtree pull-all

BTW : All subtree commands must be run in the root folder of your git repo.

BTW2: the subtree module is not part of the core git package. So if you want to use it, you will have to install the module first.

Clone the subtree project :

$git clone https://github.com/helmo/git-subtree

In the git-subtree directory, run as root :

#./install.sh

This will copy the git subtree module to the git script folder. You can now use the git subtree module.

Tuesday, May 28, 2013

phpMyAdmin accepts 6 students for GSoC 2013

phpMyAdmin is pleased to announce that it has accepted 6 students/projects for Google Summer of Code 2013 :

  • AJAX error reporting : Mohamed Ashraf
  • Automated Testing : Adam Kang
  • Automated Testing : Ayush Chaudhary
  • Interface improvements : Kasun Chathuranga
  • Re-factoring: server view : Bin Zu
  • Refactoring: SQL Executor, Column's Structure Manipulation : Supun Nakandala

Details about the accepted projects can be found on the wiki.

Congratulations, good luck and happy coding to all the students.
phpMyAdmin looks forward to their contributions to the project.

Saturday, April 20, 2013

Google Summer of Code 2013 info session @ UGent

About 45 interested students showed up for the Google Summer of Code 2013 info session that was organised at Ghent University on Monday, April 15th 2013 in the Faculty of Engineering in the Plateau building.

First there was an general introduction on what Google Summer of Code (GSoC) is, explaining the goal of the program, the benefits for the students and an overview of the timeline. This was followed by a few Open Source organisations that will participate in this year's GSoC, presenting themselves and potential projects to work on, and a few students who took part in past versions of GSoC, sharing their experiences with the audience. This turned out to be a nice mix of information and different experiences that gave a good view for the attending students on what to expect from applying for and participating in GSoC.

Some useful advice that was spread :

  • Put enough time in the preparation of your project proposal. Your future mentors will review this and will base their decision on accepting you mostly on this proposal. Make sure you explain well what you plan to do, how you plan to do it, and how much time you will spend on each part. Be as detailed as possible.
  • Be active in the community of the organisation you want to work with. This shows the mentors that you are really interested. Don't be afraid to ask questions, or to participate in a discussion on the IRC channel or mailing list. It helps when your name rings a bell when the mentors are going through all the project proposals.
    The sooner you start with this, the better. Follow the mailing list and try submitting a few patches. It was suggested that you choose an org for next year already and contribute to it, as a preparation for GSoC 2014 (if there would be one).
  • Choose a project you like. If you get accepted you'll spend almost 3 months working full time on it, so it helps if the programming language, developing environment, code base and your project are something you are comfortable with. This does not mean that you should choose a too easy project, there can be some challenge. That will keep it interesting for you. Just find something you can chew but is challenging enough to keep you going.
    It was mentioned that having some proficiency with the programming language you will be working with is usually a good point, but one of the organisations (ESUG) mentioned that learning a new language (SmallTalk in their case) can be a nice experience as well.
  • It is an interesting experience, that will give you some real world development experience, will get you introduced in the Open Source community and looks nice on your CV.
The evening was closed by a reception with room for the students to talk to the speakers and ask questions.

Thanks to the Google Open Source Programs Office for the promotional material, the Open Source organisations (phpMyAdmin, SAGE, ESUG, MuseScore, Debian and Samba) and previous GSoC students (Jasper Van der Jeugt (worked on Haskell) and Sander Bogaert (worked on K9 mail)) for their talks and sharing their experience, and to the student associations (VTK, Zeus WPI, Ceneka) and UGent for their help in organising the event.

Tuesday, April 02, 2013

Google Summer of Code infosessie @ UGent

Zin om deze zomer $5000 te verdienen met een vakantiejob? Lijkt het je wel iets om vanuit thuis te werken wanneer het je uitkomt? Wil je een echte bijdrage leveren aan open-source software? Google maakt dit mogelijk dankzij de Google Summer of Code!

Op maandag 15 april organiseren Zeus WPI, VTK en CenEka een introductieavond rond Google Summer of Code. Dieter Adriaenssens, mentor van het phpMyAdmin-project, introduceert het concept en de procedures. Daarna komen enkele mentors hun projecten voorstellen, afgewisseld met studenten die hun ervaringen van vorige jaren delen. Achteraf kan je eventuele vragen aan de mentors stellen of gewoon gezellig napraten bij een drankje op de afsluitende receptie.
Deze introductie vindt plaats in de Jozef Plateau-zaal in de Plateau en begint om 19:00. Iedereen is welkom! Om een idee te hebben van het aantal aanwezigen vragen we om op deze pagina in te schrijven.

Ben je zelf een mentor of heb je ooit meegedaan en ben je geïnteresseerd om je project voor te stellen of ervaringen te delen op deze avond? Laat iets weten!

Wanneer : maandag, 15 april 2013, vanaf 19:00
Waar : Jozef Plateauzaal, faculteit Ingenieurswetenschappen UGent, Plateaustraat 22, Gent
Gratis toegang, maar best op voorhand inschrijven.

Friday, March 29, 2013

Why Test Driven Development is cool!

Test Driven Development (TDD) is cool! And useful. By writing tests for a method or class before implementing that class, work on that class is not finished, until all defined tests pass. Provided of course, that you wrote good and extensive tests, that cover as much as possible all the different cases and possibilities of how the method/class should behave.
And the upside is, that you can be sure that all your methods/classes keeps working later in the development process, because you have tests that continuously check if all classes keep behaving like you expect them to. If you would change something that would break the expected functionality of a method/class, then at least you will know, because some tests will fail. That's a few bug reports avoided!

Sunday, February 10, 2013

Roundup of FOSDEM 2013

Last weekend, was FOSDEM 2013, two days of talks about Open Source, almost 500 in total, spread over more than 20 developer rooms.

It started on Friday night, at the Delirium café in the center of Brussels, where a few hunderd developers had gathered for beer and socialising. I planned to meet some people, but finding them was not an easy task. Ironically, modern day tools like SMS proved useless : by the time the messages I sent reached them (hours later), I had already found them.

After a nightly walk to the hotel and a short night, it was time for the real stuff. First the opening talk by FOSDEM staff, with some practical info about the conference : the new logo, location of rooms and buildings, wireless network, sponsors, catering, first aid, devrooms, lightning talks and main track speakers; finished by the FOSDEM dance, which was a bit more complex than previous years.

Looking at the list of talks I have attended (with more than 20 simultaneous talks at any time during the conference, it was impossible to go to all 500 of them), I'll mention some highlights :

  • I went to quite a few talks about legal and licensing issues. Over the years I've come to realise this is an important part of the Open Source world. Choosing an Open Source license and publishing your work under it, being it software, hardware design, or other creative work, is one thing, making sure the license terms are not violated, is another. Although some talks were informative, some raised more questions than were answered.
    For example, if I publish my software under an Open Source license as a European citizen, will European law protect my copyright and license terms? If the software is used in the EU, this would probably be the case. But what about other regions in the world?
  • Maintaining a kernel subsystem : informative talk and good speaker. Although it was about maintaining a kernel subsystem, the methods he used, can be used to maintain any Open Source project.
  • Welcome to the Symfony2 World  gave an overview of the current state of the Symfony 2 framework, with some history and what components and possibilities it has.
  • Vehicular traffic estimation through bluetooth uses a Raspberry Pi and some Open Source tools, to track traffic connecting to bluetooth capable devices. Nice application of the Raspberry Pi.
  • What's new in BIND 10 and Samba4 : both telling a story about rewriting the previous software to come to a newer, better and improved version. Samba 4 will now support SMB3 protocol and Active Directory.
  • One of the most interesting talks explained what the actual problem is with UEFI SecureBoot, who the different players are (from users, over system builders, to hardware and OS vendors) and how the problem can be solved.
    Basically : Windows 8 requires UEFI Secureboot to be enabled (UEFI replaces the old BIOS), otherwise it will not start up. Secureboot ensures that the OS being started is valid, by checking it's signature with one stored in the UEFI chip. As such, this is not bad, but when you want to boot an OS that is not signed by a key, or the key is not present in the chip, it is impossible to start this OS, making dual booting linux/Windows 8 very difficult.
    Luckily some intiatives are done to make the dual booting possible, with the most recent one : Linux Foundation obtained a Microsoft key, making it possible to boot a linux distro on a device were Windows 8 is installed. (this happened after FOSDEM, so it was not mentioned during the talk)
    Of course, it is still possible to boot Linux, or any other OS, on a device with UEFI, when you don't want to use Windows 8. Then you can just disable the SecureBoot option.
And last but not least, I had my own presentation about the Present and future of phpMyAdmin in the MySQL and Friends devroom. About 50-60 people attended, although it overlapped with the final key note and was one of the last talks at FOSDEM. The talk went well, small hickup during the demo and there were some questions afterwards.

It was a nice weekend, lots of interesting talks, meeting a few current and previous team members of the phpMyAdmin and some people I've met at the GSoC mentor summits. Still only 51 weeks to go before the next FOSDEM.

Tuesday, February 05, 2013

Present and future of phpMyAdmin talk at FOSDEM

If you missed the talk about the Present and future of phpMyAdmin at FOSDEM 2013, you can get the presentation here. Only slides, so without the demo's. ;)

Summary of the talk : What's new in phpMyAdmin and what's coming up? An overview and some demos of the new features and changes in the current release (3.5) and what to expect in the upcoming 4.0 release.

Wednesday, January 30, 2013

talk about phpMyAdmin at FOSDEM 2013

A few more days and FOSDEM 2013 starts again. I've been looking forward to this since I left FOSDEM 2012. ;)

A lot of talks and presentations to go to, some people to meet (again), but most importantly : I will do a talk about phpMyAdmin!

If you are at FOSDEM and want to know more about the Present and future of phpMyAdmin, then come to room H.2214 (MySQL & Friends devroom) on Sunday, February 3rd, 2013 at 17:00.

I will talk about the new features in the current version (3.5.x) and what you can expect in the upcoming version 4.0.0.

Hope to see you there!

Tuesday, January 01, 2013

Ambitions 2013

After having reached some goals and having done some cool things in 2012, I set some ambitions and goals for 2013 (basically an updated version of the ones I set for 2012) :
  • pick up Java and/or C++
  • improve knowledge of OOP and design patterns
  • finish writing a first Android app
  • do a presentation/talk at a conference (FOSDEM, ...)
  • Improve pace and distance in running, after I recover from a knee injury. Next goal : 10 miles by April.
  • Improve swimming (technique, speed, stamina and style) : Build up stamina doing a slow front crawl. Next goal : 250m without a break
  • In 2012 I started wall climbing (bouldering), so I hope to improve my technique and muscular strength, as a preparation for some outdoor rock climbing.
  • Repeat the Car Free Day action, but this time on faculty level

This was 2012!

2012 was great, here are some cool things I did :
  • went to FOSDEM, attended the phpMyAdmin team meeting, and showed two friends around in Ghent, Antwerp and Bruges
  • got into the top 3 of most active contributors on ohloh.net
  • successfully suggested a commission at my university to make their reports available sooner
  • improved my OOP skills, implementing composite and singleton design patterns and further abstracting my Open Source framework
  • participated in TransitieUGent, a platform for setting goals and actions for UGent to become more sustainable by 2020/2050.
  • had a lot of fun building a piñata-like moose as a present for my sister's wedding
  • participated in an assessment test at work and passed
  • achieved swimming 2 km in less than an hour
  • created a document in LaTeX
  • holiday in Greece with some friends
  • released a first beta version of my web development framework, which is 100% compliant with PEAR coding style
  • started running and did 10 km in about an hour by the end of the summer  
  • made a linux server work as a TimeMachine storage device.
  • mentored Rouslan Placella for GSoC project : 'Removal of frames in phpMyAdmin'
  • subscribed for a weekly organic fruit package of De Wassende Maan
  • did a triathlon, doing swimming (2km), cycling (26km) and running (5km) on the same day
  • motivated his colleagues to come to work without a car, by pledging to run 100 meters for everyone that did, and eventually ran 4 km.
  • organised a trip for some friends to the opera 'La Damnation de Faust' by Berlioz, directed by Terry Gilliam. The opera was great, BTW.
  • attended Google Summer of Code Mentor Summit 2012 at Google HQ in Mountain View, California.
  • visited Yosemite National park again (organising the trip for some fellow Mentor Summit attendees)
  • started climbing (bouldering)
  • baked an apple cake for the first time and perfected it after a few tries.
  • got an award for 'motivating colleagues to come to work without a car'
  • released a first version of a lab instrument reservation tool at work
  • took on Android development, first creating a 'Hello World!' app and then starting to work on a small but a bit more complicated app, while exploring the possibilities of the Android framework
  • swam in a 50 meter swimming pool
And some other things that happened :
  • wedding of my sister
  • funeral of Wim
  • wedding of my steph brother
  • my other sister graduated as a teacher
  • mother moving to Hasselt
  • Brecht defended his PhD
  • wedding of Tho and Tine