Building TA-Lib with Github Actions

TA-Lib and Github Actions TA-Lib is a popular C-based technical analysis library, often used with a Python wrapper. GitHub Actions is a CI/CD platform to automate workflows. This blog uses it for automation. CI Steps for TA-Lib Add the following steps to your CI workflow: - name: Cache TA-Lib id: cache-talib uses: actions/cache@v2 with: path: ta-lib key: ${{ runner.os }}-talib - name: Build TA-Lib if: steps.cache-talib.outputs.cache-hit != 'true' run: | curl -L http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz -o ta-lib-0.4.0-src.tar.gz tar -xzf ta-lib-0.4.0-src.tar.gz cd ta-lib ./configure --prefix=/usr make - name: Install TA-Lib run: | cd ta-lib sudo make install Summary Cache TA-Lib: Speeds up builds by avoiding redundant downloads. Build TA-Lib: Downloads and compiles the source if not cached. Install TA-Lib: Installs the compiled library. This setup reduces CI runtime by caching and reusing builds. ...

January 10, 2022 · Florent Clairambault

Cassandra on droid.io

droid.io is an other travis clone. I gave it a try to execute some automated tests on top of cassandra. Unfortunately it doesn’t support cassandra out of the box. But adding support for it is in fact quite easy. ...

March 3, 2014 · Florent Clairambault

Let’s GO

Why should you spend time learning go ? ...

January 18, 2014 · Florent Clairambault

To all my dear pure C developers

Dear C Developers, I’ve spent a good amount of time integrating various C codebases into production-ready software. It’s an interesting challenge, but I often face a few common pain points during the initial stages. Here are some tips that I believe will save us all a lot of time and headaches. Improve Your Logs Many C developers still rely on basic fprintf(stderr, ...) for logging errors. Consider using a more sophisticated logging approach, such as this one. At a minimum, include __FILE__ and __LINE__ macros to make debugging easier for everyone. ...

December 15, 2013 · Florent Clairambault

Accelerating software/product development through continuous integration

The developer are the ones who build thing that run by themselves (which they should be proud of, they are makers). But they often forget about automatizing the build process. Some people like to do the same task over and over, if these people happen to be developers, they should be fired. Frequently following the same tasks to reach a goal is something that a computer can do, that’s what they were invented for. And if you spend time doing it, you should be fired. ...

November 17, 2013 · Florent Clairambault

OpenSSL CA certificates indexation

OpenSSL can use a CAPath to search for certificates to index, but you could overlook how it actually searches for them. You can specify a CAPath in openSSL by using the function SSL_CTX_load_verify_locations, but it won’t work as is. As described in this page, it will need the certificates to be rehashed with the “c_rehash .” command. Except on some environment like many embedded devices (the one you put busybox on), you can’t use it because it’s way too heavy (or not worth installing). You can do the same thing by issuing these commands: ...

November 13, 2013 · Florent Clairambault

Cassandra CQL3 internal data structure

I’m a huge fan of cassandra, I’ve been playing with it since 0.7 and I’ve never stopped using it. It would say it’s most amazing features are: Always working and simple replication + predictable performances. I was very happy when it went from a key-value store to a well structured database with CQL. With CQL you can focus on your data, and less on how you should organize your own structure to handle it properly. Still, behind the wheels, it works the same (it’s still a KV store). That’s why it’s very important to understand how the internal structure is done: ...

August 13, 2013 · Florent Clairambault

Pieter Hintjens is a smart guy

I’m very interested by everything around internet of things technologies (M2M). And the components I like to follow closely are the distributed databases which allow to make timeseries without single point of failures like cassandra and hbase and the message broker like RabbitMQ and ZeroMQ. This little video isn’t really about ZeroMQ, it’s more about how build a community around a project. Personal creativity is great thing, we can all experience it some way or an other. Creating in a team gives you some new perspectives on how you can make better things (and, usually, be a better person). But creating as part of a community of people you don’t known and share your ideas/experiments/knownledges/insights with them is amazing. How to compile everyone’s mind into something better. I’ve personnaly had the best fun building things that evolved with time, on a daily basis. You know the agile methodology when you use it for real. ...

July 13, 2013 · Florent Clairambault

You can do any kind of project with any language

Our language helps us express our ideas and emotions. Computer science languages help us build things following our ideas. There are hundreds of computer science languages currently available to help do pretty much any kind of work. They were all built because (at least) one person once thought “this language isn’t good enough”. I often like to compare the capabilities of languages like C/C++, C#(.Net)/java, scala/python/ruby, javascript/coffeescript, etc. And I’m always amazed how the smallest changes that were brought to existing languages allowed to gain in efficiency and clarity. ...

July 6, 2013 · Florent Clairambault

Deploying your maven web apps on glassfish with jenkins

Simple deployment If you installed your Jenkins CI on the same host as the Glassfish server, this is easy. You just have to let maven do its thing and then add this shell command: /usr/local/glassfish/bin/asadmin --echo=true --host=localhost --port=4848 --user=admin --passwordfile=/secure/place/for/passwords/domain1_password --secure=false deploy --force=true --name=myproject --contextroot=/myproject target/*.war The /secure/place/for/passwords/domain1_password file should contain this: AS_ADMIN_PASSWORD=the_password Deploying different versions With parametrized builds, you can go a little further and decide, for instance, if you want to deploy the current version as the production one or not. You can switch the build as a parametrized one and add a “stable” parameter (with a default value of false), for example. ...

June 28, 2013 · Florent Clairambault