HNHacker News
TopNewBestAskShowJobs

clawlor

44 karma · joined July 2, 2012

submissionscomments
clawlor··on 24-bit/192kHz music downloads and why they make no sense (2012)
Max representable frequency is half the sampling rate (nyquist-shannon theorem), which is still a bit above normal but IIRC the extra headroom has something to do with eliminating aliasing
clawlor··on Nvidia rolls out its fix for PC gaming's "compiling shaders" wait times
> Nvidia’s Auto Shader Compiler is distinct from Microsoft’s Advanced Shader Delivery system, which lets developers generate databases of precompiled shaders that can be downloaded ahead of time to align with a player’s specific system. Nvidia said earlier this month that it is “working closely with Microsoft” to add Advanced Shader Delivery support to its GeForce RTX line “later this year.”
clawlor··on Homomorphically Encrypting CRDTs
There are variants of CRDTs where each change is only a state delta, or each change is described in terms of operations performed, which don't require sending the entire state for each change.
clawlor··on You're not a senior engineer until you've worked on a legacy project (2023)
Agreed, this is quite annoying, but there is a workaround. You can tell blame to ignore commits like this, through a config option blame.ignoreRevsFile or similar CLI option. Not the most convenient perhaps, but it’s something. I believe GitHub also supports this, though you may have to request it to be enabled in your repository.

Given this, I tend to prefer a single, formatting-only commit when introducing formatting standards to an existing codebase. Otherwise, it’s difficult to take advantage of QOL features like auto formatting in your editor, or other formatting tools which tend to operate on entire files. Then PRs end up being mixed with formatting changes, which adds friction to the review process.

clawlor··on Vegetable stock: my secret lover (2011)
It's more of a mouthfeel thing than a thickener. Gelatin, in the amounts found in a good stock, will still be quite liquid when the stock is at serving temperature, but will sort of coat your mouth with flavor even when the broth hasn't been thickened with a roux or cornstarch.
clawlor··on Why your team doesn't need to use pull requests
Some CI systems do this automatically for PR builds, e.g. TravisCI:

> Rather than build the commits that have been pushed to the branch the pull request is from, we build the merge between the source branch and the upstream branch.

https://docs.travis-ci.com/user/pull-requests/#how-pull-requ...

clawlor··on Writing Python like it's Rust
> [...] when it would just be ‘class Foo<T>’ in almost any other language.

Good news on that front at least. PEP-895 [1] removes the need for `T = TypeVar(...)` boilerplate in Python 3.12.

[1] - https://peps.python.org/pep-0695/

clawlor··on Use singular nouns for database table names
Django also prepends the app name, giving you e.g. `auth_user` instead of `user`, side-stepping the likely collisions with reserved SQL keywords.
clawlor··on A eulogy for Dark Sky, a data visualization masterpiece
> Never deploy a site into production with DEBUG turned on.

- https://docs.djangoproject.com/en/4.1/ref/settings/#debug

Setting DEBUG = False doesn't cause in Internal Server Issue. The issue is caused by something else, having DEBUG = True just means Django will return a detailed error page, instead of a generic 500 error page.

IIRC, DEBUG = True also used to leak memory, which doesn't matter so much for local development, where it's intended to be used.

clawlor··on A GPT in 60 Lines of NumPy
New (v5) isort doesn't move imports to the top of the file anymore, at least not by default. There is a flag to retain the old behavior, but even then I don't think it will move imports from, say, inside a function body to the top of the module.
clawlor··on CamelCase vs. underscores revisited (2013)
The leading double underscore functions differently from a leading single underscore in this case:

> Any identifier of the form __spam (at least two leading underscores, at most one trailing underscore) is textually replaced with _classname__spam, where classname is the current class name with leading underscore(s) stripped.

See https://docs.python.org/3/tutorial/classes.html#private-vari...

clawlor··on GeForce RTX 40 Series
I upgraded from a 970 to a 2080 a while back and have been very happy with it. Still plays modern games at good frame rates, though not with max settings.

Obviously your choice depends greatly on budget + availability of hardware, as well as your desired resolution, but I'd suggest the 2070 or 2080 (maybe 2080ti?) as a good starting point.

clawlor··on How to make fermented hot sauce (2021)
I just tried this for the first time a few weeks ago. In Colombia they call it chicha de piña. The stuff I had wasn't bottled, just left on the counter in a large covered crock to ferment for a few days. Sweetened with panela and some spices like cinnamon and maybe anise.
clawlor··on What a gas stove ban means for restaurants
Most of the places I've lived have vented stove air outdoors. I've had the kind you're referring to as well, but outdoor venting hasn't been uncommon in my experience. Maybe it's a regional thing; I'm on the east coast FWIW.
clawlor··on Ask HN: Books like “Crafting interpreters” or “The ray tracer challenge”?
"Practical Django Projects" by James Bennett was very good, but was released back for Django 1.1 and I don't know how much it's been updated since. Walks the reader through creating the prototypical Django application: a blog. Still maybe worth a read, as the core concepts haven't changed all that much.
clawlor··on Ask HN: Have we screwed ourselves as software engineers?
It's still a "market" so long as there are supply and demand, regardless of how frequently a given participant is conducting transactions in that market.

The housing market is probably a good example. Many participants probably only purchase property once or twice in their lives (less even if you consider the case of a married couple buying a house, that's 0.5 purchases per person).

clawlor··on Python 3 Types in the Wild
I don't know of any books, but I've found this Pycon talk to be useful: https://www.youtube.com/watch?v=pMgmKJyWKn8
clawlor··on Roland 50 Studio
Most DAWs work like that, it's the expected interface for the target audience.
clawlor··on FDA Approves First Covid-19 Vaccine
> why not just give every 5th person vaccinated in some large center a link and a code to enter observed side effects after 1 day, 3 days, week, and a month, and then maybe 3 months after into some website.

The CDC ran such a study. IDK about results, or how many people participated.

https://vsafe.cdc.gov/en/

clawlor··on How to make a Python package in 2021
Unfortunately, the pyproject.toml format still doesn't support editable installs. So, setup.py is still required if you need this feature.
clawlor··on Tamale King: ecommerce website from 1990s
Dead at the moment. Tamale King 1, space ballers 0.
clawlor··on The Mayron Cole Piano Method is now free
I started playing around the same time as you, and also hold the pick "incorrectly", using both the index + middle finger. It's only been in the last year or so that I've made any sort of effort to use just the index finger. It feels unstable, but faster in a way, and also easier to hybrid pick thanks to the middle finger being free.
clawlor··on Doing Python Configuration Right (2019)
Author claims frustration with Django's settings, only to re-implement it almost exactly. How is ENV=production any different from DJANGO_SETTINGS_MODULE=myproject.settings.production?

Sure, by default Django may create a single settings.py, but common practice is to split that into a settings package, containing a base settings module for common settings, and other files for different scenarios, say "development" and "production". Either / all of them can load secrets etc. from the environment, so the "production" settings file is probably better thought of as "deployment" settings, when supporting multiple deployed environments e.g. staging and production.

clawlor··on Ask HN: Who is hiring? (September 2019)
Pymetrics | Android Engineer | New York, NY | https://pymetrics.workable.com/j/12B13613ED

Pymetrics | Senior Cloud Infrastructure Engineer | New York, NY | https://pymetrics.workable.com/j/18CE7639C1

Pymetrics | Senior Full Stack Engineer | New York, NY | https://pymetrics.workable.com/j/9711230D9A

Pymetrics | Data Engineer | New York, NY | https://pymetrics.workable.com/j/D52FBD6B6D

Other positions available, in London and Singapore as well as NYC: https://www.pymetrics.com/our-careers/

Using neuroscience-based assessments and machine learning algorithms, pymetrics (www.pymetrics.com) is reinventing the recruiting industry by matching candidates to jobs and companies where they are most likely to succeed. We are leading the charge in an evolving industry, and growing our amazing team to support the mission of using data to unleash one's full potential.

clawlor··on Things to use in Python 3
``@enum.unique`` will raise a ValueError if you accidentally include the same value twice in an enum definition:

    In [21]: @enum.unique 
        ...: class Animal(enum.Enum): 
        ...:     DOG = 1 
        ...:     CAT = 2 
        ...:     PIG = 2 
        ...:                                                                                                                                                              
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    <ipython-input-21-cbc1625bb41c> in <module>
        1 @enum.unique
    ----> 2 class Animal(enum.Enum):
        3     DOG = 1
        4     CAT = 2
        5     PIG = 2

    ~/.virtualenvs/py3/lib/python3.6/enum.py in unique(enumeration)
        834                 ["%s -> %s" % (alias, name) for (alias, name) in duplicates])
        835         raise ValueError('duplicate values found in %r: %s' %
    --> 836                 (enumeration, alias_details))
        837     return enumeration
        838 

    ValueError: duplicate values found in <enum 'Animal'>: PIG -> CAT

It's intended to catch programmer errors - not really useful for small enums like this one, but in a large enum, having duplicates could be difficult to notice, and might cause some insidious bugs.
clawlor··on Developers guide to GDPR
Those cookie prompts are a result of EU Directive 2009/136/EC, which predates the GDPR by 7 years.