Posts

CMake configuration for reproducible builds of C++ projects with gcc/Linux

This is a quick guide for configuring CMake such that every rebuild of the same C++ code generates bit-by-bit identical binaries. This is useful in verifying if a given binary is indeed generated from the given sources and comes in handy for configuration control. This article is not a detailed documentation on the reasons or mechanisms that cause binaries to differ from build to build nor the rationale behind the countermeasures explained in great detail. That information is already covered elsewhere and a few helpful links are provided in the end. This post is made because all of this information was not available in one place. In general, the same C++ code should generate the same executable (or library) every time it is compiled using the same build system on the same platform. But in practice, several factors cause the final binaries to differ. There are a few things developers need to take care of to avoid these: Eliminate differences due to build path. target_compile_options(

qView - a simple, fast image viewer for Linux

Image
qView is a simple, minimalistic and fast image viewer for Linux, Windows and macOS. It's built using Qt and is GPL v3 licensed free software. It supports pretty much all features that one expects from a fast and no-nonsense image viewer. It has replaced Gwenview as the default image viewer on my KDE Plasma Fedora desktop. Gwenview is of course more feature-rich and fancier, but I like qView for simply viewing and cycling through images.

Dangerous ride with a worn out motorcycle tyre - lesson learnt!

Image
My Mahindra Mojo had munched over 11,000km and my rear tyre had been almost completely worn out. The Mojo comes with Pirelli Diablo Rosso 2 which are soft-compound tyres. That meant they would offer great grip on the roads, but would wear out faster. My rear tyre was worn out way beyond the limit indicated by the Tread Wear Indicators and at one or two places, the steel radial wires were slightly visible. That's terrible, I know! My daily rides were limited to 5-6km through private roads and so I felt lazy and put off replacing the tyre. And one day, this happened! A few weeks back, one fine morning, I got a call from a friend to go on a bike trip to Hoggenakkal , which is around 140km from my place. Against my better judgement, I agreed and we rode to Hoggenakkal. Throughout the ride, we were mindful of the tyre condition. Anyway, the onward ride was uneventful and Hoggenakkal was terrible and disappointing (borderline disgusting). On our ride back to Bengaluru, we got h

മിയ എന്ന പൂച്ചക്കുട്ടി

Image
മൂന്ന് വര്‍ഷങ്ങള്‍ക്ക് മുമ്പാണ് അഷ്ടമൂര്‍ത്തി സാറിന്റെ ഒരു കുറിപ്പിലൂടെ CP റോജന്‍ എഴുതിയ " മിയ എന്ന പൂച്ചക്കുട്ടി " എന്ന പുസ്തകത്തെക്കുറിച്ച് അറിയുന്നത്. തിരുവനന്തപുരത്ത് ഒന്ന് രണ്ട് പുസ്തകക്കടകളിലും പിന്നെ പല ഓണ്‍ലൈന്‍ കടകളിലും അന്വേഷിച്ചിട്ട് പുസ്തകം കിട്ടിയില്ല. അവസാനം ഞാന്‍ ഫെയ്സ്ബുക്കിലൂടെ ശ്രീ റോജനുമായി ബന്ധപ്പെട്ടു. പുസ്തകം തിരുവനന്തപുരത്ത് എവിടെക്കിട്ടുമായിരിക്കും എന്ന ചോദ്യത്തിന് "വിലാസം തരൂ ഞാന്‍ അയച്ചുതരാം" എന്നായിരുന്നു മറുപടി. അക്കൗണ്ട് വിവരങ്ങള്‍ തന്നാല്‍ പുസ്തകത്തിന്റെ വില ഞാന്‍ തരാം എന്ന് പറഞ്ഞപ്പോള്‍ "ആദ്യം വായിക്കൂ, എല്ലാത്തിനും സമയമുണ്ട്" എന്ന മറുപടി. എന്നാല്‍ ശരി ബാക്കി വായിച്ചിട്ട് അറിയിക്കാം എന്ന് ഞാനും പറഞ്ഞു. പുസ്തകം വന്നു. വായിച്ചു. ഒരുപാട്, ഒരുപാട് ഇഷ്ടപ്പെട്ടു. പക്ഷേ റോജനെ അറിയിക്കാന്‍ ഏതോ തിരക്കിനാല്‍ വിട്ടുപോയി.  ഇതെല്ലാം നടക്കുന്നത് 2016 സെപ്റ്റംബറില്‍. വളരെ മോശമായിപ്പോയി എന്ന് ഞാന്‍ എന്നോട് തന്നെ ഇടയ്ക്ക് ഓര്‍മ്മവരുമ്പോള്‍ പറയും. ഇത്രയും കാലം കഴിഞ്ഞിട്ടും ഈ പുസ്തകവും എഴുത്തുകാരനും പക്ഷേ മനസ്സില്‍ നിന്ന് മാഞ്ഞില്ല. അത്

Qt - Enabling qDebug messages and Qt Creator

I have been struggling for the past two hours to get qDebug() messages from my Qt 5 application to show up on the 'Application output' pane in Qt Creator IDE on Linux. Finally I found a solution, thanks to a user on Qt IRC channel. To enable log messages in Qt, do the following: Edit ~/.config/QtProject/qtlogging.ini and make sure it has: [Rules] *.debug=true qt.*.debug=false With this, I was getting the messages when I run the application from a terminal. But Qt Creator was not showing the qDebug() messages. To have the messages displayed in Qt Creator, do the following: Qt creator > Tools > Options > Kits, select your kit, find Environment, click change and add: QT_ASSUME_STDERR_HAS_CONSOLE=1 This fixed the problem for me. I thought I should document the full process here as Google wasn't getting me good leads. My environment: Fedora 29 Linux x86-64 Qt 5.11.3 Qt Creator v4.7.2 References: https://bugzilla.redhat.com/show_bug.cgi?id=12272

ബിഗ് റേഡിയോ ഇതിഹാസം

ഇന്ന് തിരുവനന്തപുരത്ത് 92.7 ബിഗ് എഫ്എം റേഡിയോ പരിപാടിയില്‍ കേട്ടത്..  പരിപാടി: " സ്വീറ്റ് ആന്‍സി " അവതരിപ്പിക്കുന്ന റിക്വസ്റ്റ് രാഗ, യെസ് ഓര്‍ നോ ഗെയിം ... സ്വീആ: ഹലോ, ആരാ വിളിക്കുന്നത്?  റസാക്ക് സ്വീആ: റസാക്ക് അല്ലേ.. "റസാക്കിന്റെ ഇതിഹാസം" വായിച്ചിട്ടുണ്ടോ? റസാക്ക്: ഇല്ല സ്വീആ: എന്താ റസാക്കേ, സ്വന്തം പേരില്‍ ഒരു പുസ്തകമൊക്കെ ഉള്ളപ്പോള്‍ അത് വായിക്കണ്ടേ? റസാക്ക്: ങേ? ... സ്വീആ: അപ്പോള്‍ റസാക്കിനും റസാക്കിന്റെ ഇതിഹാസം ഇഷ്ടപ്പെടുന്ന വായനക്കാര്‍ക്കും വേണ്ടി ഈ പാട്ട് ഡെഡിക്കേറ്റ് ചെയ്യുന്നു... ...  വാല്‍:  മഹാനായ എഴുത്തുകാരന്‍ പിണറായി വിജയന്‍ എഴുതിയ "റസാക്കിന്റെ ഇതിഹാസം" എന്നോ മറ്റോ പറയാതിരുന്നത് തന്നെ ഭാഗ്യം ...  ചോദ്യം: 'ചങ്ങമ്പുഴ' എന്ന കവിത എഴുതിയത് ആരാണ്? ഉത്തരം: അങ്ങനെയൊരു കവിതയുണ്ടെങ്കില്‍ അതെഴുതിയത് രമണനായിരിക്കും! (കടപ്പാട്: കണ്ട് മറന്ന ഒരു പഴയ മലയാളം സിനിമ)

ജനറേഷന്‍ ഗ്യാപ്പ്

Image
ഇന്നലെ വൈകുന്നേരം വണ്ടിയോടിക്കുമ്പോള്‍ കേള്‍ക്കാനിടയായ തിരുവനന്തപുരം അനന്തപുരി FM-ന്റെ ഫോണ്‍-ഇന്‍ പരിപാടിയില്‍ നിന്ന്. പരിപാടി അവതരിപ്പിക്കുന്നത് താമരശ്ശേരി നീലാംബരന്‍ സാര്‍. --------------------------------------------------------------- നീലാംബരന്‍ സാര്‍: ഹലോ.. രാഹുല്‍: ഹലോ.. ... സാര്‍: മോന്‍ ഏത് ക്ലാസ്സിലാ പഠിക്കുന്നത്? രാഹുല്‍: ഏഴാം ക്ലാസ്സില്‍ സാര്‍: പഠിത്തമൊക്കെ എങ്ങനെ പോകുന്നു? ക്ലാസ്സില്‍ രാഹുല്‍ എത്രാമനാ? (മലയാളത്തിന് നന്ദി. ഇംഗ്ലീഷില്‍ ഇത് ചോദിക്കാന്‍ കുറച്ച് കഷ്ടപ്പെട്ടേനേ..) ഒന്നാമതാണോ? രാഹുല്‍: അല്ല. ഞാന്‍ രണ്ടാമനാ സാര്‍: രാഹുല്‍ നന്നായി പഠിച്ച് വേഗം തന്നെ ഒന്നാമനാകണം. കേട്ടോ.. രാഹുല്‍: ശരി (?) സാര്‍: രാഹുലിന് ഏത് വിഷയമാണ് ഏറ്റവും ഇഷ്ടം? രാഹുല്‍: സയന്‍സ് സാര്‍: ആഹാ.. വലുതാവുമ്പോള്‍ മോന് ആരാകണമെന്നാ ആഗ്രഹം? രാഹുല്‍: കാര്‍ട്ടോഗ്രാഫര്‍! സാര്‍: ങേ? ജെബാ? രാഹുല്‍: കാര്‍ട്ടോഗ്രാഫര്‍ (?) സാര്‍: ഏ? ങ്ഹാ.. അതാകാനാണല്ലേ ആഗ്രഹം.. ശരി ശരി.. മോനേത് പാട്ടാ വേണ്ടത്? (ഹാവൂ..) ... സാര്‍: ബ്ലഡി ഔട്ട്സ്പോക്കണ്‍ കാര്‍ട്ടോഗ്രാഫേഴ്‌സ്! (എന്ന് മനസ്സില്‍ പറഞ്ഞിട്ടുണ്ടാകണം