How to store data on paper?(April 15, 2020)
How to print my voice? How to put music on paper? How to print an executable program? All this boils down to storing digital data on paper. This is also called paper data storage. Arrived in this domain from poetry, I’ve been investigating the area for some time. >>> read more
Monster Software Repositories(February 21, 2019)
What are the biggest software repositories ever made?
We are used to hear that we build software systems with millions of lines of codes, blablabla. Yet, this is a very abstract statement, with no clear meaning since no big software system has clear boundaries. >>> read more
Twilio on SIP Cisco ATA SPA112 / SPA122(August 12, 2017)
How to use a Twilio SIP trunk account on a Cisco ATA SPA112? Here some hints from my own configuration.
Introduction
There are two ways to use SIP in Twilio, “SIP Domain” and “SIP Trunk” (PSTN numbers can work with both of them). >>> read more
I/O profiling Maven Junit Tests with strace(November 13, 2016)
Recently I wanted to know what are the files read and written by each test in Spoon. Here is what I managed to do it by using strace.
>>> read more
List of hotpatching solutions for mobile apps(November 07, 2016)
Hotpatching is a really cool technology. Being involved in that realm, here are the most notable hotpatching solutions.
List of commercial hotpatching solutions
Apptimize has a product to hotfix errors, called “Instant Update”
Rollout does hotpatching for iOS.
>>> read more
How to create a RSS feed from an HTML page in Python?(June 27, 2015)
Here is an example program to create a RSS feed from an HTML page in Python.
>>> read more
Introduction to unit testing(January 29, 2015)
Writing test cases are like levels in a video-game. There are easy test cases, and very hard ones. Only expert gamers kill the strongest monsters of the last level. Only expert programmers write the hardest tests using advanced techniques such as dependency injection and mocks.
>>> read more
Introduction to mocking for unit tests(May 02, 2014)
Mocking is a technique for better testing software. This post gives a short introduction of mocking, using examples in Java.
What is a mock?
There is no unique definition of “mock” (see [2,3] for various viewpoints). >>> read more
A Study of Exception-handling in Test Suites(March 04, 2014)
%
% %intro %As shown in Section , some real world applications exist in which our technique is able to prove the satisfaction or the violation of our exception contracts. >>> read more
Throw and Catch Coverage(February 18, 2014)
When software applications are tested with an automated test suite, it is common to measure the statement or branch coverage. However, many other kinds of coverage may be defined. In this post, we focus on two kinds of coverage dedicated to exception handling.
>>> read more
Compiling C code with dietlibc and tcc(January 05, 2014)
Tcc (aka Tiny C Compiler, or tinycc) is a very lightweight C compiler. Dietlibc is lightweight libc (as opposed to GNU libc). Using a tiny C compiler and a tiny libc is a kind of software minimalism.
Requirements
First install dietlibc (apt-get install dietlibc-dev).
>>> read more
Compiling tcc with dietlibc(January 05, 2014)
Tcc (aka Tiny C Compiler, or tinycc) is a very lightweight C compiler. Dietlibc is a lighweight libc (as opposed to GNU libc).
It is possible to compile tcc itself using dietlibc. First download the source code of tcc and install dietlibc (apt-get install dietlibc-dev).
>>> read more
jexast: creating Java AST Nodes with Plain JDT(March 27, 2013)
Jexast allows creating Java AST Nodes with Plain JDT. Jexast stands for "Extraction of Java ASTs".
Jexast has been superseeded by Spoon. Please use Spoon instead in noclasspath mode.
To get the AST of Java files, there is the famous JDT class ASTParser.
>>> read more
List of tools for Java software metrics(January 02, 2013)
This document aims to be a comprehensive list of tools that measure Java software.
Thanks in advance for the feedback: Martin Monperrus
Other tools (e.g. >>> read more
How to Write Good Object-oriented API Documentation(December 28, 2012)
The success of a piece of software depends on many factors, including the quality of its documentation.
There are many kinds of documentation. >>> read more
Can one trust an exception in Java?(October 31, 2012)
By working on Java exceptions, we recently discovered that exceptions are not as trustful as we would have expected.
Never Trust the Stack Trace
It is widely known that an exception embeds a stack trace. >>> read more
ExceptionInInitializerError is unrecoverable(October 17, 2012)
Java exception ExceptionInInitializerError, is an exception that wraps an exception thrown and not caught from a static block (i.e. >>> read more
Source-to-source translation with ANTLR's TokenRewriteStream(January 02, 2012)
I've recently discovered the existence of org.antlr.runtime.TokenRewriteStream.
It's a class of ANTLR which makes certain source-to-source translations easy.
For instance, Terence Parr's v2v3 (+patch) uses it to migrate ANTLR2 grammars to ANTLR3.
>>> read more
greasemonkey jquery and xmlhttprequest together(May 30, 2011)
This post shows that one can use all AJAX features of JQuery in Greasemonkey. It is an update of the excellent post of Ryan Greenberg ([[http://ryangreenberg.com/archives/2010/03/greasemonkey_jquery.php]]).
>>> read more
cross-domain ajax with jQuery and flash-based SWFHttpRequest(October 05, 2010)
Flash is a good solution to enable cross-domain ajax with http post (see [[http://engin.bzzzt.biz/2010/03/31/cross-domain-data-push-methods-compared/|this post]] and [[cross-domain ajax with http post for sending large amount of data]]). >>> read more
cross-domain ajax with http post for sending large amount of data(October 04, 2010)
There are dozens of methods to make cross-domain ajax requests in Javascript (see [[http://engin.bzzzt.biz/2010/03/31/cross-domain-data-push-methods-compared/|this]] and [[http://www.arunranga.com/articles/browser-cross-site.html|this]] for a very good overview). >>> read more
Performance of key-value databases with php(August 03, 2010)
I discovered recently the old key-value database paradigm and I am quite convinced. But what about the performance of different implementations? This document presents a comparison in the context of PHP.
>>> read more
Martin's list of robot user agents(November 28, 2009)
This document lists patterns of HTTP user-agents used by robots/crawlers/spiders. I maintain this list regularly based on my own logs.
The list is now on Github [[https://github.com/monperrus/crawler-user-agents]]. >>> read more
The GOOGENC experiment : url-encoding strategies of Google(May 05, 2009)
This document presents an experiment to figure out what are the mechanisms used by Google to encode URLs. >>> read more