Sep 2

I mean… holy dog s**t… I’m very frustrated user of Elisa Viihde via cable modem. This stuff is absolutely unbelievable fcked up.  I’ve been working 5 hours today and so far I’ve counted 16 intermittent failures in network connectivity. And these failures are not the only thing that wrong with this thing. Add to the mix the following: hanging cable modem, severe speed fluctuations and fixed length contract. I cannot find any good use for this… It’s awful for home-office (which I’m using it at the moment). It’s awful for online gaming (also using it for that). Might be if your Internet usage is browsing couple of pages few times a week and you don’t mind that connection might down when you are browsing.

For everyone who is considering this s**t… Do yourself a favor and stay out of it. I was stupid enough to take fixed length contract and it’s pure pain in the backside.

As soos as this term is over it’s bye bye Elisa.

May 19

ActiveMQ is really nice piece of software. Combined with Apache Camel you have one mighty beast for your integration needs.

 

During the last week I’ve been using ActiveMQ/Camel to transfer big chunks of serialized java objects and I’ve come to following conclusions

  • Check the configuration. Defaults can’t handle very big loads without choking
  • There are tons of stuff you can do in order to avoid overloading your message-queue
  • Set throttling policy for routes
  • Optimize per queue memory settings
  • Lot’s of small messages is far better than couple of huge ones

 

 

May 5

Cloud Foundry continues

Posted by Aki

Setting up Cloud Foundry with every piece on different machine is proving to be more difficult that I thought.

Another problem is lack of time. Well hopefully I have more time during the weekend!

May 2

I managed to get Cloud Foundry up and running. There were some glitches in the installation instructions. Everything went well with Homebrew but in virtual Ubuntu box there were some packages missing which I had to manually install.

Next job is to install everything on different box and possible scale up the installation by running 2-3 DEA machines. Hope I get it running. Cloud Foundry is still lacking polish but I’m sure in time it will be real attractive for development shops wanting to install private cloud for development. Or for hosting companies wanting to host Rails/Sinatra/Spring applications.

Combine this thing with OpenNebula/Nimbus and/or Chef/Puppet and you have very powerfull Cloud-system in your hands. I would love to try different setups but I don’t think I have enough money to go and buy 2-3 PC’s just for the sake of testing CloudComputing at home.

 

Apr 19

Cloud Foundry

Posted by Aki

Just tried Cloud Foundry by VMware. Absolutely nice. Installed everything on one VM. Next going to try different VM’s for all components.

I’ll probably blog about how it goes!

Nov 11

And yes, I’m back

Posted by Aki

I know there has been quite long pause between posts. There’s been radical changes in my personal life and therefore I haven’t had time nor energy to post anything.

I’ll try to resumes posting more frequently!

Nov 11

State of Java

Posted by Aki

I’m quite concerned the future of Java as viable choice for future projects. Java has long ago lost it’s agility and stagnated into never-ending academic discussions how to correctly implement sky-high abstraction layer above abstraction in order to implement shopping cart.

Don’t get me wrong. I really like JVM. It probably is one of the most amazing pieces of technology out there. Garbage collection alone is remarkable. JIT, optimization and so on are remarkable. The problem isn’t the Virtual Machine. It isn’t even the Java as language. The problem is hat JCP process has been too long and too slow. Java 7 is two years late now. Java 8 is somewhere in very distant future. Another problem is that the best and brightest engineers are leaving ex-Sun after Oracle bought them. James Gosling himself has resigned. JCP is shaking. Apache Software Foundation tries to block the vote for Java 7. Doug Lea left JCP EC.

There are bitter and sad comments about Oracle being written all-over the Internet. Oracle is silent. I fear that Java is heading the same way that COBOL has. There is real possibility that in the future Java-programmers are the next rare breed in software industry. Different languages are picking up speed while Java spins aimlessly around.

Although the state of Java is worrying there are some bright spots also. There is whole load of languages that run on JVM. Scala, Groovy, Clojure, JRuby. These languages can tap into vast array of existing libraries and at the sametime provide features desperately needed in Java.

My own prediction is that Java as language is losing it’s momentum and will be replaced in the long run by other languages. Vast array of libraries remain and therefore the new languages running on JVM are in excellent position. Projects like Groovy, Scala and JRuby can really pick up speed. This is just a gut feeling and future will show if this prediction becomes reality.

Jun 28

Last time it was about operating systems and computers. Now it is time to concentrate on programming languages and related stuff.

Data storage

My day-to-day job consists of Databases, integrations and configuring many “background” systems. Heck, I’m running database team. So you can safely say that I’m a server-side guy. From this background storing data has very special place in my mind. “Right tool for the job” is once again important slogan. I’m very interested in NoSQL (note! I believe it’s meant to be: “Not Only SQL” not “No SQL”). Schemaless nature of NoSQL solutions is very appealing in web-world we live in.

Databases

I like the ease of MySQL. The configuration is simple. You are up and running very quickly. Replication is easy. Partitioning is coming. Overall MySQL is very nice solution. Where MySQL is fast and easy solution – PostgreSQL hass more “professional” feeling (Note “-characters. Don’t take it literally). Overall very nice solutions, quite scalable and they do not drive you out-of-business via extra ordinary licensing fees.

Oracle. The big gun. One of the original RDMS. Oracle is excellent database and it provides features and possibilities but they come with very steep price tag. Oracle also requires skillful administrator and even installing and basic setup is quite a task. But if you provide skillful administrator and can dish out license-fees you get really excellent database which will serve you well. This is not for startups or very small businesses. Also the nature of Oracle not being Open-Source means that drivers for languages like Ruby, etc are lacking behind and may require more work than drivers for Open-Source solutions. Java-support is excellent and as a matter of fact Oracle now owns Java after their acquisition of Sun Microsystems.

NoSQL land

My personal choice is MongoDB. Setting it up is very easy. Comes with replication built-in. Sharding is coming soon. Overall excellent piece of technology. One thing to keep in mind in most of the NoSQL solutions is that you lose transactions – so don’t try these if you building an online bank.

Another intersting NoSQL solution is Riak. Especially the ability to add nodes into running Riak-cluster without downtime. Automatic consistent hashing. Tunable CAP-properties. Really interesting stuff.

Last in this category is Redis. Persistent key-value storage. Much like memcached the beaty of Redis is it’s persistence, atomic operations and support for complex datatypes also.

Messaging

Any XMPP solution. It’s always nice if you can command your infrastructure/application via instant messenger. For background queues, job processing etc I would go with Resque which is used (and developed) by Github. At this point you might also guess my preferred programming language…

Programming language

Ruby. I like the dynamic, productive, open nature of Ruby. Code is nice to read (at least I like – you may have a different opinion). It is nice piece of software even if the virtual machine/interpreter isn’t as fancy as JVM for example. Ruby also has lot’s of nice frameworks built with it. And with frameworks we come into Rails but more of that later.

Erlang. This is strange beast. Purely functional language. No object-oriented and it was first designed to be used in telecommunications. Syntax… Well, to be honest it is horrible. But it is the nature of the language that brings it into my favorite list. Erlang is extreme in many ways. You can reach 99.9999999% uptime with it. It is naturally scalable, there are no locking since variables are single-assigments (once you assign something in it – you can’t change it). NoSQL solution mentioned earlier is written in Erlang. Erlang is also used in CouchDB, JabberD and others.

Web frameworks

Rails. Rails is actually the framework which introduced me into Ruby. Rails is what web-development should be. Fun, productive instead of monstrous frameworks with very, very steep learning curves. You don’t have to spend a week configuring and tuning your environment before you can begin. Convention over configuration.

Sinatra. If you don’t need the full power of Rails – Sinatra may be just what you are looking for. Simple framework for simple web-applications or API’s.

There are also other very interesting frameworks:

  • JQtouch for creating iPhone UI for web pages.
  • Cappuccino, objective-J and objective-c type javascript based language for creating desktop-like UI in browser.
  • Sproutcore, javascript framework to create desktop-like UI in browser
  • JQuery, Javascript framework
  • Node.js server-side, event-driven Javascript framework (similar to Sinatra)

Java. Java has it’s uses. It’s gone a bit too heavy, abstraction over abstraction over abstraction over abstraction… Don’t take me wrong. Even if I don’t want to write Java I do not deny that there are many cases where Java is the best solution.

The JVM in itself is a amazing piece of technology. JVM is actually the piece of Java that I believe will have very bright future. No other virtual-machine has as adcanved garbage-collection. JIT-compiler is very advanced. JVM has excellent performance characteristics. The real great feature of JVM is the ability to run different languages. There are PHP, Ruby, Groovy, Scala and dozens more languages that run on JVM. JVM brings in the power of all frameworks and libraries written in Java. This is really excellent!

There are also several nice pieces of software written in Java. Let’s consider the following for example:

  • Tomcat
  • All Apache-libraries
  • etc

Enterprise Java may have gone into heavy-difficult-to-learn-monolithic-kill-me-now frameworks but there are alternatives and it doesn’t change the fact that JVM and Java are great for certain jobs.

Jun 19

My own workstation or laptop

Everyone in IT-industry probably has some expectations and wishes when it comes to tools and technologies. Unix-guys prefer Unix-OS and despise Windows. Windows-guys tend to dislike Unix. Mac-guys laughat both camps while listening the gospel from 1 Infinite Loop, Cupertino, California.

Everyone is right and they are also wrong. You cannot argue about peoples taste even if it is different than yours. Although the flamewars may be some-what entertaining to read. Participating doesn’t get you anywhere. My own history is very heavily sided with Unix and therefore the big MS or Unix question is definately Unix if I’m considered. Nowadays I’ve settled with Mac which in my opinion brings excellent combination of user-friendliness and power. I can drop down to shell and OS X is Unix with nice interface. That really works for me.

So I like to use OS X and Macs. Using Windows in corporate world feels like I have to use hammer which doesn’t have the handle – only the head-part. While using Mac it feels like to OS or applications are not in my way. OS and applications help me to get things done while in Windows it feels like that there is always some sort of obstacle between me and things I’m trying to accomplish.

Server-side

Servers are much different.

The server-side is much different thing. Although I personally like Unix-systems the ultimate goal should be to use right tool for the right job. Unfortunately companies and organizations tend to have too rigid rules and policies what can be used. Personally I don’t have any understanding for “… will use JEE application server and implementation will be based on following frameworks: zzzz, xxxxx, yyyyyy” type of policies. Organizations chain themselves into rigid models and products/frameworks wchich either are not good for solving problem at hand or are extremely expensive requiring loads of training.

I prefer to work with Unix/Linux. That doesn’t mean I cannot work with Windows-based servers also. I want the tool which is chosen to be right for the job at hand. And yes, I need to believe in the decisions. I simply cannot give my best if I believe that product/framework chosen is not the best choice in my opinion also. This manifests itself very well in projects where technology decisions have been made earlier by other projects – then comes implementation. You are just told that “Vendor X’s implementation of Y will be used because it is blaa blaa blaaa”. And I’m going to just take this as fact? No way.

Overall…

Overall I want to use technologies I’m comfortable with. Technology I believe in will be good at solving the problem at hand. I can use other technologies also but being forced to use technologies I do not believe in reduces the quality and motivation. I believe many other people in IT-industry believes this way also. What I would like is companies to understand that letting people use technologies they prefer will ultimately increase their profits also.

Jun 17

About innovation

Posted by Aki

There’s lot of talk about being innovation. Regardless of your profession everyone should be innovative. We should be innovating, finding out new ways of doing work, new opportunities, new possibilities.

Innovation seems to be especially popular buzz-word in IT-world. “Our company is innovative”, “We have best innovations”, “We encourage innovation”.

Is it really so? Let’s take a small peek in corporate world and why traditional corporate world is in direct conflict with innovation. We have this “Corporate mind” that is embodied in middle-management, management and those people who mindlessly repeat incantations taught at school. Corporations love predictability. Employee costs X amount of euros/dollars. IT costs are Y euros/dollars for each employee. Office-space costs Z amount of euros. Corporate mind sees these as expenses and to cover those company must sell their products or consultancy to compensate. It’s also preferred that there is more income than expenses.

Unfortunately innovation is not something that can be easily quantified and measured. So this presents immediately a problem for corporate mind. “I cannot quantify this. If I cannot quantify this I  don’t know if my investment is going to be profitable”. Corporate mind *needs* to know how fast investment is going to bring back money that was spent.

But since we cannot really measure the innovation there is no simple equation which would spit out numbers to corporate minds. At this point traditional corporate mind is not willing to invest because it seems almost equal to wasting money.

But because innovation is something that current corporations must have there is a problem. Corporate mind needs to be able to say that company has innovation and is encouraging it. Problem is that it usually doesn’t extend beyond powerpoint presenteations.

First, let’s consider working conditions. More specifically cubicles where we must sit and crank out hours that can be billed from clients. Is this environment that encourages innovation? Does traditional cubicles stimulate our creative powers? No, I didn’t so. What if the office would look like this: http://www.buzz-beast.com/2009/11/white-mountain-office.html ? Too bad that evil corporate overlords very randomly have enough understanding and vision to break traditional approach.

Same kind of analogy can be made in many places. Stardardized laptops, tools, meeting conventions and so on. Deviating from standard brings out non-standard costs and that is absolutely not tolerable in most corporate environments.

So corporations continue to claim being innovative although reality is in direct contradiction. Hopefully some real innovation happens and more and more corporations could break out from traditional approaches.