HNHacker News
TopNewBestAskShowJobs

boberoni

735 karma · joined July 24, 2018

submissionscomments
boberoni··on Microsoft Donated Money to Gnome: Remember How They Attacked Open Source Before
There are a lot of comments here about not forgiving corporations for their past because corporations are not people but are legal entities with profit-driven motives. I agree that we should not view Microsoft's donation to Gnome as altruism. Corporations make donations because it is in their own interest. Having a brand of generosity is valuable to the bottom-line.

Overall, however, I am happy to see that Microsoft now operates in an environment where donating to open source is in their best interest. It was not always this way, but the open source software movement has successfully created incentives for corporations like Microsoft to act altruistically.

It is not productive to call out corporations for being self-interested. This is already known. Instead, the discussion should explore how to maintain an environment where corporations are continuously incentivized to contribute to the open source community. Similarly, how do we incentivize companies to give up on the business model of proprietary software?

boberoni··on The Documentation Triangle, or, why code isn't self documenting
The article discusses the structure of documentation as three pillars: the what, the why, and the how.

I prefer to think about documentation in terms of four audiences:

- the student (tutorials)

- the chef (how-to guides)

- the theorist (explanations)

- the technician (API references)

Divio [1] has an excellent set of articles that explains this approach to documentation.

[1] https://documentation.divio.com/

boberoni··on From Python to NumPy (2017)
> Python has a great/dope community

Python's community is one of the greatest and worst parts of the language. Python might not be the best language for anything, but it's the second best language for everything.

I've dabbled in many programming languages, a lot of which are backed by a single large company or consultancy:

- Java (Oracle, at least initially)

- TypeScript, C# (Microsoft)

- Golang, Dart (Google)

- Elixir (Nubank)

- Clojure (Cognitect)

- Kotlin (JetBrains)

- Objective-C, Swift (Apple)

- Julia (Julia Computing)

Then, there are languages like Python, Ruby, JavaScript, PHP, Rust, etc. that are more diversified and distributed in terms of core contributors, maintainers, and evangelists. Meanwhile, there's a long list of other lesser known languages that have failed to grow a community as large as Python's.

As I get older and older, I have realized that our programming languages are not static entities, but they change and evolve over time. They are influenced by users, companies, and researchers. I hope that one day, there's a humanities subject that studies programming languages just like we study natural languages like in linguistics. The closest thing right now seems to be history of science, but it's quite a broad field.

boberoni··on From Python to NumPy (2017)
This book was published in 2017. The author, Nicolas Rougier, also has a few other books online books on data visualization[0] and the reproducibility problem in research[1].

[0] https://github.com/rougier/scientific-visualization-book [1] https://rr-france.github.io/bookrr

boberoni··on AWS costs every programmer should know (2019)
The two data visualizations in the article are poorly designed.

They show line graphs where the X-axis is the type of EC2 instance and the Y-axis is the price. Firstly, the X-axis of any line graph should be time. Or perhaps some other variable that "progresses". It's bizarre to use a category to label the X-axis of a line graph. Secondly, the X-axis is not ordered alphabetically, but seemingly randomly.

I don't mean to be harsh, but a better data visualization would be a bar chart, not a line graph. Bar charts are better suited for categorical dimensions. Also, the type of EC2 instances should be grouped and/or sorted, but not randomized. This way, the information from the data visualization can be parsed more quickly and easily.

boberoni··on ACCC: Airbnb allegedly misled Australians about accommodation prices
I feel bad for those who were misled. Some of them ended up paying up to 25% more than they expected.

    >>> “Despite thousands of consumers complaining to Airbnb about the way prices were displayed, Airbnb didn’t amend its booking platform until after the ACCC raised the issue.”
This quote seems to indicate that Airbnb only started to care after threats from the ACCC.
boberoni··on Show HN: An open-source, privacy-friendly Google Analytics and GTM alternative
They have a write-up that compares their project to Matomo. [0]

You can find comparisons with SimpleAnalytics, Fathom, and Plausible on their website as well.

[0] https://scale8.com/vs-matomo/

boberoni··on Ask HN: When you code at work, how do you code in your time off?
As you said in our last sentence, it's good to have a balance of activities throughout your day and week. For me, I try to be consistent on my projects weekly, not daily.

I sometimes will have a month where I don't even want to think about code outside of work. Other times, all I can think about during work is when I can get off and go home to code more on my side projects. These are the two extremes. I am usually somewhere in the middle: I will go take a walk, go to the gym, read science fiction, cook. During these activities, I will randomly have higher-level, free-flowing thoughts about my coding projects. Perhaps even a spark of insight.

When I return to my projects, I feel refreshed and excited. If I don't feel excited about my project, then I won't force myself.

boberoni··on Y Combinator for Mittelstands?
It would seem so, although there's a distinction between (1) being acquired for the product/team vs. (2) being acquired by a private equity firm. For case (1), you would want to build a mittelstand product that is strategically aligned with the acquirer. For case (2), you would want to build a mittelstand business that with consistent and reliable earnings/dividends.

Perhaps I'm forgetting another type of acquisition, but these are the two that I can think of off the top of my head.

boberoni··on Mozilla releases local machine translation tools as part of Project Bergamot
For i18n in my own projects, I typically use tools like gettext and involves lots of volunteers to do the translations. I might try out these neural machine translation tools to see how they fare. I also wonder if these machine translation tools are trained on a corpus of gettext datasets.
boberoni··on Nvidia releases open-source GPU kernel modules
> This is not upstreamable in its current form

What does "upstreamable" mean in this context? Is this good or bad?

As a follow-up, what would need to be different so that it is upstreamable and would that be good or bad?

boberoni··on Robinhood Announces Layoffs After Hypergrowth Period
> “This rapid headcount growth has led to some duplicate roles and job functions, and more layers and complexity than are optimal,” Tenev (Robinhood CEO) wrote. “After carefully considering all these factors, we determined that making these reductions to Robinhood’s staff is the right decision to improve efficiency, increase our velocity, and ensure that we are responsive to the changing needs of our customers.”

There is no information about how the layoffs are distributed among various departments and among different seniority groups. I would imagine that the "employees who worked so hard to help grow the company" would be identified and retained. Newly hired employees with fewer contributions under them would be laid off.

If anyone here knows, I'd also be curious to ask how much it contractually costs a company like Robinhood to layoff a recently hired employee.

boberoni··on How private are Erlang private functions? (2018)
Is there a way to do this with Elixir?
boberoni··on Rust Survey 2021 Results
I'm curious about the methodology of this survey. The first thing I think about when reading survey results is the possibility of selection bias.
boberoni··on Will you write HTML with us tomorrow?
It is true that this website has no password to steal, but a MITM attack could still be impactful. For example, a MITM attack could inject a <script> tag to run arbitrary client-side code. Any content that is served over HTTP has a risk of being swapped out by a MITM, which is why most browsers are nudging users to only visit HTTPS websites.

With that said, implementing security is a trade-off between your time and risk tolerance.

boberoni··on Ask HN: Recommended Domain Registrars?
+1 to Porkbun. Their website is one the more minimal side, but it's been quite reliable for what I need (buy domains and edit DNS records). Their prices are low and transparent.
boberoni··on My toy project turned into a viral challenge
> I pushed a quick fix to the issue by freezing the data being sent to the client, thereby halting the rapid growth in data consumption.

What do you mean by "freezing the data"?

Regarding the excessive download problem, my first instinct is to periodically (for example, every hour) compute summary statistics for the bar chart and store that in Firebase. This, of course, would require an additional script/service to perform these periodic jobs.

I'm not sure if that's what you ended up doing and I'm curious what your solution is.

boberoni··on Excel-Virtual-Machine: C Compiler which targets Excel
Interesting. I wonder the reason for this

This is totally contrived, but I want to believe that this project is a learning project that the creator started to use F# to write a compiler. Perhaps the creator is experienced with imperative programming using C and wanted to do more programming in F#

The reason to do such a thing is that implementing a compiler in a functional programming language results in very elegant functional code. There's an "Aha!" moment when you drop the imperative way of thinking and see how functional thinking can be expressive and concise, yet so very different

I could see myself doing the same thing. It's a seductive intellectual challenge, difficult but achievable, to learn functional programming and write a compiler from scratch

boberoni··on Svelte Cubed
While the 3D animation is very beautiful, my laptop noticeably started working harder to render the homepage and my fans started to get loud within 15 seconds.
boberoni··on Flags vs. Gates
There's a good blog post from ThoughtWorks (MartinFowler.com) about feature flags, the different categories, and code examples[0]. The post explores different feature flag implementations and tradeoffs, depending on the longevity and dynamism of the feature flag.

[0]: https://martinfowler.com/articles/feature-toggles.html

boberoni··on Ask HN: How do you manage users on your API business/product?
I don't think Magento is relevant to my use case. I am creating an API product (something like Twillio or Mailgun). Magento (and Elogic) seem to be in the space of retail and ecommerce.
boberoni··on Ask HN: How do you manage users on your API business/product?
Thank you for this comprehensive explanation! I will look into Stripe for billing, and look into Auth0, SuperTokens, and Stytch for auth.

I just checked out Warrant and your docs are very clean :)

One limiting factor for my adoption of Warrant would be that my application would need to perform auth on each request from each user, which in total may be on the scale of thousands of requests per second for my application. When I looked at the pricing section, Warrant's Standard Plan costs $1 per 1,000 API requests / mo. This would be too expensive for my use case, but perhaps I am not the target customer...? sweat smile Regardless, I wish you the best of luck with Warrant!

I agree with what you said about rate limiting. Given that Warrant is also an API product, has rate limiting been something you have found to be a necessity already? What factors or indicators would push you to add rate limiting?

boberoni··on Show HN: Excalideck – Use Excalidraw to make slides
Very cool! Even though the name suggests that Excalideck is for slide presentations, this is incredibly useful for me to organize multiple Excalidraw canvases for personal use. I often create system architecture diagrams that are separate but related. Rather than having to scroll around the infinite Excalidraw canvas or use multiple Excalidraw links (which I organize in a Google doc), now I can just flip through Excalideck slides. Small but very convenient
boberoni··on Physics Student Earns PhD at Age 89
As a university student in my last year of undergrad, I've been tempted to go work as a software engineer, even though I'm interested in doing research. The opportunity cost just seems too large to give up. Working as a SWE will allow me to earn a massive income in my 20s, during which I have few defendants and a lot of leisure time. While many of my peers are planning to do graduate school right away, I feel like my quality of life would simply be better by going to work in industry right now.

With that said, I still love learning and diving deeply into topics like math and the history of science. I hope that I can one day retire off my savings as a SWE and return to graduate school (maybe in my late 30s or 40s). Has anyone done this before? Is there a stigma against graduate students (both Masters and PhD) who are not in their 20s?

boberoni··on Why we don't dole out many compliments, but should
As a guy, I'm super self-conscious about trying not to come off as creepy to women around me. In the past year, I've tried to be better about giving compliments to my friends, but I found myself complimenting my male friends much more than my female friends.

One day I asked a female friend about how to be less creepy when giving compliments, and she gave me the following advice:

"Don't compliment her on her body, because that comes off as creepy. Instead, compliment her on something she's wearing and probably put a lot of thought into. Something she might be proud of. This would be like her outfit or her make-up. The more detail in your compliment, the better."

boberoni··on What’s the matter with airports? (2011)
I'm no expert on the economics of airport shops, but here's my take:

Rent prices for airport shops are high and space is limited. If you reduce your prices to be more reasonable, you are relying on volume to make ends meet. This is challenging because space for inventory is limited and expensive in an airport.

So, most shops in airports either (1) have to charge high prices to make a profit, or (2) aren't actually in the business of making a profit and are instead a marketing tactic for big brands. There's a lot of foot traffic in airports, so the big luxury brands will be willing to spend money on an airport storefront, even if it comes out as a net loss on sales.

boberoni··on This World of Ours (2014) [pdf]
I was very fortunate to be in a class taught by James Mickens in my undergrad. As he does in this article, he shared his wealth of cybersecurity experience but presented in a very entertaining way.

If you like this paper, he also has many other stories from CS academia that is approachable and fun to read[1]. One of my favorite talks by Mickens is a 30-minute roast of Javascript and web security[2].

[1]: https://mickens.seas.harvard.edu/wisdom-james-mickens

[2]: https://vimeo.com/111122950

boberoni··on Men in SV are reportedly using plastic surgery to get ahead at work
https://archive.is/EZoMP
boberoni··on Imperial Delusions
You can read the full article on this Archive.is link:

https://archive.is/ZhAxp

boberoni··on The Cult of Best Practice
> formal rigor or scientific analysis

This may be a bit philosophical, but couldn't "formal methods" and the "scientific method" also be considered a best practice? (and thus susceptible to becoming a cult?)

Throughout the history of science, there has been many methods for doing science that have since been revolutionized or abandoned (e.g. cosmology, non-Euclidean geometry, eugenics, quantum mechanics). Thomas Kuhn is a notable writer on such paradigm shifts in the history of science. [1]

[1]: https://en.wikipedia.org/wiki/Paradigm_shift

← PreviousPage 4 of 5Next →