About andreas

Andreas Heil is a professional software engineer from Karlsruhe, Germany. He graduated in computer science at the Karlsruhe Institute of Technology and received his doctoral degree in Web Engineering from the Chemnitz University of Technology in Germany. He is software development manager for a big data cloud solution. He has been working in the scrum teams, including the development team for the leading software vendor for law companies in Germany. Before, he worked several years for Microsoft Germany and Microsoft Research in Cambridge, UK. For many years he is writing for the professional developer magazine dotnetpro in Germany.

Cool Stuff

Every week, there are many things I stumble upon worth blogging about. Unfortunately, there is either too much to at that time, just too little to say about it or it’s simply worth to be remembered without bloating it with an exhaustive blog entry.

Therefore, I want to give a more or less regular (let’s see how this works out) update on all these cool stuff one might find out there in the wilderness of the cyberspace.

 

Can’t Be Opened on Lion Easy Fix for Single Application

After installing Eclipse on Mac OS X, I was permanently told the app’s developer is not identifiers and the app can’t be started.

Can't be openend...

Better than turning off Gatekeeper and less annoying than CTRL-clicking the app all the time is simply to run

xattr -d com.apple.quarantine /applications/eclipse/eclipse.app

No side effect on security settings at all…

Where is my Space

Using Bootcamp, running a Mac OS X and a Windows installation in parallel, space is slowly but constantly running low on my MacBook Pro. Before upgrading my HDD, I was looking for a better way than using du or df -h to check where I might free up some space on my disk.

Disk Inventory X is a free tool available using cushion tree maps to visualise the disk usage. A similar tool was developed at the Technical University of Eindhoven named SequoiaView. While SequiaView was developed for Windows, Disk Inventory X is designed for Mac OS, working fine with version 10.8.3.

Disk Invetory X

After selecting the disk, it’s possible to browse through the directory structure analysing where your storage when to.

Disk Invetory X Cushion Tree

Both, SequoiaView for Windows and Disk Inventory X for Mac are quite useful programs that should be definitely part of ones toolset.

There it Goes – Google Reader Gone for Good

Icon by http://icontexto.blogspot.de/  via Creative Commons Attribution Non-commercial Share Alike (by-nc-sa)First headline in this morning’s news: Goggle stopps Google Reader (please bear in mind, this link won’t work anymore in the future). Google wants to power down the Google Reader among other APIs and services since the 2011 spring clean. Personally, I am affected the third time by Google’s cut downs after the Feedburner burnout last year.

While I was annoyed in the very first moment, I had to think through various perspectives, not just coming up with yet another rant post about Google’s attitudes.

The Business Point of View
Google is not doing anything wrong (I guess) from a business point of view. They simply cut down projects, teams or cost centers with no or little revenue. I have seen this several times during my time at Microsoft where teams or studios where shut down due to a revenue not meeting the expectations. Larry Page wanted to focus on core products and  less speculative projects which does make sense considering the shareholders beyond Google. Consequently, cutting down free services not being paid for, requiring manpower for development an maintenance and (not to underestimate) bare metal down in Google’s data centers is a plan to increase revenues, cut down losses and save not to spend money.

The User ‘s Point of View
As a user, you might rely on these services. Maybe you build up your website based on various Google APIs (as they have been free), you maintained you RSS feed in Google Reader and so on. Even with several weeks of notice, you need to change technologies, maybe rebuild or recode you page, and even worse to change habits. At some point in time, after this happened one, two or three times (depending on your very personal potential to suffer).

The Developer’s Point of View
There are quite many apps, tools and pages out there heavily depending or based on Google’s API including Google Reader. Not only their apps and tools stop working, also users who bought these products will be forced to stop using these tools. With feedly, there is timely an alternative Reader and with Normandy developers get an API they might use for their products. However, Nick Bradbury already announced to stop working on the Windows client FeedDemon which heavily depends on the Google API for synchronization.More will definitely follow…

The Consequences
As developer, I was affected once before, as user I am affected the second time by now. By cutting down both services I am left with Google Calendar. While Google might or might not continue this service in the future, one might rethink if using it is a good choice. Keep in mind, we do not pay for it as users and the Google App Sync meanwhile is only available for business users (probably paying for it). Google Calendar Sync was a great tool to sync between Outlook and Google Calendar. I fought my way through the setup using Windows 7 three years ago right after they stopped development for it.

There is already an petition for keeping Google Reader alive, supported by more than 35,000 users (nothing compared to he 10 Mio user susing G+ stated by Larry Page). Still chances that Google will continue the service are less than probably.

The Business Point of View Revisited
I wonder if Google thought of charging for these services. I wonder if one (e.g. I) would pay for such a service. It definitely would depend on the amount they would charge. A few bucks a year won’t hurt and with a few ten thousands of users they might pay the bills for this service one might think. On the other hand, a company like Google might not be interested in any service with less than ten million $$$ of revenue (please put in whatever amount you think is suitable) or a million of users…

Early 2011 MacBook Pro RAM Upgrade

Since working more more in virtual machines and processing large amounts of data, I was looking to upgrade the memory of my early 2011 15” MacBook Pro currently utilizing 4GB of RAM. After digging through hardware specs and various manufacturer site, I decided to pick a 16GB kit from Crucial.

CT3327367 Crucial 16 GB Memory Upgrade

The specs of the memory chosen are 

  • Part Number CT3327367
  • Module Size: 16GB kit (8GBx2)
  • Package: 204-pin SODIMM
  •  DDR3 PC3-10600
  • CL=9
  • Unbuffered
  • NON-ECC
  • DDR3-1333
  • 1.35V
  • 1024Meg x 64

The only thing you need is a Phillips #0 screwdriver to remove the bottom of the MacBook.

Phillips #0 screwdriver for MacBook Pro

Old memory out, new in is pretty easy, both modules are on top of each other.

Crucial Memory Upgrade CT3327367

Once upgraded, I had to check the Windows Experience Index, if the new memory did change anything considering the performance, Actually the subscore for the memory went up from 5,9 to 7,6.

Windows Experience Index before memory upgrade

PerIndexNew

While I bought the MacBook, more than 4 GB was not a requirement. In addition the model is officially supported by Apple only up to 8 GB of RAM. However, the hardware can handle 16GB which now just comes in quite handy.

Ubuntu: Setting up Oracle JDK

Since Oracle’s Java SDK is not part of Ubuntu, there are some steps required to get Java set up on a Ubuntu system. Especially running a 64-bit version of Ubuntu requires one tiny additional step driving you crazy in case do not speak Ubuntu fluently.

There are quite some scripts and tutorials out there how to get Oracle’s Java working on a Ubuntu system, however, there are only a few steps necessary to do so:

Pick the bits from Oracle’s download site and extract the archive using tar. In my case we use the 32-bit version of the JDK

tar -xvf ~/Downloads/jdk-7u15-linux-i586.tar.g

Create a folder and move all the stuff over there

sudo mkdir -p /usr/lib/jvm/jdk1.7.0 
sudo mv jdk1.7.0_15/* /usr/lib/jvm/jdk1.7.0/

Now set up the symbolic links for java, javac and javaws.

sudo update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7.0/bin/java" 1
sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0/bin/javac" 1
sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7.0/bin/javaws" 1

Now, create a Bourne script to set the JAVA_HOME variable and update the PATH variable. In case you haven’t used Vim yet, get it using

sudo apt-get install vim

and then create the file

sudo vim /etc/profile.d/java7.sh

edit the file file and add the following export statements

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0
export PATH=$PATH:$JAVA_HOME/bin

Finally execute the script

source /etc/profile

and try to call java. If you run a freshly set up Ubuntu such as mine, you probably will end up the system telling you

bash: /usr/bin/java: No such file or directory

What happened? Actually, we installed a 32-bit version of the JDK, however as mentioned at the beginning running a 64-bit version of Ubuntu and therefore we come back to this very tiny bit missing. One additional package is required to run the 32-bit version: libc6-i386.

“This package includes shared versions of the standard C library and the standard math library, as well as many others. This is the 32bit version of the library, meant for AMD64 systems.”

Said that, get it

sudo apt-get install libc6-i386

and try to run java one more time. It should work now fine.

Confluence Math Formula Macro

As we are dealing quite a lot with mathematics in our current development and using Atlassian’s Confluence as our documentation system, we were looking for a elegant way to document our mathematics in any better way than E=mc^2.

We found the Math Formula macro originally written and tested against Confluence version 3.5, not playing well with the latest Confluence version, we are using.

After following the installation steps there it was, the incompatibility note:

“There are user macros without any metadata configured in their template. They have been highlighted below. For these macros to be available for use in content they require parameter information. See the Guide to User Macro Templates.”

Check out the highlighted macros, and click Edit.

Installed User Macros

In the Template field add the following as the very first line of the template:

## @param size:title=Font Size|type=int|default=150|desc=Font size for formulas in percentage

Within the template, the the font size is referred as $paramsize, however, in the metadata description you denote the param just as size.

Once these changes are made, you can use the macro to create your formulas…

Math Formular Macro

 

I DRAW COMICS REWARDED

A few days ago, I received the reward for backing the Kickstarter project I DRAW COMICS. I really liked the idea of creating a guide how to start drawing, showing you a few of the tricks the pros use during their day job.

As  this was Matt’s second project, there was a quite a chance to receive a high quality result out of the project. As this was my very first non-technical project backed, I was really interested in the outcome.

I DRAW COMICS Sketchbook and Reference Guide 

If you are interested in the sketchbook as well, head over to their website, the sketchbook will be available for pre-order there soon.

Gas 2012 in Numb3rs

Nowadays, a majority of modern life are numbers. Money you earn, money you spend, miles you drive, fly, run or ride by bike. There are many numbers you don’t make any use of. There are even more numbers you don’t think of. There are even numbers you don’t know of.

At the very end it is about what you make out of these numbers. Some time ago I started to run various kinds of data analysis.

For example, in 2012 I went 60 times to the gas station, spending 2774,77 € for gas. Never thought of it being that much. March was a crazy month, it seems I drove three to four times as much as in August where I used to be in vacation or October when I worked mainly from my home office. In November I started a new position, which might explain a new baseline around the 200 € mark – something I definitely should verify end of 2013.

Gas 2012 by Month

I thought I try to pick the cheapest gas station around, however I just realized more than half of the time I went straight to Total, which is just around the corner. This is a clear indicator to compare prices in the future more in detail as there are better prices than Total offers most of the times.

Gas 2012 by Company

It was not that hard to gather the data. Most effort went into how I should compare the data. Neither was the process of thinking about what the actual information might tell me that hard. However, it definitely shows you some ways of improvement for the future.

This is only a subset of data I am currently working on. If you are interested in more analysis, just stay tuned…

Heading for SAP HANA

A couple weeks ago, I started a new position as software development manager building a team for a new cloud based product dealing with big data. Evaluating various storage solutions we came along the SAP HANA database, an large-scale in–memory database with fascinating computing capabilities. Not only SAP HANA, all kinds of other great technologies sitting along the way waiting for being picked up on the upcoming journey.

We will focus a lot on SQL 1992 Standard and the new SQLScript language provided by SAP HANA, R, JavaScript, HTML5 but also Eclipse and Java writing plug-ins for third party components. We will deal a lot with RESTful Web services, JSON format, OData protocol and huge amounts of data. So if you feel home at these these technologies looking for new challenges in Karlsruhe (Mannheim area), drop me a line.

Changing the technology stack? Not really….

Said that, for my day job I am heading away from C# and .NET quite a lot. I still use C# a lot for me side projects. However, for quite a while I started using Python more an more for many tasks I performed with .NET before. I will still write for the .NET magazine dotnetpro, even when my recent article series is about JavaScript frameworks, though. 

During my time at Microsoft Research, we investigated a lot of heterogeneous technologies, used them and developed even some. Beside C#, we used F# a lot, ANSI C, R as well and even ANTLR. We developed a new scripting language called Vedea fully compatible to the Processing syntax. Before we worked on visual languages for programming and worked with the CCR/DSS team on the concurrent programming models.     

Not be afraid of technology, you should be, Yoda might say…

One thing I’ve learned during my time at MSRC was not being narrow minded and not being freighted by technology. Our architect at MSRC once told me not being afraid of technology. It might take some time, maybe it is be not easy nor very convenient, however, someone built it, so you can figure it out.

What I do realize more often than not, is the fact developers stick within their comfort zone. They want to stay with a particular technology because it’s easy, the feel at home, the know everything a lot and so on…

Time to change, or maybe not (yet)?

Recently a friend told me, he thinks it’s impossible to change to another technology after coding in C# for several years… That’s just not right. Once you understood the concepts behind a certain kind of technology, there is no reason not to move on. So here are some excuses I have heard during the last few yeas…

  • I don’t like [put in any kind of technology]
  • I don’t like the syntax of [same as above] 
  • I never can learn everything I missed during the last [put in any timeframe]
  • That’s a step backwards [put in any high-tech company] did with this technology
  • This [put in any kind of technology] has no future

In fact, any of these statements just is a excuse not to learn something new, to stick with the well known and not moving out of your comfort zone. Said that. stand up, learn something new and move a step forward… technologies change rapidly, so you should change as well…