tl;dr Thought some old code for calculating confidence limits for the mean of a lognormal distribution was lost. Found it yesterday.
A while back, I had started a little web app, the idea of which was to help you save a little money by not buying the odd thing here and there.
The app is called "Didn't Get It", and it is available at https://didntgetit-bflnni.rhcloud.com/.
The goal is to have an efficient, low-transaction-cost way to record when you decided not to spend money on some little thing. This is intended especially for use on your phone at the instant when you are deciding to spend a few bucks or not. You can even add a button on your home screen that takes you directly to the site (see here for how to set that up).
This would let you get encouraging feedback as you see how those little "Didn't Get It" moments might add up.
Recently, I added a few new features to a d3-based family tree visualization I have been playing with (available at https://learnforeverlearn.com/ancestors/). This note summarizes a few notes from the road.
green bars on right axis indicate family/historical events,
which can be viewed by mousing over the axis
I'm already doing a lot of stuff when the page is first loaded, and so when I wanted to incorporate family events parsed from the current GEDCOM file, I figured that I should offload this work to web worker. I had used web workers before on the "When Will I Win" lottery apps, and the responsiveness of the web page was amazing while the web worker was cranking along.
I am now adding little green svg rect's on the time-axis to alert the user that there family events that might be of interest at those years.
I had to get in and muck with the relevant transforms being applied during pan and zoom to keep these little bars affixed in the same place along the axis. In the end, this seems to work pretty well.
Of course, I need still need to maintain the pixel-size of nodes during zoom, but that is another matter to deal with.
This one really had me scratching my head.
Suddenly, something wasn't working, and when I delved into it I noticed that the array of children for a node in the tree did not exist. This made no sense because I had initialized all of these to zero-length arrays.
Now, I could have gone ahead and just check for the array not existing, but I had no idea how it could have disappeared, and wondered if I was inadvertently deleting it somewhere, or a confused use of this was overwriting it to something else - and I was concerned that if I were causing this to happen there could be other problems later.
After a good bit of debugging later, I realized that d3's tree.nodes method will - for whatever reason - delete any children arrays that are zero-length. Once I saw that (and after I had confirmed that I wasn't messing with this array anywhere), I added a check that guards against the child array not existing.
This was a pretty big whew - experienced while driving through Chattanooga on our way back to Knoxville from Destin.
Note: I have extended this to a visualization for the entire world, which is on googledrive here . Recently, I was wondering how what it ...
Note (Nov 16, 2013): I am gradually tweaking this to look a little better on some mobile devices. This visualization also requires signif...