in #newsletter #c
This month I got into C programming and Computer, Enhance! again.
One program that I worked on was a program to print unique lines:
rick@fedora:~/projects/cunique$ cat test.txt hello world hello there rick@fedora:~/projects/cunique$ ./cunique <test.txt hello world there
I managed to write it, but I also wanted it to perform well. When I tried the above with a 1GB file it seemed to take forever, but my Python equivalent finished in around 5s.
That made me feel discouraged and made me think that I should work more on Computer, Enhance! before I think I have an idea about how to write performant C code.
So that is what I did.
I started and finished part 2 where you end up writing a block profiler to instrument code. I published mine at rlprofiler. I'm sure it will continue to evolve as I get further into the course and use it for more projects.
The profiler is written as a library that should be easy to deploy in C applications. I'm struggling a bit how to design C libraries. It is different from the OOP style that I'm used to. But it is also fun.
Then I started on part 3 where you write a "repetition tester". I based mine on rlprofiler. I might integrate it into rlprofiler. The idea behind a repetition tester is that there is too much variability when you time a piece of code. The time might depend on OS and CPU caches for example. By doing a test over and over again, we can see how our code performs given that those external factors are totally in our favor.
I want to design the repetition tester as a library as well. And again I'm struggling with the interface. One way to flesh out the interface is to use it in more applications. So perhaps a next step is to deploy my profiler and repetition tester in rlworkbench.
Everything is suddenly coming together. One of my projects feeds the next and so on. And as suddenly, I might get sidetracked with another interest.
Being immersed in C this month inspired me to write the following blog posts:
Lastly, I made a release of Timeline. The updated release instructions worked fine with the new code hosting platform.
Here are the things that I'm currently most interested in working on next month:
Deploy my profiler and repetition tester
Think about how to use it to create a game dev environment for kids
Start using rlworkbench instead of Vim as my default text editor
Implement the features that I'm missing
Search function for quicker navigation
Ability to open files
w and b to move forwards/backwards a "word"
A "word" should be defined by the language?
Migrate all blog posts to it
Fix redirects
For blog posts
For pages: rickardlindberg.me/projects/x -> projects.rickardlindberg.me/x
Same for tags?
Syndicate projects to Github
Display mentions on blog posts
Better handling of dates (use date of post if present)
Make different post types render nicely
Icons?
Continue course and do more homework
What is Rickard working on and thinking about right now?
Every month I write a newsletter about just that. You will get updates about my current projects and thoughts about programming, and also get a chance to hit reply and interact with me. Subscribe to it below.