Three new translations in the German documents archive

A couple of years ago my Dad and I began sifting through a treasure trove of family history that we had received, piecing together the story of our earliest ancestors in the U.S. Among these materials were many original documents in German, dating from the decades 1840 to 1870. These documents proved extremely difficult to translate, as documented elsewhere on this site. Nevertheless using various tools I was able to put together transcriptions and translations of many of the official Bavarian documents. I find these immensely interesting, and I hope they are useful not just to curious members of our sprawling family tree (Alois had ten children with two wives, the majority of whom survived into adulthood) but perhaps also to anyone interested in 19th century German writing and emigration stories.

Two groups of documents completely foiled any attempt by me to decipher their contents, however. The first is my great-great-grandfather’s wanderbuch, a fascinating document that chronicles his time as a wandering journeyman carpenter in the late 1840s and early 1850s. That document remains untranslated so far. The second was a series of letters written (apparently) to Alois or a brother from siblings who remained behind in Enkering. I was particularly eager to know the content of these documents in the hope that they might solve one or two outstanding mysteries. I’m happy to say that I finally have good translations of three of these letters, thanks to the painstaking work of Carola Meyers. See the links below if you’re interested in reading these words written over 150 years ago.

While no mysteries were solved some clues were gained, and more work will be done in the future (maybe on that wanderbuch!). But what is perhaps most meaningful to me is the evidence these letters provide of the difficulty of maintaining family ties for that first generation of new Americans, separated as they were by over 3000 miles of land and ocean from the society they had left behind. You can already see these bonds fragmenting in the pleas of a man who has not heard from his emigrant brother in too long, even though the latter had sailed from Bremen bound for Baltimore just a few years previously.

The updated documents:

Document #11 – Letter, 1860

Document #12 – Letter, 1887

Document #15 – Letter, 1860

LittleBigMouse solved my LittleBigProblem

It’s been awhile since I’ve come across a small tool for Windows that solves an irritating problem in an effective and transparent way. In fact I rarely even think about Windows software anymore, unless I’m playing a game. So much of what I do these days is done in linux or out in the cloud (in linux) that I’ve pretty much degraded my Windows expertise from superuser down to somewhere above n00b. So when I recently built a new computer and finally upgraded to Windows 10 from 7 Pro I ran into something highly irritating that I had no idea how to solve.

The issue was that I replaced my aging and amazingly long-lived Dell 2405FPW monitor with a new Dell 4k P2715Q. Placed alongside my other Dell, a 24″ U2412m, it makes for a nice, big workspace, with my main work on the screen in front of me, and lots of other stuff parked on the smaller screen to the left. The problem was mouse movement between the two. The P2715Q is running at 3840 x 2160, and the U2412M is at 1920 x 1200. Windows handles scaling content for the displays quite nicely, but with the 24″ display logically placed in the center of the 27″ display’s left edge, anytime you tried to move the mouse across the top or bottom of the larger screen and over to the smaller you’d run into a wall, and have to move the pointer vertically to find the hidden opening in the fence. Meh.

A little googling and I came across this gem:

https://github.com/mgth/LittleBigMouse

LittleBigMouse is a lightweight windows service (14MB and negligible CPU) that handles adjusting the mouse position when you move between monitors with different resolutions. It’s small, it installs quickly, and it just works. It is still described as an alpha application by its author, so YMMV, but it has worked flawlessly for me. One thing I haven’t tried yet is gaming with it running. If I have any issues I’ll post an update, but since the app can be easily toggled on and off I don’t think that will be an issue regardless. Props to the author. You can download it at:

https://github.com/mgth/LittleBigMouse/releases

Environment-specific settings for python 2 modules

A little trick we came up with for a recent project. When developing back-end software in python or any other language there is often a need to load different values for configuration settings based on environment. A typical case is a database connection address and port, for example, that would be different when working locally vs. test vs. production. There are lots of ways to do this, but this one worked well for us. The technique relies on setting an environment variable with the name of the environment, and then using that name to load a default settings file and an environment-specific settings file and merge them both into the global namespace.

Thought for the day

“Enterprise customers” are like the deserted island that software CEOs wash up on when their ship sinks. At first it seems like you’ve been rescued: it’s land, it’s dry and all the customers that were on the ship with you are there too. Could be fun! But in a short time it becomes clear that you’re stuck on the island, and the world is sailing away from you. Your customers call in their choppers and one by one they leave the island. Unfortunately none of them have room for another passenger, but they will send someone back for you. They promise.

Do I want Windows 10?

I sat down in my office this morning and found a new icon in the system tray notification area of my Windows 7 Enterprise desktop. Right-clicking it showed four options, none of which was “Exit.” Left-clicking it brought up this window…

I’m not sure when Microsoft installed this program, but it must have been last week when the Tuesday update batch hit. None of the actions in the window appealed to me this morning. I don’t know what it means to “reserve” my free upgrade, and I am still not sold on Windows 10. Since I couldn’t get rid of the program (at least not without hunting down the process and killing it, after which it would in all likelihood return on the next restart) I used the notifications manager to hide it.

It’s not that I’m uninterested in Windows 10. On the contrary I’ve been very interested in all of Microsoft’s most recent decisions with their ecosystem, including the move to open source .NET and make the CLR portable across systems. And the truth is that I was a Microsoft platform developer for twenty years. It’s safe to say I have never before been two whole versions behind the current release of the operating system. Why, then, am I still running Windows 7? Should I upgrade to Windows 10?

I’m still running Windows 7 because Windows 8 sucked hard, in my opinion. I installed it. I used it. My wife has it on her laptop and I tried to help her a bit during the acclimation phase, and I thought it was horrible. I’m a software developer and the interface of Windows 8 did nothing other than make everything I already knew how to do cumbersome and difficult, with no compensating benefit that I could detect. I don’t have two 24″ monitors so I can cover them with big tiles.

I felt pretty much the same way about Windows Vista, but for different and more technical reasons. Windows Vista just wasn’t ready. Windows 8 just didn’t make any sense, ready or not. However Windows Vista became Windows 7, easily the best version of the OS that I have used, and a pretty high bar which Windows 8 certainly did not manage to leap over, at least in my view. Now that Windows 8 is becoming Windows 10 is it time to switch?

Even without thinking too deeply about it I’m biased against. The main reason is the deprecation of Windows Media Center. Microsoft is giving up on the desktop entertainment functions of the PC, apparently. But for me WMC has long been my Netflix solution of choice. It looks and works great and my ten year-old Firefly RF remote works awesomely with it. I realize, unfortunately, that this technology is aging, so maybe I should just get over it. What else does Windows 10 offer me, other than correcting the things people saw as mistakes in Windows 8? Let’s have a look at their news release. What are the big features a professional developer like me should care about?

Cortana, the world’s first truly personal digital assistant helps you get things done. Cortana learns your preferences to provide relevant recommendations, fast access to information, and important reminders. Interaction is natural and easy via talking or typing. And the Cortana experience works not just on your PC, but can notify and help you on your smartphone too.

Awesome, a digital assistant. I don’t really need one on my desktop. It might be useful in a mobile context, but I don’t run Windows Phone and I am not likely to anytime soon. Then again my kids all have iPhones with Siri, and I don’t hear them talking to their phones. As far as I know they don’t use Siri for anything. Maybe if I went to San Jose I’d encounter lots of people asking their phones to do things, but I just don’t see it happening around here, at least not in public.

Microsoft Edge, is an all-new browser designed to get things done online in new ways, with built-in commenting on the web – via typing or inking — sharing comments, and a reading view that makes reading web sites much faster and easier. With Cortana integrated, Microsoft Edge offers quick results and content based on your interests and preferences. Fast, streamlined and personal, you can focus on just the content that matters to you and actively engage with the web.

Well, web apps are still a big part of what I do so I will be getting familiar with Edge whether I want to or not. Am I excited about getting Windows 10 so Edge can replace my current browser? Let’s see… it has Cortana integrated… w00t. See above. And a new “reading view!” I’ll be keeping an eye on Edge in terms of standards compliance and performance, of course, and I will be testing web apps on it, but if those are the big draw features I’ll continue to bounce back and forth between Chrome and Firefox as one or the other alternately pisses me off.

Office on Windows: In addition to the Office 2016 full featured desktop suite, Windows 10 users will be able to experience new universal Windows applications for Word, Excel, and PowerPoint, all available separately. These offer a consistent, touch-first experience across a range of devices to increase you productivity …

I’m not even going to bother with that whole quote. I love Windows, but if there was ever a good reason to hate Windows it would have to be related to Office somehow. From a word processor so horribly complicated that no living human can enumerate more than 10% of the feature set to an email cum personal productivity tool that set a new standard for how long a legacy code base can continue to be crammed into ever more ill-fitting skin, there is literally nothing about Office that I like. Been using Google Docs for years and the words “touch-first experience” in the quote above certainly don’t give me any reason to rethink that choice. Yuck.

Xbox Live and the integrated Xbox App bring new game experiences to Windows 10. Xbox on Windows 10 brings the expansive Xbox Live gaming network to both Windows 10 PCs and tablets. Communicate with your friends on Windows 10 PCs and Xbox One – while playing any PC game.

Ok, that’s fine. I’m not a console gamer, and I don’t own an XBox, but this is still pretty cool and if I were a console gamer, or was willing to purchase an XBox to replace Windows Media Center, this might be exciting.

New Photos, Videos, Music, Maps, People, Mail & Calendar apps have updated designs that look and feel familiar from app to app and device to device.  You can start something on one device and continue it on another since your content is stored on and synched through OneDrive.

Wow, now this is what I was waiting for. Not. There are better services available now for all this stuff. Definitely will be meaningful to the thousands of people on Windows Phone, though. Next.

Windows Continuum enables today’s best laptops and 2-in-1 devices to elegantly transform from one form factor to the other, enabling smooth transitions of your tablet into a PC, and back. And new Windows phones with Continuum can be connected to a monitor, mouse and physical keyboard to make your phone work like a PC.

I’m not writing this off. Device convergence has been talked about for a long time, and I certainly hope somebody is able to make it happen. The vision of being able to use one device across different inputs and display form factors is compelling. But the problem Microsoft has is they don’t have the dynamic mobile ecosystem to pull this off and make it relevant to lots of people. Jury is out, but give them credit for the attempt anyway.

Windows Hello, greets you by name and with a smile, letting you log in without a password and providing instant, more secure access to your Windows 10 devices. With Windows Hello, biometric authentication is easy with your face, iris, or finger, providing instant recognition.

Same thing. Not writing it off, despite the ridiculous name. Also not relevant to me sitting here at my desk. So like the Continuum feature it is interesting, but provides no motivation to move me off 7 for my work system.

Windows Store, with easy install and uninstall of trusted applications, supported by the broadest range of global payment methods.

When lots of people are running Windows on their phones this will be a very compelling offering. Which is just a bit like saying that when I win the Powerball I will be living in a beachfront home in Santa Barbara. I understand Microsoft’s dilemma, and I don’t envy them. They have to be relevant to mobile, even though they are barely relevant to mobile. You can’t build the future of your business on desktop computing, even though most of the people who use your current product use it at a desktop, for work.

It’s a tough situation, but the reality for me is that reading through this feature list doesn’t make me wonder whether I should upgrade to Windows 10 on my desktop: it makes me wonder why I am still running Windows on my desktop at all. I also have an Ubuntu development box and switching would be pretty painless for me. The answer is: games and Steam, and to a lesser extent a huge file called outlook.pst. I play games like Battlefield 4 and Planetside 2, and I like a mouse and keyboard for that. And I have ten years of history in my outlook file. I never look at it, but for some reason I haven’t been able to just delete it. If I ever get to that point and also stop playing shooters (which I should do since I basically just get slaughtered by teenagers) that will probably be it for Windows.

So the answer to the original question I posed to myself in the title appears to still be “no.” I’ll be giving Windows 10 a look in a VM at some point, and at some other point, hopefully still well into the future, I am going to be faced with the fact that I just can’t continue running Windows 7. I suspect that what will happen then is my Ubuntu and Windows machines will switch roles. Instead of having Windows drive my two monitors and using NX to access Ubuntu in a window it will be the other way around, and I will be switching into Windows every now and then just to play a game, or to actually try and find something in that huge Outlook file.

IBM Research report on performance of Linux containers

At Knowledge In Practice we were pretty early adopters of Docker, and after more than six months of use nearly all of our production services are now deployed to Amazon’s EC2 as linux containers. While the lower overhead of containers was a draw,  as a small team the main benefits for us have been ease of deployment and increased environmental stability due to the use of Docker build files to declaratively specify the content of each service’s run-time environment. Launching a new instance of a service is literally as easy as adding one line to the cloudinit script for the instance, then running “docker pull” to get the image we want, and “docker run” to get the container going. Those steps could easily be automated as well. It’s a workflow that’s hard to beat.

Late last month IBM Research released a paper (PDF) comparing the performance of linux containers vs. traditional types of hardware and software virtualization. Not surprisingly containers fare quite well, although the paper notes that both VMs and containers need to be fine-tuned for high I/O workloads. Section 2.3 of the paper provides an excellent quick overview of how containers are implemented in linux using kernel namespaces and cgroups, and in fact I found that part of the document more valuable than the performance comparisons. Well worth a scan, at least, if you have an interest in this technology.

Bunch of Yahoos

Having a great set of developer tools can help make your platform ubiquitous and loved. When Microsoft first launched its Developer Network it revolutionized the way programmers got access to their operating systems, tools, and documentation. They successfully migrated that set of resources to the web and it remains invaluable for Windows developers. If you’ve ever set up access to a Google API, or deployed a set of EC2 resources on Amazon’s AWS cloud infrastructure, you know how impactful a clean, functional web interface is.

By the same token, a clunky, dysfunctional interface can make a platform loathed and avoided. Take Yahoo’s Developer Network and their BOSS premium APIs, for example.

We’re working on a system that needs to geolocate placenames in blocks of free text. This isn’t a trivial problem. There’s been a lot of work done on it, and we’ve explored most of it. During that exploration we wanted to try Yahoo’s PlaceSpotter API. It’s a pay service, but if it works well the cost could be reasonable, and just because we have built our system on free and open-source components doesn’t mean we won’t pay for something if it improves our business.

With that in mind I set out to test it, just as I had previously set out to test Google’s Places API. In that experiment I simply created a Google application under my user name, grabbed the creds, and wrote a python wrapper in about five minutes to submit text queries and print out the results. That’s my idea of a test.

In order to test Yahoo’s PlaceSpotter I needed access to the BOSS API. To get access to the BOSS API I needed to create a developer account. Ok, that’s not an issue. I will happily create a developer account. To create a developer account, it turns out, requires a bunch of personal info, including an active mobile number. Ok, I’ll do that too, albeit not quite as happily because all I want to do is figure out if this thing is worth exploring.

I should note that there is a free way to get to the same Geo data that BOSS uses, and the same functionality, through YQL queries. Maybe I was shooting myself in the foot right from the beginning, but I had no experience with YQL, I needed to move quickly and make some decisions, and I just wanted an API I could fling http requests at. Since the billing is per 1000 queries I had no problem paying for the first 1000 to test with. Not that big a deal.

After creating the account, during which I had to change the user name four times because of the cryptic message that it was “inappropriate” (no, I was not trying to use b1tch as a user name, or anything else objectionable), I finally ended up on a control panel-ish account dashboard. There I could retrieve my OAUTH key (ugh) and other important stuff, and activate access to the BOSS API.

I clicked the button to activate the API, and the panel changed to display another button labelled “BOSS Setup.” Next to that was a red rectangle stating that access to BOSS was not enabled because billing had not been set up. It wasn’t obvious to me that in order to set up billing you have to click “BOSS Setup.” I assumed billing would be at the account level. Well there are billing options at the account level! They’re not the ones you want, and unless the verbiage triggers some warnings as it did for me you might just go ahead and set up your credit card there, only to find it didn’t help.

Not to be deterred, I googled a bit and found that, indeed, I had to click “BOSS Setup.” It would have been nice if they had mentioned that in the red-colored billing alert. So I clicked, entered my login again because, you know, I was using the account control panel and so obviously might be an impostor, and ultimately found the place to enter my payment information. Once that was done, submitted, and authorized I received a confirmation and invoice in my email. Now, I could finally toss a few queries at the API.

Except no. When I returned to the account dashboard the same red-colored billing alert appeared. No access. I am a patient man, some of the time. Maybe their systems are busy handshaking. I waited. Nope. I waited some more. Nope. I gave up and waited overnight, and checked again this morning. Nope. Ok, dammit, I’ll click the “BOSS Setup” button again. I do that and what they show me is the confirmation page for my order again, with an active submit button. But wait… I got an invoice? Was I charged? Will I be charged again? Should I resubmit, or email Yahoo, or call my bank?

Maybe I should just not use the API. Oh, and did I mention that they have a “BOSS Setup” tutorial? It’s a download-only PDF. And 2/3 of it is about setting up ads.

New Year, New Theme

I’ve been slow in posting to this site for a couple of years, now. Time is at a premium these days, or at least, it is when you subtract all the time I spend playing guitar and starting but not finishing games. In the run-up to the symbolic passage of the old year and arrival of the new I gave some thought to the site and whether I wanted to keep it up. I decided that I did, but that the theme I originally chose for it, Palaam, had grown quite dated. This new theme is called Elucidate, and I think it’s pretty sharp. It’s responsive, and scales well on mobile devices. I’ve made some tweaks to it, reducing the size of article titles and adding the social icons at the top, nothing major. I also reorganized some content, but not so much that anyone will notice.

Let me know what you think. The team at work and I are ramping up development on a new system, and we’re in the rare position of being able to sample a lot of technologies and make our own choices with regard to our stack and architecture. I hope to write a lot more about that stuff in the coming weeks, so hopefully the bit on Docker above is just the beginning.

Going Down with the Ship: It’s Aeration, Not Suction

Ok, this will seem a little off the wall. Many of you who know me know that I used to be a professional sailor years ago. I worked on everything from small oyster boats to tug-n-barge combos running 600 feet in length. Sailors are great exchangers of tales, and no tale is more horrible and morbidly fascinating than that of a ship sinking. Such tales often feature, in one way or another, the idea that people who aren’t able to swim far enough away from the vessel risk being “sucked under” as it goes down.

That idea never struck me as very plausible. A ship going down creates a void in the water where its mass used to be, and water will rush in to fill that void, but the idea that some sort of suction could be created that would literally pull you down with the ship never made sense to me. I don’t have the technical chops to say exactly why, but it just struck me as wrong. While watching video of a sinking fishing vessel yesterday I thought of an alternative explanation that seems much more reasonable.

As most people who mess around with boats know, a prop that breaks the surface can no longer effectively propel the vessel. The reason for this is a phenomenon known as cavitation. When the prop breaks the surface it pulls air down and aerates the water around it. Aerated water does not have the mass of non-aerated water, and the prop can’t push against it effectively. For the same reason you cannot swim in aerated water. If I put you into a tank of water and bubble air up from the bottom you will sink, however mightily you flail.

Which brings me to sinking ships. They have a lot of air inside them, and when they go down that air comes bubbling up from all the various openings through which it can escape. You can see that effect pretty clearly in this two-minute video of a small fishing vessel sinking. A much larger ship means a lot more air, which in the process of escaping turns the water above into a aerated froth. And as I said above, you can’t swim in froth. So, I think the reality is that when a ship sinks and you are in the unfortunate position of treading water right above it, you don’t get sucked down. You fall.

LinkedIn: Why I Am Not Returning Your Endorsement

Don’t get me wrong, I love you all: the former colleagues from jobs I held eight or ten years ago; the neighbor I have never actually worked with, but who plays a congenial game of poker and is an all-around nice guy. I appreciate that you took the time to go on LinkedIn and endorse me for everything from “Software Development” (because there is no aspect of it I am not awesome at), to SQL Server, ASP.NET, astrobiology, xenolinguistics, and starship navigation. It’s true, I am a master of all those things.

But there’s no way most of you guys could have known that, because, well, we haven’t spoken in a decade or so. I wish that weren’t the case. I’m terrible at keeping in touch. But then, hey, you didn’t call either. I guess, in a way, this puts us back in communication. You took the time to punch that button on LinkedIn, and that means you were thinking of me, or at least stumbled on my bio pic as an artifact of an otherwise accurate search for people you care about. In either event I’m gratified. But I am not going to return the favor, and I thought you deserved to know why before I clear my inbox.

See, in other than a very few cases to which I have already tended, I just don’t know what you’re good at anymore. Ten years ago I was writing C# code, pulling data out of SQL Server, feeding it to ASP’s renderer, writing form-based web apps. When I code now I write Python, stick my data in Postgresql, and use ajax calls to populate pages. That is, assuming I am not writing Java or Objective C for mobile apps.  The world is completely different. If you’ve worked with me in, say, the last year or two then your endorsement might carry some weight, but not after so many years. And the same goes for any endorsement I make in return.

I think there may be some value in LinkedIn’s system of professional network references, but whatever that value is, it is certain to diminish with time. Endorsements are perishable. And given that, regardless of how many I collect, any potential employer is still likely to want me to put on a nice shirt, schlep in for an interview, and prove I actually know my stuff. It’s inconvenient, but it makes them feel a lot better about paying me, so I go along. Fortunately I don’t expect to have to go through it for some time, but then, that’s what we always think isn’t it?

In the meantime, I wanted you to know that I do honestly appreciate your effort, and that my lack of a return gesture does not have a linear relationship to the respect and regard in which I hold you. It’s just that it is exactly that, a gesture. I don’t mind “liking” crap on Facebook or G+ from time to time. After all, what am I really saying? Not much. But an endorsement for a specific skill should mean something, and carry some weight, and I just don’t think that LinkedIn endorsements do.