Blog

Mac Docker Network Tunnel

The Mac Docker Network problem. Docker is a critical part of my development environment. I run multiple projects, some of which have multiple components that run on the same ports. I need to be able to address the services of my applications between containers as well as from my web browser. To do this using…
Read more

OpenSSL certificate with subjectAltName one-liner

To create a SelfSigned OpenSSL certificate on one line which contains subjectAltName(s) you must use -extensions and -config as follows. [crayon-5904ea6e6a100730245023/] Looking at the output of x509 you should be able to see X509v3 extensions indicating our success. [crayon-5904ea6e6a111890793331/] I came up with this solution by piecing together man pages and random google result. I…
Read more

Austin Node.js User Group Talk

Our co-founder, Petter Graff, gave a presentation last night for the Austin Node.js User Group where he discussed architecting highly scalable systems. Thanks to everyone who came out! Scalability from Petter Graff
Read more

Get rid of Node.js config grunt work

We recently began using the NPM module config in our Node.js projects.   It's a really nice way to enable our clients to configure their software once we deliver it.  One of the nicest features, IMHO, is its facility that enables you to define custom environment variables for any given config setting. For example, if…
Read more

Apache Flink: Berlin Calling!

This June and July, I worked with clients in Dublin, Paris, London, and Berlin. We covered a lot of ground and people seemed to like it: Thank you! Is Berlin truly on a path to become “Silicon Berlin”? There are lot of new startups, and you see more people in cafes hacking. Only the time…
Read more

It's All About Requirements Iterations!

Introduction Waterfall, agile, iterative, whatever your process, your chance of success can be measured by the number solid feedback loops between the developers and the domain experts. In this article I’ll try to argue that no matter your process, you have to find ways to insert frequent checkpoints. I’ll argue that agile development makes this…
Read more

Achieving Scalability

Over the last 10 years I’ve seen a change in the way the top engineers/architects design, architect and deploy software. This new generation of computer scientists have their eyes firmly focused on quality attributes such as availability, scalability and fail-over-capabilities; issues that are rarely discussed in most enterprises. Many companies tell me they have moved…
Read more

Spring Data Cassandra goes M1

Spring Data Cassandra has achieved first milestone release status (M1) today as part of the Spring Data Release Train Dijkstra! Release Candidate 1 (RC1) is planned for May 1, with the final release slated for June 1.
Read more

Early project estimation

Over the last few years I've been experiencing conflicts between pure agile development and the need for budgeting. At SciSpike we do everything agile and it works for us. We have a good idea of the velocity of our teams and can often be very accurate in our estimates. Often, when working on client projects,…
Read more

Spring Data Cassandra is Official

Spring Data Cassandra, developed in part by yours truly, is official! Prerelease is available and is now part of the Spring Data ecosystem. View the spring-projects GitHub repo here.
Read more

Getting Started on OrientDB

In my previous blog post I praised the open-source database Orient DB. I’ve received many email from people since asking me questions about Orient DB or telling me that they’d love to try Orient DB out but don’t know where to start. I though it is time for me to contribute to the Orient DB…
Read more

Cluster Aware via Gossip

Auto-discover cluster A common problem in the cloud is, how to discover peers/nodes in a dynamic cluster environment. This is difficult because peers can come online and drop off without notice. Often peers on the network will be replaced rather than recovered (with new IPs). Also, many clouds don't allow broadcast messages either. Each cloud…
Read more

OrientDB as a Business Database

Every now and then you come across open source projects that just amazes you. OrientDB is one of these projects. I’ve always assumed that I’d have to use a polyglot persistence model in complex applications. I’d use a graph database if I want to traverse the information, I’d use a document database when I want…
Read more

Scaling Mongo - Sharding

If you are interested in using MongoDB (Mongo) you are probably also interested in scaling and performance. From a developer's perspective the rich feature set and ease of use make Mongo a good option. And when it comes to scaling Mongo covers distributed load and data via Sharding. But the question is what happens when…
Read more

Spring Data Cassandra is Underway!

NB: first SciSpike blog entry for me. Woo hoo! :) I'm pleased to announce that SciSpike is now part of the effort to create, release & support Spring Data Cassandra, a new Spring Data subproject that targets Cassandra, a columnar database in the NoSQL space. It currently includes Prowave Consulting, Alex Shvid (an individual contributor),…
Read more

Distributed Agile/Scrum that Works

In preparation for a course I'm teaching over the next couple of weeks on OO and Scrum, I spent the weekend reading up on the new books on Agile and Scrum to see if there are points that I need to add to my courses. During my preparation I read a few books and papers…
Read more

Why I Use Node.js?

My last post triggered quite a few questions. I had no idea so many people read my blog. The emails mostly asked "Why Node?" or "What's good about Node?". In my previous blog I expressed my frustration learning Node and how I overcame my issues. Perhaps it's time to explain why I'm using Node even…
Read more

Java vs. Node

This blog-post is perhaps misnamed. What I want to convey in this blog how you have to change the way you work when you go from a strongly typed language to one of the dynamic languages. I pride myself on being language agnostic. I know that I have software running in some deployed and used…
Read more

M3 vs. Golden Braid

I just finished up some work for one of my clients building a metamodel and a DSL for services. I built the models and the DSL using eclipse (EMF, XText and GMF). While doing the models it struck me (again) how nice it is to build models with a flexible number of meta jumps (as…
Read more

From Designer to Developer

The enabling of the browser as a first-class container when building software solutions has led to a migration of business logic and complexity from the server to the browser. If we go back only 5 years, most front-end applications where page oriented and the front-end developers dealt mostly with HTML, CSS, Images and a moderate…
Read more

On Performance

Over the last 25 years or so, I’ve been often tasked to help optimize the performance of various solutions. I keep careful records of all the work I do and I recently decided it would be a good idea to collect all my thoughts/experiences around performance. I’m actually not only collecting notes on performance, rather…
Read more

DSL's, UIX and Agile Development, Lessons Learned

Over the last 8 months I’ve been swamped working on a very interesting project. Between this project and a set of other commitments, I’ve literally spent 16h a day working. The blog has been neglected, but I plan to take up writing again. I’d thought I’d take some time to reflect on the project, lessons…
Read more

Why are DSL’s such a hard sell?

Over the last years I’ve built a dozen or so large scale Domain Specific Languages (DSL) and almost without exceptions, they’ve been hard sells. Usually, each of these received initial resistance in the organizations they’ve been introduced. This despite their convincing potential and their eventual success. Here are some examples of these successes: Project for…
Read more

Debugging Trick in Eclipse

Today a friend asked me if you could execute an action in Eclipse on a breakpoint. I thought for sure that that would work, but decided I had to check before I said yes. Well… there is no such feature in Eclipse, but here is a cool work-around. Problem The problem that my friend had…
Read more

WebServices in Eclipse

I’ve been teaching a few classes on Web Services lately and my students have complained that there are no good description on the net for how to get started building web services on Eclipse. I’m sure there are some, but I was encouraged to create one myself, so here it is. I also wanted to…
Read more

Function Objects in in Java

This blog entry is really just a support entry for a YouTube movie I created today. A few weeks ago, I taught a course on plain old Java… The students had LISP background and raised the questions: Does Java have Closures? Well, it doesn't really have direct support for closures directly, but we can achieve…
Read more

Search Engine and Indexing of Dynamic Content

What’s the problem? When loading a dynamic site using GWT, Dojo, YUI or any other Ajax based approach, it is difficult (and sometimes impossible) for the search engine to obtain your content for indexing. The initial load of the site may only contain a simple HTML element (often a div or span tag). The tag…
Read more

GWT, Google App Engine and SciSpike

This week (and most of last week) I’ve been developing a GWT application for our new venture SciSpike. The team at SciSpike are all very experienced architects/developers, so the selection of technology to use was quite difficult. Pretty much every options were available to us. We all are used to architecting and teaching classes on…
Read more

Deploying the code generator with Xtext/Xpand

This week I deployed a DSL with its corresponding code generator for a client. The DSL and corresponding editor was written in Xtext and the code generator in Xpand/Xtend. I was thinking through various options for deploying the editor and code-generator and in the process I investigated the options in Xtext. At first I was…
Read more

A course on Writing Extensions for Plug-ins

I created a e-learning module for how to create plug-in extensions for Eclipse. It is a sub-module from our course how to write eclipse plug-ins that I’ve not yet integrated. Many students have asked for this, so I though I’d make it available for them here. Anyway, if you are interested, click on the image…
Read more

Xtext vs. EMFText: Code generation

Introduction This post is going to be very short as there comparison here is rather trivial. Both tools can be integrated with any of the transformation frameworks available in Eclipse. EMFText does not include transformation nor suggest any specific transformer. Xtext integrates tightly with one of the transformation frameworks, but can be reconfigured to use…
Read more

Xtext vs. EMFText: Development Process

Introduction In my previous post, I compared Xtext and EMFText. I pointed out a few differences that may help you select one tool over the other. In the next posts I'll go into each of the points in more details. In this first in-depth comparison, I'll be focusing on the differences in the development processes…
Read more

Xtext or EMFText… that is the question

I just finished a project building a textual DSL and a code generator for a client and after some intensive investigation, Xtext seemed the best alternative. Today, I learned that EMFText just released a new version (1.2), and it looks very promising. It seems I'll have to investigate the two tools and make a comparison…
Read more

Xtext Valueconverter

I thought I'd share another little trick in Xtext. This trick is actually documented well at various places on the web, but to be able to do what I wanted to do, I had to pull information from many different locations. So… I thought it may be a good idea to collect the tips here…
Read more

How to Write an Extension in Xtend for Xpand in Xtext

I ran into a problem in Xtext some weeks ago. I wanted to generate a serialization id for my generated Java classes. After some dumbfounded attempt to do so in Xpand, I realized that Xpand does not allow for an arbitrary Java algorithm to be interspersed in the (almost) declarative Xpand template language. I asked…
Read more