Osmand: Bye Bye Nokia Maps – Bye Bye Google Maps

Osmand-1Due to Nokia's decision to back away from freedom and open source I was forced over the past year or so to rely on a two device strategy while traveling as there were two crucial applications missing for me on Android so far: A decent camera and offline maps + navigation functionality. While the camera issue has improved significantly in the past year I was still hanging on to Nokia Maps and its offline capabilities as Android's Google maps was just too expensive to use abroad and leaked too much of my location information to Google. But now, things have changed.

Open Street maps has come a long way over the years and Open Street Maps for Android (OSMAND) has developed beyond my wildest hopes and now offers car navigation on Android with downloadable maps that worked just great during my recent car trips between Germany, the Czech Republic and Austria. Car navigation worked well, there's a lane assistant that even Google maps does not have and it's ultra configurable to show or hide many details one can be interested in or not. Finding and address is quick, the routes calculated are good, the lane assistant worked.

Osmand-2The only two major downsides I came across was that while it perfectly calculated a route between Austria and Germany it wouldn't come up with a route for my trip between the Czech Republic and Austria so I had to split that particular route in two parts. Also, while route calculation for short tips is quick, trips of several hundred kilometers take a bit to calculate, I estimate it to be in the order of 30 seconds. Nokia maps does better in this regard. Like Google maps, Osmand also stops navigating in tunnels when the GPS signal is not present. This is better in Nokia maps which continues to show the route based on a speed estimation. One thing neither Osmand nor Nokia maps in offline mode can do is to show the current traffic situation which is a strong point of Google maps. Having said this, I feel that those drawbacks are a small price to pay for getting an open source solution that doesn't transmit location information to some big web company.

The screenshots on the left show how Osmand looks in practice and I was more than happy to pay the six Euros for the full version to be able to download more than four maps for offline use. So while I had my old Nokia phone as a backup with me on my current trips I didn't use it a single time once I figured out how well Osmand works. From now on I guess it will remain in the cabinet.

Kudos to the OSM and Osmand team and all people contributing to the open maps, this is really incredible!

Chip GSM, UMTS and LTE Network Test 2013 in Germany

Everyday is groundhog day (in case you know the movie) and every year at around the same time, very detailed network tests of German computer magazines give an interesting insight and comparison of the capabilities of mobile networks in practice.

The latest report is from 'Chip' and the top speed they've measured in an LTE network is almost 80 Mbit/s. While this is an exception rather than the norm, other values are equally stunning. Here's a link to the magazines report in German and here in English, thanks to Google translate. Enjoy!

If you are aware of similar reports about networks in other countries, please leave a comment, I'd be quite interested.

A Skype Video Call at 5 MBit/s

While many users have fast DSL lines at home when it comes to the downlink, uplink speeds are typically still very limited. While many might argue that unless you run servers at home (which I do, e.g. Owncloud, Selfoss, Prosody…) this is hardly noticeable I have to disagree now that I have seen how a Skype video call looks like when both sides of the connection have an uplink that allows them to transmit at faster than 1 Mbit/s. The video resolution, quality and frame refresh rate are as stunning as the bandwidth taken once Skype notices what the network can provide. Quite a number of my video calls these days now stream at an uplink/downlink aggregate of 5 Mbit/s. In othr words such video calls consume 2.25 GB of data per hour. Compare that full two hour movies in SD quality I download from my online video recorder that have a mere 1.5 GB per file.

Raising the Shields – Part 8: Prosody – My Own Instant Messaging Server For Family Communication

The next step in raising my shields against all sorts of three letter agencies spying on my data packets on the Internet has been to think about how I can protect myself better against spying on my instant messaging communication between my family members. In part one of this series I've already made the first and most important step by installing "Off The Record" (OTR), an end to end encryption for all sorts of instant messaging services. The server behind the service, however, was still property of a public company and hence my data packets were probably still routed half around the world ready for interception and collection of metadata (i.e. who communicates with whom and when). Time to change that as well.

XMPP is the protocol of choice for running your own instant messaging server as it is supported by quite a number of desktop and mobile messaging clients such as Pidgin that I'm already using. On the network side, one can choose from a number of different solutions and after looking around a bit I chose Prosody. On a Linux based system such as a Raspberry Pi it is straight forward to install as it is included in the software catalog. A "sudo apt-get install prosody", a few changes in the configuration file that are described on Prosody's web page and creating a TCP port forwarding rule in my DSL router was pretty much everything to get it working.

I've been trying it for a week now together with Pidgin and OTR encryption and it works like a charm and the three letter agencies have to work a bit harder now to intercept our family instant messaging traffic to collect metadata. And on the cost side it don't cost me a penny extra as I have the server running together with the Selfoss RSS server (see here and here) that runs on the same Raspberry Pi.

USSD Codes To Speed-Up Android Call Forwarding Activation

Call-forwardingEvery now and then I have to sigh when using Android and wished they would have at least implemented telephony features half as intelligent as Symbian did in its days. But gone is gone and I have to make the best out of it. Activation of call forwarding is one such thing I kept sighing about because changing settings requires to go down several menu levels and waiting a couple of seconds for the device to read the current status from the HLR. But now I've found an interesting fix for that: USSD codes.

Yes, this 1990's technology to use special command codes in a dial string to interact with the HLR in the network in a standardized way speeds up a 2013 Android device. And here's how it works: As it's usually the same numbers I want to forward my calls to when my device is not reachable one can extend the entry of a person in the contacts by the phone number embedded in the USSD code to perform the desired call forwarding activation / deactivation procedure. The figure on the left shows how this is done for 'call forwarding when not reachable'.

The string starting with the '*' activates call forwarding when not reachable to this number and the entry with '#' at the beginning deactivates it again. Not shown in the image is the '#' sign that follows the phone number. Using the code is then as simple as selecting the entry in the address book and to 'dial' it. There's even feedback that the action has been performed.

Surveillance State: Lavabit, Silent Circle, Groklaw Cease Their Services – Who’s Next?

Three months into Edward Snowden's revelations of PRISM and other government programs to monitor pretty much everything that flows through the Internet today and the news still get worse by the day. Now, first services are shutting down because they can't offer privacy anymore in the bounds of the laws of an open, free and democratic society. Instead they are shutting down because secret court orders they can't even talk about would force them to reveal private information on an unprecedented scale. I find that very disturbing and I feel that we need to speak up against this now as politicans word wide are still not willing to have a public discussion on the right balance between security, privacy and personal freedom.

Don't get me wrong, I am not at all against court sanctioned wiretapping when there is evidence  that someone is in the preparation of comitting a serious crime. What I'm against is monitoring everything. Lavabit's owner, Ladar Levinson, who used to run a secure email service that encrytped all data stored on his servers and could only decrypt it while the user was logged in seems to be of the same opinion. Being asked by reporters he stated that in the past he's always complied to court orders to give information out to government agencies on a case by case basis. But it seems the US government now wants to go much further and hence he's decided to shut down the service. Exactly what is going on he can't tell because he is bound to secrecy by law and threatened with imprisonment if he fails to do so. But from the public knowledge how his email service works and his statement that he complied with court orders for surrendering information from and about specific accounts before, it's pretty easy to discern that the latest order went much further, likely a tap for security agencies directly into his system. From a privacy and civil liberty point of view that's absolutely not acceptable.

Next in line was Silent Circle, another secure email provider, who shut down their email service without any notice because it suffers from the same shortcoming: There's no end to end encryption in email as per design. No matter how secure you make transmission, at some point it always has to be encrypted before transmission or storage. And finally Groklaw, a popular law website has shut down as the owner feared that the privacy and confidentiality of her sources was no longer ensured with the current practice of security agencies monitoring the whole Internet rather than only the traffic of persons for which they have a court order for surveillance.

All of these services could shut down because they are privately owned. That of course does not shed good light on the big service providers who have not spoken out against this and keep running their services without being able or wanting to tell their customers of how their private communication is monitored. Society needs trust in order to function. Where's the trust in this? This makes me wonder about the future of Internet companies in the US!? The current state of affairs simply means that it's impossible for customers to trust US companies or US owned companies abroad to securely and privatly handle their data. Secret court orders can force them to reveal sensitive data to governments and what is once out of their hands can then be easily used by governments for many purposes. If I owned a non-US company today the last thing I would do is to store or process any data I didn't encrypt on my own premisis on servers of such companies. Money's usually a strong argument and loosing business because of
run-away anti-terror laws is perhaps a strong incentive to pressure for
change. But trust is lost and it will take a lot to restore it. So perhaps we'll see an Exodus of tech companies from a country to which in the past people fled to because they wanted freedom. It would be ironic in the extreme.

Sure I'm trying everything to better protect my privacy. Those of you who follow my ongoing 'Raising the Shields' sequel know that I go far beyond what a normal user can do. But a lot of my communication is still exposed to mass surveillance and some of it always will be. Raising the shields is treating the symptions, it's not the cure. We need governments to clearly define what security agencies are allowed to do, what they are not allowed to do and to communicate that openly. Otherwise, a significant part of our civil liberties will remain lost.

Were There Computer Learning Kits for Teenagers In Your Country?

There's one thing I have been wondering about while enjoying my recent trips back in time to the 1980's and computer learning kits: Were there similar kits in other countries around the globe tailored for teaching teenagers how computers work (vs. how to work with computers)?

In German speaking countries there were three different kits (Philips 6400, Busch 2090 and the Kosmos CP1) sold mainly via toy stores (yes!). So I searched the net a bit in the languages I am able to understand if I could find similar kits having been sold in other countries but came up pretty much empty handed. Perhaps this is due to the way I searched and the keywords I used but it's difficult to believe this was only something that happened in a few German speaking countries in Europe.

As many of you must have also grown up in the 1980's perhaps you still remember something that could point me in the right direction. If so, please consider leaving a comment!

How To Assign Special Characters To Keys In Ubuntu and Linux

Having friends and business partners around the world I frequently type texts in different languages and so far always struggled with non-standard Roman characters on my German keyboard. At some point I was so fed up that I spent a couple of hours to find a solution to make the process a bit less cumbersome.

While some non-standard Roman characters can be typed even on an German keyboard by using an "accent" modifier key, others such as for example the
'ç' are not directly reachable this way. As I need such characters quite frequently, however, I was looking for a possibility to assign such special characters to standard Roman alphabet keys together with the ALT or ALT-GR modifier key. The 'ç' for example should be reachable with the ALT or ALT-GR key (not available on a standard US keyboard) + the standard 'c' key.

On Ubuntu and I guess many other Linux based GUI's, the ALT key is already used for other purposes by the GUI so I focused on a solution with the ALT-GR key. As this key is not available on the standard US keyboard layout I am not sure if the following also works for this keyboard layout. But for all layouts that have an ALT-GR key here's the command to put the 'ç' on ALT-GR + c:

xmodmap -e "keycode 54 = c C c C ccedilla Ccedilla ccedilla Ccedilla"

54 is the code for the key on which the standard Roman "c" is located at on a German keyboard.

The current assignment of all keys is queried with the following command:

xmodmap -pk

and

xmodmap -pk | grep "(c)"

with the brackets around the character filters the output for the line with the code for key to which a specific character is assigned.

Non-standard Roman characters have a name that can be used in the assignment command above. The 'ç' character, for example like in 'François', is called ccedilla for the lowercase variant and Ccedilla for the uppercase variant. For the list of other special characters have a look here.

For each special character assignment a separate xmodmap -e… command is required. Changes are not persistent, however, i.e. a reboot returns the computer to the standard keyboard layout. To make the assignments persistent one can for example put all xmodmap commands in a shell script and execute it automatically during the login process.

Learning How Computers Work – Comparing Approaches of the 1980s

In a previous post I've been musing about how in the 1980s, microcomputer learning kits appeared on the market to teach kids and adults how computers work. Note that this is different from learning how to work with computers or even how to program them in a higher level language as in both cases the inner workings of a computer is abstracted. As I'm fascinated by the approach I've also wondered in the post if such kits are still available today or if learning about how computers work has effectively moved on to only be a topic at university courses. Here's what I've found out so far:

Even after some more research I still came up empty handed and it seems such learning and tinkering kits have disappeared today. What I have found, however, is a number of 1980s microcomputer learning kits each with a slightly different approach to the topic. As I am not only interested in the historical perspective but also wonder how this approach could be revived with current hardware and perhaps some self-written software I had a closer look at the tutorials which can be found in PDF format on websites of vintage computing enthusiasts to see how the different kits went about teaching computing basics. Interestingly enough, the approaches are quite different:

The Busch 2090 4-bit Microcomputer Kit

Busch-img-2Released in 1981, the Busch 2090 is the oldest of the three microcomputer learning kits I could find. It's based on a 4-bit microcomputer. As the other two, the kit is part of a larger electronics experiment program so it works well together with other electronics kits of the company to expand experiments into the physical world by triggering outputs to LEDs and loudspeakers and receiving input from different kind of self assembled circuits. I've blogged about it in a previous post and you can find some more details see here. (Sorry for this and many other links in this post being in German but it seems these kits were mainly popular in the German speaking world. Google Translate is a helpful tool to translate the pages into your language on the fly.)

Busch-mascotPrograms are written in a 4-bit pseudo machine code. Each pseudo instruction is always 3 hexadecimal digits long and all operations are explained in the decimal, binary and hexadecimal system. While most pseudo instructions closely resemble actual machine instructions some also perform more complex tasks such as displaying the contents of the accumulator or other registers on the display or reading key input. What I liked best about the teaching approach of the tutorial is the jovial style and a mascot that demonstrates important principles in a funny and easy understandable way as shown in the first image on the left

Busch-programAnother great approach of the tutorial is that almost all program listings contain the memory address for each instruction, the instruction code, the mnemonic for it and a description for each operation as shown in the third image on the left. This makes understanding and memorizing the codes and mnemonics very easy.

I find that the writing style and level of detail makes this kit appealing for kids from 12 to 99. The descriptions of how a microprocessor works and how it communicates with memory and peripherals are very simple but still precise. The tutorial has around 80 pages, so it's not a daunting task to go through it even with the attention span of a 12 year old and I found it to be a perfect balance between beeing too simple and too complex for people that have never touched the subject before.

The Philips 6400 Microcomputer Master Lab

Philips-6400-2Two years later, in 1983, Philips released it's microcomputer learning kit, the Philips 6400 microcomputer masterlab. While the general approach is the same as in the Busch 2090 there are some significant differences in the practical implementation. Philips used an 8-bit processor for its kit and instead of pseudo machine code instructions, real machine code was used for user programs. I very much like this approach as this is as close to the bare metal as possible. It makes programming a bit more complicated but from the tutorial I take it that the kit was addressed at a somewhat older audience than the Busch computer, perhaps 16 years and up, so this is not much of an issue. Less humor and more facts I would say.

The level of detail is much deeper compared to the Busch kit. At 160 pages the tutorial is twice the size and technical descriptions go much further and deeper. There are good technical descriptions of how two numbers are added in the hexadecimal system, how this is done in the binary system and finally of how this is implemented in hardware with Boolean logic. How subtraction is done by adding the two's complement of a number to another is also introduced as well as multiplication and division operations. The kit also introduces the reader reader to function calls, the stack and stack pointer, discusses Boolean logic (AND, OR, NAND, NOR, XOR), bit masking, jump conditions and quite a number of other bare metal operations. For somebody in the final years of high school who has a knack for mathematics, this level of detail and complexity is probably just right.

Philips-programMy only gripe with the tutorial is that at the beginning program listings are not explained at all and the user has to type in numbers without really knowing what they do or what they stand for. This gets better as more details are introduced as shown in the image on the left but I still felt when reading the tutorial that the program listings should have contained more explanations on an instruction to instruction basis for an easier understanding.

The Kosmos CP1

Kosmos-cp1The tutorial I have of this kit is from 1983 so it also seems to have been brought to the market two years after the Busch 2090. Like the Busch computer, the Kosmos CP1 also seems to address a younger audience as the introduction to computing is quite on a high level of abstraction. Like the Busch approach, the kit uses pseudo-machine instructions, that are, however, much more abstracted than the Busch pseudo-instructions that stick much closer to real machine instructions.

Kosmos-programHaving gone through the other two tutorials before I focused on this one I have to admit that I found the pseudo-machine code of this approach a bit difficult to understand and I wonder why they ventured so far away from the bare metal instructions. Perhaps this was done to get around the hexadecimal system. Yes, there's not a single hex number throughout the whole tutorial, the computer is entirely programed with decimal numbers. Discovering the hexadecimal system later on must be somewhat of a culture shock. The image on the left shows how a program for the CP1 looks like. Each command is well described but the commands themselves are a bit too abstracted from the real world for my taste. The tutorial has 145 pages and is split into two parts. The first 60
pages are dedicated to introducing the commands and how a computer
works and the second part is dedicated to program examples that are
discussed in detail. Quite a number of the examples let the computer interact with the real world via electronic input and output circuits that can be plugged together on an extension board. While the other two kits include such extension boards, some resistors, transistors, LEDs, etc., I am not sure they were included in the CP1 kit or if was assumed that the reader has already bought other electronics experiment kits from Kosmos before.

What All Have in Common And Why Simplicity Trumps The Full Keyboard + Screen Approach

One thing all three kits have in common is a 7-segment display with six digits (Busch 2090 and Kosmos CP1) or eight digits (Philips 6400). As can be seen in the images the kits are completely operated and programed via numerical input pads and a number of special keys for operations such as performing a reset, for selecting and running a program, for entering programming mode, etc.). This might seem a bit archaic from today's point of view but since these kits are there to introduce the bare metal innards of computers I would still do it like that today. It might be too cumbersome to write long programs with only a numerical keypad to type in raw machine instruction codes but the point of these kits is to teach how a computer works on a low level. Therefore, interacting with it on this level is very appropriate and serves the 'bare metal' approach rather than being a restriction.

In addtion, all kits are very hardware centric so experiments are not limited to generating an output on a 7 segment display and receiving input from the numeric keypad. Instead, experiments can make use of digital input and output ports to which electronic circuits that are put together by the user on an extension board can either deliver input or receive an output to trigger lights or generate a sound.

My Preferences For A Modern Microcomputer Learning Kit

If I were to create such a kit again today for kids age 12 and up and also an adult audience, I think I would take an approach between the Busch 2090 and CP1 on the one hand and the Philips approach on the other. I like the simple and fun approach to the topic of the Busch 2090 tutorial but instead of using pseudo machine instructions I would make use of real machine instructions as is done by the Philips kit. That would mean to introduce function calls a bit earlier in the tutorial to do some more complicated things as showing register contents on the 7-segment display or receiving keyboard input but I think that is a compromise that would be worth it. One could even have two tutorials then, one for a younger and one for a somewhat more technically knowledgeable audience. Or one could create an easy to understand tutorial for both audiences and have a second one with more technical details that builds on the first one for those that have been hooked.

While I think that the audience for such kits was small back in the 1980's and might perhaps be even smaller today it would still be fun to work on this for pure self enjoyment and for giving something to those who'd like to find out how a computer really works. Too bad the day only has 24 hours…

I Just Noticed We Had 40 MHz LTE Channels in Europe, Counting the American Way

So far, pretty much everyone in the industry measured channel bandwidths in what either the downlink or the uplink channel provides. A UMTS channel thus always had a bandwidth of 5 MHz despite twice the spectrum being used, 5 MHz for the downlink and another 5 MHz for the uplink. Sometimes this was also described as 2 x 5 MHz. But it seems some in the US are now adding uplink and downlink together as for example in this Gigaom article. A small 5 MHz LTE carrier now has a bandwidth of 10 MHz. Sounds nice when comparing it to other US network operators that in their words also use 10 MHz LTE carriers, which are, of course 2 x 10 MHz. So by those standards network operators in Europe using the 1800 or 2600 MHz bands already have 40 MHz LTE deployed! That sounds nice! After 4G, Real 4G, True 4G and LTE-Advanced it's the latest smoke bomb to confuse the world and make yourself look better than you really are. Sigh…