Sometimes we manage to surprise even ourselves. Our latest Ship It Days projects have come out, well, shippable! Not everything is perhaps as far along as we'd liked, but each of the five projects is at the very least useful and usable, something that hasn't always been the case with previous editions. So props to our teams!
In a previous post we've given a brief overview of each of the projects, here you'll find a short retrospective for three of those. The final two projects get their overview in part 3.
We needed a tool to check the availability of free parking spaces at our Mechelen offices, so we could avoid navigating the (very) narrow entryway needlessly. We started with a Raspberry Pi and a little camera, which we would aim at our parking spots. Getting it to take a picture every minute was relatively straightforward, as was using Python to push the images to our AWS S3 Bucket. Every new picture overwrites the previous one, so as not to balloon our storage needs and keep the privacy issues to a minimum.
The harder part was object recognition. We went with a pretrained object detection model for TensorFlow.js, because it does what we needed, and also because it is free. Amazon Rekognition is a lot more powerful, but for what we wanted, felt like shooting with a bazooka at a mosquito; a bazooka that’s quite expensive as well. The TensorFlow.js model worked pretty much out of the box. Getting it to only look at our parking spaces (and not at the others around it) was a little less straightforward, and took up quite some time. We got that working eventually, but didn’t get beyond that, having the data automatically analysed.
So we still have some work to do, namely making a nice shell for the camera and creating a system that simply shows the number of free spaces at a glance. And we’d love a widget, and better recognition, and maybe the ability to reserve some spots in advance. But, as it stands, we do have a better system than before, that allows our people to request the latest picture via SlackBot. So nobody has to navigate the (very) narrow entryway for naught ever again.
And it all started with an empty post-it and a dirty sponge.
Grooming tickets is something any agile developer has to do a lot. We used to make our estimations during our weekly grooming sessions, using a deck of cards (it’s a thing). This was good enough, until remote working was introduced and we had grooming sessions over Skype. Our Scrum Poker Online Tool (or SPOT) was designed to make those meeting easier, and to allow developers to make estimations beforehand, whenever they have time.
A Spring app polls the JIRA API and sends the data to the Firebase realtime datastore, which also handles the authentication for the mobile app. This app, made in Angular, gives a developer an overview of the tickets they need to groom, filterable by project. Only after all developers have picked an estimate for a ticket, can they see the estimates of other developers. A Project Lead doesn’t have this limitation and sees any estimates immediately. Every story has a status – ‘Not yet estimated’, ‘No consensus’, or ‘Consensus’ – and has a comment thread below.
At the moment, neither estimates nor comments can automatically flow back to JIRA, which we do think is an important feature to have. Integrating authentication with the rest of our system is also something that’s high on our priority list. The rest of what we have planned lies in the realm of nice-to-haves, such as push notifications and better styling and image presentation. All in all, we think SPOT can be used as is and will see a lot of use, making our grooming sessions a lot more efficient.
The first step in making remote working more of a sociable thing, is knowing who is working where. To make this work, both checking in and checking the location of others had to be easy and little effort. To this end, we made a mobile app for checking in, and a webplatform for looking at everyone’s location. Oh, and we renamed our app Heimdall, in loving memory of the all-seeing brother-in-arms of Thor (it’s for internal use only, please don’t sue).
We built the entire thing on .NET Core and used Angular for the web frontend and Ionic Angular for the mobile app. Angular turned out to be a bigger hurdle than we’d foreseen. This was in part due to the face that all of us were .NET experts, with little frontend knowledge between us. But the fact that Ionic got an update from v3 to v4 literally hours before we started didn’t exactly make it easier.
Still, we’re very happy where we landed, after two days of amazing teamwork: an app that we were all enthusiastic about, with a simple, clean design and which formed a solid foundation for more functionalities. The main one we’ve thought up would be an automatic location finder coupled with a way to insert your working hours, so all it would take to share your location would be to tap ‘Yes’ on a push notification. But we might need some more time for that.
Where are they, exactly?