musicmatzes blog

As this blog is the only resource you can find information about me, I decided to write some stuff about me!

I'm a (at this time) 22 year old guy, living and studying in Germany, in the Black Forest. I'm studying Computer Science and successfully finished my second semester at the moment.

I'm a free software and open source enthusiast since 2008 (ca.). My favourite operating system is Linux, Archlinux as distribution. But I also like Debian (not Ubuntu!) and other distributions. I'm a free software contributor, contributed to various open source projects, including the linux kernel [C], OSv [C, Java] (a VM-Operating system), tig [C] (a console frontend for git), agendav [PHP] (CAL-dav web client), davical [PHP] (CALdav and CARDdav server), nanoc [Ruby] (static site compiler), hashtable [C] (hashtable implementation) and much more smaller projects.

My favourite languages are C and Ruby, but I'm also very interested in functional languages like Haskell or Scala (but I don't like the JVM).

Besides this I like listening to music, cooking or contributing talks or other stuff to my local linux user group.

I think, that's it! If you have questions or ideas, you want me to know of... send me an email!

tags: #blog

I wrote this article before, but it vanished somehow. So I write it again.

The deal is: I removed ghost as a blogging platform and switched back to a static site compiler, compiling the contents on my local machine and publishing the generated html.

For generating the contents, I use “vee”. This is a bash script for doing blogs. There's nothing more to say about this, expect that the old articles from my ghost blog were imported here. They were all imported on one date, that's why they all have the same date (which is a bit funny if you look at the “Happy New Year” post – which is dated somewhere in the middle of the year now).

So, ... I hope this one will last longer than just some months. I really like it because it is so damn simple. And that's all I want: Publishing thoughts. No fancy stuff around, but human-readable blog raw material.

Licenses for the entries will follow, of course.

tags: #blog

When dealing with Linux and Open source, you notice Canonical and Ubuntu very quickly, as a lot of people suggest Ubuntu as beginner distribution for switching to linux.

I already made some statements about what I think about this. I do not like Ubuntu neither Canonical or Mark Shuttleworth. But that's not the point why I think Ubuntu is a problem.

Yes, I think Ubuntu is a problem for the open source community.

Why is Ubuntu a problem?

Ubuntu is a problem from my perspective, because they're trying to do something different. They do not follow the Community, they try to do their own thing. The first approch into another direction was the integration of the amazon-search in their desktop. The second one was Mir.

The problem is not, that they want to be inovative. I even think that it is really good to be inovative, just look at docker! But they're doing something wrong, all the time! They do not learn from their mistakes! One big mistake was Unity. The Unity desktop environment simply sucks. It is optimized for small netbooks, which have a small screen – but it uses way too much resources and there are already well-established alternatives which are way better – LXDE and Xfce!

... and the community?

Now, it is not only that Ubuntu is a problem. The community around Ubuntu is a problem, too! I don't want to offend anybody, but the Ubuntu community is a really big community and they still tell outstanding people that Ubuntu is a very good beginner distribution when switching to linux. It is not. It is crap for beginners.

If one of you out there want to do a simple experiment, if you have the ability: Take a Windows user and give him an Ubuntu whateverversion with Unity and another one with Ubuntu and Gnome installed. Tell them to write a Document with the contents of the wikipedia page on Canonical and then install gimp (don't know, is it preinstalled? If yes, some other random software which is not installed...). Don't tell them that they have to compete! I would bet the one with Gnome is faster!

tags: #linux #ubuntu

You probably already heard of this NSA thing. They track everybody and everyone, put evil stuff in your hardware, you ordered at amazon and have access to thousand of devices all over the internet, because there are backdoors included (German).

They gave RSA money to include backdoors in crypto software. They track sms, nearly 200 million per day. They infected about 100,000 PCs. They develop special computers to break cryptography. This list is endless.

Got sensitized?

All this stuff got me aware of what I do with my data. My hard drive is encrypted. My Emails communication can be encrypted via GPG, if the discussion partner has it, too. I do not have propreritary software installed (Skype for my LDR runs on another system as my working system). I do not have flash installed. I want to leave all so called “social media” stuff as soon as I'm finished with my exams (propably in four weeks from the release of this article). I tend to install Tor for my daily browsing stuff. I double check if I'm connected over HTTPS, even if this might not solve “the problem”.

Can we ask you something?

Well, two days or so, an E-Mail popped up in my university email account. The university is a partner of several educational facilities which have a survey each semester, on how the support for students in mathematical lessons helps them to pass the maths-exam successfull. They wanted my E-Mail address and my Name. But okay, this was optional. I didn't fill these fields. I clicked “next”. Then, there was a form where I had to enter some cryptic stuff, to ensure I can be refered to my old data when I participate the next time on such an survey. The “cryptic” code was really simple: * first two letters of my dads name (E.G.: “Peter” => “pe”) * first two letters of my mums name (E.G.: “Veronica” => “ve”) * first two letters of my name (E.G.: “Jean” => “je”) * first two letters of my birthplace (E.G.: “London” => “lo”) * both day and month of my birthday (E.G.: first of January => “0101”) They wanted this data to be able to connect my answers to the answers of the next time I participate on this survey. But... I got stuck. I don't want to give them so much data. I closed this tab. Later this day, I got in an argument with my girlfriend about all this. I argued, that this is not anonymization anymore. They can refer from this data to me. You don't belive this?

The calculation

Well, now let me show you:

But not all universities participate in this survey:

107 / ((145 + 11 + 16 + 396) / 100) = 18.83

means: 18.83 % of all relevant educational facilities participate

Now, if only 18,83 % participate, we must use only 18,83 % of all students, this also decreases the occurence of the same name:

83,333 * 18.83 % = 15,691.6039

means: 15k same names

Well, this would mean, each university has exactly the same number of students, which is rubbish – but it's easier this way! Now, not every student is really interested in such “Please do this survey” spam like emails. Lets estimate, 15% of all students participate in such a survey:

15,691.6039 * 15 % = 2,353.741

means: 2.3k same names

But well, they do not have the same day as birthday:

2,353.741 / 365 = 6.447

means: 6.447 same names with the same birthday

But they are not born in the same place, I guess. I didn't find any data how much cities we have with a delivery ward, but lets estimate 1,800.

6.447 / 1,800 = 0.0035816

means: 0.0035816 names with same birthday and birth place

At this point, it is clear that your name can probably be mapped to your birth place. Or even better: There are 6 students in germany, which will participate in this survey, which have the same birthday and the same name and study at a educational facility which takes part in the survey system. And there are 0.003 students in germany which share one name, birthday and birth place and so on. Ouch! 0.003 students... :–) The survey wants just the two first letters of your name. Is this really relevant? Yes it is. But I don't know how to calculate with it. I would propably need the average name length in germany. Should be around five letters, I guess. And I would need the distribution of names in germany as well. But if we consider this in our calculation, it gets really complex!

My summary

What I want to show with this small calculation (hopefully it is correct... I could bet I've done rubbish somewhere): If you participate in such a survey, they tell you they will anonymize your data. But they can't! The probability that there is someone who has the same I wrote an E-Mail back to the sender of the survey, that I don't participate because of the lack of anonymisation. I wonder what will return as answer.

If you find any bugs in my calculation, feel free to contact me: 20CA0F94


Update 1:

Okay, lets do it again, quick and dirty: We have 2,500,000 students, but only 18% can participate:

2,500,000 * 18% = 450,000

Only 15% will participate:

450,000 * 15 % = 67,500

with 30k different names:

67,500 / 30,000 = 2.25

means: There will be two people which participate with the same name. The propability, that the second of these two has the same birthday as the first, is easy:

1 / 365 = 0.274 %

Means: The propability that they share the same name and day as birthday is less than one percent! Now ... think about their birth place, dads and mums name...

I think I've showed it...

tags: #privacy

Yesterday, I read the blog of IceBear and I came to the conclusion, that there is a simple rule for privacy:

> Did you encrypt it? No? It doesn't protect your privacy!

Whereas it can be everything: An email, a connection to a server or your girlfriend (and yes, sometimes these violate your privacy as well [not speaking from experience])!

You can even do this in programming-talk:

if (You.encrypted(it)) { return privacy; } else { return noprivacy; }

// Or even shorter, for the friends of the ternary operator:

return (You.encrypted(it) ? privacy : noprivacy);

It is that simple. Maybe we should tell this the government, but replace the You with TheUser

tags: #privacy

It's done. I deleted the following accounts:

  • diaspora
  • ifttt
  • dropbox
  • kwick
  • google
  • twitter

Sadly, there is no option to delete a Wordpress-Account, as well as there is no possibility to delete an account on ubuntuusers.de, raspberrypi.org, ruby-portal.org and java-forum.org (for the last one, I don't even know the password and username anymore)!

I'm not sad about it, just for twitter ... It was always fun tweeting around stuff. But privacy is more important to me than fun! I did not delete my amazon and ebay account by now, I think... I will still buy stuff on amazon or ebay, and if I do this, I have to give them my data anyway, so there is no point in deleting my account. But, if someone comes up with good arguments on this, I will happily delete these two accounts, too! Feel free to contact me on my other accounts, which are on github, reddit and stackoverflow. If you just want to chat with me, you are really welcome to use this branch new technology almost nobody uses by now, called E-Mail.

Adr: mail@beyermatthias.de GPG: 20CA0F94

I will update my blog on the skype(-alternative) thing as soon as I did something about it.

tags: #social #network #media

Today is The day we fight back! And I will fight back. The first step will be done on 15th of February 2014, the end of my exams. I will close almost all of my social media accounts:

  • twitter
  • google+
  • anything else related to google
  • ebay
  • amazon
  • kwick (german social media network)
  • dropbox
  • wordpress
  • ifttt
  • java-forum.org
  • ruby-portal.org
  • raspberrypi.org
  • ubuntuusers.de
  • diaspora (Oh yes, of course!) What I will not close:
  • archlinux.de
  • archlinux.org
  • github.com
  • reddit.com
  • stackoverflow.com
  • last.fm

Why?

Did you hear about Snowden and his leaks?

Why not all?

Why not closing all accounts? Well, some of them are irreplaceable for me: I cannot close my github account, as I want to contribute to open-source projects and this account is also a very good reference for applications! I cannot close my stackoverflow account for the same reason. My last.fm account... I don't know. I really should close it, but I guess I'm a bit scrobbling-addicted! I think there is no questions why I do not close my archlinux accounts! I simply need them when dealing around with my OS. Wait a sec, there is reddit on the list! Yes, I'm really sad about this one, but I decided to not close my reddit account. I want continue posting to /r/coding and so on... and commenting on other peoples ideas. This account is somewhat like github for me, to interact with programmers from all over the world! Wait a sec, there isn't my Skype account listed at all! Yes, that's because I need it! My GF would kill me if I would close my Skype account! But, fortunately, there are alternatives! And she knows that I want to try out these alternatives! I'll post about this, too!

Alternatives?

“Wow, you closing all your social media accounts, you're a big nerd, aren't you? No social interaction at all!” – Yes I am! And I don't want these pseudo-social stuff anymore, anyway! I prefer mailing lists as social media “account”. I can interact with others, comment on others thoughts and ideas - what do you want more? Sharing pictures of yourself, your neighbor and kittens? No, thanks!

What do you do besides this?

Well, I'll try to setup a tor client for my everyday browsing. This will be my first step after closing all these accounts. I'm planning a speech for my local LUG (Linux User Group) about privacy and all the stuff I did until that day to safe my own privacy. I already use GPG for my emails, so there is nothing more I can do except trying to get other people using it (and I guess I almost achieved this goal for at least one person)! So, now it is your turn! What do you do to save your privacy? A good first step would be closing your facebook account, wouldn't it?

I have to do a semester project in my fourth semester at my university. I already started planning a bit and me and others started writing a project specification, as we want to get this project done. The project has to be a software project, maybe included with some hardware stuff.

I don't want to talk about the project itself now. I want to talk about the bad fact, that we need to do some planning on software architecture and software engineering beforehand, but we (I) don't know how. We have these lessons in 3-5th semester, which is too late in my opinion, as the project is in the 4th semester. I'm currently planning the software, and we are thinking about a modular software setup, where we have one kernel which provides some infrastructure and modules which implement the actual functionality. Sounds great, I first thought it will be great, but I think it will not be. I ran into an argument with a good friend of mine yesterday. He argued that this is not how software works, in manner of how people want to develop software and how people want to use software.

The UNIX idea

The first idea is, we have a UNIX-Philosphy. We have very small programs which can do exactly one thing as perfect as possible. This is the idea of UNIX, and each piece of software should be designed with this philosophy. We could design our software to work in exactly this way, no problem! This implies, that we don't have a big infrastructure. No framework or so. Just the small programs and a bit of abstraction around them to be able to “link them”.

The other point

But. There is always a “but” in there! If we want to have a lot of features and a lot of possibilities what the software is able to do, we must have good bit of abstraction. That's the first point. The second point is: A user does not want to install a software and then install modules for it to enable himself to do basic things. So, the software must provide a minimal set of functionalities, which must be buildin. And this is exactly the opposite of the UNIX-Idea. We want features, we don't want them to be outsourced, as it is not as userfriendly as it could be, so we have to break UNIX.

Is there a balance?

This is a double-edged sword. Or maybe a trible-edged one! We have three points:

  • UNIX-Idea
  • Much features
  • Modularity And they don't harmonize. We have to break one of these points to fulfill the other two! Maybe there is someone out there who knows a solution to my problem?

The idea

My friend argued, that we should build one program which is able to do all the stuff we want to be able to do, and let others just “hack in” their functionality, as people do it in the kernel! I think the linux kernel is a very good example: There is a bit of infrastructure, but people always break things to introduce a new device-driver or whatever. His idea for our project would be the same: Write a kernel which can do a lot of stuff and let users hack in their stuff. The kernel has a interface to let the user load modules into the kernel, but the kernel per se is runable without them. And it works. So, we should provide a possibility to let people hack on the software without changing the actual software (by a module-interface or whatever) and, if they want to, let them add features to the software itself if they want to in a easy way. I don't know if this is the way how to do such things, but for the kernel it works! Maybe this is a good idea. I don't know. Tell me what you think!

tags: #software #programming

I started programming in 11th grade. I went to secondary school after primary school and chose one with computer science as specialty, because I was always interested in computers and programming. I already wrote some Visual Basic when I was 8 year old or so. Therefor I knew what I got into. And I liked it a lot. We learned Java, as most schools teach nowadays. I was good. I was really good. I learned faster than most others and was almost done with all tasks for the remaining year after a couple of weeks.

I started to get frustrated about Java. I knew it is an important language and the whole JVM-thing is a great concept (I still think so), but it was to verbose for me. Friend of mine told me I should have a look at other languages, he mentioned Python. I didn't like it (see below for reasons). Then I ran into this Ruby thing. I was really fascinated, Ruby is a great language. It was not really common to write Ruby these days, Rails just came up! I wrote only Ruby for one almost one year. Then I got frustrated about it, too. It was (and still is) so slow. I started learning C. I always thought C was the one language. I thought, if you master C, you are at the top of what you can learn in manner of programming languages. I know C really well by now, I wrote smart stuff using C and submitted to open source projects, too. I even submitted patches to the linux kernel (just stylefixing and such stuff, as I don't know the infrastructure of the kernel by now). Today I think that C is the right way. The concept of C is the right one. You have to copy your sources together and compile it into one executeable, that what C is made for. No messing around with package managers, installing packages and libraries and stuff. Just compiling into one executeable, which gets linked into the basic system libraries (as stdlib and so on). The concept of having a package manager which is used to install libraries and so on kind of sucks for me. I know, it is because these scripting languages need it, as the sources of huge programs get really huge if you need to have all libraries next to the sources. But this does not mean I like the concept! You maybe already noticed: I got frustrated on Java, I got frustrated on Ruby. I didn't got frustrated on C by now, but I got frustrated on some things which are related to C. You have to put in much effort if you want to write big C programs. I know, this is related to the purpose of the language and I totally agree that this is how C has to be. But I want something more powerful.

I want an allrounder

I want to learn a new programming language. I already searched the web, had a look at wikipedias list of programming languages , took a look at some interesting ones. But I'm still frustrated. What I want is really simple: I want a fast (therefor compiled) programming language. I want a powerful programming language, probably object oriented. I want an easy programming language – not messing around with the language but instead writing less code which does more. And I want the same concepts as C - copy your stuff together and compile it to one executeable – no messing around with package managers. So lets have a look at some programming languages. I sorted them in a way you may not expect, but here we go:

First of all: If you read this, please don't judge me. This is just my opinion on things! If you have another, that's fine! I would love to hear your opinion on my thoughts, but please, please, keep it constructive!

Scripting languages

First of all, I want to cover the scripting languages which popped into my mind:

  • Ruby
  • Python
  • JavaScript (Node.js)
  • Lua
  • (Bash)

What they have in common: Well, they're scripting languages. They have package managers and, probably worst fact, they are slow. You may argue now. Ruby is slowest of these, but never mind, I already know Ruby. Maybe not how to write great apps or so, but I know it as language for basic scripts and use it some times if I don't want to use Bash. Well, Bash is only listed because I have to use it on a everyday basis. Python and JS are faster than Ruby, yes. But I don't like them for other reasons. Lua is fast, but feels odd for me. Maybe I have to dip in deeper into it.

Python

You may think “what a jerk” if I say that I don't like the syntax of Python. I understand the concept of using indention for blocks, I know it leads to really clean programming if several programmers participate. But I don't like it. It just looks awkward to me. And, the syntax of a language is really important if you want to learn it: If it fits for you, never mind. But if it doesn't you always have this weird feeling writing code in this language. Therefor I don't like Python.

JavaScript

> Nobody wants to write plain JavaScript nowadays!

This is so true. You simply don't want to. You want to write for Node.js or jQuery or so, but JavaScript feels like “huh, now I'm a scriptkiddie” for me. I know JavaScript is really, really fast. Sometimes almost as fast as plain C! But the whole infrastructure of JavaScript kind of sucks for me – There is this package manager “npm” which I basically don't get. Maybe I'm just too old for this kind of language.

Lua

Well, I already had some basic contact with Lua and I like it. But I think there is not much infrastructure available around Lua. There are not so much libs available and so on. But basically, Lua is a nice language. I still can not imagine how to write big programs in Lua! And, of course, I don't think that's the purpose of Lua – It is for embedded stuff, I guess!

JVM-based Languages

There are two main languages I want to write about in this section:

  • Java
  • Scala

I know there are much more JVM-based languages, for example Clojure, Groovy or these Ruby/Python implementations for the JVM. But I don't think the first two are really relevant in these days in manner of use in industry. The latter two are just a bit faster implementations of Ruby and Python running on the JVM. I don't know what to think about these. But lets talk about the languages I picked.

Java

Java sucks. That's my point. You can argue your way through this, but that's basically it. It is full of inconsistency. My most popular argument on this: Why can't I call the method toString() on 5 ? Five must be an object, too! It just feels absolutely not sane that five is not an object. You can argue that this is from my Rubyish background and I totally agree with you, but that's what an object oriented language has to provide: Everything is an object. Even 5!

Scala

First of all: I understand the concept of having a JVM and Bytecode which gets interpreted in it. I know the big benefit of having a platform-independent bytecode. Even if it is not as platform independent as it should be! I messed around with a Windows-VM two semesters at my university because of our english courses! These were programmed as a Browser Java App, but didn't run under non-Windows operating systems. Back to topic: I understand the concept of the JVM and everything. But it is still closed source. I don't like closed source! And I don't like the security holes the JVM introduces to my system. Therefor I don't like the JVM. Well, the idea of Scala looks neat for me. It seems to be the better Java. But I don't know if I want to write Scala code for the reasons I listed in the paragraph above. It just feels so Windows-ish for me writing for a virtual machine which is closed source. Yeah, I'm a really great open source fanboy!

Compiled Languages

Well, finally we hit the compiled languages. There are six main compiled languages I give a shot in here:

  • Assembler
  • Lisp
  • Haskell
  • C++
  • Go
  • D

And I want to take them in this order, for an obvious reason...

Assembler

Well, Assembler is not really compiled, it is just assembled. I don't think I have to say much about assembler. It is not platform independent, it is not easy to write and nobody wants to write big software in it, even if some already have (BareMetalOS as keyword).

Lisp

> Lisp is ().

Lisp is one of the oldest programming languages (besides Fortran) which is still spread. This is almost quoted from wikipedia. But I never saw Lisp out there on the internet. Are there people out there who write stuff like Desktop applications in Lisp? I don't think so (Tell me if I'm wrong). I think, Lisp is just for educational purposes.

Haskell

I already wrote that I once thought C is the one language and if you know C you are on top of what you can learn in manner of programming languages. Well, I know C! Now I think Haskell is the one programming language. I really would love if there was a course at my university for learning Haskell. I already tried to learn Haskell. I struggled. Maybe I have to try again. This is basically a language I would love to learn.

C++

Maybe you think, if I know C and want similar ideas in a more powerful language, than I should have a look at C++? Well, once upon a time I thought so, too! But C++ is so damn verbose! I don't like this verbosity. But still, everything else seems fine when talking about C++. I would like to have a closer look, but there are more languages out there which seem to be better for me...

Go

Go seems really neat. But wait, there is a package manager? Wait, what? This feels so scripting-language like. But maybe I can stick with this! Go has great concepts when talking about parallelization! The syntax of Go seems a bit confusing to me, but maybe this gets clearer when taking a closer look. So Go seems to be unfamiliar but worth a shot!

D

D is basically one of the languages I would like to try. But! There is alwasy a “but”: It was written for beeing a replacement to C++. For my taste, they failed. D is still verbose, complex and a huge step towards confusion if not written cleanly. But still worth a look.

Other languages

There are some languages I didn't look at by now, but I want to in near future:

  • Dart
  • Groovy
  • Crystal
  • Rust

Let me put some points on each: Dart is meant to be the better JavaScript out there. And maybe it will be. I hope so! Looks like Java with a bit of syntastic suggar, but seems to be nice. Groovy: For the JVM again, but it seems to be less verbose than Java or Scala. Not worth a look, at it is for JVM, but interesting language! Crystal is meant to be “Compiled Ruby”. I hope it will get popular, as I like the syntax of Ruby a lot. If this leads to be fast Ruby, I will get one programming language for free in my repertoire! Rust is the last programming language I want to cover in this article. I don't know much about it, but it is meant to be compiled and has a Ruby-like syntax, hasn't it? Maybe worth a look!

Summary

Well, I got these languages (in no order):

  • Haskell
  • Go
  • D
  • Crystal

Which seem to fit my needs. All others seem to suck at at least one point, so I don't like them. But which one out of the upper ones shall I learn now? I don't know. I always keep the use in industry in my mind, too! I have to make money some day! Would it be better to learn Go or Haskell for my job? Or maybe D? I really don't know. I hope you did not take the article personally! I don't want to annoy anyone! Just writing down my thoughts and frustration on programming languages!

tags: #programming

Lately, my use of so called “social” networks decreased a lot. I have a profile at G+, Twitter, Reddit and a local social network. Three out of these four became useless for me over the past months. Reddit didn't. And I think about leaving them.

Google Plus was really cool at the beginning, but nevertheless to say that there are the same stupid guys hanging around as on every other stupid website out there on the internet. Posting images of cats and babies or stupid graphics about why the linux operating system is much better than the other ones (well, of course it is – but I don't need to be told that on an everyday basis). Twitter is pretty much the same, and the local social network I mentioned is almost dead. So I think about leaving them. It is really easy to leave them – just click through the webinterface. The more heavy task is to get them to delete my data. This is almost impossible. And, of course, my Android phone gets kind of useless without the possibility to install apps with the Play Store (I'm running stock android). What would be a great idea is to install a custom ROM on my android device(s) (I own a normal smartphone and a tablet, but the latter is not so important, as I'm already thinking about putting a debian or somewhat on it) and then remove my Google account completely. But this would be a challenge to me as I'm not experienced with CyanogenMod or whatever is out there. You maybe think “And how would you socialize then?” – Well, let me tell you, there is such a thing from the dark ages, some people on the internet are still using it today, which is called e-Mail (or eMail or Email or E-mail or ...)! This is a technique where you send texts to others. And of course there is the IRC. What I'm thinking about is to join Diaspora. I don't know much about it. There are not as many users as in G+ or even this thing with books and faces, but there are about 500k users. And that's much enough I guess. But anyway, the whole social network stuff seems a bit obsolete for me. After the facts Mr. Snowden came up with, I don't want to give my data away anymore! I hate the fact that I need skype, I hate the fact that social networks are somewhat like a minimum requirement for humans and of course I hate the fact that not everybody is using privacy tools as GPG. Maybe I should really do this! Maybe I should leave all this stuff and concentrate on things that are really important. This article became something like a stupid braindump, but I hope I stated my point.

tags: #social #network