Making a Web Based VR game (Part 1)

This weekend I decided I wanted to try making a web based VR game. I wanted to test the viability of the web as a VR platform and also hone my coding skills a little bit since I’ve been mostly

Making a Web Based VR game (Part 1)

This weekend I decided I wanted to try making a web based VR game. I wanted to test the viability of the web as a VR platform and also hone my coding skills a little bit since I’ve been mostly

You are Ignorant and Here is Why

We live in days where the internet if abundant with self taught experts of any field. Fueled by information accessibility, many fall into the trap of thinking of knowing more than they actually do. This phenomenon is not limited to

You are Ignorant and Here is Why

We live in days where the internet if abundant with self taught experts of any field. Fueled by information accessibility, many fall into the trap of thinking of knowing more than they actually do. This phenomenon is not limited to

Named Parameters in Java

Java doesn’t natively support named parameters, but we can easily have something like: Named parameters are very handy when we start having methods with a lot of parameters and we want to allow invoking the method with an arbitrary subset

Named Parameters in Java

Java doesn’t natively support named parameters, but we can easily have something like: Named parameters are very handy when we start having methods with a lot of parameters and we want to allow invoking the method with an arbitrary subset

Microservices: Myths and Truths

Scalability: 99% myth While microservices allow for independent scalability, that is most often unnecessary. A replicated monolith will scale as well as a microservice 99% of the time. Unutilised code lying around in memory has a negligible footprint. A system

Microservices: Myths and Truths

Scalability: 99% myth While microservices allow for independent scalability, that is most often unnecessary. A replicated monolith will scale as well as a microservice 99% of the time. Unutilised code lying around in memory has a negligible footprint. A system

Dealing with Unreliable Components

As a software consultant sometimes I have to deal with components or systems that are not very reliable. Sometimes it is because those systems were not made using the common software development practices like testing, careful design, thread safety etc.

Dealing with Unreliable Components

As a software consultant sometimes I have to deal with components or systems that are not very reliable. Sometimes it is because those systems were not made using the common software development practices like testing, careful design, thread safety etc.

Software Architecture

What is software architecture? There are hundreds of definitions of what software architecture is, but there is none of what it isn’t. In general it is considered more abstract than software design and more focused with non-functional requirements. So, in

Software Architecture

What is software architecture? There are hundreds of definitions of what software architecture is, but there is none of what it isn’t. In general it is considered more abstract than software design and more focused with non-functional requirements. So, in

A New Kind of Mocking

There are many interpretations of what unit testing means. For the scope of this post I will define unit testing as testing a class in isolation by mocking any dependencies. On the other hand an integration test involves several classes

A New Kind of Mocking

There are many interpretations of what unit testing means. For the scope of this post I will define unit testing as testing a class in isolation by mocking any dependencies. On the other hand an integration test involves several classes

Distributed Operating Systems: Has the Time Finally Come?

Cloud computing seems to be having finally a surge in popularity. Cloud platform providers like Amazon, Microsoft and Google are adding new services to their portfolio at an increasing pace that honestly I’m starting to find difficult to follow. Their

Distributed Operating Systems: Has the Time Finally Come?

Cloud computing seems to be having finally a surge in popularity. Cloud platform providers like Amazon, Microsoft and Google are adding new services to their portfolio at an increasing pace that honestly I’m starting to find difficult to follow. Their

What’s Wrong with the Actor Model

Although it existed for many decades, the Actor Model started gaining momentum in the mid 2000s. It was first introduced by Carl Hewitt and Henry Baker in 1977 in “Laws for Communicating Parallel Processes“. The popularization of the actor model was partly due

What’s Wrong with the Actor Model

Although it existed for many decades, the Actor Model started gaining momentum in the mid 2000s. It was first introduced by Carl Hewitt and Henry Baker in 1977 in “Laws for Communicating Parallel Processes“. The popularization of the actor model was partly due

Further Disappointments with Google AppEngine

AppEngine came out a few years ago as an excellent idea from Google to abstract away the server and provide a JVM that would essentially run on the cloud. My last review was back in June 22 2009

Further Disappointments with Google AppEngine

AppEngine came out a few years ago as an excellent idea from Google to abstract away the server and provide a JVM that would essentially run on the cloud. My last review was back in June 22 2009

Writing a Parallel Sort in a Shader

Most of the shaders on glslsandbox.com are stateless. They define a function from the screen coordinates and time to a colour. This is a very neat paradigm because it forces you to write fast parallel algorithms, but sometimes it can be quite

Writing a Parallel Sort in a Shader

Most of the shaders on glslsandbox.com are stateless. They define a function from the screen coordinates and time to a colour. This is a very neat paradigm because it forces you to write fast parallel algorithms, but sometimes it can be quite

Ateji PX

I recently came across this technology called Ateji PX. Fundamentally it’s Java extended with some parallel constructs. It is really easy to learn and provides a much cleaner programming paradigm than explicit thread creation. The concept is pretty simple. You can

Ateji PX

I recently came across this technology called Ateji PX. Fundamentally it’s Java extended with some parallel constructs. It is really easy to learn and provides a much cleaner programming paradigm than explicit thread creation. The concept is pretty simple. You can

Google AppEngine Disappointment

I was eager to try out Google’s AppEngine for Java, but I was soon disappointed to find out that the AppEngine is just a partial implementation of the Java APIs.

Google AppEngine Disappointment

I was eager to try out Google’s AppEngine for Java, but I was soon disappointed to find out that the AppEngine is just a partial implementation of the Java APIs.

Parallel For Loop in C#: Part 2

In the previous part we have implemented a ThreadPoolExecutor that accepts tasks and executes them in parallel. In this part we will implement a parallel for loop.

Parallel For Loop in C#: Part 2

In the previous part we have implemented a ThreadPoolExecutor that accepts tasks and executes them in parallel. In this part we will implement a parallel for loop.

Parallel For Loop in C#: Part 1

This is the first of the two posts that shows you how to build a parallel for loop in C#.

Parallel For Loop in C#: Part 1

This is the first of the two posts that shows you how to build a parallel for loop in C#.

Time Tracking Tools

Have you ever asked yourself how much time during the day in the office do you spend looking at funny youtube videos, reading emails, taking coffee or doing some boring administrative task that keeps you from getting your work finished?

Time Tracking Tools

Have you ever asked yourself how much time during the day in the office do you spend looking at funny youtube videos, reading emails, taking coffee or doing some boring administrative task that keeps you from getting your work finished?

Active and Passive Replication in Distributed Systems

In the distributed systems research area replication is mainly used to provide fault tolerance. The entity being replicated is a process. Two replication strategies have been used in distributed systems: Active and Passive replication.

Active and Passive Replication in Distributed Systems

In the distributed systems research area replication is mainly used to provide fault tolerance. The entity being replicated is a process. Two replication strategies have been used in distributed systems: Active and Passive replication.

Webapp stacks comparison update 1

We have received measurements from one of the remaining level 3 applications. It’s Immo‘s implementation based on Ruby + Ramaze + MySQL. Here are the updated results: As soon as we confirm the measurements and get the numbers for the ASP implementation we will publish the

Webapp stacks comparison update 1

We have received measurements from one of the remaining level 3 applications. It’s Immo‘s implementation based on Ruby + Ramaze + MySQL. Here are the updated results: As soon as we confirm the measurements and get the numbers for the ASP implementation we will publish the

Webapp stacks comparison

Ever wondered what is the best technology stack for building web applications? I’m sure you have. Last week my company went on a workshop, during which we tried to answer that question. I wrote a requirements specification for a simple

Webapp stacks comparison

Ever wondered what is the best technology stack for building web applications? I’m sure you have. Last week my company went on a workshop, during which we tried to answer that question. I wrote a requirements specification for a simple

Tuning the EJB3 Implementation

During my evaluation of highly scalable technologies I incurred in some performance problems with the EJB3 implementation. It seems to me that it is a quite common problem

Tuning the EJB3 Implementation

During my evaluation of highly scalable technologies I incurred in some performance problems with the EJB3 implementation. It seems to me that it is a quite common problem

Measuring the Speed of Clouds

I have started a project for benchmarking highly scalable technologies. My plan is to use cloud computing platforms and implement the same application using different stacks of technologies. The aspect I want to evaluate is performance when the number of

Measuring the Speed of Clouds

I have started a project for benchmarking highly scalable technologies. My plan is to use cloud computing platforms and implement the same application using different stacks of technologies. The aspect I want to evaluate is performance when the number of

foreach in Java

Here’s a cool but unfortunately useless example of java generics, combined with reflection, combined with dynamic proxies.

foreach in Java

Here’s a cool but unfortunately useless example of java generics, combined with reflection, combined with dynamic proxies.

Eclipse Action with Generics

I wrote this code a couple of weeks ago. It’s a nice idea on how to use generics in order to reduce the pain of using the Eclipse API.

Eclipse Action with Generics

I wrote this code a couple of weeks ago. It’s a nice idea on how to use generics in order to reduce the pain of using the Eclipse API.

Graph Algorithms with fork/join

The equivalent of the hello world for parallel languages is the quicksort algorithm. The quicksort algorithm is based on the divide et impera principle, which makes it a good candidate for parallelization. In this article we will go past arrays

Graph Algorithms with fork/join

The equivalent of the hello world for parallel languages is the quicksort algorithm. The quicksort algorithm is based on the divide et impera principle, which makes it a good candidate for parallelization. In this article we will go past arrays

Class Invariants

Class invariants are a powerful design technique that is often underestimated. Here’s an scenario on how I’ve used them to refactor. some code

Class Invariants

Class invariants are a powerful design technique that is often underestimated. Here’s an scenario on how I’ve used them to refactor. some code

Concurrency with fork/join in JDK 7

A few days ago, Brian Goetz came to visit a colleague of mine in our offices and I had the opportunity to hear some of the new concurrency features coming in JDK 7. We talked about the fork/join framework and

Concurrency with fork/join in JDK 7

A few days ago, Brian Goetz came to visit a colleague of mine in our offices and I had the opportunity to hear some of the new concurrency features coming in JDK 7. We talked about the fork/join framework and

Centralized VS Distributed SCM

Distributed Source Control Management systems have become a trend in the last years: bazaar, git, mercurial, svk. Distributed SCM is a fascinating concept, but how well does it perform in practice? Some say that it leads to a phenomenon called

Centralized VS Distributed SCM

Distributed Source Control Management systems have become a trend in the last years: bazaar, git, mercurial, svk. Distributed SCM is a fascinating concept, but how well does it perform in practice? Some say that it leads to a phenomenon called

Playing with Jazz

Yeah, you read correctly: “Playing with Jazz”. Jazz is the new Application Lifecycle Management software developed by IBM Rational. In other words it is an all-in-one Source Control Management, Continuous Integration and Issue Tracking server.

Playing with Jazz

Yeah, you read correctly: “Playing with Jazz”. Jazz is the new Application Lifecycle Management software developed by IBM Rational. In other words it is an all-in-one Source Control Management, Continuous Integration and Issue Tracking server.

A Case Against the GOTO Statement

In recent times I was thinking a lot about Dijkstra’s article against the GOTO statement published in Communications of the Association for Computing Machinery (CACM) in 1968. I had the feeling that a lot of people should take one more

A Case Against the GOTO Statement

In recent times I was thinking a lot about Dijkstra’s article against the GOTO statement published in Communications of the Association for Computing Machinery (CACM) in 1968. I had the feeling that a lot of people should take one more