Link shared: https://www.reddit.com/r/cpp/comments/5z5r5i/boostoutcome_is_finished_boost_review_manager/?ref=share&ref_source=link One of those big ol personally momentus days today. In the wee small hours last night shivering in Clara's bedroom as I'd stayed there working on the laptop after putting her to bed and it got cold, I finally delivered my Outcome library to Boost peer review. That library has taken me two years of my free time to write, and a never ending long tail of incredibly boring minute detail over the past four months or so to actually deliver the thing.
I appreciate that this is going to be lost on pretty much everyone reading this, including the techies. So apologies in advance. However, marvel and stare in awe and wonder at this apparently simple-ish API reference page for Outcome's expected<T, E> as generated by doxygen. What makes it a wonder is that the damn thing is finally accurate and complete. And it has only taken me slightly over a month to achieve, requiring me to write a brand new C preprocessor in Python (https://github.com/ned14/pcpp) which is capable of intelligent partial execution.
Link shared: http://www.dabeaz.com/ply/ Still feeling poorly, aches, sweats and no appetite, and little energy. You have to fight yourself to do anything. Been like this for quite a few days now, and I'm looking forward to it lifting because it's highly non-helpful for productivity with the ACCU conference just a few weeks away now. Speaking of productivity, I am still (slowly) banging away on my Python C preprocessor during Clara naptimes.
Link shared: https://pypi.python.org/pypi/pcpp I'm sure you all remember me mentioning my current unemployment side project, a C preprocessor written in Python, and that by far the hardest part in it is correct function macro expansion. Indeed, Microsoft's preprocessor has long gotten it wrong, and it's worth looking into some of the problems. Superficially a C preprocessor looks very, very straightforward. It originated in the 1970s as a simple string match and substitute preprocessor, so: #define FOO foo printf("FOO is %d\n", FOO); … after preprocessing substitutes FOO for foo, but not in string literals (anything surrounded by double quotes), so output is: printf("FOO is %d\n", foo); You can implement one of those very easily, simply scan the line for string literals and replace them with placeholders, then scan the remainder for the macros you know about and substitute them, after restoring the string literals.
Link shared: https://pypi.python.org/pypi/pcpp I've been a little quiet on here of late since I came out of contract, and it's amazing how five weeks of unemployment have passed just like that. I had to relinquish my rented office inside town to conserve cash a little over two weeks ago, and since I've returned to being at home all day I've essentially become mostly a daycare worker. It's no bad thing, Clara gets taken out each day to do something with her Daddy, and she's very, very pleased about that.
Some interesting thermal results from the Galway passive house yesterday. First is that a thermal camera is deceptive at telling you how well insulated a house is. Below is the system built timber passive house we saw in infra red and visible, the temperature range goes between 3.0 C and 10.4 C, the walls are clearly 8.3 C. The third picture is my house last night, temperature range is nearly the same 3.0 C to 10.6 C with the walls at 8.2 C.
Final little demo of my new thermal camera is looking at the ceiling of the front room many hours after the heating has turned off. The FLIR One's camera is, as you've no doubt noticed, very low resolution, about 160 x 120. It also has a frame update rate of no better than 15 fps even when using the unofficial (paid) Android app I'm using below which unlocks quite a few features imposed on the device by US military technology export restrictions (I'm in Europe, so those don't apply to me, but the manufacturer which is US based must comply.
Link shared: https://github.com/ned14/boost-lite/blob/master/cmake/BoostLiteSetupProject.cmake#L9 Nailed this cunning piece of cmake hackery today, so I thought I would share it. It solves the problem of cmake annoyingly not supporting out of the box per-target setting of C++ exceptions on/off, C++ RTTI on/off and whether to use the static or dynamic C++ runtime. It also, very usefully, stops the warning MSVC makes about overriding the C++ exceptions enable that cmake enforces in the core compile flags on MSVC, this is amazingly useful when you turn on error on warnings and your C++ has exceptions disabled.
The holidays are over! Sun is just setting now after our short walk and just about to leave grandpa's for home. I don't return to work full time until Tuesday, but from then onwards it's very much back to the sixty hour weeks until the ACCU conference in April where I'll be presenting again this year. I think I'll be taking a break from CppCon this year so no Seattle in September, I don't have the free time this year to prepare material for it.
Link shared: https://gist.github.com/ned14/f261bfda5e376959ab3588242df0a1ef Every Christmas I try to get some essential technical infrastructure maintenance done, and most years it turns into something quite technically tricky which isn't easy to fix and usually involves writing a complex Python program in an area far from my normal expertise to solve. This is one such year. It's good training, and worth writing here about. For fifteen plus years now, my email client has been good old Win3.1 era Pegasus Mail (http://www.pmail.com/) which now contains maybe 30k archived emails.