Quantcast
Channel: Spootnik.org
Browsing latest articles
Browse All 35 View Live

Puppet, extlookup, and yamlvar

When you dive in a complex project, even though you try to be as good as possible with documentation, sometime you just miss things. I’ve had a good opportunity to realize this just recently while...

View Article


OpenBSD pf: limits and extending metrics

When running pf firewalls and loadbalancers with relayd, some metrics are critical. One thing that might not be obvious when looking at pf is that the maximum number of sessions a firewall can handle...

View Article


Removing duplicate gems

Found myself typing this in a shell: gem list --local |\ egrep '.*(.*,.*)' |\ sed 's/^\([^ ]*\) ([^,]*,\(.*\))/\1\2/' |\ sed 's/,//g' |\ awk '{for (i = 2; i <=NF ;i++) {printf "sudo gem uninstall %s...

View Article

Some more thoughts on monitoring

Lately, monitoring has been a trending topic from the devops crowd. ripienaar and Jason Dixon amongst other have voiced what many are thinking. They’ve done a good job describing what’s wrong and what...

View Article

Introducing: TRON

I just uploaded a small library to github (and clojars), It’s a generalisation of what I use for recurrent tasks in my clojure programs, the fact that the recent pragprog article had a handrolled...

View Article


Clojure Wrappers

Functions in the wild Functional programming rears its head in the most unusual places in software design. Take the web stack interfaces (rack1, plack2, WSGI3), they all implement a very functional...

View Article

A wrapping macro

A bit of sugar The wrap-with function described in my last post1 is useful, but you still end-up having to write closures which might be confusing to people who just want to write simple wrappers....

View Article

A bit of protocol

Protocols and mixins I recently had to implement something in clojure I’ve done many times in ruby, which involved using protocols. I thought it would be a nice example of comparing class re-opening...

View Article


The death of the configuration file

Taking on a new platform design recently I thought it was interesting to see how things evolved in the past years and how we design and think about platform architecture. So what do we do ? As system...

View Article


Two posts, one engine

What does a good nerd do when feeling the urge to write on a topic ? Why, update his blogging tool, of course. I’ve actually loved static site generators since the days where I had one based on make...

View Article

Another year of Clojure

Clojure at paper.li I’ve been involved with clojure almost exclusively for a year as smallriver’s lead architect, working on the paper.li product and wanted to share my experience of clojure in the...

View Article

Image may be NSFW.
Clik here to view.

A Leiningen plugin for Jenkins

I use jenkins extensively to test apps and clojure is my go-to language for plenty of use cases now. leiningen is a very nice build tool that lets you get up and running very quickly, even for java...

View Article

Firehose storage at Paper.li

I was very happy to give a talk on the experience we had with cassandra over at paper.li for the first Paris-Cassandra meetup (if you’re interested, go follow @pariscassa). While not diving too deep, I...

View Article


Weekend project: Ghetto RPC with redis, ruby and clojure

There’s a fair amount of things that are pretty much set on current architectures. Configuration management is handled by chef, puppet (or pallet, for the brave). Monitoring and graphing is getter...

View Article

Nice looking JQuery with Clojurescript

I did a bit of frontend work for internal tools recently and chose to go with clojurescript, for obvious reasons. Like clojure, clojurescript supports macros which let you express common lengthy...

View Article


Map & Territory: A story of visibility

Many thanks to the #devops crew for hosting devops days Paris ! I loved the diversity of the talks, the ignite format is really interesting. What struck me most is how devops is now reaching its...

View Article

Using Riemann to monitor python apps

Another quick blog post today to show-case usage of riemann for in-app reporting. This small blurb will push out a metric for each wrap route with the metric name you provide. When handlers raise...

View Article


Poor man's pattern matching in clojure

A quick tip which helped me out in a few situations. I’d be inclined to point people to core.match for any matching needs, but the fact that it doesn’t play well with clojure’s ahead-of-time (AOT)...

View Article

Image may be NSFW.
Clik here to view.

Neat Trick: using Puppet as your internal CA

It’s a shame that so many organisations rely on HTTP basic-auth and self-signed certs to secure access to internal tools. Sure enough, it’s quick and easy to deploy, but you get stuck in a world...

View Article

In defense of immutability

I thought I’d whip together a short blog post as a reaction to Mark Burgess’ (@markburgess_osl) keynote at the Cloudstack Collaboration Conference. I thoroughly enjoyed the keynote but was a bit taken...

View Article

Solving Nginx logging in 60 lines of Haskell

Nginx is well-known for only logging to files and being unable to log to syslog out of the box. There are a few ways around this, one that is often proposed is creating named pipes (or FIFOs) before...

View Article


Real-time Twitter trending on a budget with riemann

I recently stumbled upon this article http://www.michael-noll.com/blog/2013/01/18/implementing-real-time-trending-topics-in-storm/ by Michael Noll which explains a strategy for computing twitter...

View Article


Poor man's dependency injection in Clojure

When writing daemons in clojure which need configuration, you often find yourself in a situation where you want to provide users with a way of overriding or extending some parts of the application....

View Article

Beyond SSL client cert authentication: authorization

In a previous article, I tried to make the case for using a private certificate authority to authenticate access to internal tools with SSL client certificates. This approach is perfect to secure...

View Article

Why were there gotos in apple software in the first place?

A recent vulnerability in iOS and Mac OS can boils down to a double goto resulting in making critical ssl verification code unreachable. hashOut.data = hashes + SSL_MD5_DIGEST_LEN; hashOut.length =...

View Article


Diving into the Python Pickle formatt

pickle is python’s serialization format, able to freeze data, as long as all leaves in class hierarchies are storeable. pickle falls into the category of formats that I’m not a huge fan of. Like all...

View Article

Easy clojure logging set-up with logconfig

*TL;DR*: I love clojure.tools.logging, but setting JVM logging up can be a bit frustrating, I wrote logconfig to help. When I started clojure development (about 5 years ago now), I was new to the JVM...

View Article

From Angular.JS to Om: A walk-through

A while back we did a small introductory talk on angular.js with @brutasse. Our talk was aimed at backend developers looking for a solution to build simple interfaces for REST services. The app used...

View Article

Heads up for Clojure library writers

Clojure 1.7 is around the corner, we’re already at version 1.7.0-alpha3. Fortunately, the iterative approach of clojure taken since 1.3 means that upgrading from one version to the next usually only...

View Article



Playing with Clojure core interfaces

One of Alan Perlis’ famous quote is It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures. In a recent talk about reducers (available here), Rich...

View Article

PID tracking in modern init systems

Wherever your init daemon preference may go to, if you’re involved in writing daemons you’re currently faced with the following options: Start your software in the foreground and let something handle...

View Article

Image may be NSFW.
Clik here to view.

Simple materialized views in Kafka and Clojure

A hands-on dive into Apache Kafka to build a scalable and fault-tolerant persistence layer. With its most recent release, Apache Kafka introduced a couple of interesting changes, not least of which is...

View Article

Image may be NSFW.
Clik here to view.

Hands on Kafka: Dynamic DNS

I recently wrote about kafka log compaction and the use cases it allows. The article focused on simple key-value storage and did not address going beyond this. In practice, values associated with keys...

View Article


Building an atomic database with clojure

Atoms provide a way to hold onto a value in clojure and perform thread-safe transitions on that value. In a world of immutability, they are the closest equivalent to other languages’ notion of...

View Article

An adventure with clocks, component, and clojure.spec

I have long parted with my initial, lacking approach to component handling in Clojure. I now rely on Stuart Sierra’s component library for this. In this short post, I want to showcase how this library...

View Article
Browsing latest articles
Browse All 35 View Live