Birdseye Software: conduits, reactive extensions... →
birdseye-software: Recently we have been working on a project that use the Reactive Extensions library (rxjs) on the front-end and Conduit for handling event and IO streams in Haskell. In practice, working with rxjs is similar to using Conduits/Iteratees/Pipes in Haskell. Of the many benefits [pdf] of rxjs,…
Reluctant, Lazy Blogger: :) @romanandreg and I... →
tavisrudd: :) @romanandreg and I just implemented animated replay of event-sourced UI test fixtures http://rxtest.dentalle.com/#fixture:separate_post_metals::animate vs http://rxtest.dentalle.com/#fixture:separate_post_metals which just jumps to the end state and highlights the last change. The fixtures… Great Work
Installing emacs24 in precise pangoling
This is specially useful in vagrant machines Install utility to add apt sources easily: sudo apt-get install python-software-properties Add sources that contains emacs24 sudo add-apt-repository ppa:cassou/emacs Update the apt source list and install emacs24-nox (for emacs without X) sudo apt-get update; sudo...
Udacity isn’t concerned with students who fall short. Its creators are busy...– Funny how they mention Caracas as one of the places with people with low resources… From this blogpost
Installing virtualbox guest additions
Whenever I upgrade the version of my virtualbox env, I always run through the annoying warning given by vagrant, saying that the virtual machine doesn’t have a matching version to the virtualbox-guest-additions. In order to solve this issue, I always follow the steps given in this blogpost. I re-post this steps over here for my personal records…
Installing Oracle Java 7 on Ubuntu Precise...
This is specially useful in vagrant machines Install utility to add apt sources easily: sudo apt-get install python-software-properties Add sources that contains oracle-java-7 sudo add-apt-repository ppa:webupd8team/java Update the apt source list and install java’s oracle version sudo apt-get update; sudo...
Success is when you’ve failed so much that you start to fail at failing.– @bengrue
You’re always coding with two other programmers: past you and future you....– @bmf
Http Authentication failing with Devise < 2.0 and...
If you are pulling your hair out because Devise’s HTTP authentication doesn’t seem to work after an hour or so, don’t despair, I have the solution for you… If you can see a warning in your log saying something like: DEPRECATION WARNING: ActiveSupport::Base64.decode64 is deprecated. Use Base64.decode64 instead. It is not just a warning, the HTTP Auth will fail...
When you don’t have resources, you become resourceful.– K. R. Sridhar.
Is Clojurescript using calcdeps.py?
The answer is no… Currently I’m reading the Google Closure: The definitive guide, in order to better use the Clojurescript (cljs) language . On of the things I was a confused about, was on how cljs managed to handle dependencies on the cljs files, as I didn’t see any options regarding the calcdeps.py on the cljs.closure/build function. After failing on finding a nice...
Vancouver's Clojure Club is ALIVE! →
Some friends and myself decided to formalize a study group we were having for learning Clojure, at this point I think there is enough people that could comfortably work on open source projects. The idea is to join and share projects as a group to gain more feedback from others, this way if a group checks and uses the libraries instead of individuals this libraries will definitely get more...
Most of the biggest problems in software are problems of misconception.– Rich Hickey.
Haskell's Show and pretty printing bad practice
Most of times when I was coding Haskell code, I always implemented the Show classtype whenever I wanted to print things on the screen in a nice and fashionable way. It seems however this is a really bad practice that hasn’t been taught enough in the Haskell community. I discovered this in a StackOverflow question that had nothing to do with pretty printing, but the discussion led to...
Clojure's repeatedly gotcha
When using Clojure’s repeatedly function to read lines from a terminal, or when trying to do IO of some sort, the behavior won’t be as expected This is because repeatedly instead of calling the action n times, it generates a lazy seq for each time the action function gets called. Given that it is a lazy seq, if you don’t force the evaluation of the list, all but the first...
Vim's Fugitive's "Error detected while processing...
At a random time on my development cycle, I was using the awesome Fugitive plugin developed by Tim Pope, and I got the following strange error: Error detected while processing function 51_Commit: line 52: E480: No match: `=msgfile` Press ENTER or type command to continue After some googling, I found out the reason was that I installed just a few days ago the also awesome ctrlp plugin. When...
The distinction between mechanism and policy is one of the best ideas behind the...– Jonathan Corbet, Greg Kroah-Hartman, Alessandro Rubini on Linux Device Drivers, 3rd Edition
Testing URI canonicalization using QuickCheck
Today I was working on a custom web crawler for the company I’m working in. One of the problems I was having in the first implementations was that I was not canonicalizing the links, and I was visiting the same link more than once in the crawl. Canonicalization of URI’s basically consist on removing any query string and fragment out of the given URI (at least, that is my...
Puppet: ERROR 400 on SERVER: Must pass...
I’m currently playing with puppet doing some changes to my modules to support Archlinux, at this time I did several changes to my git module, Initially the implementation was something like this: And then, it became something like this: In the end I added some new parameters to my git class, and changed my nodes.pp file accordingly: For some crazy reason, the puppet agent was throwing...
Don’t, Please ***don’t*** install puppet 2.7.3 with Ruby 1.9.2 ever,...– Me. Thanks to this guy for pointing me in the right direction. Stupid puppet and stupid ruby 1.9.2
Loading package double-conversion- ... : can't...
Recently I’ve been playing with the aeson library in Ubuntu oneiric, unfortunately I ran across this compilation error: Loading package double-conversion-0.2.0.1 ... : can't load .so/.DLL for: stdc++ (libstdc++.so: cannot open shared object file: No such file or directory) After a lot of investigation, I found a ticket on the Ttrac site of GHC that came up with a solution, I will...
Crawler implementation in Haskell
Today at Noomii I was getting some new requirements for our crawler that is implemented in Ruby. The requirement list was quite dense, and I was wondering if it was a good idea to implement this functionality in Haskell :-). Later, after finishing the morning scrum meeting, I got my hands on Bryan O’Sullivan’s slides from the StrangeLoop conference, I was really interested in...
Aníbal Rojas: Como ser un mejor programador (un... →
anibalrojas: Yo no soy un gram programador, creo que nunca lo he sido, aunque por mucho años me dedicara a programar profesionalmente. No me entiendan mal, no es que no me guste programar ni que mi código apestte, en realidad me gusta mucho y he tenido muy buenos momentos programado, pero el trabajo no me deja… Great post by one of my menthors back in Venezuela, hopefully at some point...
Elegance and familiarity are orthogonal– Rich Hickey (author of Clojure) Meaning: Unless you are familiar with a concept/language etc, you are not able to tell if something is elegant or not.
All the adversity I’ve had in my life, all my troubles and obstacles, have...– Walt Disney. Personal note: On the hardest times, just remember this.
Using and Parsing Dates in Haskell
Recently I’ve been playing around with the Github API, and I wanted to do some code using Haskell. I’ve been using several libraries like aeson, enumerator, http-enumerator, among others. One of the details I was really concerned about was the time structures in Haskell, I didn’t know exactly which module to use, and there were at least two options: System.Time ...
Do yourself a favor...
Never compile ghc-platform… ever, it took me around 12 hours to finish compilation, not fun at all.
Adrian Bravo's tumblr: Creating a Vagrant Base Box... →
This is for me so that I don’t forget how to build vagrant boxes again…
Any fool can write code that computers can understand. Good programmers write...– Martin Fowler (via edgar)
Haskell's Tuple like structures in Clojure
As you may know by now, there is no equivalent for Haskell’s tuples in Clojure, in order to replicate this behavior, you will need to use vectors of two items. Clojure provides the functions first and second to get the elements out of the tuple vector Tuples in Haskell are very useful when using the zip function, one way to replicate this behavior in Clojure is using the map function with...
If you want to do something, you’ll find a way to do it. Otherwise,...– Jim Rohn
It is better to have 100 functions operate on one data structure than 10...– Alan Perlis (read from The Joy Of Clojure)
Puppet - Could not retrieve catalog from remote...
Today I was having issues running puppet (for the first time), I bought an Amazon EC2 micro instance to run the master, and I was working with a vagrant lucid64 box to check that the initial setup for agent nodes was working correctly; sadly I got stuck with an error for a few hours, after doing the SSL certification on the agent. The error was the following: err: Could not retrieve catalog...
Erlang and Haskell sitting on a Tree
Last night I was reading the paper Haskell for the cloud [pdf], written by the super kick-ass Haskell guru Simon Peyton-Jones. Two paragraphs got my eye, and I wanted to share them with you We use the term “cloud” to mean a large number of processors with separate memories that are connected by a network and have independent failure modes. We don’t believe that shared-memory concurrency is...
vim-ruby slowness fix
Lately whenever I was working on a rails project, I was having such a pain editing the routes file of this specific project, it went super slow on me on editing time. My “patch” fix was to always disable the syntax or set the filetype to something different than ruby to make it go normal speed again. This came even more unbearable when it was happening on other files, and my crappy...
QuickFix errrorformat for Haskell
If you are wondering how to get the whole potential of QuickFix with Haskell, here you have a snippet of my vim config. Have to thank to Martin Norbäck for his post in the GHC mailing list for the errorformat value.
On how Haskell's Arrows might just be function...
Update: The post you are about to read explains just a tiny portion of what Arrows are, pure functions are just one instance of this quite complex classtype. I’m not trying to say that Arrows are just pure functions, I’m saying that in your program, they might be just that. Just to clarify, this post simplify the concept of Arrows — for you the novice reader — to digest it...
We are unable to upload this Certificate file...
At this moment, you are probably being victim of Apple’s Provisioning Portal mysterious error messages. I know. you are frustrated you are following each single step in a really detailed fashion you have repeated the whole thing at least 4 times and still getting this stupid cryptic error message Time for google to solve it right? Well, fear no more, I have the one and true answer...
Default mutable values in Python functions are...
If you use mutable default values on functions, this will keep it state in recurrent calls: def myAppend(x, L=): L.append(x) return L #============= >>> myAppend(1) =>  >>> myAppend(2) => [1, 2] That’s seriously messed up o.O
Use form_for from Rails' console
As a curious developer, I always like to inspect an objects guts on the console, that way I can now as much as I can from the class without reading the documentation. It was the time for the rails form_for view helper. I had no idea how to access that from the terminal whatsoever, so I googled a bit and I found nice tidbits that got me going pretty quickly. However when you try to use a method...
Randoms and Haskell
Right now I’m on chapter 15 of my RWH book. This one talks about problems that get complicated without the use of a Monad, one of them is the System.Random API of Haskell. I’m going to start by introducing two typeclasses that this module exports for clarity’s sake: RandomGen: a RandomGen represents an state that holds the random input, I like to think of it like a stream of...