Sunday, November 21, 2010

Internal contradiction

That's what Rudy Gay had to say after he shot a buzzer bitter while being guarded by LeBron James:
"I don't care if James Naismith was guarding me, which would be scary because he's dead,"

Monday, November 15, 2010

Re-using Java

The first programming language I worked with as a professional was Java. It seems to me as an excellent language to start learning real software development (as oppose to learn how to program, for which c is my language of choice).
It teaches you to think also on the architecture of the software (as it is reflected in the package structure). It forces you to understand various design patterns (some of which comes along with the language). It introduces you to the need of working with frameworks (the large set of Java packages, as well as external libraries), and on top that, the rigid typing with the tough compiler are just like two good parents that show you the where are the limits and does not allow you to cross them. I've worked with Java for about 6 years, and learned a lot from it.

Time had passed and I started another project, in which I had to develop in JavaScript. At first, I just wrote Java code in JavaScript (the fact that I worked with the Dojo toolkit made it really easy). Then, I started to learn the difference between the languages, I started to see the power that JavaScript gives you, was overwhelmed by the breaking of almost any limit that Java had taught me. I got to a point where I write JavaScript code in JavaScript,  use its flexibility and its dynamic nature, as well as the various brilliant programming concepts within it.
I crossed the limits that Java taught me, and allowed myself to do so based on the belief that I'll know when to stop and what lines not to cross.
It is so much easier to write software in JavaScript if you know what you are doing (especially how does your code is really read by the machine).
It is much easier to make a big mess too, this must alway be in mind - no parents, you can run freely, nobody will prevent you from failing and falling.

A short while ago I had some free time on my hands, and wanted to learn something new, so I developed a small android application.
In Java.
Initially I thought that it would be just like riding a bicycle, but it turned out to be more like riding a rusty old bicycle, where you cannot almost turn the wheel, all that with one hand tied behind the back.
The package structure is still there, as well as the rich set of libraries and Java packages. BUT, the rigid type system and the compiler are not a directing parents any more, they are more like a bureaucratic figure that forces you to do what you don't want (in order for him to approve your request).
The no dynamic nature make no sense now, sometimes I wanted to polity ask the compiler to move aside and just trust me - I know what I am doing.
It is so burdensome to write software in Java.

Java is great to start with, but it takes you just up to a certain point. And from there, if you do want to expand your abilities, by not just learn new syntax, but rather learn another way of thinking, go with JavaScript, you'll never want to go back.

Friday, November 5, 2010

How cloud computing affects the future of software patents

Brian Prentice blogs with a very high ratio of gems to BS. This time he wrote about the way that the business of software patents will be affected by cloud computing.
The essence of that post is:
  • cloud computing hides most of the software (in a way that does not allows to inspect the software). The only part of the software that is exposed and can be inspected is the user interface (UI)
  • Since that in order to find a software patent infringement, the suspects software must be inspected, the future of software patents business will be in the domain of UI / design related software patents
Very interesting read