comment 0

Running Ubuntu 18.04 on a ThinkPad X1 Carbon 6th Gen

This post is meant to serve as a note to my future self in case I need to setup my laptop again, but I’m sure it’ll be useful to many other ThinkPad X1C6 users, judging from the Lenovo forums. The goal is to aggregate all the steps required to make the laptop run Ubuntu smoothly in an easy to follow list. Abstract Although Lenovo has a reputation for running Ubuntu flawlessly, certain updates to the hardware have caused issues on…

comment 0

Building a GitHub bot

Introduction This last week I’ve been writing a GitHub bot for Having some open-source repositories with lots of external contributors, we can use some help automating the contribution pipeline. So I set myself out to explore the current landscape of bot frameworks. The two that came out on top are Hubot (a bot framework built by GitHub with a lot of existing community scripts) and Probot (a more recent bot framework, also with a surprising amount of high-quality apps…

comment 0

Keep your Docker images up-to-date with a script

Keep your Docker images up-to-date with a script Every now and then I want to download the latest images for my Docker containers. Instead of going through every image (which gets old really fast), I came up with a simple shell command: This will list your current images and pull the latest for each. All you have to do next is remove the outdated containers and recreate them based on the new images. UPDATE: for each updated container, you can…

comment 0

Run CrashPlan in a Docker container on a QNAP TS-x53 Pro

Until this week, I had been running CrashPlan on my QNAP TS-253 Pro as a standard QPKG. This deployment scenario is unfortunately not supported by Code42, and with the most recent update (4.5.0) it just plain stopped working, as it needs a newer version of some OS component than the one present on the QNAP. After researching some scenarios and discussing with a friend who was in the same situation, we decided to try the Docker container support in QTS…

comment 0

Weird bug on WinRT land #1

I was looking today at a bug which was affecting the Plex Windows 8 app (WinRT), which caused the tab order to be messed up globally in the app. Eventually I narrowed it down to a Dispatcher.AcceleratorKeyActivated event handler that looked a bit like this: I will save you the details, but the thing causing the problem here is the path of execution where args.Handled gets set to false. In that case, if you don’t leave Handled alone, you incur…

comment 0

Using Retrofit to control the Spark Core

As I briefly mentioned on my previous post, I’m building my first Android app to use the Spark Core as a Wake-on-LAN relay inside my network. I started out using DefaultHttpClient but quickly came across Retrofit. I have to say I’m very impressed with the API, its flexibility and ease-of-use. I was able to quickly prototype the following interface, which allows me to flash an arbitrary firmware, invoke methods and retrieve variables very easily: If you’re trying to build a…

comments 2

A Wake-on-LAN implementation that works from everywhere

Every now and then I need to wake my machine up while I’m away from home, either to quickly remote desktop into it, or to get access to my Plex library on the go without needing to leave the computer on all the time. Unfortunately, quite a few routers block magic packets coming from the WAN altogether, without allowing you to disable that behavior. I decided this would be a great opportunity for a small first IoT project, where the…

comment 0

New challenge coming up

I have accepted a new challenge at Plex (go check them out if you don’t know them, it’s a really cool product, and a killer app for many passionate users). Starting in December, I will completely change the way I work – 100% remotely, collaborating in real-time with many talented developers, as an engineer on the Windows 8 and Windows Phone 8 platforms. Really looking forward to the challenge!  

comment 0

Integrating GitExtensions with TeamCity

Recently I came up with the idea of integrating the build information coming for each commit from TeamCity directly into GitExtensions (our GUI front end of choice for Git). I believe it should prove very practical when you need to check whether a colleagues’ branch is safe to merge with, or for a gatekeeper to know he can merge a feature branch into the origin repository. It has the added benefit of centralizing all the required information, so you can…

comment 0

Typed Factories a la Castle Windsor for Unity

I recently finished an implementation of the equivalent of Castle Windsor’s Typed Factories facility, for Unity 2. I decided on the creative name of Unity.TypedFactories :-). As far as I know, there isn’t anything like it out there for Unity, and since I didn’t feel like creating and testing dozens of small factories, I decided to create a simple implementation of Typed Factories. All you need is to declare the factory’s interface: And register it with Unity, through my library’s…