Thursday, November 16, 2017

Let's talk Discovery

I have been watching Star Trek: Discovery since it started airing, so I've also been having my opinions on the show since that moment. My initial opinion was that the show was nice, but it wasn't all that Trek. However, with half a season (well, more like three fifth, but that's where we're getting the mid-season break) behind us, my views have changed somewhat and I feel it's time to speak up about it.

The show has been getting flak for a number of things since before the first episode aired. The show's main problem has always been its continuity. When photos leaked of actors in Klingon make-up, people weren't even sure whether these were Klingon because they looked rather different from what we'd come to expect from Klingons. The show's look was also criticized for being closer the Kelvin timeline than to what would make sense for the place in continuity this show said it was situated in.

However, when considering all the problems with continuity, you've also got to keep in mind that the franchise already made big changes before. The distinct look of The Original Series wasn't at all preserved for the movies and The Next Generation. Of course, this show takes place much closer to the original, so that's why people want to hold it up to higher standards when it comes to that.

Well, I'm feeling that we should actually just cut them some slack. Take the uniforms, they don't quite fit in with the established timeline. However, it should be noted that the uniform changed a lot in the past as well. Does it really matter, though? At the end of the day, it's more important that today's viewers like these uniforms than that you can imagine them being used at this point in time. In fact, that's always been a main factor in uniform designs. You can't really say that Deep Space 9's change was done for the viewer; it was clearly done to keep up to date with the era of filming the show.

Star Trek: Enterprise tried much harder to fit in its time. It was designed with the idea that this ship predated NCC-1701 (TOS's Enterprise). It featured uniforms that could have been a predecessor to what we'd seen so far, and as more limited with its technology and featured a number of prototypes of what became staples of the franchise later on.

That, I believe, is part of the reason it never really resonated with the public it wanted to have. Or rather, the different kinds of public it wanted to have. It both wanted to cater to new viewers by giving the whole thing a fresh look and a new feel, but at the same time it also worked really hard on making it fit in the timeline. This was most visible when story lines focused on things from other series, but were very restricted in which ways they could do this.

That's why I'm not too bothered by the change in technology. We get joysticks and HUDs, which isn't really in line with the view of the future that The Original Series painted. However, that future was in line with a vision of the future from the sixties. This show is simply more consistent with a current view of the future. It would be in line with the established timeline to show data disks, but people would laugh at it, since we've got more wireless technology today than they even imagined for the future when designing the original Star Trek.

There's still a couple of things that feel out of place. They tried holographic communications in a previous series set over a hundred years after this one, but they couldn't make it work then, so they abandoned it. It's strange that we see it here then. Ultimately, it's not too consequential really. However, the same can't be said for the holodeck that they have introduced without naming it. That would seem a direct violation of chronology. The fact that we now seem to be routinely using warp-capable shuttles also seems somewhat out of place.

The Klingons are something else that seems to have changed more than would seem to be reasonable. To be honest, though, the change is about is as big as the change in them was from The Original Series to the movies and The Next Generation. This also nicely sidesteps the fact that rubber forehead aliens got to be heavily criticized about halfway through The Next Generation-generation of Star Trek shows.

Then, the real problem of the way Klingons look comes in the form of something that Enterprise did. For a very long time, the change was simply chalked up to the fact that the times and budget has changed. The old look of the Klingons was also something that wouldn't have held up in that era of film making. However, Deep Space 9 subtly introduced that the difference actually existed in the show itself, and Enterprise went out of its way to cement the story of how the change happened into the canon of the show.

However, it definitely looks to me that they are going to address this. The virus that caused the change in looks seems to be something that is going to come into focus soon, if you consider one of the fan theories, which since the latest episode seems rather hard to deny. I wouldn't be surprised if they are going to go with the idea that the Klingons looked different before the virus. That would retcon some things, but not nearly as much as the blatant change seems to suggest at first look. Besides, this way we do get Klingons in line with today's production values. I think we owe it Discovery to let them show us how this plays out before judging them too harshly.

That also goes for the cloaking technology that the Klingons possess. Everybody knows they didn't have that technology at this point in time and it's a widely held believe that they acquired the technology from the Romulans. However, in the latest episode, the Klingon cloak seems to get beaten by the federation already, so that might be the reason they abandon it soon after. This might even get them a reason to pursue the technology with the Romulans. We ought to see how this plays out.

In a way, the Spore Drive falls in the same category. However, people complain a lot less about it. That's because it's a universe changing technology and nobody expects the writers to miss that. So, it's more or less a given that they will give a reason for the branch of technology being abandoned sooner or later and nobody believes the writers won't explain to us why that's going to happen.

In general, I rather liked what I've seen. While it's not always perfect Trek, it's solid science fiction nonetheless. On top of that, it has been trying a lot to bring back the Trek even if that took them a couple of episodes to get to. It's a rocky start, but I would say it's in a way more Trek than The Next Generation was during its first season. I mean, it had a very rocky first season as well and it did redefine for a large part what Star Trek was, for which it simply needed time.

That last part is also part of the problem here, I think. I've noticed a number of instances where the new show was made to feel more like The Original Series than anything from The Next Generation era. And well, the latter is far more season and more recent. A lot of people will miss that fact when the series goes further back in Star Trek history.

There are still things I don't like. Mudd's second appearance definitely fits that bill. I mean, I don't really see any mortal - especially one in Federation Space - having such a powerful device. However, omnipotent beings were plot devices in Trek since the sixties, so they're definitely trying. And I liked what I've seen so far, and I'm willing to give the benefit of the doubt when it comes to the future. And I definitely needed something to fill the Dark Matter-sized hole left in my life.

Tuesday, February 21, 2017

What is discrimination? (part 1)

For a long time now I have wanted to write this blog post. I just never got around to doing it the justice it deserves. It was called "What is racism?" in my head, but just as I was finally starting on it, I realized that it was really about discrimination in general. I will be using both terms, though.. At the end of the day, racism is just a form of discrimination.

Racism ain’t what it used to be. Time was, if you were racist, you bloody well knew it. [..] No more. [..] racism has become recast as a kind of bad etiquette, where merely saying the wrong thing, even unintentionally, is enough to mark you out as a moral leper.

A couple of years back, I was riding my bike from the train station to my home. As I live in the Netherlands, there were plenty of other people riding their bikes as well. One of them got me in a bit of an annoyed mood because he delayed me by not indicating that he was taking a right turn at a traffic light. Then, I approached the next traffic light. There was someone else who slowed down because he had to wait for the light to go green. However, he did this on the left side of the bike lane, making it impossible for me to pass him and take the right turn for which there was no wait.

It was at this moment that a comment towards him sprang into my mind. I wanted to say something like "hey, this is the Netherlands and here we ride on the right side of the road". However, I kept my mouth shut and avoided the conflict. It wasn't until a couple of minutes later that I realized how racist that sentence would have sounded if I had actually said it. After all, this guy did look like his parents weren't born in this country.

To me, the statement wasn't racist at all. I hadn't even registered yet that this person looked a bit foreign and I would have said the exact same thing to someone who looked like he had thorough Dutch roots. It was just a way of me ridiculing that the person for not following the single most basic traffic rule. I didn't really think anything of where that person was from, I just made the ridiculous assumption that this was a misunderstanding of the rules and commented on the fact that there are some countries where they drive on the left side of the road.

But then was that comment truly racist? Did it matter that I didn't mean to offend him over his race? Did it matter that I would have said the same thing to someone who looked more like a native? Would it still have been racist if I had said it to someone who looked more native? Would it have mattered whether that person was as native as he looked? Would the same sentence have been racist if it had been uttered by someone who did so because of how the person in question looked?

My personal interpretation of what racism is - and in fact what discrimination is in general - has not lined up with what it popularly is for a long time. Let's take the word "nigger". This is widely recognized as a racist term. This is because of its historic ties of the word to slavery. I am not trying to deny the hurt the use of this word may incur, but I would like to question the fact that just using a word like that is discrimination or racism. To be honest, I think that for many black people there isn't in fact an association to this slavery. They will be offended by the word just because they were taught it is a bad word. Of course, it's also connected to the more recent usage of the same word as a slur and it can hurt in that way. But that use of the word as a slur is also just because people have been taught it's a bad word. Once again, I don't mean to deny the hurt that this word causes, no matter whether it is because of it being a bad word or because it's because there are people that do experience a connection between the word and slavery. I'm not even trying to say it's not a bad word either.

However, there is this strange other side to this word, where it is accepted if a black person says it. I would understand this if it was about intention and sometimes a bit of it is about intention. However, the word is also considered racist if it is used by a white person without intending to insult. If anything, the fact that white people cannot use the word while black people can sounds like racism to me. Of course, as a privileged white male, I don't have much to complain about. I'm really just trying to get to the issue what discrimination and racism are. To me, it really just seems that the word isn't inherently racist.

If it's just about intention, though, things get very hairy. Take the example from the traffic light situation above. My intention was to take a verbal stab at this person without it relating to where he - or his parents - were from. However, he wouldn't have been able to tell that. If there was a third traffic light he had to take and he did the same thing there and someone else made the same comment to him there, but this time with the intention to hurt him based on his race it would have sounded exactly the same. Moreover, it would have felt exactly the same to that person.

What about racist jokes? A racist joke really just evokes a stereotype for the sake of comedy. However, racist jokes are considered a bad thing. They may very well hurt people. However, jokes about dead babies are considered much more acceptable. Not everyone likes these, but they don't carry the same stigma. That's while such a joke can hurt very much to someone who has lost a baby.

Let's take the combination of racism and comedy a bit further. Let's talk about such things in the context of entertainment. The satire of shows like South Park spring to mind immediately. They had a whole thing about gingers not having souls. Basically, their characters were discriminating other characters. It sounds strange to me to call a piece that has fictional characters discriminating other fictional characters as being discrimination itself. However, when episodes on this theme aired, the number of children with red hair being bullied skyrocketed.

Maybe we can shine a different light on this. Imagine you are making a period piece. A movie, let's make it a movie. It's set mid-1900s. Women were discriminated against in that period. Should you not show that in your movie? Is being authentic in that respect discrimination all by itself? Of course there is room for a movie showing those troubles, but say you just wanted to make a police drama set somewhere in that time period. Does that mean you can't show a man being a pig towards the typist woman?

If anything becomes clear to me through all of this, it's that discrimination is not the same as "shouldn't do". Of course you shouldn't discriminate. That's something that's so important that many countries (at least the ones in the West) ingrained this in their constitution. However, there are things that you shouldn't do, but not because they are discrimination. In the extreme, hate-mongering is often not discrimination in itself, but it does move others to discriminate and it should be clear that it's not acceptable behavior.

In my opinion you shouldn't ask yourself if what you're saying is discrimination. It should be clear when it is discrimination and you should know to stay well away from that. However, I do think it's good to ask yourself whether what you're doing is offensive to people. It doesn't even necessarily have to do with something you can discriminate about. Likewise, it's good to ask yourself if what you're doing may validate people hurting others, through discrimination or something else. I'm not against free speech, but I would like those practicing free speech to take their responsibility.

Today, I really just took a look at what I think isn't discrimination. In the next part, I will take a look at what I think is discrimination. I hope you'll join me for that part as well.

Saturday, February 11, 2017

MinGW? MinGW-w64? Msys? MSYS2?

I've got a more serious blog post in the pipelines. However, right now, I just want to take a moment and complain about a mess I came across.

So, it's been a while since I have last programmed in C or C++. In fact, I have never done any real C programming and it's been over half a decade since I was serious about a C++ project. I have recently done some Arduino work, but there you don't really have to worry about the compiler yourself, so it's not relevant here. And because the compiler is what I am talking about here, so C++ and C can be thrown on the same pile, as I use the GNU Compiler Collection (gcc) for both.

Man, the gcc for windows situation is a mess...

So, there has always been MinGW and Cygwin. Cygwin is a whole POSIX emulation stack. Programs had to be compiled specifically for running in the Cygwin environment, but it was easy to do this for any linux program. Such programs would always need at least the Cygwin compatibility layer dll to run. Many people also just use Cygwin for a linux-like environment (since the GNU tools provide what many people consider "linux-likeness") on Windows without using the compiler. I've always used some version of msys for this, but I'll get to what that is in a moment.

The other option was MinGW. Rather than a full compatibility layer, it just aims to provide a compiler that can compile things natively for Windows. You will need to talk to the Windows APIs just like you would when using a different c----ompiler like Visual C++. It's just a way to get gcc to compile for Windows.

However, MinGW was married to MSYS. MSYS was forked from Cygwin at some point, but it did away with its compatibility layer. Instead, it used MinGW to compile some of the core GNU utils for native windows. This also gives you sort of a linux-like system on Windows. This was necessary to run mingw and meant that msys was a part of the mingw project. However, you could also use mingw to cross-compile from linux to windows, in which case you didn't need msys.

Unfortunately, mingw only supported 32 bit applications. When I say around the time when this started being an issue, I mean during the days of Windows XP x64 and Windows Vista and 7, which had had 32 bit and 64 bit versions which were both used (yes, a lot has changed since then). So around that time, there was a company that developed a mingw version for 64 bit application in house. At some point, it donated this code to open source and it was tried to merge it with the mingw project. However, this project suspected there were some licensing issues and a rift occurred. A second project started, called mingw-w64. It also had its own msys version (I think) and if I remember correctly it could actually compile for 32 bit and 64 bit applications.

During this time, mingw had a bit of an installer problem. The person who had been maintaining the installer left the project and basically nobody wanted to work with the same installer building tool. This led to the installer version they provided to be horribly out of date. You had to mess around with packages to get a more recent version. They were rather hostile to help offered by volunteers from outside the project, demanding that such help would be maintained by the same person indefinitely. There was some work on a new system inspired by the apt-get interface, but there was no temporary solution in the mean time. This system got done eventually, but by then the project had suffered greatly already.

Enter git. Git is not a compiler. However, it relies on GNU tools to do its job, so it needed some of them to be able to run on Windows. So, they created their own version of msys (msysgit) which makes them relevant to this story. At some point I switched from mingw's msys to msysgit for my "proper command line" needs and since then I haven't really kept up with the mingw project.

That is, until now. I want to make a utility that uses I2C on linux and my best bet seems to be C. So, I went to look for a compiler. What I really need is a cross-compiler from Windows to ARM linux, or perhaps an ARM compiler on the device itself or maybe even a cross-compiler from x64 linux to ARM linux to run from a (virtual or other) linux installation, but I ended up looking at mingw first. I had a very old version installed as part of the haskell project (oh joy!) and a slightly more recent version from my C++ development days. So, I started looking into the mingw situation.

The mingw project seems to have bled to death. Their site is still online, but nothing seems to have happened for them in over three years. In a way, this is logical. They were already struggling in those days and today you don't really have to bother with 32 bit applications anymore as 64 bit is commonplace enough. mingw-w64 is still alive and kicking and it seams to be the way to go. However, there's also msys2.

The project page describes them as a rewrite of msys and they mention the reason for their existence is the fact that the original msys wasn't able to keep up with Cygwin. However, what I think is one of their main accomplishments is that they divorced from mingw. Don't get me wrong, they are still seeing each other, just not living together anymore. The tools are still built with a mingw version (I think the w64 version) and it is still an important way to run mingw, providing support for both (the outdated) mingw and mingw-w64 out of the box. However, they are just not the same project anymore, so the coupling is not as tight anymore (i.e. they are not wearing rings and they are allowed to see other people).

The new msys2 also does away with the apt-get inspired installer in favor of a new port of Arch's package manager, pacman. Oh, and they apparently don't play well with msysgit or the original msys. Things never get simple, do they.

Confused yet? I definitely am!

Edit: It seems there still was an important bit I missed. The more recent version of git for windows (incidentally, called Git for Windows rather than msysgit as the older versions were called) don't actually use their own msysgit anymore. Instead, they are already packaging msys2, which means that I have already been using it for quite some time...

Monday, January 30, 2017

The MITA License

I've always like the MIT License. However, there was one thing that always bugged me about it. That's the copyright notice.

You see, the copyright notice is often not really correct. It often is when the project is in its early phases, but when more contributors start adding things, it may not be correct. However, the license itself stipulates that you cannot change the notice. Surely, you yourself can change the license, but once there are more contributors who should be considered you becomes more and more foggy as well.

One way this is often mitigated by a copyright notice that refers to some "software group". However, that's often not how the project started off and whether it was actually legal to change it to that is often a bit up in the air. And whether new contributions actually are copyright of said group completely depends on the contributors agreement (if there was one to begin with). Oh, and the jurisdiction the viewer is on may have something to say about it as well.

At the end of the day, the copyright statement is often just incorrect or it may just be undecidable. Of course the copyright statement doesn't need to be factual for the license to work, but the license does make sure that you cannot change it. I just don't like that.

That's why I forked the license. I replaced "copyright notice" with "attribution notice". The idea is that you can put anything above it, things like "Project <A> was started by <B>" and "This software was created by <C>" come to mind, but you may very well think of something completely different yourself. It can basically be anything, as long as it's something that you can clearly refer to as an "attribution notice".

I named my fork "MITA", after MIT-Attribution, but I pronounce it as in (Playstation) Vita. The license can be combined with a copyright notice elsewhere (though it won't be protected by the license, of course). The home of the license is my website which was launched pretty recently. (Hi there, future visitor! Is the link broken? Do let me know. When I wrote this I was definitely planning to change the url at least once or twice and may well have forgotten to update this link.) The text of the license can also be found below.

<freeform attibution notice>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above attribution notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Friday, January 13, 2017

SBCs: Orange package recevied, over

A couple of days ago I received a package. Or actually, I had to pick it up because it didn't fit in mail box and I wasn't home when they tried to deliver it. It was a new piece in my collection of SBC, the Orange Pi Zero:


As the name might betray, it's the competitor to the Raspberry Pi Zero and the CHIP from the Orange Pi line.


With a full-size network, a USB port and a one presoldered header, it actually gets more in line with the CHIP than the Raspberry Pi Zero.


It has wifi and that combined wifi in addition to its network port, so it's also not as poorly connected as the RPi Zero. On the other hand, it's the only in its class not to have any display output, while at $9 (or $7 for the model with less RAM) it is the most expensive of the three similar boards (unlike the CHIP, it still needs a SD card to be added to that cost).


Of course, that higher price does get you something: a processor that actually competes with the normal Raspberry Pi line rather than the Zero. And of course, little to no software support.


For size comparison, here's the new board together with an Orange Pi PC, a Raspberry Pi 2, a Raspberry Pi Zero and a CHIP. The OPi Zero actually has quite different dimension than any other the others. Perhaps the Orange Pi is actually starting to take its own direction instead of just copying others.


The same package also included a case for my Orange Pi PC. Now that it has a real function in my infrastructure, I felt it deserved that. If you look closely, you can actually see that the case is artially transparent:






In fact, that was not the only case in the package. There was also a case for the Orange Pi itself. I have a plan for it too, so this seemed only fitting. I want to use it for NAT (if it's going to work is another story all together, but we'll get to that when we get to it). This may in fact be the first time that I buy a non-Raspberry board with a specific use in mind!





Speaking of Raspberry boards, there's actually a board that has joined the family without me writing about it on this blog. High time for some photos, don't you think?




It's the official Raspberry Pi Touch Screen! It's inside a SmartiPi Touch case.


And it's being driven by a Raspberry Pi 3.

Alright, that's what I've got for you for now.

Sunday, December 18, 2016

The one-time pad

A long, long time ago, on a blog right, right here, I briefly mentioned that I wanted to write a blog post about the one-time pad. Today is the day that I do so. 

The one-time pad is an elementary part of cryptography and I feel that every computer scientist should know about it. Don't worry, though, I'll keep this understandable for just about everyone. In fact, the one-time pad is very simple and could probably be explained to a seven-year-old.

Let's say that you have written a love letter that you want to be readable only by the target of your affections. In order to hide its content you take piece of paper with completely random letters, which we will call the key.

Now you take the first letter of your love letter and remember its position in the alphabet. Then, you take the first letter of the key and also remember its number. You add the two, and if the total is higher than 26, subtract 26. You end up with a number that can once again be translated back to a letter. This will be the first letter of your encrypted message. 

You do this for the second letter as well. And then for the third. In fact, you keep doing this until you have encrypted the entire love letter. You send this encrypted message to your beloved, who must also have a copy of the key; only people with the key can read your message. 

Do note that you do not loop around on the key. This means that the key must be at least as long as the message itself. Moreover, you cannot use this key again (or at least the part of the key you used, if the key is longer than the message, you can use the remainder it next time). This is really an important part of the strength of the one-time pad. 

In fact, the strength of the one-time pad is such that it is unbreakable. Actually, it has been mathematically proven that it cannot be broken without knowledge of the key. The proof goes something like this: there is any number of possible decrypted messages that the encrypted message could represent. Without any knowledge of the key, each of those is exactly equally likely to be the original message. This means that you can't discern between them in any way. Some might make sense while others may not, but there is absolutely no way to tell which of the decryptions that does make sense is the intended one.

It should be noted that in the way we did this above, we are "leaking" a lot of information because we are not encrypting spaces and punctuation, which compromises the strength of the encryption. There are of course ways to encrypt these as well. In fact, there is no reason we should stick to the traditional alphabetical encryption. Instead of using letters as a basis for the encryption, you could use "bytes of data represented in binary" and instead of asking the key to the message you could use a "bitwise xor". This way you would end up with system that has the same mathematical properties, makes more sense for computers and can represent any type of data. 

Though the one-time pad is very strong, it is not used all that much. This is because it isn't very practical. You need to share a key with the recipient, which needs to be as long as your message. If you can do this securely, why wouldn't you just send the message instead? With that in mind, the only practical use of the one-time pad is that you can share the key at a moment when secure communications are possible and send the message later, when they aren't. 

While the one-time pad may be the ultimate in symmetric encryption, most of the encryption we do today is actually asymmetric. This is when there are different keys for encryption and decryption. One of the two can be public knowledge while the other is kept secret. In order to sign something and prove that you have written it (and nobody has changed anything about it) you use a secret key to encrypt and a public key to decrypt your "signature". In order to make sure there are no eavesdroppers, you use a encryption key that is freely available that has a corresponding decryption that only the intended recipient has.

Using one-time pads isn't entirely trivial. First of all, your key needs to be truly random. Any kind of pattern in it reduces the strength of the encryption. True randomness actually isn't easy, especially not in the large amounts needed for a one-time pad. Computers actually often simulate randomness, which really doesn't cut it for this purpose. 

The second problem is sharing the key. We already mentioned this, but the problem here becomes that you may not know how much data you will want to send later on. This means that you might need to share a very, very long key just to be sure you can send enough long messages later on. And having a long key lying around is a problem in itself, as a stolen key loses all its value...

Finally, you really really really can't reuse (parts of) a key. This really can't be stressed enough. During the Second World War, the Germans actually used one-time pads. Except... they reused keys and thus the encryption wasn't unbreakable and was in fact broken. Because of this, the Allies were able to listen in on their communications...

Allright, that is about all that I feel everyone ought to know about the one-time pad. I do intend to write about the ways I would use pads in different situations some other time, but I don't yet know when that will be. The situations I am thinking of would be modern day espionage and and an interstellar empire, but nothing is set in stone yet.

Tuesday, December 13, 2016

Taiga on my Orange Pi PC

Recently, one of my hobby projects made it to a very nice first prototype state. It doesn't do much yet, but it is in a state where I can show it to people and personally I think it shows a lot of potential that is in the ideas I had. However, working on the prototype was kept simple because it was so basic; there were only a couple of tasks to work on. In order to keep the further progress of the project structured, I decided I need some form of an issue tracker. I have used Taiga.io for such a project in the past and it worked well. Unfortunately, though, their hosted version only allows a single private project and I already had one.

Remember all the Single-Board Computers I wrote about a while back? The Pi 2 is still actively running Kodi, the newest Pi 3 is driving an official Pi touch screen and some of the CHIPs are part of the project I mentioned while their versatility means I have ideas for quite a few more of them. However, the Pine and the Orange Pi have been idle since my last post about them. However, for the Orange Pi, this has recently changed.

I took the Orange Pi and installed Taiga on it. It is quite nice to have my own "dev server" and I'm quite happy about the current situation. I won't describe the exact procedure I followed to get where I am now, as it was basically following their guide for installing it. However, I will post a list of notes. Some of them will relate to installing it on the Orange Pi (or on an SBC or on an ARM based device) whereas others will just be my personal gripes with the installation or the guide.

  • The guide uses the user "taiga" instead of telling you where to use your own username. This makes it easy to miss a spot if you are using a different user.
  • To make matters worse, they chose the name of their software, so not every instance of the word should in fact be replaced by your user.
  • I would probably have been better off creating a user and naming it taiga, though. The procedure installs quite a lot in the home directory and now that's under some other user.
  • The procedure calls for installing postgresql 9.5, but Debian only has 9.4 on stable. By simply replacing the 5 by a 4 it works, as the minimum requirement is version 9.4. (Alternatively, I could have used 9.5 from unstable.)
  • The guide installs python3 and then just uses Python 3.5. On Debian, you will have installed Python 3.4. This earlier version does simply seem to work for me.
  • Installation of lxml is known to be problematic on the Raspberry Pi, but can be achieved by increasing the amount of virtual memory. For me, it worked without such hacks, though I do not know if this is due to running Armbian, running a headless image or using an Orange instead of a Raspberry.
  • Circus isn't available in Debian stable, so I had to add the testing repositories and get it from there.
  • Pay attention to the output of "service circus status". This is the only way to tell if the backend is actually running.
  • I skipped everything that was even remotely optional, so I might revisit some of that in the future. The optional parts are sometimes somewhat out of order, which makes it seem you have to pick them up again before the end, but this isn't really the case.
  • I currently use a .local domain. I think that means I use mdns, but it works on Windows (which mdns shouldn't) so I'm not 100% sure how this is working. It definitely isn't working from android, though, which is a shame. 
It's a real pity there is no "normal" installation procedure like running a script or installing a package. Nevertheless, I do now have the whole things running and I am quite happy with having my own development server.