Sunday, February 24, 2019

Do Androids dream of googled Javas?

So I ended up programming a bit this weekend, as I had free at Friday, and the result is my first Android game: https://github.com/Zachax/CatBallAndroid
Basically it's more or less a remake of my older Java game (or my first Java game) called Ball Storm which I made in Christmas vacation of 2016 I believe. Simple game where you're to collect flashing balls and evade others.


Android development is relatively tempting, I guess I could argue. First of all it's a place where Java is sort of the native language. Despite still remaining popularity of Java, it is actually relatively difficult to sometimes see in everyday life where Java applications are really used. Sure, at work I'll encounter lots of applications made by Java with the customer systems (and the fun thing is when I need to resolve problems with those apps I've sometimes never even heard of before), but actually outside certain work fields and as a "regular everyman" Java is not obviously used in too many places. It can then even sound plausible if someone argues that Java is not really used for anything new anymore, but that it's a dying language (despite it has been ranked as the most popular language very recently in some polls). Well I don't think it is dying.

Anyway, since I'm already quite familiar with Java, this makes it much easier to start doing stuff with Android. However, of course not everything is directly applicable on an Android device, and especially GUI systems are apparently not directly usable on Android. Android supports its own classes for GUI stuff, and to be honest, they are for main parts better or at least easier to use than older Java awt/Swing systems. Also for Android apps you can use lots of xml encoding, which makes it making a bit like making web pages. Surely there are practices to learn, and many old things just don't work there, but if you'll learn that stuff, seems like it can for many parts be easier than older fashion desktop development.

Google also provides a dedicated integrated development enviroment (IDE) for Android called not too imaginatively (or misleadingly) Android Studio. This makes using Android application programming interface (API) quite convenient, as the IDE provides tools for writing the code, handling files, setting layouts and testing the applications with an emulated Android device - as a beginner there is hard to think of many things to miss on this system, apart maybe some features that would make starting threshold a bit lower. Although usability seems quite all right after getting used to its not too inconvenient setups (been testing clearly less convenient IDEs). Also it runs natively on Linux based OS (not surprisingly though, considering Android itself is built on Linux kernel), which obviously is nice from my point of view.

About programming itself, have to say I've come a long way during the past couple years or so. First of all, it took me only couple days to make a simple application, and I largely knew what I was doing and I felt the code ended up becoming acceptable. I think two years ago it took me like a week to do something similar, yet more primitive, where I barely knew what I really did and the code looked utterly terrible. Both times I took a tutorial and expanded it considerably, but it was quite different now than back then.

Now I mainly needed instructions how to get started with Android Studio and could refactor largely anything from my application, while earlier time I would have made a Frankenstein's application where I have only few places I really dare to make adjustments to relatively simple things in order to be sure the applciation won't break completely. So roughly put while with Ball Storm I largely just made a pre-made procedural line set for creating a ball to be iterated while now I largely got basis of an empty application granted but built the actual game on top of it with own stuff.

Even more the increased experience shows up with reading the existing code. First of all when I noticed a bug in my application (eg. score text was missing), I could find the reason and fix it relatively fast. Back then if I'd missed a } sign from end of a row, I'd been potentially lost for hours, not to mention actual issues where the application runs but something is just wrong. Secondly it's much easier to take advantage of code examples or official API instructions to make something your own. Two years ago I could not really understand much of what API documentations said, they were just confusing messy load of data to me, and I needed relatively complete examples of alien code to use. I still think API documentations are not typically made in too reader friendly fashion, but if you know how they work in general, they can tell you what can be done for real.

This would also lead to one another issue with programming, documentation about programming and learning to program. That is all with the Internet. I mean the Internet itself is a frigging mess - hypertexts can link to where ever when ever and there is no whatsoever order required (or existing) in anything outside individual page site. In addition the WWW place has been existing for well over 20 years now, and even while pages from 1990's are not too commonly encountered, it's easy to come across something that is over 10 years old and largely deprecated nowadays especially when it comes to programming with the latest operating systems. It's surprisingly inconvenient therefore to see how old some article actually is, if the original author has not bothered to stick a date on it and it's not written on a site which places it automatically.

And oh dear the path if it goes to searching for serious information from old forums and blogs...and that is what Google easily gives to you with searches about less mainstream topics... It shouldn't surprise me should the books become fashionable again after few years, since despite their slower time to get the product out, most information in internet is just so badly lacking any structure that most of that information is just unusable. I don't think any big data engines and AI solutions can fix that problem in anywhere near future.

However, it probably would surprise me, due the nature of reality I encounter daily. Nowadays when the human sciences seem the least appreciated, I tend to think that in many instances they would be the most needed to be applied before it's too late, and the representatives of human sciences have given up themselves. I don't want to see bonfires of books again in the future, just because people think books have become obsolete due internet. Unfortunately sometimes such humanware development seems almost inevitable when more and more often hearing stories like about people who mock others because they own physical property: "Why you have books? Haven't you learned to google?" Yes I have, and that is one reason why I've started to read more actual books again.


Sunday, February 17, 2019

"When I was young, there was this thing called the Internet. Terrible wars raged there for years!"


I just finished a book. It was called Taistelu internetistä - Microsoftin, Applen ja Googlen digisodat. The book was a translation of Digital Wars: Apple, Google, Microsoft and the Battle for the Internet by Charles Arthur. For anyone interested about IT and recent historical backgrounds of certain Internet and smartphone (etc.) business of 2000's I would say that it is highly likely interesting and quite entertaining. Hard to estimate how creditable sources were used, but there were no clear indications of major inconsistencies or very probable major untruths being told by reading the book itself.

For me it was one more hole to be filled. I've had my first smartphone only in 2016 (got my 2nd now - both Samsung Galaxy J5 2015 models), as I deemed that could become handy while travelling abroad. I have sort of inherent disinterest to things that are fashionable and popular, which is partially philosophic-ideological attitude too: after 10 years it's easier to see what is actually worth something and not merely a shooting star, so then one can just pick the classics more easily and not waste time with futile toys.

On the other hand I dislike disposal culture that came with mass production. I prefer things to be of good quality and to endure for a long while, and I find it sad how technology business urges us to buy every 1-2 years new gadgets intended unrepairable and disposable despite being filled with valuable rare ores and other raw materials that are not exactly ecological to dig out from the soil. So yes, it is technically waste of time to repair many things as the time spent for repairing can easily equal several times price of a new item, but I'll still prefer to repair damaged devices if I can. In addition I'll learn if I'll try, even if I'll fail.

So anyway, I did not for instance really know much about Apple products particularly, as I had not been very interested about it. Or about the rise of modern multitouch smartphones. In the book Jobs is told to present the first iPhone in such fashion that you'll use instinctly your fingers and no need for stylus - yuk. Well, certain old mobile phones had simply dreadful interface, but I'd surely prefer proper keys over annoying touchscreen as the only control feature. Yes, I can connect a keyboard and mouse into my smartphone, but it would be hard to carry them along, and then a laptop would be better. Also I've found that a stylus would be faster to use due higher accuracy, but all the mobile device styluses I've nowadays seen in markets are fast broken, so blah with them. Touchscreen is nice add-in, but I'd still prefer it not to be the only intended user interface. Obviously I'm in minority with this, I guess despite touchscreens being so extra fragile in most cases.

I also had not I suppose thought about how past market leaders in their own fields Microsoft and Nokia were employing apparently quite much of waterfall design in 2000's, which largely led to their demise. So that requests just fell from the top without necessarily too sharp perception on the real situation, and by the time

Slightly peculiar argument in the book was stated on the pages 251-252, where Japan was referred as the wasteland of smartphones because in 2011 according to the book their market share was only 10% in 2011, while in the world overall it was claimed to be 25% smartphones of all sold phones. My living partner who lived in Japan at that time on the other hand argued that like 80% of people would've had a smartphone in Japan at the time - and that only iPhones counted into that. An obvious hyperbola of course, but nevertheless. According to her also huge amount of people also ordered iPhones over from USA as the devices were not for sale yet in the beginning, when iPhones were originally released. Sounds like alcohol brought to Finland from Estonia - also not properly readable in statistics.

In any case, I'm reserved with claims of both sides. Here it is argued that Android had around 60% share in 2011-2012 and Apple around 30% share in smartphone subscribers, and that in the beginning of 2012 over 19 million people had smartphones there (this suggests that there were 127,6 M people in Japan in 2012). This figure is more or less supported in an article about Japanese smartphone sales in 2011, where it is also referred that the iPhone was the best selling phone model for almost 7.3M out of total 24.2M smartphones sales for 2011.

So first of all, alleged 10% sales "only" for smartphones out of all mobile devices would not make the place quite void of smartphones in my opinion, especially as we're talking about millions. Secondly if they sold over 24M smartphones in 2011 in a country where that consists of almost one fifth of the whole population, it certainly doesn't seem like a desert to me. In Western Europe it's claimed to have been 32% of smartphone penetration in 2011, but only 9% in Central/Eastern Europe (document page 22); although elsewhere it is suggested that Western Europe had 22,7%. Lies, damned lies, and statistics?

It is also noted in the book that Japanese standard phones (feature phones) pretty much had the features of smartphones without app stores, so smartphones were not really even needed as much, and my partner actually disputed that non-iPhones were really not smartphones anyway to Japanese people. At this point I'll just return to the lands of non-existent sun before I'll start to digress into NEC PC-9800 series out of the blue.

Friday, February 8, 2019

To Retrocompute is Human

When mentioning by random to someone that I am interested about retrocomputing and old computers, a typical reaction is: "Why?" Personally I might get a similar reaction if someone tells being interested about fashion or modern pop music, so I understand it is hard to understand if someone is interested about something that dwells outside your own bubble. Nevertheless, while collecting old art or antique furniture is often represented as a high-class hobby and people who deal with vintage cars are rather frequently appearing in traditional media, but within IT field it often is endorsed that only the most recent technology matters.

To make straight things indirect, I'll jump back by theoretizing that a human being has basically three types of secondary desires (aka needs not essential for staying alive): rational, emotional and spiritual. On my part, dealing with retrocomputing supports all those three fields.

The way I see it, spiritual side seems to be actually the most common factor as a reason for people to get indulged with old computers and video games. On another word: nostalgia. Many people might be prone to classify nostalgia into field of emotional side, but even while nostalgia surely fondles our feelings, I tend to think that such connection to the past should rather deemed as a connection to the spiritual side of being - had you not had a place for such things in your spirit, it would not touch your emotions either. A scene of a movie might touch you regardless whether you'd seen it as a kid before, but another scene might awaken your soul only because you have experienced it so long time ago.

Similarly indeed, there is some retrieval of the past with finally finishing an adventure game Zak McKracken that was too hard for you as a kid or getting to hear intro of Defender of the Crown after a quarter century. Will it last though, likely no, and in some situations it can even lead to disillusions and disappointment - the best game of your childhood might actually suck nowadays and a certain path of thinking leads to noting how futile and vanishing everything that once mattered is. Let us not go into that though, and actually for me nostalgia is not really the decisive factor with old stuff: in fact I'm exploring more of the stuff I never even knew about as a kid. I think nostalgia is more of repetition or revision of the previously experienced, and I'm more into venturing into wastelands where no Sakari has gone before.

As rational motives I can suggest both practical and cognitive reasons. For practical reasons it could be argued that there is a lot of stuff gone past, and even if (at least some of the) new stuff would be better, the human beings are still the same as actually thousands of years ago. So if something was fun two decades ago, it can be so still today. Yes, not every old game feels very fun nowadays, but to be honest, many of them were really played for a moment already back then (except if you had bought a bad game for high price and would have been too embarrassing to just let it rot untouched) and many games nowadays are likewise played only for a moment before moving to the next one.

So I do surely claim that there are many pearls worth playing also today - for instance "Gold Box" Advanced Dungeons & Dragons series of 1980's, Lucas/Sierra adventure games or various Sid Meier's games like Pirates! and Sword of the Samurai I would easily enjoy playing still for several hours should I meet them today. Of course since I have already spent countless of hours on those games and many games lack replay value, I don't play them as much anymore, but there are still lots of good games unknown to me. Good old games can be easier to obtain for less money than new games, although for some parts the golden age of abandonware seems already gone and despite the illusion of "everything is in Internet" many old things are actually really hard to come by.

Similar logic goes to hardware - older can be found cheaper than new ones - but there it is way less clear. Software can be run with emulators that often are providing not only really authentic reproduction of the system in non-physical sense but also can actually be more compatible than the original devices. If you'd like to play all DOS games properly, you might need say three different hardware setups, yet you need but one DOSBox to rule them all. On the other hand, and this is more or less already part of the emotional reasoning as well as was the idea of old good games being still enjoyable, the experience with a real vintage device is more rewarding in sort of irrational fashion. Just like when you actually drive that decades old car, playing an old game with similarly old computer just feels more special and true - human beings have analogue senses, and digital world is just not the same.

That is, assuming the device actually works. Then again a major part of the enjoyment is actually getting the old systems back in running. Also with later knowledge and reduction in demand, it is possible to get such systems that would have been simply impossible to afford back then. CD-ROM would've been luxury in 1990 and not many people would've afforded two monitors for Commodore 128, let alone having flash drives or other modern add-in systems. Downside with physical devices is obviously that they take space. Your partner might be not too eager to let you have half dozen CRT monitors and a full dozen of old metal boxes in your shared living room.

Ironically the old being more affordable is not a very durable argument either. Most electronic systems seem to be at their cheapest at around age of 10 years, when they are inevitably obsolete for modern use and people are forced to renew them, and everyone else also already have the same or want something newer as well. However, during that phase many of the devices are thrown away because they're already broken - or just because they're old. So availability starts to reduce and nostalgia troll starts to rise its head after people get older, and for the few remaining devices there are people are willing to pay again, yet the demand is not big enough for actual reproduction to start up.

For returning yet to the rational cognitive side, at least for my part dealing with old computers is learning as well. Despite how constantly it is being told that if your IT field knowledge is from beyond 5 years, you're useless in the professional field, most of the basics of the computer systems and programming from the micro stone age are still perfectly valid today. Modern systems just have a lot more layers in between the user and the hardware, which is also what makes modern computers more dull and difficult: you could make a temperature meter application for C64 out of the box with few lines of code and couple components, but in order to make the same on any modern computer you might end up needing more code than would even fit to that poor old 8-bit computer - not to mention about getting the component side working. Yet in the depth of the core it's still about running bits - ones and zeros - with astonishing speed. If you know your history, you will understand the present better, and then you can also see more accurately what might come tomorrow.

To summarize on three arguments my answer on the question, why do I like retrocomputing: I find it interesting and educating (rational), I enjoy doing it (emotional) and I find connections to worlds unseen (spiritual). Or in a nutshell, I find it human to retrocompute.