Showing posts with label mlp. Show all posts
Showing posts with label mlp. Show all posts

30 Nov 2008

On idealists and idealism

Let me say up front: I'm an idealist, and I'm proud of it. It's a central part of my identity, and I'd be totally lost without it. Idealism, to me, is believing in doing something because you should, because it's right, not because it's expedient or pragmatic. Sure, practical concerns do affect our daily lives—for example, we can't spend more money than we have—but where we have a choice in what we do, idealism means that we do what's right for everyone around us, for the world around us, for the bigger picture.

It's nice to serve ourselves, and we certainly shouldn't help others at the total expense of our wellbeing, but the opposite is (in my idealist eyes) far worse. In that picture, everyone is just out to serve themselves, with no regard for others; they'd slay their own parents if it meant they'd get their inheritance a few years sooner, for example, or their spouse so they can fraudulently cash in on their life insurance.

The latter is not a world I want to live in. I've already seen too much evil in my years on this earth, and it's burdened me with a fair sense of cynicism. However, I refuse to let that cause me to allow the world to get any worse. No matter how much of a dead end we feel we live in, we must strive to make things better, in whatever way we can. No amount is too little, as long as we can honestly say we did our best.

It is for that reason that I have voted (since I was 18), and continue to vote, for the Green Party, that I support Richard Stallman and Dennis Kucinich, and why I'm married to The Ferret, who, though not as high-profile as the people I just named, is a shining example of how idealists should live their lives.

It is also the reason why I speak up for causes I care about. One of the things I care about is that companies should get their priorities straight, which is to serve customers first, and not just as a means to profit. In fact, I personally believe that running a business just to profit (with other reasons being subservient to that) is dubious; it says you've sold your soul to money. Profit should be a means to other (hopefully more ethical) ends, and not the end to which other considerations are merely means. The profit-as-end companies are those that will gladly fire their most talented staff if it were expedient for them to do so, such as if said people started whistle-blowing. Clearly, that sort of company would be a poor place to work for if you value social justice.


Recently I had a run-in with some misguided people who have their priorities the wrong way around. One, I believe, even accused me of “shit-stirring”. (Thankfully, since they're posting anonymously, they can't go and redact their comment, and I certainly have no inclination to remove evidence of people's, umm, ‘logical slip-ups’.) I believe, in that poster's eyes, any kind of ‘heretical’ ideas (such as the Earth being round, or that evolution created the earth's many varied lifeforms, to name two historical examples) are shit-stirring. Well, in that case, I'm glad to be among that crowd.

Shit-stirring is how the world progresses! How on earth do you expect our society to give women the right to vote, to abolish segregation, to legalise abortion and (in New Zealand) prostitution—and hopefully soon, gay marriage and cannabis—if there weren't people who spoke up about it?! If people don't put their foot down on things they care about, how does this world improve? By sitting on our arses and excusing companies' and governments' misbehaviour? Surely you jest!

Also, just because a company ‘invented’ a technology does not give them the (ethical) right to piss on others, whether others be their customers, competitors, or anyone else. Even if the law doesn't require it, we all owe it to the society and world around us to be better than self-serving. Much, much better.

But since we're talking about innovation, who do you think invented Firefox, or BitTorrent, or other such great technological wonders of the Internet age? Is it a certain company in Cupertino? Bzzzt! The world does not revolve around them, contrary to the apparent opinion of some of my respondents.

As we all know, they're inventions of some of the best free software hackers in this world. Likewise with many other pieces of free software that's in daily use, all around the world, created by people who believe, one way or another, that giving their users freedom is the right thing to do. Off the top of my head, I can name: Emacs, Apache, TeX (and LaTeX), PHP, Ruby (and Rails), Java (although it's had a funny kind of history, in the free software world), and Mozilla (the progenitor of Firefox). These are all original works, not clones of proprietary software.

Luckily for proprietary software supporters (and social justice in general), free software does not allow discrimination against certain groups of users, and they can all benefit from these works. I wish I could say the same of non-free software.

So, am I shit-stirring enough yet? Glad to be of service!

23 Nov 2008

Short and sweet

I just want to say that WCPE is still my favourite station! They have an amazing selection of music, and is the perfect coding companion (yes, I've been too busy coding to write a real blog post)! If I ever move to the Raleigh, NC area, I look forward to listening to them all day long. :-)

(Note to self: fulfil the pledge I sent in earlier this month!)

21 Nov 2008

Syntactic sugar makes the world go 'round

For a long time, I considered Java the C of the Java platform. It's pretty much the lowest-level language you can write code with, unless you're using assembly language (and I remember playing with Jasmin in the early days of Java).

Back in early days, the Java language has very little in the way of syntactic sugar, much like C, except that in C you have a preprocessor, whereas in Java, you had to hack your own (just look at the OpenJDK source code for ample examples of custom preprocessing tools in use). So all the code is ultra-verbose, and (to me) there was a huge mental barrier to writing code of any size, just because I had to spell everything out, every time. (Just don't get me started on the lack of typedef in Java.)

With what syntactic sugar there was, it was too easy to encourage programmers to Do The Wrong Thing™: the availability of operator += for strings meant that a lot of programmers tried doing string-building “the C++ way”, never knowing the difference in semantics between += in C++ versus Java. My feeling on this is that += should not be defined for strings, only on StringBuilders and StringBuffers, with the same effect as calling append() but without the function call syntax.

Of course, once we go down that road, perhaps we would need to provide operator overloading across the board. That, of course, leaves me asking why we don't just use C++ in the first place, perhaps doing a variation of C++/CLI for the Java platform. Oh wait, the Java platform isn't as accommodating as .NET is non-Java concepts; I just can't imagine how, say, the STL would be implemented on the Java platform.


As of Java 5, there were certainly a lot more syntactic sugar for things that were commonly done ‘the hard way’ in the past; type-safe enumerations and generics are two that come to mind, not to mention ‘real’ for loops and variadic functions. And soon (perhaps by Java 7, perhaps not), there'll be closures, which I also welcome.

After all these changes, would Java then be seen as the C++ of the Java platform? (Sorry, this is not meant as a slight to C++; I know that Java does not even come close to approaching the power of C++, but it's the best analogy I can come up with.) Is this actually worth pursuing, or should we all start flocking to more powerful languages, perhaps to Groovy?

I singled out Groovy for one reason: it was a language designed for the Java platform, and has the greatest chance of fitting snugly within the Java platform. Of course, there are things it needs to implement, like annotations, but all in good time. My feeling is that, be it Groovy or some other new language, it has to be a language that allows you to express anything you can in Java; and it has to also allow more powerful ways of expressing them, as well as things that cannot easily be expressed in Java.

I would love nothing more than for programmers to write most of their code in a high-level language, with the bottlenecks separated out into a separate module, which can be written in a lower-level language like Java, for performance. But to get people to switch, that high-level language had better be good to use, and not compromise on features that are available in the Java language.


So, the whole point of that little ramble is that I do think there needs to be a ‘better Java’ for Java programmers. Everything that's easy in Java should stay easy, and anything that's commonly done in Java (and programming in general) but is hard should also be made easy, to further encourage their use. Also, it should link to Java in a seamless way; it should be easy to incrementally convert a project to this new language, file by file.

The language can use either static typing (provided there's good type inference so programmers don't have to spell out types all the time) or dynamic typing; I don't care either way, especially given developments in Da Vinci Machine that will give dynamic languages much better support on the Java platform. I have a feeling, though, that experienced Java programmers will continue to prefer static typing.

The language I envision does not need to be backwards-compatible with Java; for example, the whole insane syntax for anonymous classes can be done away with, especially in one-method cases. It also does not need to function in any platform other than the Java platform. I don't really care about portability to unmanaged platforms or to .NET or to Parrot or to anything else.

Really, like I said, I'm just looking for a ‘better Java’ that's good for most present Java programmers to switch to. And, given the current wide(ish) adoption of Groovy, this ideal language would probably be implemented as a future version of Groovy.

2 Nov 2008

Just another MLP post :-)

Still lots of coding to do today, so I thought I'd pass on another small handful of recent-event items. :-)

  1. If you live in the Auckland area, the Sky Tower will be orange between now and election day, as a commemoration. Take advantage of this once-in-three-years opportunity with your favourite camera!
  2. If you're as big a fan of the Brandenburg Concertos as I am, you might be interested in a sale currently on for an ASMF rendition of the series (1, 2, 3, 4, 5, 6)!
  3. If you're a programmer, may I recommend the Stack Overflow podcast series. I've been too busy to listen to the whole series yet, but I'm currently up to #15, and the dialogue between Joel and Jeff often have me in fits of laughter! The Stack Overflow site itself is pretty neat too, though apt to be addictive; currently I'm going through a somewhat-involuntary recovery, simply due to my workload. :-P

1 Nov 2008

Two public service announcements

At the moment I'm very busy and can't scrape together enough time to write a full blog post (yesterday's one took me 4 hours(!) to write), so I'll instead post a couple of current-event items:

  1. If you're a Green Party supporter (and in my opinion, if you aren't already one, you should certainly consider it), you can make your own Vote for us billboards! There's one that I found that's just as poignant as the original billboard.

    And, if you submit your creation to the Green Party Facebook page by Monday, you're in a draw to win a Greens t-shirt! (6 entries as of this writing, so your chances aren't too bad either.)

  2. WCPE is celebrating its 30th birthday this year! If you love classical music as much as I do, you should definitely tune in. For the values-conscious who choose to use patent-free media formats, WCPE has an Ogg Vorbis stream (in addition to MP3 and other formats); in fact, that's how I found them in the first place, as Vorbis.com linked to them.