You're visiting my little space on the web. This should be place where I share my thoughts with the world. But I often end up writing code instead of prose, even though I always tell myself I should write down my thoughts more often. You can read more about me here
Updating your website or blog is a great excuse for learning a new technology. In the past I used this webpage as a pretext for getting more familiar with backbone.js & javascript in general, now I've built this (static) website using clojure. I've been looking into clojurescript & clojure for a while now, but not always very actively.
True to the spirit of clojure, I tried to keep this website as simple as possible. That means that:
Now that I have a new website, one that should be simpler to use, the goal is to write content more often. But given my track record, I don't have high hopes in this regard. In any case, this was already a start.
Lately I've been looking into the scala, a programming language that tries to combine oop & functional paradigms in an elegant way. In addition it's compatible with java ( scala compiles to java byte code ). This allowed scala to become more than a theoretical exercise. Companies like foursquare and twitter are now succesfully using scala, which stands for scalable-language, to power their backend. It's good to see that a great technology is popular aswell.
As an excercise to get more familiar with scala and surrounding technologies I've written a streamprocessor. You could see it as an 'alternative' to the famous storm streamprocessor by twitter. To build the processor I've leveraged the following technologies/libraries :
The rickshaw library is only used to visualise the data that the stream processor sends over websocket.
My minimal streamprocessor is based on 2 concepts : Taps and Sinks. They are similar to Storm's Spout and Bolt concepts. A Tap will generate the stream, typically by getting data from an external system. In my application it listens to messages from statd daemons, but it could also fetchtweets from the twitter firehose. A Tap is in fact just a wrapper around an Enumerator ( for documentation on Iteratees check the play framework wiki ). A Sink is the endpoint ( in my example application it sends messages over a websocket ). You can connect a Tap with a Sink by providing an Enumeratee that will transform the stream, an example might be filtering tweets on hashtag. Enumeratee's are very powerful but I must admit that I'm not fully comfortable with the concept yet, so I still need to find out if there're things you can't do with Enumeratee's. I guess I'll have to find out while adding features.
To end a screenshot to show how it looks, if you want you can try it yourself, the code is available in my repo
.
I've decided to revamp my personal website, this might seem odd as my previous one was only a few months old. But the truth is that I wasn't entirely satisfied with it. It was my first encounter with Backbone.js and while the application works as it should. It's not the greatest example of a good architecture. After gaining more experience while building a git ( or rather github ) based wiki. I decided to build it from scratch. On a functional level the goals were still the same :
In addition I also wanted it to be easier to write blog posts with prose.io.
But the real changes happend behind the html/css curtains. I still wanted to build a fully client based system based on backbone. But it had to be far more robust and easier to extend. That's something that wasn't easy enough before. It's now quite easy to add new functionality.
The main concept or idea of the new version is that every page is a query. For this I've implemented a very simple query language, which allows you to display all matching items. So you can for example go to : http://jolos.github.com/#type/album/title/2012&!summer. This query will give you all items of type album wich contain the word 2012 and which not contain the word summer. This query language is already sufficient for doing most simple queries, but there's still room left for improvement. I should for example still add support for querying nested datastructures and using parentheses to expression precedence rules correctly.
The provided query string will be recursively parsed into a filter. This filter is built using the decorator pattern, so NOT, AND and OR filters can decorate another filter.
Once the filter is parsed several fetchers are fired to fetch all items from several sources. These items are all added to a collection. If the item matches the filter it's then being copied to a second collection. The latter will be used by the main view to actually display the items. This main view relies on a view factory to construct and intialize the view that corresponds with the item.
To conclude some words on the animations. This was something I struggled with while building my previous application. It's not easy to get the state flow 100% right. That's why this time I built an abstract StateView. You can use this stateview to control the states of your view. You just have to define states and the animation callbacks that correspond to the transitions between the states.
If you're still interested in finding out more, take a look at the code
Lately the web is seeing a lot of fundamental changes, the explosion of this mobile thing, the possibility to create advanced web applications with modern js libraries and css3,realtime web thanks to websockets and there's probably more. I had already experimented with one of the modern mvc js libraries ( backbone ) of which you see the result at this very moment. I was already planning for a while to take a look at websockets as it really redefines the concept of a webpage.So I decided to implement a realtime search frontend. Why? Well when I was looking at Graylog and logstash I noticed that neither of them supports realtime search.And when you watch your logs, you do want it to see it in realtime. or this small project I set the following goals:
I barely scratched the surface of all these new technologies but still I think I can make already a first judgement:
You can't really call yourself a (web) developer if you don't have a ( fancy ) personal website. I did have a website and it was not even that bad. But somehow I didn't get to actually using it ( except for the one or two blogposts, which I'm planning to preserve for the sake of the future generations ) and I always planned to build a small website from the start myself. So time to start working on a new website!
From the start my plan was to heavily depend on javascript and to work with backbone.js, a mvc library implemented in javascript. Backbone.js is pretty powerful so the basic frontend code was finished quite quickly, although there's still room for some improvements ( and bug fixes ). I didn't bother testing it on older browsers. So if you're not using a modern browser, I can't guarantee that everything will work as it should. Firefox and Chrome should do the trick though.
The backend part took some more time, not because this was the hardest part. But somehow I never got really satisfied. For now I settled with a rather peculiar content repository : git on github. That's not the most straightforward way of storing content. It's certainly not the most scalable solution, but it has some advantages. The biggest one being that it costs me absolutely nothing.
Some people started complaining about the lack of blogposts ( actually, only one person, but never mind that ) so today I'll try to make up for that. The reason why it took me so long is simple, I was just too busy :-). Last two weeks really have been like a rollercoaster and rollercoasters in Japan are quite spectacular. It's a bit of a challenge to put all these new experiences into words, but let's try anyway.
I think it's a good idea to kick off with the practical side of my life here, the dry facts so to speak. The travel to tokyo went quite smooth, but flying is only fun for two hours but after that it gets boring. I didn't have much problems with the jetlag, tough the first week I had difficulties to fall asleep. Right now I'm staying in Ikegami, ota-ku a city in the Tokyo prefecture with a population of about 700.000 people. For people who want to suprise me with a visit this google map shows the exact location of my dormitory.
The dormitory is quite a big building, I guess that about 40 people are staying here. Not only students by the way, a lot of people here are employees. It's a decent place, I don't have to cook myself, breakfast and dinner are prepared for me. Which is very convenient. There's only a public bath and it takes a while to get used to that. I've got an airco at my room, but due to the powershortages you're only allowed to set it at 28° C. Which translates in a room with a temperature of 29° C. So let there be no misunderstanding, Tokyo is hot. 'Atsui' (hot) is probably the most used word out here.
Also, it's unfair to compare it with hot weather in Europe. With an humidity of over 60% 30° feels much hotter. When you leave the relatively cool trains, the heat and humidity blasts you in the face. When you walk for 10 minutes, you're wiping the sweat of your face. Most people in Japan dislike this weather and I can't blame them. But it's part of daily life and life doesn't seem to slow down because of it ( as is sometimes the case in Europe ). Instead people use things like umbrella's, sensu's and airco's to fight the heat.
The main reason I'm in Japan is for an internship, I'm a trainee at Sony Computer Science Laboratory. It's a very interesting environment, in the sense that the researchers there all have very different research areas. It's also a very challenging intership, so I'm more than lucky to get the opportunity to work at sony csl. I'm able to do this internship because of a program called IAESTE, which is a program to help engineers to do an internship abroad. The best thing about IAESTE is that there's a whole group of volunteers in Tokyo who support me and the other trainees, introduce us to their culture, organize events and take you out for sightseeing even while they are studying for their exams! ( In Japan Summer holiday starts in August and the schoolyear ends in march) I've already met some nice people and even after just 2 weeks it will be clear that it's going to be hard to say goodbye.
Japan is a civilized country, but you can't compare living here with living in Belgium/France or other western countries. Of course people in Japan have mostly the same dreams, desires and hopes as in any other country. So the basics aren't that different, you sleep you work you eat and you sleep again. But the difference is really in the details, little things that make it a different world. A lot of things you are used to in your own country you have to relearn. Things like working with the washmachine, queueing left, opening keylocks, using hashi ( chopsticks ), bowing, etc. At home these are things you do without much thinking, it's good to lose this stability from time to time as it forces you to live more intensively.
In any case, I already have a lot to write about. About food, Japanese people and their culture, about earthquakes and energy, language and so much more. I hope to write about at least some of these things, but time is limited so it might be hard. Anyway, this was a start!
I'm Joris Geessels, Jolos is the pseudonym I use on the net since the age of ~15. I graduated as a computer science engineer from the University of Ghent. As an engineer I'm interested in 'building stuff'. You could say that as a software engineer I do this by means of code. But it's my belief that building software is often more about 'engineering' people than programming a machine. Nevertheless I certainly get excited by solving a technical challenge.
I spend most of my day at Luceda Photonics a company that I co-founded. At Luceda Photonics we build design software for photonics, an emerging high tech market. I think that we're doing some really exciting things, if you would like to hear more, ask me about it!
It's wet, it's cold, it's exhausting but everytime when there's a nice breeze, I long to go out sailing.
Sadly it's an expensive sport, so I only do it a few times a year. Almost exclusively at the French sailing school Les glénans. I especially adore sailing the 29er.
Computer Science & programming is a rapidly changing industry & domain. This makes it interesting, but it's also a challenge to keep up with all the advancements.
Some random keywords (or buzzwords ?) : python, clojure, functional programming, immutability
One of the most intriguing and versatile countries I've visited. I had the chance to do an internship in Tokyo in the summer of 2011. The memories I have from this time and from my travels afterwards are still very vivid. I'll certainly go back, but unfortunately you can't just walk there.
I really enjoy watching a great movie. To me, a great movie is a movie that makes you think differently about something, and succeeds in telling its story in a visually appealing way.
Reading is something I want to do much more often. In a world where fast-paced consumption of information is the norm, reading a book is more important than ever
A vague and broad term, but the more I realise that the world is a complex thing, the more I get to appreciate the value of simplicity and minimalism