It’s surprisingly obscure how to use a commandline FTP client on Linux with SSL encryption. As far as I know the standard FTP client can’t do it but lftp supports SSL. It’s easy to connect to a SSL encrypted FTP server by just calling the lftp command and you can provide the user name as a parameter: lftp -u username If the server uses a self-signed certificate you need to provide the setting “set ssl:verify-certificate no” that you can save to “~/.
Recently I bought several refurbished Lenovo Thinkcentre M73 Tiny for my home lab. Instead of travelling the easy route I wanted to set up Cobbler for remote provisioning the machines. That makes some sense because at least in theory I could re-install the machines with different Linux distros without having to hook them to a display, a keyboard and boot them from USB sticks. The first obstacle I had to overcome was setting up DHCP/BOOTP for remote booting.
For load testing we are using Artillery on AWS (Spot) Instances because we can cheaply get powerful VMs that we dispose of after the testing. Unfortunately the current Artillery version doesn’t make use of the multicore architecture the huge AWS instances offer. It’s supposed to be in Artillery 2.0 but there’s no release date yet. We are using the code from Github to get the multicore feature now. Also there’s no documentation on this feature, therefore this blog post.
During the migration of our web services to a new server we were upgrading the Solr search server to a more recent version. Solr is based on the Jetty application server that offers a simple integrated access control mechanism where you add IP addresses to a whitelist (in the file “server/etc/jetty.xml”) and all other addresses are denied access. Now going from Solr 5.5 to 7.3 also meant implicitly upgrading Jetty from version 9.
Last week it made the news that Apple wants to fight the “Right to Repair” their smartphones. If you own a car or a bike, just imagine that their respective manufacturers are fighting a right to repair to get an idea of how unbelievably cocky Apple are (oh wait, if you own a tractor, this is what John Deere are doing!). I get that they want to save money on providing manuals and stuff but pretending to protecting their customers from batteries on fire is ridiculous.

Docker-Tutorial Teil 1

Dies ist der erste Teil einer Tutorial-Reihe zur Container-Lösung Docker. Hier erklären wir, was Docker ist, wofür es sich sinnvoll einsetzen lässt und wie Sie es verwenden. Der Workshop basiert auf der aktuellen Docker-Version 1.3. Im Prinzip ist Docker alter Wein in neuen Schläuchen. Schon lange gibt es auf Unix-Systemen Runtime-Umgebungen, die von dem Host-System abgekapselt sind, auf dem sie laufen. Selbst der gute alte Chroot funktioniert so ähnlich; fortgeschrittenere Lösungen dafür sind die Jails von BSD oder komplexe Lösungen wie Virtuozzo oder OpenVZ.
Looks like someone at Google finally came to realize that the Eclipse IDE is “not so good”. That is to say, it’s bloated, slow and the user interface is a mess. As an alternative the well-known Java IDE IntelliJ could already be used for Android development in the past. Now Google has released a preview of the new Android Studio which is based on IntelliJ, too. It features a preview of layouts for different smartphones and tablets.
In fact there’s nothing iOS specific about using lists and arrays in Objective-C, although I guess most people see no reason to use Objective-C just for the fun of it. However if you like, you can install the Objective-C frontend of the GNU Compiler GCC on almost every platform that exists. To make use of the array classes you have to install the Foundation library from the GNUstep, too. Anyway, there are two classes that implement what other languages know as arrays, lists: NSArray and NSMutableArray.
Recently I dug out my old and cheapo Sitecom N300 X2 (WLR-2100) router because I wanted to use it to attach my lab server to it via ethernet and set up a route to my other router which is responsible for the internet connection. That is a Telekom Speedport router which is capable of using the “splitter-less” ADSL2+ non-standard Annex J, but I digress. Yes, I am really naive. Of course this doesn’t work because you can’t setup routes on either of these devices.
When you encounter an app crash with an error message like “ NSInvalidUnarchiveOperationException: Could not instantiate class named NSLayoutConstraint”, the problem might be, that you are running a app compiled with iOS SDK 6 on a device with iOS 5. To fix the problem select the appropriate Storyboard or XIB file, and under “Interface Builder Document” uncheck “Use Autolayout”