Currently browsing

Engine’s Tunes

Monads for Software Engineers

The term monad could sound weird to a software engineer because it comes from category theory. There’s plenty of related maths material around but let’s just forget about it and about the choice of that word (BTW am I the only one being triggered Leibniz memories from high-school philosophy classes?): I’m interested in a software engineering perspective on the topic and, since I couldn’t find an introductory one that was clear enough for me, I decided to take a dive in and build my own. What is a monad? Very, very shortly: a data structure implements a monad interface iff it defines some “lifted-up” functions sequencing operator (think of a functional “;“-like sequencing). So a monad itself is basically …

Blazar: another pill to relieve Asyncmania

I’ve been ranting already about today’s non-thread-blocking needs (here: Efficient I/O: working smart with slow byte movers) and the fact that some of the most prominent runtimes (e.g. JVM…) lack support for fibers, causing everyone to shelter in asynchronous programming models instead of looking for ways to complement the runtime. Actually Ron Pressler has been writing about this issue quite extensively in Parallel Universe’s blog , for example a very fine post is Little’s Law, Scalability and Fault Tolerance: The OS is your bottleneck (and what you can do about it) but I warmly recommend reading everything in there as there’s a lot of insight and great architectural and even day-to-day suggestions are provided. Let me call this syndrome …

Computer Science, Information Technology, Software Engineering: what is this all about?

They’re different facets of the same constructive and creative discipline dealing with information flow: the mathematical study and literature, the technical knowledge and the actual designing and writing respectively. Information is a sequence of conventional signs that convey ideas; big amounts of information and dedicated machinery can be also used to encode, transmit and reproduce sensorial objects such as images, video and audio. So, information flow design is all about creating abstract worlds: playgrounds and tools for, and about, the abstract mind (or small mind as it is called in some traditions), which is the only one current computing machines can deal with fast enough for our needs. Being essentially constructive (it …

Wordpress

How to Paint Dreamtime Circles: a Journey in Web Technologies

Once upon a time, there was a guy that loved writing. He loved anything related to writing: languages, alphabets, typefaces and he loved poetry as much as stories and scientific papers. He was into computers for a living and he was spending most of his day writing as well. So one day he told himself: “I love writing, so why not sharing my passion with others? I could create something and give it to people in addition to rely and enjoy other’s work”. He loved trees and he was into computers as we said, so the most natural, cheap, and paper-free way for him to start writing was obvious: creating …