Skip to main content


Showing posts from October, 2013

brainfuck in Clojure. Part I: interpreter

Snarøya coast Brainfuck is one among the most popular esoteric programming languages . Writing a Brainfuck interpreter is fun, in contrary to actually using this "language". The syntax is dead simple and semantics are rather clear. Thus writing such interpreter is a good candidate for Kata session, TDD practice, etc. Using Clojure for the task is slightly more challenging due to inherent impedance mismatch between imperative Brainfuck and functional Clojure. However you will find plenty of existing implementations ( [1] , [2] , [3] , [4] ), many of them are less idiomatic as they use atoms to mutate state in-place ( [5] , [6] , [7] , [8] , [9] ). Let's write a simple, idiomatic brainfuck interpreter ourselves, step by step. It turns out that the transition from mutability to immutability is quite straightforward - rather than mutating state in-place we simply exchange previous state with the new one. In Brainfuck state is represented by cells (memory), cell (poin

"Beginning Java EE 7" by Antonio Goncalves review

Don't be fooled by the " beginning " in the title. This 600-pages book is a comprehensive and complete walk-through of all components and technologies comprising Java EE 7 stack. Antonio Goncalves , Java EE evangelist and Java Champion, wrote a reference book for all enterprise software developers. " Beginning Java EE 7 " is not a collection of random tutorials. Instead this publication covers thoroughly pretty much every aspect of Java EE you might encounter on a daily basis: CDI (Contexts and Dependency Injection) JPA (Java Persistence API) EJB (Enterprise JavaBeans) JTA (Java Transaction API) JMS (Java Message Service) SOAP/REST/XML/JSON processing JSF (JavaServer Faces) ...and even more As you can see the book covers all the layers from back-end to API and front-end development. Moreover due to solid size of the publication each of these subjects is treated with care. Expect plenty of end-to-end examples including maven configuration. Som