This post introduces my Rust wrapper for ssdeep by Jesse Kornblum, which is a C library and program for computing context triggered piecewise hashes (CTPH). Also called fuzzy hashes, CTPH can match inputs that have homologies. Such inputs have sequences of identical bytes in the same order, although bytes in between these sequences may be different in both content and length. In contrast to standard hashing algorithms, CTPH can be used to identify files that are highly similar but not identical.
Read More
Category Archives: Software Engineering
Universal vs Forwarding References in C++
When talking about T&&
in C++, you may have heard about universal references and forwarding references. This may get you wonder. Why there are two names for an apparently same concept? Is there any difference between them? Which one should I use? Let’s find out.
Read More
Auto Type Deduction in Range-Based For Loops
Have you ever wondered which of the following variants you should use in range-based for loops and when? auto
, const auto
, auto&
, const auto&
, auto&&
, const auto&&
, or decltype(auto)
? This post tries to present rules of thumb that you can use in day-to-day coding. As you will see, only four of these variants are generally useful.
Read More
Git’s Patch Mode All the Way
If you have been using Git long enough, you have probably heard about git add -p/--patch
, which allows you to selectively stage parts of files. However, did you know that many other Git commands support this argument as well? Among them are commit
, reset
, checkout
, stash
, and log
, and they represent the main topic of the present post.
Read More
Things About Vim I Wish I Knew Earlier
I have been using Vim as my primary (and only) text editor since 2009. Over the years, I have discovered many useful things about Vim that I wish I knew earlier because they dramatically improved my text-editing efficiency. In this post, I would like to share the most important ones with you.
Read More
My Tmux Configuration
Tmux is a great tool that allows you to have separate terminal sessions inside a single terminal window. Inside each session, you can have multiple windows, and each window can be separated into multiple panes. Take a look at this screenshot to get an idea. In this post, I would like to share and explain my configuration of this tool. Hopefully, you will find some nice tweaks in there that will help you to speed up your workflow.
Read More
Structures and Member Initializers in C++
Since C++11, one can put the initialization of data members directly into structure or class definition. However, this change has consequences with regards to the construction of such structures. Indeed, by adding member initializers into a structure may render your previously working code non-compilable. In the present post, I describe this change, the related issues, and explain how to get around them.
Read More
A New Notification Plugin For WeeChat
In this post, I would like to present weechat-notify-send, a new WeeChat script that I wrote. It sends highlight and private-message notifications through notify-send.
Read More
My Git Configuration
I have been using Git extensively since 2011. Over the years, I have configured it to make myself more productive. In this post, I would like to share and explain my Git configuration with you. Hopefully, you will find some nice tweaks in there that will help you to speed up your workflow.
Read More
Using an Editor To Stage Files In Git
This post describes script git-edit-index that allows you to open an editor to stage or unstage files in Git, just like when you perform an interactive rebase. It thus represents a faster alternative to git add -i
or git gui
.
Read More