<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Stuff and Thoughts on IT Stuff</title>
    <link>https://grison.me/</link>
    <description>Recent content on Stuff and Thoughts on IT Stuff</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <copyright>Alexandre Grison - //grison.me</copyright>
    <lastBuildDate>Wed, 06 Dec 2023 09:34:09 +0000</lastBuildDate>
    
	<atom:link href="https://grison.me/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Error Prone</title>
      <link>https://grison.me/2023/12/06/error-prone/</link>
      <pubDate>Wed, 06 Dec 2023 09:34:09 +0000</pubDate>
      
      <guid>https://grison.me/2023/12/06/error-prone/</guid>
      <description>I discovered error-prone some years ago, but didn&amp;rsquo;t take a chance to use it, but this week I was reminded about it by someone on Twitter and decided now it was time.
What is error prone? Error Prone is a static analysis tool for Java, developed by Google, designed to identify and correct bugs in Java code at compile-time.
Key features include:
 Bug Pattern Detection: Scans for common mistakes based on experienced developers&amp;rsquo; insights.</description>
    </item>
    
    <item>
      <title>Using htmx.org</title>
      <link>https://grison.me/2023/05/07/using-htmx/</link>
      <pubDate>Sun, 07 May 2023 09:34:09 +0000</pubDate>
      
      <guid>https://grison.me/2023/05/07/using-htmx/</guid>
      <description>I&amp;rsquo;ve been reading a lot about htmx and decided I would need to check it out. I don&amp;rsquo;t have a particular project I am working on currently, so instead I just ported the famous Spring PetClinic project to use htmx besides its standard stack which is based on Spring Boot, Thymeleaf and Spring Data JPA. The last one we don&amp;rsquo;t care for this project.
What is htmx? As explained on htmx website:</description>
    </item>
    
    <item>
      <title>Practical Vavr</title>
      <link>https://grison.me/2020/12/07/practical-vavr/</link>
      <pubDate>Mon, 07 Dec 2020 17:34:09 +0000</pubDate>
      
      <guid>https://grison.me/2020/12/07/practical-vavr/</guid>
      <description>I&amp;rsquo;ve been writing a book named Practical Vavr lately 📘
Practical Vavr is all about making you want to use Vavr in your day to day Java programming, it&amp;rsquo;s about crafting robust and elegant Java code while embracing functional programming concepts 👌.
If you want to improve your Java code quality, by using a well-thought and beautifully designed functional programming library, then you need Vavr 🚀, and this book will help you learn how to use it, what it can bring you and how to put it in practice 💻.</description>
    </item>
    
    <item>
      <title>Covid19 and Babashka</title>
      <link>https://grison.me/2020/05/10/covid19-babashka/</link>
      <pubDate>Sun, 10 May 2020 09:34:09 +0000</pubDate>
      
      <guid>https://grison.me/2020/05/10/covid19-babashka/</guid>
      <description>I was browsing endlessly on Twitter and I got this tweet from Mohammed Aboullaite in my timeline:
When it comes to building a command line tool, #Java is generally not the first language that comes to mind!
I spent the day playing with @picocli building a #covid19 tracker CLI, compiled to native binary using @graalvm! It was funhttps://t.co/ngLKr2JUwY
&amp;mdash; Mohammed Aboullaite (@laytoun) May 9, 2020 
And I thought that was a great little CLI utility.</description>
    </item>
    
    <item>
      <title>WebAuthn and Clojure</title>
      <link>https://grison.me/2020/04/23/webauthn-with-clojure/</link>
      <pubDate>Thu, 23 Apr 2020 09:34:09 +0000</pubDate>
      
      <guid>https://grison.me/2020/04/23/webauthn-with-clojure/</guid>
      <description>As I said in my previous post Raytraclj, a raytracer in Clojure I was working on a new article.
In the last week I&amp;rsquo;ve been playing with WebAuthn, and I wanted to integrate it with Clojure. There&amp;rsquo;s already a Java library named Webauthn4J which does all the heavy stuff, so it was just a matter of exposing it with a Clojure wrapper.
That&amp;rsquo;s what I did with the cljwebauthn library.</description>
    </item>
    
    <item>
      <title>Raytraclj, a raytracer in Clojure</title>
      <link>https://grison.me/2020/04/20/raytraclj-a-raytracer-in-clojure/</link>
      <pubDate>Mon, 20 Apr 2020 09:34:09 +0000</pubDate>
      
      <guid>https://grison.me/2020/04/20/raytraclj-a-raytracer-in-clojure/</guid>
      <description>I was preparing an article about Clojure and buddy (it is coming) and then my friend David told me:
 You already know your backend, APIs and stuff. Why don&amp;rsquo;t you get out of your comfort zone and do some 3D.
 He was right 🤠
I thought about writing a raytracer because it&amp;rsquo;s cool and I know nothing, so I searched on the web and found this gem named Ray Tracing in One Weekend.</description>
    </item>
    
    <item>
      <title>Guide to starting with Clojure</title>
      <link>https://grison.me/2020/04/04/starting-with-clojure/</link>
      <pubDate>Sat, 04 Apr 2020 09:34:09 +0000</pubDate>
      
      <guid>https://grison.me/2020/04/04/starting-with-clojure/</guid>
      <description>This guide is aimed to the developer who&amp;rsquo;s interested in Clojure and want to install it and start using it right away.
It will cover the installation of Clojure, some of the build tools and how they work, the configuration of an editor, of the REPL and a small hello world demonstrating how things like build, and test works.
If you&amp;rsquo;re new to Clojure, at the end of this guide you should be able to start your project.</description>
    </item>
    
    <item>
      <title>Fun with GTFS &amp; Clojure</title>
      <link>https://grison.me/2020/04/03/fun-with-gtfs-and-clojure/</link>
      <pubDate>Fri, 03 Apr 2020 19:34:09 +0000</pubDate>
      
      <guid>https://grison.me/2020/04/03/fun-with-gtfs-and-clojure/</guid>
      <description>.highlight .c1 { color: #b546c2 !important; }  Hi people of the internet! Today I&amp;rsquo;ll be talking about Clojure to parse and extract stuff on GTFS files, wrap all that in a simple REST API using Clojure again, and then expose this API on the net so that my iPhone can consume it and tell me what are my next bus rides.
So much fun to come. I&amp;rsquo;ve got a bus next monday morning (just kidding, with the quarantine I&amp;rsquo;m not sure I&amp;rsquo;ll take a bus anytime soon), just enough time to use some code and get the stuff done!</description>
    </item>
    
    <item>
      <title>Longitude</title>
      <link>https://grison.me/2019/12/02/longitude/</link>
      <pubDate>Mon, 02 Dec 2019 01:34:01 +0000</pubDate>
      
      <guid>https://grison.me/2019/12/02/longitude/</guid>
      <description>My brother just offered me this book named Longitude: The True Story of a Lone Genius Who Solved the Greatest Scientific Problem of His time, by Dava Sobel.
ISBN: 9780802714626
 Anyone alive in the eighteenth century would have known that &amp;ldquo;the longitude problem&amp;rdquo; was the thorniest scientific dilemma of the day—and had been for centuries. Lacking the ability to measure their longitude, sailors throughout the great ages of exploration had been literally lost at sea as soon as they lost sight of land.</description>
    </item>
    
    <item>
      <title>Vavr Functional Programming Context Pattern</title>
      <link>https://grison.me/2019/09/15/vavr-fp-context/</link>
      <pubDate>Sun, 15 Sep 2019 01:34:01 +0000</pubDate>
      
      <guid>https://grison.me/2019/09/15/vavr-fp-context/</guid>
      <description>FP pattern with Vavr &amp;amp; Java If you don&amp;rsquo;t know Vavr:
 Vavr is a functional library for Java. It helps to reduce the amount of code and to increase the robustness. A first step towards functional programming is to start thinking in immutable values. Vavr provides immutable collections and the necessary functions and control structures to operate on these values. The results are beautiful and just work.
 It contains implementations of Monads, Functor and plenty of FP stuff.</description>
    </item>
    
    <item>
      <title>Introduction to Functional Programming with Vavr</title>
      <link>https://grison.me/2019/03/21/intro-to-fp-with-vavr/</link>
      <pubDate>Thu, 21 Mar 2019 01:34:01 +0000</pubDate>
      
      <guid>https://grison.me/2019/03/21/intro-to-fp-with-vavr/</guid>
      <description>Pure functions, High Order functions, Immutability, Composition, Currying, Recursion, Lazy, Functors, Foldable, Applicative, Category, Semi Group, Monoid, Monad.
Concepts I won&amp;rsquo;t write something easier to follow than: http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
I encourage you to follow it, but for this article I will take some of its examples and just show you how you can do it in Java with Vavr.
All images are courtesy of Aditya Bhargava, the author of the article above.</description>
    </item>
    
    <item>
      <title>TechEmpower framework benchmarks &amp; Duct</title>
      <link>https://grison.me/2018/06/21/techempower-framework-benchmark-and-duct/</link>
      <pubDate>Thu, 21 Jun 2018 01:34:01 +0000</pubDate>
      
      <guid>https://grison.me/2018/06/21/techempower-framework-benchmark-and-duct/</guid>
      <description>Hey people of the internet, in order to continue our serie on Clojure &amp;amp; Duct, I decided to implement the TechEmpower frameworks benchmark this time using the Duct framework, as it is not already listed in Round 16 and I saw no Pull Request about it on their Github, and because this is fun &amp;amp; quick.
TechEmpower frameworks benchmark  This project provides representative performance measures across a wide field of web application frameworks.</description>
    </item>
    
    <item>
      <title>Duct modules for MongoDB and Immutant</title>
      <link>https://grison.me/2018/06/19/duct-modules-mongodb-and-immutant/</link>
      <pubDate>Tue, 19 Jun 2018 01:34:01 +0000</pubDate>
      
      <guid>https://grison.me/2018/06/19/duct-modules-mongodb-and-immutant/</guid>
      <description>Hey that&amp;rsquo;s me again !
As I&amp;rsquo;m planning to implement the TechEmpower framework benchmark for the Clojure&amp;rsquo;s Duct framework I wanted to use MongoDB (because no Clojure framework was using it for this benchmark) from a duct application, and also be able to run it on Immutant because I&amp;rsquo;ve seen that it was the top performer for both the json and plaintext tests, so why not run duct on top of it?</description>
    </item>
    
    <item>
      <title>Duct and Redis</title>
      <link>https://grison.me/2018/06/15/duct-and-redis/</link>
      <pubDate>Fri, 15 Jun 2018 10:34:01 +0000</pubDate>
      
      <guid>https://grison.me/2018/06/15/duct-and-redis/</guid>
      <description>I was showing duct to a friend not versed into Clojure at all, and he told me that he did not understand what was going on. How he was supposed to add redis to the stack, that he saw the duct redis module but didn&amp;rsquo;t even know where to start from there.
Duct is super awesome, Clojure is too obviously, the litterature on duct is not really thorough on the web, you have some wiki pages on the duct github, some posts on James Reeves’ blog and obviously duct documentation which is really good but can be complex for a Clojure beginner, even if we don&amp;rsquo;t take into account the fact that you need to understand what ataraxy and a lot of other libraries do.</description>
    </item>
    
    <item>
      <title>Did you mean Elixir?</title>
      <link>https://grison.me/2016/10/19/did-you-mean-elixir/</link>
      <pubDate>Wed, 19 Oct 2016 08:34:09 +0000</pubDate>
      
      <guid>https://grison.me/2016/10/19/did-you-mean-elixir/</guid>
      <description>So I was procrastinating on HN and I saw the following post « Elm and Phoenix/Elixir in Production for France TV », something like 3 days ago. You can find the HN comments here.
It&amp;rsquo;s been some time I read about Elm and Elixir on HN, but I did not have the chance, or took the time to try these two piece of technology.
So here we are, I&amp;rsquo;ll try to implement the Norvig&amp;rsquo;s Did you mean in Elixir, and give you my feeling about it in the same time.</description>
    </item>
    
    <item>
      <title>Redux4j, Implementing Redux in Java</title>
      <link>https://grison.me/2016/10/14/redux4j-redux-in-java/</link>
      <pubDate>Fri, 14 Oct 2016 08:34:09 +0000</pubDate>
      
      <guid>https://grison.me/2016/10/14/redux4j-redux-in-java/</guid>
      <description>Hi people of the internet!
After multiple months having fun with React and Redux, here&amp;rsquo;s what I thought: « why can&amp;rsquo;t we have some fun implementing it in Java 8? »
That&amp;rsquo;s what we&amp;rsquo;re going to do right away, just for fun :)
To be honest my first idea was to write it in Clojure and make on article of it, but there was nothing new nor hard about it, so get back to classic.</description>
    </item>
    
    <item>
      <title>Monster Component in Java with Spring</title>
      <link>https://grison.me/2016/09/30/monster-component-java-spring/</link>
      <pubDate>Fri, 30 Sep 2016 19:34:09 +0000</pubDate>
      
      <guid>https://grison.me/2016/09/30/monster-component-java-spring/</guid>
      <description>So yesterday I was browsing twitter and clicked on a link going to Antonio’s blog. I don’t even remember what I was looking for. Thing is I scrolled through the blog items and I stumbled upon the Monster Component in Java EE 7 article, and wow what an achievement. Read it.
https://antoniogoncalves.org/2013/07/03/monster-component-in-java-ee-7/
I definitely needed to do the same thing using the Spring ecosystem! Easy to beat the number of annotations.</description>
    </item>
    
    <item>
      <title>Quora homework question, Smile and Clojure</title>
      <link>https://grison.me/2016/07/23/quora-homework-question/</link>
      <pubDate>Sat, 23 Jul 2016 08:34:09 +0000</pubDate>
      
      <guid>https://grison.me/2016/07/23/quora-homework-question/</guid>
      <description>Looking at my twitter feed I saw the following Quora question: How do I write a program that produces the following output?.
People were all trying to create some cyphered program that would produce the desired output, the perl one was funny.
At the time I didn&amp;rsquo;t found a Clojure take on this hard problem.
Code! So, here&amp;rsquo;s a Clojure one with magic randomness immutability.
(defn foo [a b] &amp;#34;Do some char foo.</description>
    </item>
    
    <item>
      <title>Sample Clojure webapp running on clever-cloud</title>
      <link>https://grison.me/2016/06/24/hello-clj-clever-cloud/</link>
      <pubDate>Fri, 24 Jun 2016 08:34:09 +0000</pubDate>
      
      <guid>https://grison.me/2016/06/24/hello-clj-clever-cloud/</guid>
      <description>Why? There is no official clojure &amp;amp; leiningen support at the moment on clever-cloud, even if I&amp;rsquo;m sure that this is totally on track? 😃.
But it&amp;rsquo;s really easy to achieve it by building locally (or Jenkins or whatever) and using the JAR deployement support of clever-cloud.
Prerequisites You will need Java and Leiningen installed on your machine, but if you are already a fan of Clojure, you got this covered.</description>
    </item>
    
    <item>
      <title>harpoon, GitHub WebHook server in Go</title>
      <link>https://grison.me/2016/03/08/harpoon/</link>
      <pubDate>Tue, 08 Mar 2016 08:34:09 +0000</pubDate>
      
      <guid>https://grison.me/2016/03/08/harpoon/</guid>
      <description>harpoon is a simple Go program that listens for GitHub hooks like push on specific git repository refs and execute a defined command when it occurs.
It can be configured in a TOML configuration file.
That&amp;rsquo;s nothing fancy, just didn&amp;rsquo;t want to install the whole nodejs + npm or Apache + PHP just for this.
You can take a look at the project on my blog or my GitHub: https://github.com/agrison/harpoon</description>
    </item>
    
    <item>
      <title>go-tablib, tabular datasets in CSV, JSON, YAML, ...</title>
      <link>https://grison.me/2016/02/22/go-tablib/</link>
      <pubDate>Mon, 22 Feb 2016 08:34:09 +0000</pubDate>
      
      <guid>https://grison.me/2016/02/22/go-tablib/</guid>
      <description>go-tablib is a format-agnostic tabular dataset library, written in Go. This is a port of the famous Python&amp;rsquo;s tablib by Kenneth Reitz with some new features.
Export formats supported:
 JSON (Sets + Books) YAML (Sets + Books) XLSX (Sets + Books) XML (Sets + Books) TSV (Sets) CSV (Sets) ASCII + Markdown (Sets) MySQL (Sets) Postgres (Sets)  Loading formats supported:
 JSON (Sets + Books) YAML (Sets + Books) XML (Sets) CSV (Sets) TSV (Sets)  You can take a look at the project on my blog: http://grison.</description>
    </item>
    
    <item>
      <title>OCaml development box using Docker</title>
      <link>https://grison.me/2015/08/07/ocaml-development-box-using-docker/</link>
      <pubDate>Fri, 07 Aug 2015 08:34:09 +0000</pubDate>
      
      <guid>https://grison.me/2015/08/07/ocaml-development-box-using-docker/</guid>
      <description>&lt;p&gt;I&amp;#8217;ve just had to reinstall some software on my mac, and I decided to switch to Docker for my OCaml developments and tests. Here&amp;#8217;s what I did:&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Redis mass import</title>
      <link>https://grison.me/2015/07/22/redis-mass-import/</link>
      <pubDate>Wed, 22 Jul 2015 04:30:03 +0000</pubDate>
      
      <guid>https://grison.me/2015/07/22/redis-mass-import/</guid>
      <description>Story goes like this, I&amp;#8217;m following Peter Lawrey on twitter, if you don&amp;#8217;t know him that&amp;#8217;s because either you&amp;#8217;re better at Java than him and thus you didn&amp;#8217;t had to read anything related to Java on StackOverflow in the past decade, or you&amp;#8217;re just not programming, in which case you won&amp;#8217;t care about what I&amp;#8217;m going to write. OK so not even one paragraph and I&amp;#8217;m already digressing, let&amp;#8217;s get back on track.</description>
    </item>
    
    <item>
      <title>MonMet now with OCR magic</title>
      <link>https://grison.me/2015/07/21/monmet-now-with-ocr-magic/</link>
      <pubDate>Tue, 21 Jul 2015 09:13:51 +0000</pubDate>
      
      <guid>https://grison.me/2015/07/21/monmet-now-with-ocr-magic/</guid>
      <description>I&amp;#8217;ve just received my new iPhone and I wanted to install MonMet on it, but I discovered that the service provided by the bus company has changed. Since my favorite bus stops were already saved on my Nexus 5 I did not saw it coming.
The time table page has changed. It now displays a PNG image instead of textual content&amp;#8230; an image. They don&amp;#8217;t provide any public API either, so there&amp;#8217;s no way we can retrieve the information without using some OCR magic on the image.</description>
    </item>
    
    <item>
      <title>Popcorn Recall: one day hack with ionic</title>
      <link>https://grison.me/2015/06/01/popcorn-recall-one-day-hack-with-ionic/</link>
      <pubDate>Mon, 01 Jun 2015 07:27:39 +0000</pubDate>
      
      <guid>https://grison.me/2015/06/01/popcorn-recall-one-day-hack-with-ionic/</guid>
      <description>PopCorn Recall is an ionic application whose goal is to recall movies you wanted to see but didn&amp;#8217;t.
It searches for movies on IMDb via omdbapi.com
It&amp;#8217;s a one night dev project, it certainly misses some love to shine.
How to use git clone https://github.com/agrison/recall-popcorn.git cd recall-popcorn ionic run android # or ionic run ios Credits Splashscreen PopCorn image come from DeviantArt by natalia-factory: http://www.deviantar.com/art/Pop-Corn-84989054
Movie information comes from IMDb via the use of the REST API at omdbapi.</description>
    </item>
    
    <item>
      <title>Five programming problems every Software Engineer should be able to solve in less than 1 hour</title>
      <link>https://grison.me/2015/05/09/five-programming-problems-every-software-engineer-should-be-able-to-solve-in-less-than-1-hour/</link>
      <pubDate>Sat, 09 May 2015 12:28:22 +0000</pubDate>
      
      <guid>https://grison.me/2015/05/09/five-programming-problems-every-software-engineer-should-be-able-to-solve-in-less-than-1-hour/</guid>
      <description>So while browsing the web or twitter I don&amp;#8217;t remember, I found a blog article &amp;#8220;Five programming problems every Software Engineer should be able to solve in less than 1 hour&amp;#8220;, where the author explains that he&amp;#8217;s found five little programming riddles that a Software Engineer should be able to solve easily, otherwise he&amp;#8217;s not .. that good!
I wrote a solution in Python because it shines for such challenges, it took me approximately 40 minutes, so if I trust the internet, or just that random guy, I&amp;#8217;m definitely a Software Engineer !</description>
    </item>
    
    <item>
      <title>Go Challenge #1</title>
      <link>https://grison.me/2015/03/06/go-challenge-1/</link>
      <pubDate>Fri, 06 Mar 2015 17:37:21 +0000</pubDate>
      
      <guid>https://grison.me/2015/03/06/go-challenge-1/</guid>
      <description>I took part of the Go Challenge #1. It was a fun little problem to solve, took me a few hours. Waiting to see the results of the other players to learn some proper Go This is my submission:
decoder.go
package drum import ( &amp;#34;bytes&amp;#34; &amp;#34;encoding/binary&amp;#34; &amp;#34;encoding/hex&amp;#34; &amp;#34;fmt&amp;#34; &amp;#34;os&amp;#34; &amp;#34;strconv&amp;#34; &amp;#34;strings&amp;#34; ) // DecodeFile decodes the drum machine file found at the provided path // and returns a pointer to a parsed pattern which is the entry point to the // rest of the data.</description>
    </item>
    
    <item>
      <title>Forking JOhm</title>
      <link>https://grison.me/2014/09/12/forking-johm/</link>
      <pubDate>Fri, 12 Sep 2014 07:34:10 +0000</pubDate>
      
      <guid>https://grison.me/2014/09/12/forking-johm/</guid>
      <description>JOhm JOhm is a blazingly fast Object-Hash Mapping library for Java inspired by the awesome [Ohm][1]. The JOhm OHM is a modern-day avatar of the old ORM&amp;#8217;s like Hibernate with the difference being that we are not dealing with an RDBMS here but with a NoSQL rockstar.
JOhm is a library for storing objects in [Redis][2], a persistent key-value database. JOhm is designed to be minimally-invasive and relies wholly on reflection aided by annotation hooks for persistence.</description>
    </item>
    
    <item>
      <title>MonMet: ionic experiment</title>
      <link>https://grison.me/2014/09/01/monmet-ionic-experiment/</link>
      <pubDate>Mon, 01 Sep 2014 07:16:21 +0000</pubDate>
      
      <guid>https://grison.me/2014/09/01/monmet-ionic-experiment/</guid>
      <description>This is a weekend project, I wanted to use ionic framework for a complete little project. I discovered that the Met (official bus company in Metz) official application is completely bloated, you can&amp;#8217;t search easily for bus stations, the UI is SLOW, and you can&amp;#8217;t save favorites, nor see easily the timetable.
So here it is, a small weekend project using ionic, spring boot and redis. The code is available on Github.</description>
    </item>
    
    <item>
      <title>Experiment with Websockets</title>
      <link>https://grison.me/2013/05/13/experiment-with-websockets/</link>
      <pubDate>Mon, 13 May 2013 05:32:30 +0000</pubDate>
      
      <guid>https://grison.me/2013/05/13/experiment-with-websockets/</guid>
      <description>Sermonis, an experimentation with Websockets For the past week I did some experimentations with some interesting technologies, and at the end I had some kind of real time webchat application platform where users could create chat rooms (with or without passwords) and share URLs to friends so that they could join the discussion.
The Sermonis application was born. Its goal is to provide users an easy way to deploy a simple web application that let users talk with each other without the need to install an application like Skype.</description>
    </item>
    
    <item>
      <title>Learning Scala</title>
      <link>https://grison.me/2013/03/21/learning-scala/</link>
      <pubDate>Thu, 21 Mar 2013 05:29:36 +0000</pubDate>
      
      <guid>https://grison.me/2013/03/21/learning-scala/</guid>
      <description>I‘m really learning Scala, in depth this time. Indeed, I‘ve been reading Programming in Scala these days.
While learning it I discovered what are implicits, and how cool they are. I&amp;#8217;ll let you discover what they are by reading the [following article][1] since they explain that way better than me.
A cool use of implicits is that you can extend the Scala language with cool new syntaxes features, for example what if you like the Python&amp;#8217;s in operator ?</description>
    </item>
    
    <item>
      <title>Releasing Some Code</title>
      <link>https://grison.me/2013/02/23/releasing-some-code/</link>
      <pubDate>Sat, 23 Feb 2013 05:26:39 +0000</pubDate>
      
      <guid>https://grison.me/2013/02/23/releasing-some-code/</guid>
      <description>Releasing Some Code I‘ve been holding on my [New Year Resolutions][1] lately.
I have released some code to [GitHub][2], more precisely [jssg][3], [legacy4j][4].
JToml: TOML for Java Yesterday while reading [Hacker News][5] a thread about [TOML][6] appeared and since there were no parser available in Java for the moment, I decided to create one, so if it can be of any use sooner or later (personal and work), it would be already done.</description>
    </item>
    
    <item>
      <title>Coding challenge: Maman les petits avions</title>
      <link>https://grison.me/2013/02/20/coding-challenge-maman-les-petits-avions/</link>
      <pubDate>Wed, 20 Feb 2013 15:33:02 +0000</pubDate>
      
      <guid>https://grison.me/2013/02/20/coding-challenge-maman-les-petits-avions/</guid>
      <description>So Olivier Croisier created a little challenge on his website via this blog post &amp;#8220;Coding challenge: Maman les petits avions&amp;#8221;
This is my answer in OCaml to this challenge:
(* See: http://thecodersbreakfast.net/index.php?post/2013/02/18/Coding-challenge-maman-les-petits-avions --- compile &amp;amp; run: $ ocamlfind ocamlc -package batteries -linkpkg avions.ml -o avions $ ./avions *) open Batteries;; (* The syracuse suite *) let syracuse n = let rec urs n l = match n with | 1 -&amp;gt; l | n when n mod 2 = 0 -&amp;gt; urs (n/2) ((n/2)::l) | n -&amp;gt; urs (3*n+1) ((3*n+1)::l) in List.</description>
    </item>
    
    <item>
      <title>Magical Java puzzle, Pat the Unicorns</title>
      <link>https://grison.me/2013/02/20/magical-java-puzzle-pat-the-unicorns/</link>
      <pubDate>Wed, 20 Feb 2013 13:43:11 +0000</pubDate>
      
      <guid>https://grison.me/2013/02/20/magical-java-puzzle-pat-the-unicorns/</guid>
      <description>Yesterday while browsing the web I found that blog post by ZeroTurnaround: &amp;#8220;Magical Java puzzle, pat the Unicorns&amp;#8220;. It seemed interesting to find an easy and elegant solution. This is what I came up with:
/** See: http://zeroturnaround.com/fun/magical-java-puzzle-pat-the-unicorns/ */ import java.util.*; public class Unicorn { static Set&amp;lt;Integer&amp;gt; lines = new HashSet&amp;lt;Integer&amp;gt;(); public static boolean pat() { int callerLine = Thread.currentThread().getStackTrace()[3].getLineNumber(); return lines.add(callerLine); } } /** * When called by the following program: */ public class MagicalLand { public static void main(String[] args) { for (int i = 0; i &amp;lt; (Math.</description>
    </item>
    
    <item>
      <title>Enjoying IntelliJ</title>
      <link>https://grison.me/2013/02/11/enjoying-intellij/</link>
      <pubDate>Mon, 11 Feb 2013 05:22:57 +0000</pubDate>
      
      <guid>https://grison.me/2013/02/11/enjoying-intellij/</guid>
      <description>IntelliJ Ok, it is official, I‘m using [IntelliJ IDEA][1] since more than one week now, and I‘m enjoying it.
I‘ve been wanting to test it since a long time, I have seen so many people at Devoxx, at local JUGs using it, that it must be a good IDE, so I had to test it.
Notice that I am an Eclipse power user, I love the hell out of it, but I will try to go with a simple pros and cons of my first week with IntelliJ, and try to be fair.</description>
    </item>
    
    <item>
      <title>Website Update</title>
      <link>https://grison.me/2012/12/12/website-update/</link>
      <pubDate>Wed, 12 Dec 2012 05:16:31 +0000</pubDate>
      
      <guid>https://grison.me/2012/12/12/website-update/</guid>
      <description>Website update, using Jssg You are seeing the new design of this site, and I wanted to talk a little bit about it, so let‘s get started.
It has been years since I did not touched this site, and I wanted to refresh it in some way. The previous web site was using Jekyll as a static site generator. While I wanted to refresh the visual aspects I quickly checked about Jekyll alternatives.</description>
    </item>
    
    <item>
      <title>Did You Mean</title>
      <link>https://grison.me/2011/12/07/did-you-mean/</link>
      <pubDate>Wed, 07 Dec 2011 05:11:14 +0000</pubDate>
      
      <guid>https://grison.me/2011/12/07/did-you-mean/</guid>
      <description>Peter Norvig&amp;#8217;s Did You Mean ? Almost one year and a half ago, I did found something interesting on the web. An article of Peter Norvig explaining How to Write a Spelling Corrector. At this time I found it brilliant and did implement it in OCaml (but lost it). I tried to shorten the provided Python version, and also the Java version made by Rael Cunha. Eventually, I did come with a shortest version in both Java and Python.</description>
    </item>
    
    <item>
      <title>Vim XML Indent on Windows</title>
      <link>https://grison.me/2011/12/01/vim-xml-indent-on-windows/</link>
      <pubDate>Thu, 01 Dec 2011 05:00:55 +0000</pubDate>
      
      <guid>https://grison.me/2011/12/01/vim-xml-indent-on-windows/</guid>
      <description>Today I had some XML to check and I wanted to pretty format it inside gVim on my Windows 7 workstation. On Unix we&amp;#8217;ve got xmllint who&amp;#8217;s able to pretty format XML content, but I did not have it on Windows.
I knew I could do something like :%!xmllint in Vim and bam it would work. All I was needing was that external program. Instead of searching on the web for a port from Cygwin or something else, I did write a little tiny xmllint in Java.</description>
    </item>
    
    <item>
      <title>Unix Prompt</title>
      <link>https://grison.me/2011/11/20/unix-prompt/</link>
      <pubDate>Sun, 20 Nov 2011 04:49:10 +0000</pubDate>
      
      <guid>https://grison.me/2011/11/20/unix-prompt/</guid>
      <description>Arriving at my new working place, I wanted to install my own .bashrc and other dotfiles, like I had on my previous work station.
But this time, I wanted a distinguishable prompt with nice colors and still easy for the eyes. So I decided to go on with the Solarized theme and installed it for PuTTY, Vim and other tools I use on a daily basis.
The next little challenge for me was to clearly differenciate the command line in my prompt (the things I type) with another color than the output that gets generated.</description>
    </item>
    
    <item>
      <title>Hello</title>
      <link>https://grison.me/2011/10/29/hello/</link>
      <pubDate>Sat, 29 Oct 2011 14:59:39 +0000</pubDate>
      
      <guid>https://grison.me/2011/10/29/hello/</guid>
      <description> Hello More is coming&amp;#8230; </description>
    </item>
    
    <item>
      <title></title>
      <link>https://grison.me/articles/foo/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://grison.me/articles/foo/</guid>
      <description></description>
    </item>
    
    <item>
      <title>About</title>
      <link>https://grison.me/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://grison.me/about/</guid>
      <description>My name is Alexandre aka Alex, I&amp;#8217;m a 35 years old (and counting) Tech Lead, Software Craftsman, Jack of all trades Developer working in Luxembourg, and living in Metz, France.
Up to now, I‘ve accumulated a few passions that you will be able to glimpse below.
IT I‘ve made it my job, I like it a lot. Coding, Agile and other hype buzzwords that looks good on CV.
I‘m into almost everything IT, but my primary passion is development.</description>
    </item>
    
    <item>
      <title>Jtoml</title>
      <link>https://grison.me/jtoml/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://grison.me/jtoml/</guid>
      <description>TOML for Java This is a parser for Tom Preson-Werner&amp;#8216;s (@mojombo) [TOML][1] markup language, using Java.
GitHub project You can browse the project on my GitHub repository [@agrison/jtoml][2].
Usage Parsing // parse from a String or from a File Toml toml = Toml.parse(&amp;#34;pi = 3.14\nfoo = \&amp;#34;bar\&amp;#34;&amp;#34;); toml = Toml.parse(new File(&amp;#34;foo.toml&amp;#34;)); Getting values // get different types toml.get(&amp;#34;foo&amp;#34;); toml.getString(&amp;#34;foo&amp;#34;); toml.getBoolean(&amp;#34;foo&amp;#34;); toml.getDate(&amp;#34;foo&amp;#34;); toml.getDouble(&amp;#34;foo&amp;#34;); toml.getLong(&amp;#34;foo&amp;#34;); toml.getList(&amp;#34;foo&amp;#34;); toml.getMap(&amp;#34;foo&amp;#34;); Mapping custom types You can map a custom type from an entire TOML String or part of it.</description>
    </item>
    
    <item>
      <title>Legacy4J</title>
      <link>https://grison.me/legacy4j/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://grison.me/legacy4j/</guid>
      <description>legacy flat files for Java Are you a Java Developer who needs to parse old times legacy flat files? You&amp;#8217;re bored to write each time a new parser for these files? In this case, you&amp;#8217;ve come to the right page. Legacy4j is a small Java library that helps you load fixed length files to POJOs and saves them the other way.
You can get the legacy4j library from my GitHub at http://github.</description>
    </item>
    
    <item>
      <title>OCamail</title>
      <link>https://grison.me/ocamail/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://grison.me/ocamail/</guid>
      <description>Simple SMTP Server written in OCaml OCamail is a simple SMTP Server acknowledging all requests it receives. It is written in Objective Caml for development and learning purposes. To say the truth, I just found the combination of OCaml &amp;amp; mail to be funny, so I decided to write something related 😀
Attachments (non-gziped only) are supported and can be saved in a directory in order to be checked if needed.</description>
    </item>
    
    <item>
      <title>Photography</title>
      <link>https://grison.me/photography/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://grison.me/photography/</guid>
      <description>I&amp;rsquo;m an amateur photographer.
In another life I would have love to be a professional photographer, travelling around the planet to capture its beauty for the whole world to see.
I enjoy shooting landscape, at night, animals &amp;amp; architecture.
I&amp;rsquo;m from France and work in Luxembourg.
Gear  Camera: Canon EOS 6D Lenses:  Canon EF 50mm f/1.4 Tamron SP 24-70mm f/2.8 Canon 70-200 f/4 L USM Samyang 14mm f/2.</description>
    </item>
    
    <item>
      <title>Projects</title>
      <link>https://grison.me/projects/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://grison.me/projects/</guid>
      <description>Here are some projects I did work on:
 harpoon: GitHub WebHook server in Go go-tablig: format-agnostic tabular dataset library johm: Simple Java ORM for Redis jtoml: TOML for Java scalocco: port of Docco in Scala jssg: Java Static Site Generator catastrophic: a Monster Component in Java &amp;amp; Spring, see also my blog article sermonis: chat experiment with Spring &amp;amp; Websockets ocamail: pun intended simple SMTP server written in OCaml recall-popcorn: ionic application to recall movies you wanted to see but didn&amp;rsquo;t go-commons-lang: some Go utilities MontMet: Favorite bus stops and schedules for Metz And my GitHub&amp;hellip;  </description>
    </item>
    
    <item>
      <title>Scalocco</title>
      <link>https://grison.me/scalocco/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://grison.me/scalocco/</guid>
      <description>Scalocco is a really quick-and-dirty, literate-programming-style documentation generator. It is a Scala port of Docco, which was written by Jeremy Ashkenas in Coffescript and runs on node.js.
Scalocco produces HTML that displays your comments alongside your code. Comments are passed through Markdown, and code is highlighted using google-code-prettify syntax highlighting.
Currently, to build Scalocco, you&amp;rsquo;ll need sbt and scala. The project depends on scala-mustache and Markdown4j
To run Scalocco, just use sbt:</description>
    </item>
    
    <item>
      <title>Sermonis</title>
      <link>https://grison.me/sermonis/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://grison.me/sermonis/</guid>
      <description>Sermonis Sermonis is an experimentation around Spring-Data, MongoDB, AngularJS and Websockets. Its goal is to provide a platform where users can create chat rooms (password protected or not), share a unique URL where friends can join and chat using only their browser.
To use Sermonis, build it using maven calling a init class that will prepare the secret tokens needed by the application, then install and run with jetty (or deploy in Tomcat 7):</description>
    </item>
    
    <item>
      <title>go-tablib</title>
      <link>https://grison.me/go-tablib/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://grison.me/go-tablib/</guid>
      <description>go-tablib: format-agnostic tabular dataset library    
Go-Tablib is a format-agnostic tabular dataset library, written in Go. This is a port of the famous Python&amp;rsquo;s tablib by Kenneth Reitz with some new features.
Export formats supported:
 JSON (Sets + Books) YAML (Sets + Books) XLSX (Sets + Books) XML (Sets + Books) TSV (Sets) CSV (Sets) ASCII + Markdown (Sets) MySQL (Sets) Postgres (Sets)  Loading formats supported:</description>
    </item>
    
    <item>
      <title>harpoon</title>
      <link>https://grison.me/harpoon/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://grison.me/harpoon/</guid>
      <description>Harpoon is a simple Go program that listens for GitHub hooks like push on specific git repository refs and execute a defined command when it occurs.
It can be configured in a TOML configuration file.
That&amp;rsquo;s nothing fancy, just didn&amp;rsquo;t want to install the whole nodejs + npm or Apache + PHP just for this.
Install go get github.com/agrison/harpoon go build Add it to your path if you want.</description>
    </item>
    
  </channel>
</rss>