diff options
author | Nicolas Dato <nicolas.dato@gmail.com> | 2025-08-16 20:29:18 -0300 |
---|---|---|
committer | Nicolas Dato <nicolas.dato@gmail.com> | 2025-08-16 20:29:18 -0300 |
commit | 55fba6351e47f305624a65db56ac4e23eaeb3b90 (patch) | |
tree | 43598b6a58ace66f092ce60ac7e8e0884a51a8aa /zola | |
parent | 5f04ddbebabfc084c3f6a4898ca1e0731838f5eb (diff) | |
download | ndato.com-55fba6351e47f305624a65db56ac4e23eaeb3b90.tar.gz |
adding projects section with libtuberia
Diffstat (limited to 'zola')
-rw-r--r-- | zola/content/_index.md | 6 | ||||
-rw-r--r-- | zola/content/projects/_index.md | 4 | ||||
-rw-r--r-- | zola/content/projects/libtuberia.md | 74 | ||||
-rw-r--r-- | zola/templates/base.html | 1 |
4 files changed, 82 insertions, 3 deletions
diff --git a/zola/content/_index.md b/zola/content/_index.md index 27430c2..712dcb7 100644 --- a/zola/content/_index.md +++ b/zola/content/_index.md @@ -4,11 +4,11 @@ title = "Home" ## About this site -You can find articles [in the articles section](articles), this is about software development. Also, between 2020 and 2022 I wrote Linux articles for the [Baeldung](https://www.baeldung.com) website, [you can read them here](https://www.baeldung.com/linux/author/nicolasdato). +When I'm confident enought about some never-ending-never-completed side projects, I post them to [the projects section](/projects) and/or push them to [my gitweb](https://git.ndato.com). -And I may write general stuff and thoughts [in the blog section](blog). +You can find articles [in the articles section](/articles), this is about software development. Also, between 2020 and 2022 I wrote Linux articles for the [Baeldung](https://www.baeldung.com) website, [you can read them here](https://www.baeldung.com/linux/author/nicolasdato). -When I'm confident enought about some never-ending-never-completed side projects, I push them to [my gitweb](https://git.ndato.com). +And I may write general stuff and thoughts in [the blog section](/blog). ### About this site design diff --git a/zola/content/projects/_index.md b/zola/content/projects/_index.md new file mode 100644 index 0000000..507ad9b --- /dev/null +++ b/zola/content/projects/_index.md @@ -0,0 +1,4 @@ ++++ +title = "Projects" +sort_by = "update_date" ++++ diff --git a/zola/content/projects/libtuberia.md b/zola/content/projects/libtuberia.md new file mode 100644 index 0000000..8c4971a --- /dev/null +++ b/zola/content/projects/libtuberia.md @@ -0,0 +1,74 @@ ++++ +title = "libtuberia" +date = 2025-08-07 +authors = ["Nicolás Dato"] +description = "A library to implement a pipeline" +draft = true + +[taxonomies] +Tags=["C", "Libraries"] ++++ + +This project is also available at Savannah: <https://savannah.nongnu.org/projects/libtuberia/>. + +## About libtuberia + +*libtuberia* is a library in C to implement a pipeline. + +A pipeline would be: + +*[Source] -> [queue_1] -> [Stage_1] -> [Queue_2] -> [Stage_2] -> [...] -> [Sink]* + +Each source, stage, and sink runs in a thread, reads from its input queue, processes the element, and write the result to the output queue. + +### Motivation + +A few years ago I learned about the pipeline in the CPU, and superscalar processors. Including interesting topics like Tomasulo's algorithm. I thought it was a good idea to do something similar in software. + +### When to use libtuberia + +You can benefit from this library when you have a several tasks than can run in parallel (or 1 task that you can split), and the output of one task is the input of the next task. + +Instead of running them sequentially, you can run them in parallel with libtuberia. This way, as long as there are elements to be processed, all tasks will be running in parallel without waiting. While the second stage (task) of the pipeline is working on some input, the first stage can work on the next input. If this were done sequentially, the next item would have to wait until the previous item finishes the whole process. + +With libtuberia you don't have to worry about threads nor queues, libtuberia does it for you. + +## Get it + +### v0.1.0 + +- <https://download.savannah.nongnu.org/releases/libtuberia/libtuberia-0.1.0.tar.gz> ([gpg sig](https://download.savannah.nongnu.org/releases/libtuberia/libtuberia-0.1.0.tar.gz.sig)) + +### Git + +- <https://git.ndato.com/libtuberia> (you can also browse it without cloning using the same link) +- Mirror: <https://git.savannah.nongnu.org/git/libtuberia.git> + +## How to use libtuberia + +### Documentation + +You can read a quick guide [in the "about" page of my git](https://git.ndato.com/libtuberia/about/), which is [the README.md file](https://git.ndato.com/libtuberia/tree/README.md). There you will find how to compile it, and a quick guide. + +Also, the [tuberia.h file](https://git.ndato.com/libtuberia/tree/src/tuberia.h) has every structure and function documented. + +And finally, if you had [Doxygen](https://www.doxygen.nl) when installing libtuberia, a man page `tuberia.h` is also installed (you can read it with `man tuberia.h`) and a .html is installed in `/usr/doc/libtuberia/doxygen_html/index.html` + +### Examples + +There are two examples: +- A simple and quick usage that doesn't do anything useful: <https://git.ndato.com/libtuberia/tree/example/simple.c> +- A more complex and useful example that resizes a video file: <https://git.ndato.com/libtuberia/tree/example/decode_resize_encode.c> + +Both examples are installed in `/usr/doc/libtuberia/example/` + +## Bugs + +You can submit bugs at Savannah: <https://savannah.nongnu.org/projects/libtuberia/>. + +## Future work + +- Implement more complex pipelines + - A stage can choose the next stage + - More than one thread per stage + diff --git a/zola/templates/base.html b/zola/templates/base.html index ac4b138..97762c5 100644 --- a/zola/templates/base.html +++ b/zola/templates/base.html @@ -21,6 +21,7 @@ <nav title="Navigation Menu"> <menu> <li><a href="/">Home</a></li> + <li><a href="/projects">Projects</a></li> <li><a href="/articles">Articles</a></li> <li><a href="/blog">Blog</a></li> <li><a href="https://git.ndato.com/">Git</a></li> |