The Lone C++ Coder's Blog from The Lone C++ Coder's BlogI’ve moved from using Apache as a web server to nginx for various projects. The machines I’m running these projects on are a somewhat resource constrained and nginx deals with low resource machines much better than Apache does and tends to serve content faster in those circumstances. For example switching the machine that hosts this WordPress blog from Apache and mod_php to nginx with php-fpm improved the pingdom load times on this blog by about 30% with no other changes.
Writing: More magazine columns
Pete Goodliffe from Pete Goodliffe
I've been remiss at posting news of my recent magazine columns.
C Vu issue 27.2 carried a column entitled Wallowing in Filth, about how to deal with messy code. C Vu 27.3's column was called Coding Dinosaurs, and discussed how to avoid become an extinct coder.
Language lawyers – or why words can have precise meaning
Frances Buontempo from BuontempoConsultingI was called a language lawyer the other day, because I attempted to be precise about the state of play with some code. Initially I was taken aback, but eventually concluded that the phrase "language lawyer" was not being used precisely. It was used in the sense of, "Saying exactly what you mean." If I had clarified this the self-reference may have meant I got lost down a rabbit hole, so I left it.
The situation came about because a co-worker is changing some code in a repo which has a few unit tests, but due to circumstance I won't bore you with the code is in two repos - one has the tests and the other doesn't. I have been tasks with getting tests round any code changes he makes. I am therefore working in the repo with the tests. He, of course, has decided to work in the repo without tests so doesn't know if his code changes break any existing tests.
It's like pair-programming but we have to talk in words rather than code.
I cannot manage to guess what his code changes might do to the tests. This would be so much easier if he ran the tests as he changed the code. In fact, by definiton, refactoring should involve running the tests as you go. Trying to ask questions like "Have you deleted the isValid function or changed its behaviour?" in order to try to get the tests to match his changes have resulted in answers like "No, well a bit, but I haven't decided yet."
My attempted to print off the test names so we could discuss how the code actually behaved before the changes have been met with ,"I haven't looked at the tests yet - I'd need to look at the code to see what they test." I think the tests have really clear names - like FooWithDefaultDateIsNotValid, He could look at the test code but I was rather hoping this was clear enough. I tried asking what new test *names* we might need, but got no-where. He did suggest I check the private container didn't contain any default dates - and offered to add a getter so I could verify this from outside the object in test code. I muttered something about encapsulation and seppuku and encapsulation.
I'm not sure if this is happening because people are used to function names making no sense and figuring out one line at a time in a debugger, or if some people genuinely don't think in words. It's very difficult to communicate if people assume you aren't saying what you mean, realise you are and then call you out for trying to be clear.
Embedding YouTube vidoes via org-mode
The Lone C++ Coder's Blog from The Lone C++ Coder's BlogArtur Malabarba over on Endless Parentheses has a short post about embedding a YouTube video directly from org-mode. I haven’t tried using it in org2blog yet, but I’m hoping/expecting that it’ll work there, too. It’s a very timely post as I’ve got a couple of Emacs related short video tutorials planned that would really benefit from being directly embedded on the blog here.
Building Emacs on OS X using homebrew
The Lone C++ Coder's Blog from The Lone C++ Coder's BlogI’ve recently switched to using homebrew as my source for Emacs on OS XÂ after seeing this blog post by Philip Ingram. It’s a simple way to install a current Emacs once or twice a year. I don’t use beta versions or other pre-release versions, only released versions. My editor is too important a tool for me to risk using pre-release versions.
Good analysis on the Android security ecosystem
The Lone C++ Coder's Blog from The Lone C++ Coder's BlogI recently blogged about Google and Samsung starting to offer regular security patches for their Android devices. Over on ars technica, Ron Amadeo has an interesting article describing why the current Android ecosystem is not conducive to the quick and widespread distribution of security fixes and why this needs to change, urgently. At this point in time it seems that in order to be halfway secure, one has to basically root the phone and run well-tested and well supported distribution like CyanogenMod.
An elegant way to extract keys from a C++ map
The Lone C++ Coder's Blog from The Lone C++ Coder's BlogI’ve been doing a reasonable amount of Clojure development recently and like a lot of other Lisp dialect have marveled at the ease of separately pulling out the keys and values from a map. This is a very common operation after all, but C++ does only appear to support manual key or value extraction from a std::map. Obviously the code isn’t hard to write. In C++11, the following function will return a vector of all keys in a map:
Why I’m suspicious of car insurance dongles
The Lone C++ Coder's Blog from The Lone C++ Coder's BlogSome security researchers from UCSD showed a proof of concept exploit via one of the dongles that appears to be also used by car insurance companies to monitor your driving “to give you discounts for good driving”. I’m not really a fully paid up subscriber of the tin foil hat brigade but stuff like this makes me glad that I’m still opting for the old-fashioned way of paying for car insurance.
Scheduling WordPress posts with org2blog
The Lone C++ Coder's Blog from The Lone C++ Coder's BlogAnother metablogging post, but this may come in handy for people who like to produce blog posts in bulk and schedule them for publication in WordPress at a later date. In my case, my ability to find time to blog is directly correlated to my workload in my day job. That’s why you see regular gaps in my posting that may last for a few weeks to a month or two.
TLS issues with Emacs and Git for Windows
The Lone C++ Coder's Blog from The Lone C++ Coder's BlogI’ve recently blogged about adding TLS support to Emacs 24.5 on Windows and improving git performance on Windows by installing an alternative git command line client. The reason I ended up investigating how to add SSL and TLS support to Emacs is that when I originally upgraded from the official git Windows client to the Git for Windows build, I ended up with non-working TLS support in Emacs. The TLS issues only occur if you tell the git installer to add git and all supporting Unix utilities to the path, which is not the default setting for a git installation on Windows.