HN user

Greek0

226 karma

My name is Christian Aichinger. I live in Vienna, Austria. I work as a software engineering manager at Ubimet. I write [1] on topics that interest me, mostly software and science.

[1]: https://greek0.net

Posts5
Comments29
View on HN

You can have debug symbols even in release builds. With gcc, `-ggdb` for debug symbols and `-O2` for optimization can be selected in dependently of each other. Optimized binaries are a bit harder to debug, but locating the source of this crash should be easy even in optimized versions.

As additional complication, debug symbols are often removed from the binary post-build to reduce binary size. The `strip` utility either discards debug symbols entirely, or it puts them in a separate folder as .dbgsym filses. See the gdb `debug-file-directory` option and the `add-symbol-file` command.

[dead] 4 years ago

Development feedback—intended to help team members learn and improve—needs an environment where the recipient can absorb information. This requires psychological safety: no blame, no pressure, no personal attacks, no consequences, no reason to get defensive.

Performance evaluation—informing employees how happy the company is with their output—is a high-stakes and high-stress situation that precludes learning.

The author speaks with an authoritative voice and presents the content as facts. Sadly, the article also contains factual errors. For example:

This capacity could also be served by a fleet of just 40 737s [...], of which Boeing makes more than 500 per year. Bought new, this fleet would cost $3.6b, and with a lead time of, at most, a few months.

Boeing has a backlog of 4000 planes.[1] Current delivery lead times are 5-10 years, so getting 40 planes within months is ludicrous. Aircraft might be available on shorter timelines from aircraft lenders, but probably not in that timeframe either. It's also not what the article argues.

This puts a question mark over the content: which parts are actually correct and which are merely presented as fact without any checking?

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

Git Best Practices 4 years ago

Staging changes: git add -p and git diff --cached

Rewriting history: git commit --amend

Rewriting history: git rebase -i HEAD~10

Atomic commits

Commit messages

Git branching patterns

Organic synthesis is about making new molecules that haven't existed before. That's important for developing new drugs, improved batteries, better plastics, etc.

Organic molecules are networks of atoms, with both a distinct connectivity pattern, and a specific 3D orientation [1] of the atoms to each other. See e.g. the Wikipedia page of Lipitor[2] a picture of the connectivity pattern.

We build these molecules through chemical reactions. Over time, we have become pretty good at creating the connectivity patterns we want. However, achieving the correct 3D arrangement is still challenging.

List and MacMillan developed new chemical reactions that enable us to get both the connectivity, and the 3D aspect right. Such new methods are frequent Nobel contenders, and won e.g. in 2001 with Knowles/Noyori/Sharpless.

As for how these reactions work: it is true that they are catalyst-based and that catalysts speed up reactions, but that perspective is a bit misleading. The key point is that without catalysts, these reactions would not happen at all. So the catalysts List&MacMillan found accelerate some desirable reactions so much that they turn from "practically doesn't happen at all" to "done in an hour".

Congratulations to the outstanding work, and to the Nobel price!

[1]: See https://en.wikipedia.org/wiki/Chirality_(chemistry) for a deeper look [2]: https://en.wikipedia.org/wiki/Atorvastatin [3]: For a deeper look at the chemistry, check out https://www.nobelprize.org/uploads/2021/10/popular-chemistry... and https://www.nobelprize.org/uploads/2021/10/advanced-chemistr... -- also shared by _Microft

Cooley-Tukey Fast Fourier Transform can be complex to implement, if you want to optimize it. A basic version is surprisingly simple, I implemented it for fun in Python a couple of years ago:

    def fft(x):
        N = len(x)
        if N == 1:
            return x
        assert N % 2 == 0
        E = fft(x[::2])
        O = fft(x[1::2])
        X = [None] * N
        for k in range(N // 2):
            tf = np.exp(-2j * np.pi * k / N)
            X[k] = E[k] + tf * O[k]
            X[k + N//2] = E[k] - tf * O[k]
        return X
The Wikipedia article describing it is surprisingly decent: https://en.wikipedia.org/wiki/Cooley%E2%80%93Tukey_FFT_algor...

The repairability Rossmann is talking about is not user-replaceable components. His repairs usually require soldering to replace components.

One of his main critique points is that Apple makes it hard to repair their products, even for electronics professionals. In the past, Apple has also altered designs so that small electrical problems suddenly fry the most expensive component on the board, the CPU. Either this is an embarrassing, junior-level oversight or a deliberate anti-repair-buy-new-hardware tactic.

See, for example, https://www.youtube.com/watch?v=jahtu1_idVU

As such, it seems you are arguing against an idea that no one is suggesting.

Brief summary, please correct me if I'm wrong.

A ZigZag structure is an undirected graph. Nodes are arranged in an n-dimensional space. For each coordinate axis, every node can only have one edge in the plus-1-along-coordinate direction, and one edge in the minus-1-along-the-coordinate. I.e. no diagonal connections, and max one connection in each "cardinal direction" (+ and - in n dimensions = 2n directions).

In its simplest form, a ZigZag structure can be an n-dimensional grid, where each node is connected to its direct neighbors in the grid. In 2D, that would give you a spreadsheet. However, ZigZag can do more: you can have loops along any axis, e.g. a spreadsheet where the columns "wrap around". Furthermore, ZigZag supports looping the columns of only one particular row: a normal 2D spreadsheet, except that row 13 only has 4 columns, and those columns are wrapped up in a loop. You could also have sparse grids - where nodes are missing, and the edges skip over the missing node.

The idea is to have something that locally, if you look only at the surrounding nodes, always looks like a neat n-dimensional grid. But the global topology can be totally whacky.

I have no idea what you would use such a thing for.

I don't understand how the author arrives at the conclusion that "[air quality] is often the most effective health intervention, period".

How do you take that away from the plots? If you're in the US my prime take-away would be to keep your BMI in check.

The first graph shows ~2 deaths per 1000 people per year. Surely more than 2 persons/1000/year die in those countries. What are the causes for the other ~10-15 deaths/1000/year?

Given the information in the article, I don't see anything to support the central thesis about air quality. The reasoning for it is so thin that I have no idea whether it's true or not.

Brief summary:

Majorana fermions are particles can potentially be created under stringent laboratory conditions. Whether this has been achieved in practice is unclear: many scientific papers purport to show evidence of Majorana particles, but there are other explanations that could explain to the observed data as well. New research is frequently published that claims Majorana production, but most often doesn't even acknowledge potential problems or alternative explanations. These sloppy practices cast doubt over the whole field, despite the large impact Majorana particles could have for quantum computing applications.

We need:

* More stringent data reporting: raw data, full data (not only the small subset supporting the hypothesis)

* More critical evaluation of other explanations for the observed data

* Transparent publication processes, that prevent a paper that was rejected by one journal on scientific grounds appear in another journal unchanged

The author praises Firebase Auth for its ease-of-integration, but I'm leery of depending on Google products due to its support horror stories.

Can anyone recommend good, easy-to-integrate alternatives?

I switched from MathJax to Katex on my personal blog, and it significantly improved my lighthouse scores. Mathjax needs a huge amount of JS/CSS/Fonts to do its job, and takes a long time to load and render the equations. Not all of that is deferable.

A quick summary of the arguments:

Gimbal lock arises in graphics systems when you store the rotation state as 3 Euler angles:

   Internal State: AngleX, AngleY, AngleZ
   Update algorithm: AngleX + dx, AngleY + dy, AngleZ + dz
   Rotation = Rotationmatrix(AngleX) * Rotationmatrix(AngleY) * Rotationmatrix(AngleZ)
With this setup it is easy to come to a situation where AngleZ performs a rotation so that the X/Y rotation vectors coincide, and you lose one degree of freedom in the resulting rotation matrix.

How to fix this:

  Internal state: RotationMatrixOld
  Update: RotationMatrixOld * RotationMatrix(dx, dy, dz)
With this setup there is no chance of Gimbal lock, the dx/dy/dz matrix always retains its degrees of freedom.

Other notes:

* The above description applies irrespective of whether you use Quaternions or rotation matrices

* In higher dimension it's better to describe rotations by their rotation plane instead of the normal vector: in higher dimension there is no "normal vector". Rotation always works in ONE plane / two axis, so there are (N-2) "normal directions" in N dimensions.

I mean, if you start building an auto-fixer pipeline for an auto-linted error... then is that error actually valid in the first place? Probably not.

Just because you can automate it does not mean that the task is worthless.

React provides auto-migration scripts to newer versions, Python had the 2to3 utility, the Linux kernel has patches auto-generated with Coccinelle, editors have "rename this variable and all references" functions. Starting from a certain code base size there are changes that are worthwhile and best tackled with automation.

There is a fair amount of research into group dynamics and group decision making, specifically in the context of alpinism. For example [1], written in English, from the "Berg und Steigen" blog.

In general, I can't recommend German-language "Berg und Steigen" magazine enough. It's focuses on safety and risk management in mountain-related activities (mountaineering, indoor/outdoor climbing, skiing, ski touring, mountain biking, ...). Older issues become completely freely accessible in their archive [2].

[1] https://www.bergundsteigen.blog/human-factor-and-decision-ma... [2] https://www.bergundsteigen.at/?module=archiv/ausgaben

The atmosphere is not stratified into layers of different gasses. All gasses are mixed throughout the atmosphere, so you also find enough Helium at the bottom where we live. Indeed, all gasses in the atmosphere get less dense with increasing height, so helium has the highest pressure/density at the ground. [1]

At the same time, lighter gasses have vertical distributions that reach higher up into space, and some helium does get lost as it "boils off" from earth over time.

[1] https://chemistry.stackexchange.com/a/61154/14998

Ubimet | C++/Python Developer | Vienna, Austria | ONSITE

Ubimet is a leading weather service providers in Europe. We're experts in meteorology and issue customized weather forecasts for several million private and industrial customers. Together with our shareholder (Red Bull), we pursue the goal to be the weather service with the world's best quality forecasts.

We're looking for a C++/Python developer to work on interesting problems at the intersection of big data, realtime services, and scientific computing. We offer a great work environment in the city with the highest quality of living worldwide (https://en.wikipedia.org/wiki/Mercer_Quality_of_Living_Surve...). If you have to move, we offer a relocation package and take care of any visa formalities.

We especially encourage women, people of color, and others who are underrepresented in the tech industry to apply.

If you're interested, check out http://www.ubimet.com and our job ad at https://career2.successfactors.eu/career?career%5fns=job%5fl... and apply via Successfactors or at info@ubimet.com.

Ubimet | C++/Python Developer | Vienna, Austria | ONSITE

Ubimet is a leading weather service providers in Europe. We're experts in meteorology and issue customized weather forecasts for several million private and industrial customers. Together with our shareholder (Red Bull), we pursue the goal to be the weather service with the world's best quality forecasts.

We're looking for a C++/Python developer to work on interesting problems at the intersection of big data, realtime services, and scientific computing. We offer a great work environment in the city with the highest quality of living worldwide (https://en.wikipedia.org/wiki/Mercer_Quality_of_Living_Surve...). If you have to move, we offer a relocation package and take care of any visa formalities.

We especially encourage women, people of color, and others who are underrepresented in the tech industry to apply.

If you're interested, check out http://www.ubimet.com and our job ad at https://career2.successfactors.eu/career?career%5fns=job%5fl... and apply via Successfactors or at info@ubimet.com.

Ubimet | Python/C++ Teamlead | Vienna, Austria | ONSITE

Ubimet is a leading weather service providers in Europe. We're experts in meteorology and issue customized weather forecasts for several million private and industrial customers. Together with our shareholder (Red Bull), we pursue the goal to be the weather service with the world's best quality forecasts.

We're looking for a technical teamlead with Python/C++ experience to turn meteorological data into compelling products and services. We offer a great work environment in the city with the highest quality of living worldwide (https://en.wikipedia.org/wiki/Mercer_Quality_of_Living_Surve...). If you have to move, we offer a relocation package and take care of any visa formalities.

We especially encourage women, people of color, and others who are underrepresented in the tech industry to apply.

If you're interested, check out http://www.ubimet.com and our job ad at https://career2.successfactors.eu/career?career%5fns=job%5fl... and apply via Successfactors or at info@ubimet.com.

Ubimet | C++/Python Developer | Vienna, Austria | ONSITE

Ubimet is a leading weather service providers in Europe. We're experts in meteorology and issue customized weather forecasts for several million private and industrial customers. Together with our shareholder (Red Bull), we pursue the goal to be the weather service with the world's best quality forecasts.

We're looking for a C++/Python developer to work on interesting problems at the intersection of big data, realtime services, and scientific computing. We offer a great work environment in the city with the highest quality of living worldwide (https://en.wikipedia.org/wiki/Mercer_Quality_of_Living_Surve...). If you have to move, we offer a relocation package and take care of any visa formalities.

We especially encourage women, people of color, and others who are underrepresented in the tech industry to apply.

If you're interested, check out http://www.ubimet.com and apply at https://career2.successfactors.eu/career?career%5fns=job%5fl...

Ubimet | C++/Python Developer | Vienna, Austria | ONSITE

Ubimet is a leading weather service providers in Europe. We're experts in meteorology and issue customized weather forecasts for several million private and industrial customers. Together with our shareholder (Red Bull), we pursue the goal to be the weather service with the world's best quality forecasts.

We're looking for a C++/Python developer to work on interesting problems at the intersection of big data, realtime services, and scientific computing. We offer a great work environment in the city with the highest quality of living worldwide (https://en.wikipedia.org/wiki/Mercer_Quality_of_Living_Surve...). If you have to move, we offer a relocation package and take care of any visa formalities.

We especially encourage women, people of color, and others who are underrepresented in the tech industry to apply.

If you're interested, check out http://www.ubimet.com and apply at https://career2.successfactors.eu/career?career%5fns=job%5fl...

The argument would be stronger if he wasn't swapping an O(n) algorithm for O(n log(n)). With the recursive implementation you have to touch every element once for each recursion level.