HN user

thedjinn

295 karma

Freelance software consultant with a particular interest in performance optimization, signal processing and dataflow programming.

Posts9
Comments74
View on HN
The End of OS X 6 years ago

Most people probably don't even refer to the macOS versions by number but by codename.

I'm on a 2012 MBP with similar experiences. Every year I think about finally replacing it, but hold off on it because everything still works fine apart from some increased fan noise and reduced battery capacity (which doesn't concern me too much). If you treat your laptop with care it really does last a long time.

At some point I expect I will stop getting MacOS updates which will force me to upgrade to a newer model.

It's basically a Pi, a buck regulator, a tiny COB USB audio interface and an SSD1306-based 128x32 display. Removed all connectors and replaced them with soldered wires so it packs neatly into a tiny box.

The software is all custom and written in C, using Jack for low latency audio and my own driver for the display (Adafruit makes a Python driver but it eats half of your CPU and is not optimized for i2c bandwidth or high framerates).

I built a guitar stomp box using a Raspberry Pi Zero to trigger samples with a foot switch. Runs on 9 volts and has a very bright OLED display so I can still see what it's doing when I'm playing in a dark venue.

Yes, that works. However, you would be facing the same problems. You can read out the pressure of a touch but the initial pressure is not the strongest since the finger is still in motion. Additionally, 3D touch is not supported on all devices.

Another interesting thing is that there are also private APIs for reading out the estimated finger size of a touch. This can give you even more information to determine the velocity from, as light touches are usually done with the fingertips.

The accuracy is a trade-off between latency and precision. The touch event arrives as soon as you touch the screen, but the actual force of your touch still needs a few milliseconds to actually put the device into motion. Waiting a little bit while collecting measurements gives you quite an accurate indication of the force used, but the increased latency makes it harder to play.

Sliders and knobs will be added in a future version. I wanted to put an MVP on the app store first before adding additional features.

I have been using React Native for a year now on a large project and came to the same conclusion. I find using Redux can quickly lead to over-engineered software.

As goes with every extra dependency: don't use it until you actually need it.

Most music is mixed not to have any useful spectral information below that frequency anyway. And if you want beat then a better thing you can do is look at the half-wave rectified difference between the sums of two FFT frames (with optional lowpass). This results in an onset graph that is the basis for a lot of real-time beat detection algorithms.

I wonder if it's possible to use some kind of translator, like Apple did with Rosetta to run PowerPC code on x86. This is of course not interesting for the Surface but it might be a nice solution for a desktop transition to ARM.

No, such a claim would be complete nonsense.

We are using a local database as a mirror for offline use, which is a key requirement. Profiling (a forgotten art nowadays) shows that most time spent during queries is in this bridge and not in the actual queries.

Our app is used by people working in remote areas without mobile/wifi reception. Therefore we maintain a local copy of the user's state.

We are using SQLite. The performance bottleneck is not the database itself but conversion between the Java and JavaScript environments.

I have been working on a large React Native project for several months now. It's great for quick prototyping but once we started doing heavy database stuff it got really slow, especially on Android. Of course we could have ported that part to native code, but that kind of defeats the purpose, doesn't it?