HNHacker News
TopNewBestAskShowJobs

esrh

357 karma · joined June 13, 2020

esrh.me
submissionscomments
esrh··on Doing a Machine Learning PhD While Working in Japan
I just finished my MS doing ML research at tokyo tech (and also went to georgia tech!!), and I don't think I would honestly recommend it to someone unless they know they primarily want to live in Japan. I think it can be worth it, I feel like I changed quite a lot as a result of my 2 years there. The author's criticisms are valid but probably understated. I happened to work for a fairly wealthy lab that could pay me a salary, but this is not the norm for masters students, and even some PhD students don't get paid anything. Many, if not most graduate students I knew were working one or more part time jobs to make ends meet. I'm sure that the author's nice tech job and well-located home contributed to their enjoyment -- a lot of people have to live in Yokohama or west tokyo with > 1-2hrs of commute.

In my case, I had worked in Japan for a year at a domestic megacorp (which is how I met my prof), had attended a few conferences, was very fluent in Japanese, and knew with certainty that the enjoyment of living in Japan would make up for any objective drawbacks.

My main issue with grad school is that except for an exceedingly small number of labs that regularly aim for top conferences, the process feels very un-serious. I think the standards are low; very few professors care a lot about doing really good work; the classes are unnecessary, low quality (nobody cared about teaching much, in my dept), mostly surface level; and there's not much of a bar for student research. I'd argue that domestic conference work is not only less prestigious an the author says, but it's also in most cases worse and less interesting, which is the bigger problem. This might be exacerbated by the fact that the vast majority of undergrads begin research in their last year and continue into the MS program by default so there are generally a lot of less motivated students. I still had a few exceptionally smart colleagues, but I never collaborated with them (in fact, our lab has hardly ever published a paper with >2 authors). I generally felt that their hard work was misplaced.

About a year into my MS, after pushing a bit of slop at international conferences, I more or less gave up on working on my project and got a remote job based in the US. Like the article says, it is exceptionally convenient that you can work for 28 hours a week on a student visa, since 28 hours of a US tech job is more than enough to support a nice lifestyle for 1 in tokyo. I might genuinely have dropped out and moved back home if it wasn't for it. DO get the auth at immigration time, it's much more annoying later.

In any case, I really enjoyed it in hindsight. As a final note, Science Tokyo is very simple to enter for international students -- the only requirement is that you find a professor willing to take you in. There are many structures in place for international students and I'd say it's fairly nice and comfortable.

PS: Maybe someone will enjoy reading my blog post about life at Science Tokyo/Japan: https://esrh.me/posts/2025-11-15-year-recap

esrh··on GitHub Is Becoming a Giant AI Code Dump
ironically this is probably ai written too
esrh··on Show HN: A Lisp Interpreter for Shell Scripting
Yes, i agree that unix commands should be first class. I did this for the super common stuff like ls and cp. As for substitution, I did exactly $ for substitution. You'd do something like ($ rsync -avP $src $dst), but I don't think I ever got around to implementing $() to evaluate forms. If you really need to do that then you have to quasiquote the whole expression and unquote the form you need to evaluate. This has been relatively ok for me though. I never implemented anything like pipes or redirection, I instead just send everything like that to bash.

This is not really relevant to your question, but I regret choosing janet for this, it's too opinionated and hacking on C is not as fun as lisp. I started writing my own version of schemesh in racket, but I never got far enough.

esrh··on Show HN: A Lisp Interpreter for Shell Scripting
awesome! I have wanted something like this for a long time. Currently I use a janet fork <https://github.com/eshrh/matsurika> with some trivial additions, the most important of which is a `$` macro that does what the `sh` does here. I have two questions:

- I see that `sh` does not take in strings but instead lisp forms. How do you distinguish between variables that need to be substituted and commands? In my fork, the way to do variable substitution involves quasiquoting/unquoting. - Almost all of the features that make your language good for shell scripting are essentially syntactic features that can easily be implemented as a macro library for say, scheme. Why'd you choose to write in C++? Surely performance is not an important factor here. (I'm interested because I am currently working on a scheme-based shell scripting language).

esrh··on High-resolution efficient image generation from WiFi Mapping
A lot of wifi sensing results that have high-dimensional outputs are usually using wideband links... your average wifi connection uses 20MHz of bandwidth and is transmitting on 48 spaced out frequencies. In the paper, we use 160MHz with effectively 1992 input data points. This still isn't enough to predict a 3x512x512 image well enough, which motivated predicting 4x64x64 latent embeddings instead.

The more space you take up in the frequency domain, the higher your resolution in the time domain is. Wifi sensing results that detect heart rate or breathing, for example, use even larger bandwidth, to the point where it'd be more accurate to call them radars than wifi access points.

esrh··on High-resolution efficient image generation from WiFi Mapping
Think of it as an img2img stable diffusion process, except instead of starting with an image you want to transform, you start with CSI.

The encoder itself is trained on latent embeddings of images in the same environment with the same subject, so it learns visual details (that are preserved through the original autoencoder; this is why the model can't overfit on, say, text or faces).

esrh··on High-resolution efficient image generation from WiFi Mapping
I'd suggest reading https://dl.acm.org/doi/abs/10.1145/3310194 (2019) for a survey on early methods and https://arxiv.org/abs/2503.08008.

As for low level:

The most common early hardware was afaik esp32s & https://stevenmhernandez.github.io/ESP32-CSI-Tool/, and also old intel NICs & https://dhalperi.github.io/linux-80211n-csitool/.

Now many people use https://ps.zpj.io/ which supports some hardware including SDRs, but I must discourage using it, especially for research, as it's not free software and has a restrictive license. I used https://feitcsi.kuskosoft.com/ which uses a slightly modified iwlwifi driver, since iwlwifi needs to compute CSI anyway. There are free software alternatives for SDR CSI extraction as well; it's not hard to build an OFDM chain with GNUradio and extract CSI, although this might require a slightly more in-depth understanding of how wifi works.

esrh··on High-resolution efficient image generation from WiFi Mapping
This is my paper (first author).

I think the results here are much less important and surprising than what some people seem to be thinking. To summarize the core of the paper, we took stable diffusion (which is a 3-part system of an encoder, u-net, decoder), and replaced the encoder to use WiFi data instead of images. This gives you two advantages: you get text-based guidance for free, and the encoder model can be smaller. The smaller model combined with the semantic compression from the autoencoder gives you better (SOTA resolution) results, much faster.

I noticed a lot of discussion about how the model can possibly be so accurate. It wouldn't be wrong to consider the model overfit, in the sense that the visual details of the scene are moved from the training data to the model weights. These kinds of models are meant to be trained & deployed in a single environment. What's interesting about this work is that learning the environment well has become really fast because the output dimension is smaller than image space. In fact, it's so fast that you can basically do it in real time... you turn on a data collection node and can train a model from scratch online, in a new environment that gets decent results with at least a little bit of interesting generalization in ~10min. I'm presenting a demonstration of this at Mobicom 2025 next month in Hong Kong.

What people call "WiFi sensing" is now mostly CSI (channel state information) sensing. When you transmit a packet on many subcarriers (frequencies), the CSI represents how the data on each frequency changed during transmission. So, CSI is inherently quite sensitive to environmental changes.

I want to point out something that most everybody working in the CSI sensing/general ISAC space seems to know: generalization is hard and most definitely unsolved for any reasonably high-dimensional sensing problem (like image generation and to some extent pose estimation). I see a lot of fearmongering online about wifi sensing killing privacy for good, but in my opinion we're still quite far off.

I've made the project's code and some formatted data public since this paper is starting to pick up some attention: https://github.com/nishio-laboratory/latentcsi

esrh··on 'World Models,' an old idea in AI, mount a comeback
They also don't mention the famous paper by Ha & Schmidhuber (https://arxiv.org/abs/1803.10122).

The worst part is that they namedrop many other tangentially related and/or outright fraudulent "ai experts" like Hinton, Bengio, and LeCun.

esrh··on Never Missing the Train Again
Yeah, i wish more programs worked like this.

I wrote something similar on a smaller scale for the keihin-kyuukou line in japan: https://rail.esrh.me. Now I live in tokyo and there's several transit options closeby so I would love to have some always on display like this in my room.

Unfortunately, while public transit in the US and Europe seem to be tracked by services with developer friendly APIs, this is not the case in Japan as far as i know -- not that much of a problem back then, i just needed to do some light web scraping.

I wrote all of the scraping/data and processing/frontend code in clojure and clojurescript, and wrote a small blog post about it here: https://esrh.me/posts/2023-03-23-clojure

esrh··on Common Lisp Is Not a Single Language, It Is Lots
One thing is that CL has a huge ecosystem and a wide variety of compilers for every purpose you might have. Quicklisp probably beats racket and scheme in this regard, but today clojure might have an edge.

When you use racket and clojure specifically, you're kind of walling yourself into one compiler and ecosystem (two, for clj/cljs). This is a significant disadvantage compared to scheme and CL.

CL the way most people write it is way too imperative and OO for me; it reads like untyped java with metaprogramming constructs. Clojure and scheme in my opinion guide you towards the more correct and principled approaches.

Out of all the lisps, regardless of which ones I like the most, I objectively write emacs lisp the most. This is has definitely influenced my opinions on CL syntax; like my weird love hate relationship with the loop macro: on one hand it's a cool, tacit construct that's impossible in a non-lisp, but on the other hand it hides a lot of complexity and is sometimes hard to get right.

esrh··on Clojure's machine learning ecosystem
> Smile 3.x Avoided due to licensing

> Smile 3.x is GPL-licensed, which poses some potential conflicts for some end users...The community consensus is converging around moving away from Smile due to the GPL-relicensing issue, focusing instead on Tribuo...

(tribuo is developed by oracle)

It's a really great thing that the java community has a high performance and well accepted (~5x stars than tribuo) ML package that's GPL. CF python where the top two libraries are developed by google and facebook. The GPL protects individual, independent developers.

I don't think it's right to recommend that new users move away from the package because of licensing issues; the fact that it's GPL now is a good thing for everyone except corporate users (probably a great part of readers). The people who might have GPL problems already know themselves when they'll have a problem.

esrh··on Show HN: AboutIdeasNow – search /about, /ideas, /now pages of 7k+ personal sites
It's also not visible on mobile
esrh··on 3D Map of Shinjuku Station in Three.js
Very cool!

I also like these hand drawn 3d illustrations of stations: https://architizer.com/blog/inspiration/industry/x-ray-visio...

esrh··on Par: Paragraph reformatter, vaguely similar to fmt, but better
I used to use par before I switched to far (https://cgdct.moe/blog/far/) which produces better looking paragraphs in my opinion by minimizing the variance between lines while using the fewest number of lines possible.

There is a native emacs version as well, at https://github.com/eshrh/far.el (i wrote it)

esrh··on Ask HN: Do you still use a hand held/desktop calculator?
The cli tool qalc is usually bundled with libqalculate
esrh··on Ask HN: Could you share your personal blog here?
https://esrh.me

Not a whole lot, some mix of japanese, emacs and lisp. Static site made with hakyll.

esrh··on I wish GPT4 had never happened
Thanks for the tip! Anyone wanna be my cofounder?
esrh··on The TikTok ban is a betrayal of the open internet
It's to be freer than china
esrh··on The Butlerian Jihad
Is it really that hard to imagine a rebel group of newly unemployed desperate people bombing an openai data center?
esrh··on Burgr – Books in Your Terminal
I use console emacs and nov.el (https://depp.brause.cc/nov.el/) for this. You can then use emacs features like keyboard navigation and dictionaries.
esrh··on KanjiVG – SVGs of Kanji character strokes including order, shape and direction
I also used this with anki, but i wanted some interactivity and practice actually physically writing stuff out combined with spaced rep.

Resulted in some pretty gnarly code using kanjivg, pygame and ankiconnect: https://github.com/eshrh/anki-kunren

esrh··on How India’s caste system manifests in Seattle-area workplaces and beyond
Sikhs being affluent makes it ok? You do know which other group is often singled out for this right?

"Everyone's made fun so it's ok" is on the same level as "I'm not racist i hate everyone." It's veiling what people actually think, and thereby not addressing the issue (or even admitting one exists, really)

As for democracy: https://en.m.wikipedia.org/wiki/Censorship_in_India

But if you mean "total democracy" in the sense of unchecked oppression of the minority by the majority i think you'd be closer to the truth.

esrh··on Regular Expressions make me feel like a powerful wizard: that's not a good thing
rx is a great example here. Add in the fact that you can manipulate rx forms with macros and you're dealing with some serious power.

With that said, I think the most ergonomic string searching tool I've used is the PEG implementation in Janet:

https://janet-lang.org/docs/peg.html

esrh··on Show HN: I made a tool that turns screenshots into dramatically angled photos
If the author was that serious about this as a business they would've done it server side -- or better yet sold the unburdened source code at a one-time price.

If you are running someone else's code on your computer you are entitled to change it, morally. The fact that most other programs make this hard to meaningfully do is another problem.

esrh··on Glen Canyon Revealed
I read desert solitaire on a road trip (ironically) through arches natl. park and colorado. Really fantastic book -- his thesis can be summed up in a page or so, but his passionate ideas are nearly viral.

I especially enjoyed the contrast between really beautiful descriptions and anecdotes of nature and polemic political rants that go on for tens of pages at a time.

esrh··on Project Mage is an effort to build a power-user environment in Common Lisp
I feel like your campaign would benefit from explaining a little bit about who you are, what you've written before, and why we should believe you can actually accomplish this (understandably big project). People like to feel like they're paying a person, not an idea...
esrh··on Show HN: Kandria, an action RPG made in Common Lisp, is now out
cl-lib is practically indispensable in modern emacs lisp programming. It can be pretty annoying to write some patterns without cl-loop, for instance, which like the real loop macro in CL is stupidly powerful (think, DSL for describing loops).

I'm not sure what you mean by "that direction," but if it implies doing CL, writing emacs lisp won't get you there, even if it might give you a head start from cl-lib, eieio, and general lisp ideas.

esrh··on Moving the Ctrl Key
i did this on the software side for the longest time, before I DIY'd a keyboard and got this feature hardware-side using q/tmk: https://qmk.fm/. Some prebuilt keyboards also support QMK, like the DROP CTRL.

I also use dvorak, and the keyboard setup every time i used different keyboard was getting a bit annoying.

esrh··on Keyboard shortcuts for GNU Readline
After getting very used to C-w (delete back work) and C-h (delete character backward) on readline, it really bugged me that these aren't default on emacs, even though readline is often advertised as giving emacs muscle memory.

I ended up globally remapping C-w and moving the help prefix, C-h to C-x h and making C-h backspace, because i was pressing it incorrectly that often.

Page 1 of 4Next →