HNHacker News
TopNewBestAskShowJobs

bluesmoon

4,383 karma · joined January 2, 2010

[ my public key: https://keybase.io/bluesmoon; my proof: https://keybase.io/bluesmoon/sigs/zjNc0lEla9p9TSEm8TeHw-BkA0ot1GazUD9QPGq2qAI ]
submissionscomments
bluesmoon··on Jerrycan
Older folks in India still refer to these as Jerrycans. We used to use them to hold kerosene when I was a kid.
bluesmoon··on India defuses its population bomb: fertility falls to two children per woman
When I was a child about 40 years ago there was a slogan "हम दो, हमारे दो" which translates to "We are a couple, we will have two children". Then in my teens it turned to "हम दो हमारे एक", ie, "We are a couple, we will have one child". It was on TV, in print ads, on the sides of buses, everywhere. There was also a huge move to make contraception easily available to every woman in the country. Then in the 90s TV was privatized and it all disappeared.
bluesmoon··on When Facebook went down this week, traffic to news sites went up
How much of the increase was due to reloads since when facebook goes down, the performance of sites that include FB javascript tends to get worse.

For example, see https://www.akamai.com/blog/news/the-impact-of-third-party-s... and https://twitter.com/paulcalvano/status/1445244384598011906

bluesmoon··on Submarine cable map rendered onto a globe
Obligatory mention of Greg's Cable Map which has been around since forever: https://cablemap.info/ and now under new ownership at https://www.infrapedia.com/app
bluesmoon··on How percentile approximation works and why it's more useful than averages
Yes, Lotus 123 came out 38 years ago :)
bluesmoon··on How percentile approximation works and why it's more useful than averages
IQR is 75th - 25th, aka, the middle-50%
bluesmoon··on How percentile approximation works and why it's more useful than averages
This is exactly the algorithm we developed at LogNormal (now part of Akamai) 10 years ago for doing fast, low-memory percentiles on large datasets.

It's implemented in this Node library: https://github.com/bluesmoon/node-faststats

Side note: I wish everyone would stop using the term Average to refer to the Arithmetic mean. "Average" just means some statistic used to summarize a dataset. It could be the Arithmetic Mean, Median, Mode(s), Geometric Mean, Harmonic Mean, or any of a bunch of other statistics. We're stuck with AVG because that's the function used by early databases and Lotus 123.

bluesmoon··on The “Granny Knot”
I tied my shoelaces with a fisherman's knot. This only has to be done once per shoe for life. I never have to untie them. Just slide on and off. The bottom of the shoes wear out before the laces ever come loose.

Doesn't work as well for boots though, and tying a fisherman's knot while wearing snow gloves is a pain.

bluesmoon··on The Sweden Solar System
In Boston it's called the Big Dig
bluesmoon··on The Sweden Solar System
Also in the Boston Area. The sun, Mercury and Venus are in the Museum of Science. Earth is supposed to be in the Royal Sonesta hotel, but I believe it was moved to clean the area and never put back. Mars is in the Galleria mall, Jupiter is at South Station, and the rest of the planets are much further out. More details at https://www.bostoncentral.com/activities/landmarks/p1018.php
bluesmoon··on `three = 1` in the Linux sourcecode (2014)
until someone runs a spellcheck on this code and changes all locations to fortytwo
bluesmoon··on HTTPWTF
yeah, those techniques predate CORS, but even back then, you'd typically add your anti-csrf token to the payload rather than the header. CSRF is application level logic rather than protocol level.
bluesmoon··on HTTPWTF
Another thing to note about custom headers is that when used in an XHR (eg: X-Requested-With), they will force a preflight request (with the OPTIONS method). If your webserver isn't configured to handle OPTIONS and return the correct CORS headers, that will effectively break clients.

Best to just never use custom headers.

I've written more about this here: https://developer.akamai.com/blog/2015/08/17/solving-options...

bluesmoon··on Spyder – a free and open source scientific environment written in Python
It often causes a double-take for me when I see projects on HN with the same name as projects I once worked on.

Way back in time, maybe around 1998, a friend an I worked on a steganography tool that we called Spyder. I don't remember where it was published or under what license (probably freeware), but the algorithm was incorporated into Hide4PGP (http://www.heinz-repp.onlinehome.de/Hide4PGP.htm), and we stopped work on it.

This post just caused a bit of nostalgia. I can still remember my co-developer taking a break jamming on a bass guitar while we tried to figure out the striping problem (the solution was to compress the data to increase entropy first).

bluesmoon··on We rendered a million web pages to find out what makes the web slow
Some recent results are at https://tech.bluesmoon.info/2020/11/understanding-emotion-fo...
bluesmoon··on We rendered a million web pages to find out what makes the web slow
The simplest way to measure impact on users would be to just use boomerang which gets you all of this out of the box: https://github.com/akamai/boomerang

To do it yourself, you need a combination of PainTiming and measuring LongTasks or study the periodicity of setInterval/requestAnimationFrame

The above works for synthetic as well as real users. If you're able to measure real users directly, then you'd also want to look at Input Delays, Rage Clicks, Dead Clicks, Missed Clicks, Scroll Jank.

bluesmoon··on We rendered a million web pages to find out what makes the web slow
This study is flawed for a few reasons that I'd mentioned to the author when it was first published, but they ignored my comments.

The main problem is that they confuse DOMInteractive for Time To Interactive. The two events are very different. DOMInteractive is a legacy event that refers to the time when JavaScript can safely interact with the DOM. This really has nothing (or very little) to do with user experience.

Time to Interactive, on the other hand, is the time when a user can expect the page to respond quickly to interactions (clicks, scrolls, keypresses), ie, these user interactions should have no user perceivable latency. This is not a metric that has a corresponding browser event. It requires a bunch of post-processing based on various events. The researchers have made no attempt to calculate TTI.

Source: I've been working in this area of research for 15 years.

bluesmoon··on Show HN: Beeper – All Your Chats in One App
As an answer to your first question:

Between 2000-2003, I worked on components of the cross protocol IM backend used by many of the multi-protocol messengers back in the early to mid 2000s (eg: Adium, Trillian, Fire, Ayttm, and more). Each of the frontends had different ways to integrate. Trillian used 2 processes with TCP communication between them to get around the GPL licensed backend), Fire, Adium, Ayttm released everything under the GPL.

Eventually most clients moved to using libpurple as the backend (developed by the team behind Gaim), but the devs also started getting older, busier, and having other responsibilities outside of work. The only apps to survive were those that had a business model that allowed them to reuse open source code without having to release any of the code they developed themselves.

I personally stopped working on instant messaging in April 2004, the night before I became a Yahoo employee, though I continued blogging and doing conference talks about the experience:

- https://tech.bluesmoon.info/2004/09/fallback-messaging.html

- https://tech.bluesmoon.info/2011/05/story-of-george-ayttms-m...

- https://tech.bluesmoon.info/2010/11/stream-of-collaboration-...

bluesmoon··on Large data study: Navigator.sendBeacon() is broken
We had similar experiences with boomerang when we first implemented sendBeacon (I think about 3 years ago). You can see our solution here: https://github.com/akamai/boomerang/blob/master/boomerang.js...
bluesmoon··on Levenshtein Distance
lucky you :) there was no wikipedia when I first ran into this algorithm. Foxpro for DOS & Novell Netware had an implementation of Levenshtein distance that I ended up using as part of a college project on database basics. I used it to detect typos in data entry by comparing entered names with all names already in the table. It was blazingly fast because we never exceeded 30 names (the size of our class) and my profs were super impressed because they thought I did something way more complicated than I had.
bluesmoon··on How we built a GDPR-compliant website analytics platform without using cookies
Speaking as someone who built an analytics business while still maintaining an open source version of the code, I can confirm that it's hard. Sometimes it starts off as one small patch that only makes sense for the hosted service, but you can't push to the OS branch until the code is refactored to protect secrets.

I cannot give you any tips on managing your time between the two, but you may want to consider raising your prices. Back in 2011, we ran our basic account at $50/mo, Business at $150/mo and Enterprise at $CallMe/mo. We could probably have upped that after a year with all the new features we'd put in, but we were acquired before the 2y mark and dropped the first 2 plans.

We still maintain the open source version of the code, but neither of the original founders work on it (for me it's gone back to being a hobby because there are now people paid full time to work on it). We still get questions about the lag in updates. We typically do quarterly bulk pushes to the open source version now.

bluesmoon··on Hostyoself: Server in a browser – host from your computer, your phone, etc.
Anyone remember browserver posted to HN 7 years ago: https://news.ycombinator.com/item?id=4366555
bluesmoon··on Lookyloo: scrape a website and displays a tree of domains calling each other
Not that I know, but I suppose you could ask Simon.
bluesmoon··on Lookyloo: scrape a website and displays a tree of domains calling each other
RequestMap does the same but also categorizes domains by type (eg: advertiser, analytics), and uses a coloured force-directed graph. http://requestmap.webperf.tools/
bluesmoon··on It’s Hard to Learn French in Middle Age
Counter point by Susanna Zaraysky: https://createyourworldbook.com/livinginitalian/

Susanna is fluent in several languages, and has written a few books. It's always interesting getting her take on language learning at any age.

bluesmoon··on Design patterns in Tcl
Reminds me of work I did at Yahoo a long time ago that eventually resulted in publishing basic programming patterns in sed: http://tech.bluesmoon.info/2008/09/programming-patterns-in-s...
bluesmoon··on The Document Base URL Element
We've (the boomerang dev team) seen many frameworks do this. For many parts of boomerang, we need to get the url of an object (img, a, iframe, anything that could have a url), and just looking at the object's `src`/`currentSrc` or `href` attributes is insufficient.

What we need to do is create a new `link` element, attach it to the window, assign the url to the link's `href` attribute, and then read that attribute back out. This process converts all relative URLs to absolute URLs, taking BASE into consideration.

Note, that you MUST add the link to the document of the correct window. Adding it to the document of an anonymous iframe will not work because while anonymous iframes inherit a lot of things from the parent, the baseURI isn't one of them.

bluesmoon··on Three-sided Football
Related is 3 sided chess, which is a little more complicated because it's hard to figure out who wins and when the game is over: https://en.wikipedia.org/wiki/Three-player_chess
bluesmoon··on To Make Cordial Pepper Water
This was confusing for me because my grandma used to make pepper water for me when I was a child, and it was nothing like this. It's a kind of spicy soup. Recipe here: http://anglo-indianfood.blogspot.com/2013/06/anglo-indian-pe...
bluesmoon··on [dead]
dup. this same article was posted earlier without the /amp/ suffix and has a higher score.
← PreviousPage 2 of 13Next →