Monday, June 29, 2015

Yahoo! pipes is closing up

I rely quite a bit on Yahoo! pipes: that tool is useful to aggregate feeds and spit only the interesting entries.

Therefore their announcement that they were closing up took me by surprise.

I just coded a replacement. Don't expect bells and whistles. It is a trimmed-down version. Should I say bare-bones?

Let me introduce PyCeed. It provides:
  • A web server that serves configuration pages and aggregated feeds
  • and nothing else :-)

That server is meant to be self-hosted. I intend to do just that, with an actual feed reader in front of it.

Stay tuned!

Happy hacking.

Wednesday, June 17, 2015

JSON/R, epilogue

The great thing in the Java / Open Source world, is the ability one has to create and share artifacts.

JSON/R is now available, not only on Github (see my previous article), but also as a compiled artifact in Maven Central, hence only at a few XML lines away from your pom.

I hope it may be useful to someone.

Wednesday, June 10, 2015

JSON/R - the code

JSON/R now has a live repository: https://github.com/cadrian/jsonref

The license is MIT - very liberal. Improvements are welcome.

By popular demand, here is an example of a JSON/R string:

<{"timestamp":"3915-07-10T12:00:00.000","value":"a","class":"net.cadrian.jsonref.Pojo","reference":$1},{"timestamp":null,"value":"b","class":"net.cadrian.jsonref.Pojo","reference":$0}>

JSON/R

JSON is well and good, but it has one shortcoming: the management of object references. When you have to serialize an object graph, with object cycles, JSON is lost.

My client needed to serialize such a graph. So I wrote a JSON extension, dubbed "JSON/R" (JSON with references).

I wanted the parser to stay as pretty as the standard JSON's (see a previous article), with the same property: a parser with no backtrack.

I added two concepts: "heap" and "reference".

A "heap" is just an array with different brackets (< and >); its usage is that the objects in it are "referenced" by their position in the array. By convention, the root object of the graph is the first one, in other words, $0.

A "reference" is an index into the heap: noted $<integer>.

I should write a free parser too. The concept is basic enough to be quite useful.

Tuesday, June 2, 2015

Introducing yet another Continuous Automation Design

At work, they have server blades, terabytes of disks, multiple backups and failure plans, big architectures with continuous integration servers.

At home, I have a small ARM server (a Cubieboard II) running 24/7; and a family PC that usually runs only during the day.

Despite of the smallness of my home computing resources, I would like to work on my personal projects with a proper continuous automation system.

I have the following requirements:
  1. I want the system running at home, no SaaSS. Exit Travis and co.
  2. The system must be hosted on the server (ARM), and use as little resources as possible. Exit Jenkins, Teamcity, and others.
  3. I also want something a bit more sophisticated than a bunch of shell scripts glued together with a cron table.
  4. I want something distributed to make use of all my machines
  5. I want to code!

My solution: yaCAD.
  • Written in C, object-ish. Using 0mq, sqlite, JSON.
  • The server ("core") is as small as possible: scheduling and task distribution.
  • The slaves ("runners") will perform the actual task.
  • I also want a GUI (CGI?) for administration.

Only the "core" server is already coded. I still have to hack the "runner" slaves, and the GUI.

That's my pet project of the moment. Written in GPLv3, I'd be glad to accept any form of contribution.