Felix Rambles

Another step to taking back control

What people want to hear

02 November 2018 — Felix Pleşoianu

We live in a complex world, with complex problems requiring complex solutions.

Arguably that wasn't always true. We've evolved in a much simpler environment, where our simian instincts were good enough. But saying "good enough" is already an admission that things weren't so simple back then either; it's just that for the longest time we could muddle through.

Either way, that's not the case anymore. Which is why scientists are always so cautious in their statements, and carefully qualify every claim they make.

Too bad our instincts have remained the same, and cautious, careful claims sound suspicious to our big monkey ears.

What scientists say: for X to work, it would take countless pieces falling into place just so, clicking together perfectly and working without fail for who knows how long.

What most people hear: so it's a done deal, right? Nothing can go wrong. Let's do it!

Did I mention most people are also incurable optimists? And by that I mean "wilfully oblivious to anything negative". But don't get me started about magical thinking now.

What else scientists say: to save the planet, literally everyone has to take unprecedented measures on a humongous scale, in less time than it takes to raise a child.

What most people hear: oh, it's all right then, we're saved. Nothing to worry about.

Think sci-fi writers have no sense of scale? Meet the readers. That's how the dream of space colonization stayed alive for so long, when it's even less plausible than I thought. And I had actually paid attention.

Most people don't want to. It tends to reveal the complexity of the world. And that frightens us more than any dangers.

Tags: science, education

Comments? Tweet  

Sherlock Holmes the programmer

06 October 2018 — Felix Pleşoianu

A recent discussion about programming languages reminded me of a story not often told. Namely how I was turned off from learning C#. We were considering it as a replacement for Java because it was much better integrated in Windows, which would have allowed my employer at the time (a web agency) to expand into desktop software with an attractive line-up that required fewer explanations.

So I sat down and figured out the basics. The way Microsoft had chosen to "fix Java" was quirky at best, but C# did have some welcome features added back in. And one of them just happened to be a good fit for our very first application.

My one team-mate on this project balked. "What the hell is this? I have no clue what you're doing here."

It was a delegate. A goddamn delegate. A core feature of C#, and one of its major selling points at the time. (C++ didn't get lambdas until 2011; this was years earlier.) But my colleague seemed to have taken a shortcut: instead of properly learning the language, he was using the official IDE as a glorified Visual Basic, filling in the blanks with the simplest possible code to get his mouse-designed forms working at all...

Look, we were always in a hurry. Everyone is, in an industry where people are always expected to deliver outright miracles yesterday, for peanuts. But you'd think a seasoned web developer would already be familiar with the basic concept of a first-class function from, ya'know, Javascript, which had them from the very first version in, like, 1995.

Not my colleague. He was a very pragmatic person, you see. Always pointing out he didn't really enjoy programming, but only saw it as means to an end. Guess he had better things to think about, too, like a wife and kids. So he'd only bother to learn the absolute minimum he could get away with.

Sherlock Holmes, too, would purge from his mind all knowledge that didn't help his detective work, such as the fact that Earth orbits the sun.

So how do you suppose he dealt with crime that spanned timezones?

Tags: programming, education

Comments? Tweet  

Space colonization, the undead dream

30 September 2018 — Felix Pleşoianu

I grew up with sci-fi from all over the 20th century. People have been dreaming of going into space for at least a century now. I can tell exactly what decades-old books and movies people are fans of by their vision of the near future. Enthusiasts still lament the slow death of NASA, and praise the achievements of a certain billionaire who shall remain unnamed. And they always have the same few questions for people who try to inject a little practicality into the discussion.

Why should we be doomed to remain Earth-bound?

What if a big asteroid hits the Earth?

Do you know how many inventions we now take for granted were developed for the space industry?

Well, I have a few questions of my own for all the dreamers whose feet still don't touch the ground after all that happened since the turn of the millennium.

Do you realize how much effort it would take to send a few thousand people into space? Because that's the minimum viable population for Homo Sapiens. Never mind the millions you'd want to send out for a meaningful exodus.

Do you realize how many different specialists you need to keep modern civilization going at present-day standards? We're talking specialties on top of specialties, all supported by an intricate network of academic institutions and research facilities the world over. There must be as many different scientific and engineering qualifications as you've had classes in high school -- as many as the minimum viable population I was mentioning. And yes, you'd need enough people in all of them. Renaissance Men could only exist in the Renaissance. And you couldn't survive on Mars with Renaissance-era tech.

And do you really think having colonies on Mars and the Moon would keep us safe from the Big Asteroid(TM)? Dude, smaller planetary bodies wouldn't take a hit as well as Earth would. And we'd be in a precarious position out there in the first place. You'd be better off trying to salvage the situation right here on Earth. For example by going underground. Or underwater. Or building arcologies (not that it works, we tried). Heck, early mammals survived the asteroid that killed off T-Rex, and they didn't have our abilities.

Not to mention that if we had the ability to send millions of people into space, we could probably divert big asteroids as well...

You want to boost research and development again like we did in the 1960s? Launch a big effort to fix the planet we've broken. Why is that never anyone's dream? We keep talking space, space, space, as if the one home we do have, for real, right here, is worth nothing.

Not futuristic enough, is it? Fixing the planet doesn't come with enough blinkenlights and things that go "voosh". And we want to feel like science heroes. We've been conditioned to, by a century of science fiction.

How about we wake up while we have anything left to dream about.

Welcome to the future.

Tags: science, education

Comments? Tweet  

Ramblings about Java

12 September 2018 — Felix Pleşoianu

So, the other day me and a bunch of other people were discussing programming languages on Discord. We happen to have a very knowledgeable person in that group, who pointed us at an epic rant they wrote some three years ago (it seems) on why Java is bad for you. Having some experience with the language myself, that resonated with me.

One place where I disagree with Mr. Mallett: the thought of prototyping software in Java is terrifying to me. Spending hours thinking how to formulate something in hundreds of lines of code just to throw it out? In Python, I spend that time thinking what to formulate, exactly. The code is often a one-liner. No, seriously. Java, with its endless chains of public static void eeny meeny miny moe... is anthithetical to experimentation.

Also, is it a surprise that Java is slower than C++? It's running in a virtual machine, FFS! Sure, it uses JIT compilation to make native code... for parts of your program... after noticing certain patterns. It works great for specific things, such as running the same script repeatedly in a simple interpreter. But take it out of its comfort zone, and you might just as well code in Lua. The same thing happens with Javascript, which can rival native code in highly contrived applications written by the same people who made the VM and compiler. Gee, thanks. And yes, I was naive too once.

Moving on, if you think Java programmers are ignorant, try PHP programmers. I once had to teach a former colleague that when a script keeps running out of memory, it just might be from too many database queries with not a call to mysql_free_result. Surprise, dear young programmers! Your computers do not, in fact, have unlimited resources, and the garbage collector can't take care of everything. And speaking of PHP, that's another terrible language for beginners, because while it's easy to pick up it also teaches you nothing about the hardware that will struggle to run your code, while encouraging terrible coding practices, regarding security in particular.

Oh by the way: I'm pretty sure interfaces in Java were meant to enforce type discipline. Like Pascal before it, it's a language designed to protect people from themselves by leaving them handcuffed in the path of a flash flood. Which is exactly why teachers love it: many teachers, you see, think their students are mentally challenged subhumans who can't possibly be allowed to do their own thing.

Except, of course, in Java you can easily just declare everything as an Object and make the language dynamically typed in essence.

I'd better stop before this gets too long. Go read the original rant.

Tags: programming, education

Comments? Tweet  

On helping people

26 August 2018 — Felix Pleşoianu

There are two kinds of people you're likely to meet who are unskilled in a game or craft.

The newbie is genuinely just starting out, and hasn't learned the ropes yet. That makes them prone to asking silly questions, and making silly mistakes. But you can't possibly miss their interest, or fail to notice their progress after a while.

Now the noob (sometimes spelled with zeroes instead in a parody of leet speak), is someone who never actually learns. They may have been at it for a while, but never got anywhere, despite obvious efforts.

It's an important difference, you see, because while the newbie may have difficulties, needing some things explained multiple times, or in different ways, they still want to learn. Whereas the noob isn't just failing to, but actively rejecting any clue that may be coming their way. You know how knowledge often springs from unlikely sources, when least expected? It takes a special kind of dedication to dodge it all.

For decades now, too much software has been written for the exclusive benefit of noobs. You can tell because it offers no way forward, no path for improvement, and definitely no option for experts, which is what newbies turn into sooner or later.

If you give them half a chance.

Oh, you can go too far in the other direction, too. My own software could be more helpful to newbies. In my defense, it's hard to write genuinely helpful software (as opposed to the kind that pats you on the head condescendingly). My guides and tutorials do a much better job of it. Or so people who read them have told me.

Speaking of which: another thing I've learned in life is to never try and help someone unless they ask for help. You're a lot more likely to make a big mess. If they seem to need assistance yet failing to ask for it for whatever reason, let them know you are there. Carefully, though, lest you turn into Clippy. Remember Clippy? Is that the IT you want?

Choose wisely who you help, and how. Life is short.

Read more...

Tags: education, software

Comments? Tweet