HNHacker News
TopNewBestAskShowJobs

henrikeh

803 karma · joined April 20, 2012

Contact: heh@optoceutics.com
submissionscomments
henrikeh··on Why Mathematica does not simplify sinh(arccosh(x))
While some comments do point out the general opaqueness of Mathematica, the goal of Simplify is actually documented in Mathematica and something which can be changed: https://reference.wolfram.com/language/ref/ComplexityFunctio...

The default is a balance between leaf count and number of digits. But the documentation page above gives an example of how to nudge the cost function away from specialised functions.

henrikeh··on The economics of writing technical books
I think Mathematica’s documentation is beyond excellent. Here is the documentation for the Flatten function:

https://reference.wolfram.com/language/ref/Flatten.html

Just look at the amount of examples and details for this function. It is like that for every function.

henrikeh··on What the damaged Svalbard cable looked like
I don’t know about this cable specifically, but it can be done by transferring more power to the optical signal.

Erbium-doped fiber amplifiers work by utilizing a nonlinear optical effect where energy is transferred from a pump laser to the signal. This is in principle possible in any optical (glass) fiber, but by doping with exotic elements, the amplification characteristics can be optimized. Erbium is suitable for the conventional communication wavelengths.

For reference I have a PhD in information theory and signal processing for fiber channels.

henrikeh··on More than five whys and “layer eight” problems
> I used to work at a hedge fund known for its diagnosis process, a logical process of clearly defining the suboptimal outcome that occurred, agreeing on how it should have gone and what had happened, and if it's indeed wrong to have gone this way, what to do about it.

Do you know of some publicly available material on this? I’d love to hear about their approach.

henrikeh··on Adding design-by-contract conditions to C++ via a GCC plugin
Ada / SPARK can do that. Ada has had some form of that analyses since the first version from 1983.

https://learn.adacore.com/courses/intro-to-spark/chapters/03...

henrikeh··on Record-breaking chip can transmit 1.8 petabits per second
We used constellation shaping and a rate adaptive code to tailor tailor the bitrate of each channel. It varied between something along 64-QAM and 256-QAM depending on the SNR in the channel.

Post processing times were not too bad. It ran on a standard desktop computer and gave an estimate of the data rate in about a minute (can’t remember exactly). Of course, compared to actual transmission that is terrible slow, but that was only due to the implementation and need of this experiment.

henrikeh··on Record-breaking chip can transmit 1.8 petabits per second
Thanks :-)

It is a while since I have been into optical signal processing, but I will ask my colleague who is much more well-versed.

henrikeh··on Record-breaking chip can transmit 1.8 petabits per second
I must confess that I have never been concerned along those lines.

I have thought a lot more about the environmental impact of transmission technology. It is a massively energy consuming industry and the expectation is to provide more capacity, while the expectations on efficiency do not add up to an actually reduced energy use.

For what it is worth, I work on Alzheimer’s research today: https://optoceutics.com

henrikeh··on Record-breaking chip can transmit 1.8 petabits per second
I worked on this project and cycomanic summarizes the practice well. I’ve written more on it here: https://news.ycombinator.com/item?id=33321506
henrikeh··on Record-breaking chip can transmit 1.8 petabits per second
I should clarify that we did measure every channel (polarization, wavelength and fiber core) individually. It would not be fair if we just measured one and multiplied ;)

(And yes, that took forever. A shout out to A. A. Jørgensen and D. Kong for their endurance in that.)

henrikeh··on Record-breaking chip can transmit 1.8 petabits per second
Wrote another reply here: https://news.ycombinator.com/item?id=33321669

I’d say that there is at least a 10 year delay between the lab and commercial deployment. Even then we are talking about deployment in large fiber systems and not to the home.

However, not all ideas in the lab ever make it into deployment.

henrikeh··on Record-breaking chip can transmit 1.8 petabits per second
I can’t answer for the chip aspect (which is the truly novel part of this research), but many of the signal processing and coding techniques are being deployed in new optical transmission systems. Constellation shaping and rate adaptive coding were two techniques we used in this paper to ensure that individual channels were as ideally utilized as possible.
henrikeh··on Record-breaking chip can transmit 1.8 petabits per second
Thanks! I’ve reached out to my colleague who worked on the chip side of this project.
henrikeh··on Record-breaking chip can transmit 1.8 petabits per second
The two other comments gave very good general answers, but I happen to have worked on this specific project, so I can give some very specific details (as far as my memory goes.)

Lab testing of this scale of transmission involves a bit of “educated simplification”. We had some hundreds of wavelength channels, 37 fiber cores and two polarizations to fill with data. That is not realistic to actually do within our budget, so instead e split the system into components where there is no interference. For example, if there is different data on all neighboring cores compared to the core-under-test, then we dare to assume that the interference is random, without considering neighbors’ neighbor etc.

This reduces our perspective to a single channel under test with known data and then at least one other channel which is just there as “noise” for the other channels. The goal is to make the channel-under-test have a realistic “background noise” from neighboring interference. This secondary signal is sometimes a time-delayed version, sometimes a completely independent (but real) data signal.

This left us with a single signal of 32 GBd (giga symbols / s). This is doable on high-performance signal generators and samplers.

henrikeh··on Record-breaking chip can transmit 1.8 petabits per second
The chip which produced the laser is indeed “just” CW with data modulated on separately. And novelty indeed lies in the width of the comb source and the SNRs of the obtained channels.

(Worked on this project.)

henrikeh··on Record-breaking chip can transmit 1.8 petabits per second
Late to the thread, but I took part of this research (7th author in the list). I worked on the signal processing, information coding etc and is happy to answer any questions :-)
henrikeh··on Lufthansa bans AirTags in checked luggage
Cell phone cells are (ideally) shaped to account for the expected pattern of how handover will occur. Along roads and train lines, the cells are (at least in GSM) supposed to be tailored to allow for easy routing and handover as the devices travels in the direction of the way.

While I have never read anything concretely analyzing the handover pattern of devices on airplanes, I would expect that since a very large number of cells are almost equally visible/equal signal strength, the network would have to frequently handover the device from one cell to another.

The handover process is, for voice traffic, very resource intense. (in GSM) it involves duplication of traffic to the neighboring cell and a lot of coordination.

I think that could be the reason for why mobile operators find airplane-borne devices annoying.

henrikeh··on Using: Has() as a CSS Parent Selector and much more
The article gives a few examples where a pseudo-class fits better with how CSS normally works. For example, the selector matches the last item in the selector. With ‘<‘ it would match ‘parent’ in your case.

You can also match descendants of something with the :has() selector. It really is more than a “parent selector”

henrikeh··on Crafting Interpreters
I do plan to write about the overall experience, but for now I keep a diary in the repo.
henrikeh··on Crafting Interpreters
I have been reading it and implementing the interpreter in Ada to learn about both interpreters and Ada better. It is a wonderful way to learn, since I constantly have to go beyond the surface level. What is the purpose of this and that in the interpreter? How do I model/implement this well in Ada?

If you are curious about languages, I can only recommend trying to learn a new one while following this book.

https://gitlab.com/henrikenggaard/ada-lox

henrikeh··on TurboTax’s fight against free tax filing
In Denmark, so not the same as who you reply to.

Yes, if you pay too much in tax and their calculations reveal that, then, yes, you get money back on your bank account.

They don’t calculate commute deductibles for you, but mortgages, pension is something which is calculated for you based upon reports from the respective institutes.

henrikeh··on The Software Foundations: mathematical underpinnings of reliable software
Do you have any sources on that? I can not find anything about those interacting or Perelman saying that he does not care about the axioms of his work.
henrikeh··on Ask HN: Any piece of hardware that was more of game changer than you expected?
At least not in the ones tested in the video.

Also, the prewash happens in a cycle, where the soap holder isn’t opened.

henrikeh··on Highlights from Git 2.34
Well, since you ask. `git add -i` has different "escape"/"exit" semantics for different actions.

If I want to quit/escape adding a patch in the interactive mode I type `q` and then enter.

If I want to quit/escape the interactive add subcommand I type `q` and then enter.

But if I want to quit the `update`, `untracked` etc. I have to enter nothing and then press enter. It would be such a wonderful thing if it also accepted `q` so my muscle "memory" is correct.

I looked into changing this once, but it is written in shell and Perl, which I don't know enough about to figure out.

henrikeh··on How the UK became the sick man of European tourism
Here in Denmark we don’t, so most people have a passport.
henrikeh··on Verilog Simulation with Verilator and SDL
Verilog is weakly typed and VHDL is strong. That is already a pretty big deal when dealing with vector signals, where Verilog happily assigns a 32-bit signal to a 16-bit signal.

VHDL also supports defining record types, such that a collection of signals can be assigned together.

henrikeh··on Moiré No More
Discrete Fourier Transform is probably the most accurate way to describe the mathematical transformation which is being applied. Albeit it is very popular to say FFT when what is meant is Fourier transform or DFT, it is a bit like talking about sorting but calling it Quicksort despite it being a specific algorithm.
henrikeh··on Get rid of those boolean function parameters (2015)
Ada doesn't use the "dot syntax"; instead the enumeration literal is written as is without a dot. If I write:

    type Number_System is (Bin, Dec, Oct);
    type Month is (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec);

    procedure Foo (A: Number_System; B: Month);
Then this is a valid call:

    Foo( Dec, Dec )
https://godbolt.org/z/eP5qMj3K1

When the type is explicit, the Ada standard calls this a "Qualified expression". But I would just say that it is a kind of type inference for enumerations.

https://www.adaic.com/resources/add_content/standards/05aarm...

henrikeh··on Get rid of those boolean function parameters (2015)
Fwiw, Ada does this too.
henrikeh··on Clearing up Myths about Ada
Haskell and Ada have very different goals. Ada is designed, in part, to work on embedded and real-time systems.

It isn’t really an “attempt” either. The language exists and is used and has developed as experience was gained. Why bother with it? Because you could maybe learn something new despite it being old.

Page 1 of 9Next →