Oscar Forner's personal websitehttp://oscarforner.com/rss/I am a software engineer at VCA Technology. Passionate about GNU/Linux and Open Source. Interested in system programming languages, operating systems and compilers.en-usTue, 22 Jan 2019 00:35:24 -0000Software development using Bashhttp://oscarforner.com/2018/02/24/Software_development_using_Bash
As for any other language I develop with, I like to make use of tools and utilities to
help me spot problems as soon as possible.
For that reason I like to have three things in all my projects:
Formatter
Linter (Static Analysis)
Unit Test Framework
When developing in Bash there is no difference in this regard. Some people would say
that Bash is just for scripting. I mostly agree with that statement,
however, sometimes you have to write a lot of Bash and for these cases I want
to be able to develop...http://oscarforner.com/2018/02/24/Software_development_using_BashInteractive Curriculum in Rusthttp://oscarforner.com/2017/09/23/Interactive_Curriculum_in_Rust
As we all know the process of looking for a job is hard. And you have to stand out from the crowd. Therefore, when I saw s0ulshake's CV I wanted to do something similar, but with other technologies (you know I do not know JavaScript) and add the ability to move forward and backward.
I decided to code it in Rust because I have been looking for an excuse to start using it and this was as good as any other excuse :D. The way to distribute the binary is using Docker.
How to run my CV application
In...http://oscarforner.com/2017/09/23/Interactive_Curriculum_in_RustMy two cents about Gohttp://oscarforner.com/2017/09/09/My_two_cents_about_Go
There is plenty of meterials such as talks, tutorials and posts talking about Go, but I want to give my opinion about what I think are the strenghts and weaknesses of Go.
Full disclosure: I do not use Go at work. I use Go in my personal projects. Therefore, take my opinions with a grain of salt.
Pros
Go is one of the best programming languages I have seen in my whole life. I think that because of the following characteristics.
Standard library
If you ever asked me "Which programming language has...http://oscarforner.com/2017/09/09/My_two_cents_about_GoBuilding my NAShttp://oscarforner.com/2017/08/13/Building_my_NAS
A Network Attached Storage (NAS) is a network appliance that contains one or more hard drives.
There are several things to take into account before building a NAS. For example, if you are going to build a NAS using parts from old computers or if you want to build a NAS with brand new parts. Another option is to buy an off the shelf NAS, but none of them, as far as I know, was using ZFS as their filesystem.
Building a NAS
There is plenty of documentation, guides and tutorials about how to build...http://oscarforner.com/2017/08/13/Building_my_NASNew website using Python, HTML5 and CSShttp://oscarforner.com/2017/06/14/New_website_using_Python__HTML5_and_CSS
My new website has reached the point where it has all the minimum features required to work. In this post, I talk about the reasons for creating it and what the used design and technology are. The code of my website can be found in my GitHub.
Why create a website from scratch?
My first blog was hosted in blogspot, but it was too limiting in what can be done in the blog and the theming.
The next iteration was in GitHub. In this case, I had more freedom regarding the hosting and theming, but it was...http://oscarforner.com/2017/06/14/New_website_using_Python__HTML5_and_CSSBoost ASIO basicshttp://oscarforner.com/2017/01/21/Boost_ASIO_basics
Boost ASIO library is the defacto standard for network and low-level I/O programming. It has a great documentation available online, but there are a lot of methods and classes in the library. Therefore, if it is your first attempt to use it, it can be a bit challenging.
Since there is a lot of ground to cover in the Boost ASIO library, I will only cover the work scheduler and the synchronous methods in this post. The asynchronous methods and timers will be covered in following posts.
During this...http://oscarforner.com/2017/01/21/Boost_ASIO_basicsThread, future and promisehttp://oscarforner.com/2016/09/11/Thread__future_and_promise
In the C++11 standard several concurrency related classes were added. I will talk about thread, future and promise. Yes, I know there are others more useful than these three. However, I think that it is really important to know well the bases to be able to use the more complex ones properly.
As usual, I am working from an Arch Linux computer. Therefore, I can install Clang and the tools from the repository (clang). For other distributions you can find the information in the documentation.
As always,...http://oscarforner.com/2016/09/11/Thread__future_and_promiseClang sanitizershttp://oscarforner.com/2016/07/13/Clang_sanitizers
Clang is a compiler front end for the C, C++, Objective-C and Objective-C++ programming languages. It uses LLVM as its back end. In this post I talk about some of the sanitizers available in Clang (some are avilable in GCC as well). They help you detect problems at run time (dynamic analysis).
As usual, I am working from an Arch Linux computer. Therefore, I can install Clang and the tools from the repository (clang). For other distributions you can find the information in the documentation.
As always,...http://oscarforner.com/2016/07/13/Clang_sanitizersLambda expression comparison between C++11, C++14 and C++17http://oscarforner.com/2016/05/14/Lambda_expression_comparison_between_C__11__C__14_and_C__17
In this post I talk about what has been added in the C++ standard regarding lambda expressions since they were introduced in C++11.
All the code and configuration files used in this post are available in this
repo in GitHub.
What is a lambda expression?
A lambda expression is a simplified notation for defining and using an anonymous function object. Instead of defining a named class with an operator(), later making an object of that class and finally invoking it.[^1]
I do not explain all the options...http://oscarforner.com/2016/05/14/Lambda_expression_comparison_between_C__11__C__14_and_C__17ARM C Compiler (ACC) - Basic Compiler IIhttp://oscarforner.com/2016/04/20/ARM_C_Compiler__ACC____Basic_Compiler_II
I am working on a pet project to create a C compiler for the ARM architecture. You can find more information about this topic in my previous post ARM C Compiler (ACC) - Basic Compiler I.
The source code of this project can be found in GitHub.
What is the current state of the project?
Currently, I have implemented a very basic compiler, this version is available in GitHub as v0.2. Basic compiler able to handle a single file with a main function (without parameters) and if/else statements with simple...http://oscarforner.com/2016/04/20/ARM_C_Compiler__ACC____Basic_Compiler_II