I recently had to implement a big part of CSS 2's visual formatting model for a new component I wrote, in C++. And while implementing this, I received answers to a lot of those questions. After I had a basically working HTML layout engine, it did exactly the same strange things in many situations as the browsers do. But with the difference that I now understood why: In most cases, because the implementation forced it this way. And the implementation seems to be the way it was, because it was the simplest way to make it work.
While testing my implementation, I also found bugs in some browsers layout engines: For example the original Opera apparently doesn't correctly layout blocks with left or right float in justified text flows. A bug my implementation funnily also had in a very similar way.
Anyway, I now understand much more how browsers do what they do. Not sure if this will be helpful when creating websites in the future, but it was definitely interesting. I can at least recommend to read through the specification one day, if you have nothing better to do.
CopperCube is now available on Steam:
It was quite an interesting journey until there, and also interesting seeing Steam from 'the other side', as developer, opposed to previously, as gamer. I may not talk about any details, but I definitely expected something a bit different. :)
CopperCube has a launch discount of -20% applied to it on Steam, which still works until tomorrow, Friday 8th of May. To be fair, I also made this discount available to the non-Steam from our website, which you can get here.
I'll see in the next few weeks if and how much more money this will bring in, and adjust our development plans accordingly: If possible, I'd like to invest much more resources into developing CopperCube further. Let's see if this is possible now.
- Me: trying to debug my code by hitting the 'Debug' button with the new device connected.
- ADT: "Device is offline! I cannot do anything."
- The internet says I need to update the Android SDK for this.
- I'm updating the Android SDK. Trying again to debug.
- Android SDK: "I don't run with this version of ADT. Please update!"
- I'm updating the ADT.
- ADT: "I won't work with this version of Eclipse. Please update Eclipse!"
- I'm updating Eclipse. It won't instead, it decides to hang or to crash randomly each time I try.
- I'm downloading a new version of Eclipse. Reinstalling. Then downloading and installing a new ADT for that Eclipse.
- ADT: "This plugin requires the build tools to be installed!"
- I'm downloading and installing the build tools. Together with about 15 other things the SDK Manager tells me to. This takes about 1 hour.
- Then, finally, I was able to debug my stuff again, after half a day of senseless updating and installing.
Valve sent me a friendly mail, notifying me that CopperCube has been greenlit. That's pretty neat news!
It will take some time making CopperCube available on steam, because this involves quite a bit more than just uploading the app there, but once this is done, maybe a few more people start using the game engine. This would be pretty nice, because then, I would be able to allocate more resources to continue developing even cooler new features for CopperCube.
I'll keep you updated on this.
How many programmers do you know, who ever did some "real world engineering"? If you are a software developer, have you ever built something with your own hands? During the last 5 years, I've build a lot of stuff which was not software, and I can recommend to try it out: It is different to the process of building software, but you learn a lot which you can also re-use for your programming skills, interestingly.
For example, during the last 2 or 3 weekends, I build this thing here:
It is just a simple wall, a walk-in closet. But it is complex enough, and you need a bit of planning for it. When I built something like this the first time, and did something wrongly, I thought "Damn! There is no Undo button". There is also no copy and paste or version control system, so you need to do that project a little bit more differently than a software project.
But there are also a lot of similarities: Time and resource estimates are nearly always completely wrong. In the beginning usually by a factor 2, by my experience. But it gets better. It also doesn't matter if you are doing the project or parts of it yourself or are outsourcing it. It will usually take longer. And more money then anticipated. Also, there will be bugs. And the way they are fixed will not always be the correct one.
Basically, things I learned from building "real world stuff" is that planning and re-using is much more important than for software. Also, I think the way I am doing software projects has been improved quite a bit since I started building stuff like this. It is also a nice way to 'relax' from a thinking intensive programming session. So I can really recommend trying to do some DIY projects from time to time.
Code Signing Certificate. Which I decided to obtain in order to make the nasty ones of the browsers like Internet Explorer stop complaining when downloading installers for the software I develop.
Finally, I now have one. If you should decided to get one too, one day, read here what I had to go through:
- On the CA's website, I had to enter the type of certificate I wanted, for how many signing processes and for what type of software. The website left me completely in the dark how much this would cost at all. So assuming my selections would influence the price of such a certificate, I selected the smallest possible options which were ok for me.
- Then, I had to write down lots of details about me and my company. Still, no price was written anywhere.
- Then, they wanted my credit card details, for paying for the certificate. Still no price shown, anywhere.
- After I had entered my payment details, they finally presented me with a price of 99$. Isn't this a bit shady practice? And a bit expensive for a simple database entry? But I accepted.
- I was sent an automatic mail that I would have to send them a scanned-in proof of identity, and a signed form. Which must have been certified by a notary.
Side node: A notary in the US might be something casual, but here in Austria, having a license to be a notrary is basically a license for gold digging. They get 1% of every real esate deal, have protected areas of business and usually have huge, expensive offices and lots of staff, because they can. That's also why they take quite some money for certifying a document, and are cumbersome in giving you an appointment, if it is not a property deal you have for them to work on.
- Anyway, I was lucky, and was able to arrange an appointment at our local friendly notary for the next day. Hurray. Signing that document would 'only' cost 30 euro. OK.
- The next day, while approaching the notaries office, a woman from the CA called me. She had to verify my ID, and gave my a quiz in which
I had to answer some questions. Questions which anybody could have answered, like:
What is the city I'm living in? What's the zipcode?
Not sure how this would verify my id at all.
Then she told me that she will send me a mail with a form which I had to sign and then would have to be certified by a notary. Telling her that this is what I am currently doing, standing right in front of the notaries office, confused her completely. I wondered if there was a second form I would have to get certified, but I decided for "let's handle this later, if at all". The woman at the phone wasn't able to help me at all. Later this day, I found out that the second form they sent me was the same as the first one. So I ignored that.
- About a week after I had sent the signed form to the CA, I received a phone call, this time from a woman who interestingly spoke
German (with a very unusual accent, sounded strange). She told me that it wasn't possible to give me the code signing certificate, because I
hadn't included a copy of a valid Id document on the form. But I had. There was this single page form, and right in the middle, there was
this big, big copy of that document. So the discussion went like this:
- Me: Hm, I had included a copy of it on that form. I'm sure. It's right there, in the middle.
- Woman: No, you hadn't. This is not the type of Id we need. We need <other type of id>
- Me: But this is exactly it. It is <other type of id>
- Woman: No it isn't.
- Me: Yes it is. Look at the document.
- Woman: No it isn't.
- Me: Have you looked at the form?
- Woman: Ah, I see now. Everything is ok. We'll send you the certificate witin the next few days.
- A few days later, I finally received a link to the certificate to 'pick up'. However, it is apparently only possible to do this with Internet Explorer. And to make this work, you seem to need to reconfigure quite a lot of options, deep, deep down in the internet settings of Internet Explorer. There are instructions on the CA's website on how to do this. For IE 7, 8 and 9. If you have IE 11 - like me - then you are probably out of luck. And if you would guess, it also didn't work. It failed miserably with an obscure error message, and I had no idea what to do. So after thinking and looking through the settings again, and failing at googling for help, I finally did the last desparate attempt: Simply clicking the same link again. Then it worked. Yay, I finally had my certificate!
The process of getting this was costly (from the perspective of an indie developer) and quite complicated - and this although mostly everything went well. Imagine something would have gone wrong. I think this might also be the reason why code isn't signed that often.
It actually worked, and the sun appeared like a crescent moon in that device, with a size of about half a centimeter. I didn't notice any benefit of that advertised HDMI support, though. :)
SimCity. You could build your own city, with streets, electricity and everything, and try to let it withstand catastrophic events like Godzilla or nuclear metldowns. It was great. I spent a lot of time with it. I also played Sim City 2000 as a teenager, but I didn't try the newer versions, especially not the latest incarnation from 2013, called simply 'SimCity' (without a number), which apparently sucked, according to many reviews.
Then, a few days ago, a SimCity style game named Cities: Skylines was released. I saw a few Youtube reviews of it, and was fascinated. I bought it, and had even a few (much too less) hours to play it. This is the city I built so far:
Boy, is this game fun. It has all the features you'd expect from a modern city building simulation. And it is quite impressive. You can build very huge cities with streets and layouts as you like, as here:
And zoom into every detail of your city, and follow every car, truck or even person:
Playing it gives you the same feeling as the old Transport Tycoon did, but with todays modern graphics. The game has so many options and features, it doesn't get boring quickly. It is also very impressive from a technical perspective, because it seems every person and car is actually simulated. It felt wrong paying only 27 euro for this. Not sure why they are selling it that cheap. Same for the name of the game: Why is it that strange?
Anyway, if you like city simulations, I can really recommend this game. Too bad I don't have much time for playing.
Amazon Prime user, and quite happy with that. You don't only get free delivery with this, you also get to access to Amazon Prime Instant Video, an on demand video service, like the better known Netflix.
I was skeptical in the beginning, but although I have to live with our slow country side internet access, it works like a charm. You can watch whatever you want, whenever you want, without commercials. Amazon seems to be just starting with this, so the list of videos is big but limited, but I never have switched on the TV for one month now. I think if something is going to kill television, it is netflix, amazon's instant video and co. It is so convenient. Wondering why the TV stations still offer only very few of their shows online, and if, then usually not for a flat rate.
CopperCube in version 5.2 as free update. Besides other features, it includes the announced water surface rendering, which I managed to make work on all supported platforms: Windows (D3D and OpenGL), Mac OS X, WebGL, Android, and even Flash. It looks nicely on all of these, here are some examples:
It looks much nicer in movement, of course. If you want to see it in action, you can try it directly on a website, I created a small demo with two different scenes: WebGL Water rendering demo. It works surprisingly fast, and also does look nicely.
I'm very happy about this release. It also includes a lot of other changes (detailed list here), like localization. Meaning the editor user interface now also works with different languages. I already added a german translation, and planning to add some more later.
Hope you like this release!