I have tried this week to buy the soundtrack for The Greatest Showman for a gift and let me tell you, it's really hard.
I started naively thinking that, since the album is available on Amazon as MP3, I could just click "Buy" and be done with it. But Amazon, as it turns out, doesn't want my money. Sure, they say they will sell me the album. But once I actually try they reject my credit and debit cards with a mysterious error that, after some digging, may be related to Amazon not having the rights to that album in Germany. I say "may" because Amazon doesn't give me any usable information - all they show is this error:
We were unable to process your purchase with your current payment information. Please enter a valid payment method and an address which are both local.
Seeing that my credit card is valid, my address is local, and the buy page doesn't mention any kind of restrictions, that's my first dead end.
My second stop is Warner Music, who owns the soundtrack. This is also a waste of time: they will gladly sell me physical copies in vinyl, but digital? No luck there.
Next: Apple, the first big company to offer DRM-free music downloads and self-professed champions of user experience. We were off to a rocky start: you can only buy music using iTunes, which is not available in Linux and forces me to boot my Windows 10 PC. One hour later, courtesy of Windows 10 deciding it's a good time for an update, I am faced with this screen:
If you think this well-known and yet unresolved
issue stopped me, you are
mistaken - I have signed way too many contracts in languages I don't fully grasp
to be afraid of what is clearly a credit card details form. Luckily,
after giving my password like 6 times, converting
mp3, and almost two hours later, I am finally the proud temporary
owner of this soundtrack.
So let's talk now about Spotify. I reluctantly started using it again because it's one of the few services with an offline mode for Android phones that doesn't require giving my phone number. Seeing as I still object to their collection of private data, I created a fake profile that I regularly renew with gift cards. But do you know what happens when your subscription is about to run out? The answer is "nothing": you get zero notifications, no e-mail, nothing.
What happens when my subscription runs out? First: all of my offline music is deleted, which is the one feature I'm paying for. Since I'm often in offline mode for work, that means no music for me for the rest of the day. And second: just like there is no notification about my balance running out, there is also no option in the app to give a new gift card code. I can easily give my credit card and subscribe forever, but gift cards require extra steps.
What these two infuriating stories have in common is that they are examples of the music industry working both badly and as intended. Amazon, Spotify, and Apple (up to a point) will gladly give me access to the music I'm trying to pay for, but only if I agree to set recurring payments to their walled gardens and access to my private data. Owning my music and keeping my privacy, however, is really hard.
Which brings me to my final point. There is a service with an extensive, high-quality music catalog that's easy to use, works on every platform, let's you keep your privacy, and will take your money but only if you really want to. It's called piracy. And even though it's been almost 10 years since Gabe Newell publicly pointed out how to effectively get rid of piracy for good, we are somehow still living in a world where buying a single music CD takes two hours, Windows, fluency in fictitious languages, and a computer science degree.
At least you can now order your vinyl records via e-mail. Take that, 1980s!
Ladies and gentlemen, in the spirit of Object-Oriented Programming I present to you Internet-Oriented Software Development (IOSD): a style of software development in which the official way to program is by trying something, giving up, asking strangers on the internet, and hoping for the best.
You may wonder: how is this new, seeing as that's what we are all already doing? The keyword here is "official". If you want to program with (say) Keras during a long trip with unreliable internet, you could do it with an offline version of the API reference alone. Sure, getting the offline docs will take a bit of work, but at least there's an official repository of knowledge that you can always go to. Of course you can search on the wider internet for help too, but you don't have to.
IOSD is different: when you release IOSD software you publish an okay guide to your software, and that's it. There is no need for you to keep it up to date nor for it to be useful, because your documentation is Internet-Oriented: if someone has a problem, they can ask the internet, IRC channels, their co-workers, anyone but you.
Rust came to mind because, as I complained before, that's how their intended development cycle apparently works: if you don't know how to do something, you are encouraged to either search the forums or ask the developers. In the later case, "we don't know, we won't do it, and we won't tell you who is doing it right" is a possible response. TensorFlow used to be like that too (ask me about the Seq2Seq tutorial!), but they reversed course and their current official suggestion is that you use Keras (no, seriously).
But Unity is an even better example. For starters, the official docs are essentially useless because they tell you what something does but neither why nor what to use it for. Can you guess in which situations is a Sprite renderer required, and what do you need it for? Because I can't. One might argue that Unity Learn is where you should look for answers, in which case one would be wrong. Taking the first course in the "Game development" section, for instance, gets you this tutorial which is only valid for an outdated version of Unity.
No, the real source of answers are YouTube tutorials. Sure, sometimes they refer to windows that aren't there anymore and/or changed their name, but you can always add a "2019.4" to your search and try again.
I am not entirely a beginner with Unity, as I worked with it for my PhD projects. Even then, the list of resources I needed to complete my current project so far includes 5 YouTube tutorials, 2 forum threads, and zero links to official documentation. Is this a problem? Is IOSD better than the thick manuals we had before? Am I the only one getting outdated answers for trivial problems? I have no idea. So I propose a compromise: I will point at the situation and give it a name, let someone else answer the hard questions, and we will share the credit.
I know this is not in the usual style of this Blog, but I found something so out of touch with reality in Batgirl #36 that I need to share it with you. Please follow me on this journey.
(Warning: spoilers for Batgirl #34–#36. Also, I'm assuming you know who Batgirl is.)
Our story starts in Batgirl #34 with Barbara Gordon (aka Batgirl) missing a meeting with her business partner Alysia and some of her company's investors due to bat-related obligations:
As it turns out, the investors are not happy. They bought plenty of shares in the company, and want to use their position to push Barbara Gordon out:
Unfortunately for them, they don't have enough shares to kick her out. Even Alysia tells them so. But they wouldn't be important shareholders if they didn't have a backup plan, right?
You see: many issues ago, Barbara hired Pamela Isley (aka Poison Ivy, known eco-terrorist and occasional villain) to develop bee-friendly plant fertilizer for their company (it's a long story - see "Batgirl and the Birds of Prey" #12 for details).
The investors have now found out, and want to use this information to blackmail Alysia into kicking her friend out of the company. If Alysia does not agree to fire Barbara, they'll make this information public, tank the company, and put all their employees on the street:
But here's the thing: those investors have acquired a lot of the company. That is, they own it because they paid for it. Do you know what would happen to that investment if they went along with their plan? Yup, you guessed it: gone. All of it. Millions of dollars lost just to spite one of the company's founders. And it's not like they can sell their stock either: doing so in this situation is a clear-cut case of insider trading. Barbara Gordon may end up on the streets, but those investors would end up in jail.
You would expect a smart executive like Alysia to thank the investors for their valuable input, promise to call them back, get a good night sleep, and (at worst) negotiate a good separation agreement for her friend. A less smart person (but smart nonetheless) would have called their bluff: Mutually Assured Destruction is a good stalling tactic, but only an idiot would actually follow through.
Of course, none of these perfectly reasonable suggestions occur to Alysia. She kicks Barbara out of the company instead, leaving her broke and homeless.
And here is where I draw the line. See, I'm fine with the idea of an early-20s super-genius with photographic memory jumping from rooftops and fighting crime without the Police Commisioner noticing that she looks exactly like his daughter. But now you want me to believe that executives from a million-dollar company wouldn't have the simplest grasp of economy? Hell, do you want me to believe that you can organize a hostile takeover, fire a company founder, and freeze their assets in less than 3 hours?! Talk about nonsense.
With that out of the way, and as a final point, I would like to call your attention to Alysia's last words to Barbara. I think you'll agree that her frustration is a little... misplaced.
No, Alysia, Barbara isn't letting "them" take away her life's work. That one's entirely on you.
I was warned. I was told this wasn't a good idea. I mean, even the price should have pointed out that something was not what it seemed. But no, I had to go ahead. I had to be cooler than the other guys, and I was certainly going to prove everyone that you can't go wrong with a Nokia phone. So I got myself a Windows Phone 8.1 (again), and today I say to you, that was a stupid choice and I'm stupid for going with it.
I've chronicled in a previous blog^1 how much of a pain it was to try to develop for a Windows Phone (WP). That alone should have kept me away from buying a smartphone with a too-good-to-be-true price. But on I went, tricked by memories of me saying "this is not so bad after all", carefully ignoring that I only said that before I tried to write my own app. And here we are again.
This is, step by step, what my experience trying to develop a very simple app for my (Lumia 530) Windows Phone was like. Yours might vary, of course, but I'm not betting on it.
Install Visual Studio Community 2015 (free), following the Official WP develop guidelines
Problem: all versions that could work in Windows 7 (the one I have) are deprecated for WP development one way or another: they don't have required tools, cannot be activated because the servers are gone, or just won't work. So get Windows 10 and that comes bundled with itwant it or not, and try again.
Update your Windows and Install Visual Studio Community 2015 (free), following the official WP develop guidelines
Problem: the installer doesn't actually install the WP tools. Go back to the installer and modify your requirements.
Plug your phone to enable development
Problem: you need to unlock your phone first.
Sign up to Microsoft's Dev Network to register as a developer to get your phone unlocked
Problem: you need to pay €14, because reasons.
3.1 (Optional) Sign up on Dreamspark as a student to get a free developer account
Problem: the automatic verification process is broken. You need instead to send a copy of your ID, your student ID, and a transcript of your grades to Microsoft over unencrypted email. But don't worry, this data will be destroyed after they use it. "Anna" promised me so over email.
Start Visual Studio, create your first project, and add a couple text fields
Problem: bugs! The auto-complete is buggy, running my app once would force me to restart every time, and adding a control on the GUI while the text cursor is in the wrong place can (and will) erase every other control. But hey, at least we are finally developing something.
Add a "select date" field to your project
Problem: you need the DatePicker control to do this, but it's not included - I guess people don't select dates in phone apps. You have to follow several steps to get it working. However, as there's a library incompatibility somewhere, you'll get stuck anyway.
If you have been following all the steps you'll notice that, after several GiB of downloads and a lot of hours spent on internet forums, I have not yet managed to finish the first screen. I spent three days trying to get things running, which is the time I budgeted for the whole app, I'm out €14, and yet I haven't even managed to add a control that should have been there anyway. I also gave Microsoft quite some money, along with a lot of my personal information.
But the worst part is that I knew this is what development would be like, and yet I insisted on giving it another try. This is why I'm an idiot, and if you think your experience will be any better, it is my opinion that you are deluding yourself too.
Listen to my advice, dear reader: Windows Phone? Not even once.
^1 As of now I haven't restored the backup anywhere, but once I do you should see a link to that post here.