jake_morrison

Joined 18 years ago

Karma
1,254
Submissions
183
Member since
Feb 17
I help startups and entrepreneurs build products, serving as fractional CTO and managing the team at https://www.cogini.com/

Contact me at [email protected] or https://www.linkedin.com/in/jakemorrison/

View on Hacker News

Recent submissions

Comment · 1 year ago
I thought about doing this years ago, but without AI, the only way was to have people do the analysis. I thought this was bad karma, as I would end up paying people in Bangladesh to look at the stuff that Americans eat.
Comment · 1 year ago
Embedded systems often have crappy compilers. And you sometimes have to pay crazy money to be abused, as well.

Years ago, we were building an embedded vehicle tracker for commercial vehicles. The hardware used an ARM7 CPU, GPS, and GPRS modem, running uClinux.

We ran into a tricky bug in the initial application startup process. The program that read from the GPS and sent location updates to the network was failing. When it did, the console stopped working, so we could not see what was happening. Writing to a log file gave the same results.

For regular programmers, if your machine won't boot up, you are having a bad day. For embedded developers, that's just a typical Tuesday, and your only debugging option may be staring at the code and thinking hard.

This board had no Ethernet and only two serial ports, one for the console and one hard-wired for the GPS. The ROM was almost full (it had a whopping 2 MB of flash, 1 MB for the Linux kernel, 750 KB for apps, and 250 KB for storage). The lack of MMU meant no shared libraries, so every binary was statically linked and huge. We couldn't install much else to help us.

A colleague came up with the idea of running gdb (the text mode debugger) over the cellular network. It took multiple tries due to packet loss and high latency, but suddenly, we got a stack backtrace. It turned out `printf()` was failing when it tried to print the latitude and longitude from the GPS, a floating point number.

A few hours of debugging and scouring five-year-old mailing list posts turned up a patch to GCC (never applied), which fixed a bug on the ARM7 that affected uclibc.

This made me think of how the folks who make the space probes debug their problems. If you can't be an astronaut, at least you can be a programmer, right? :-)

Comment · 2 years ago
Comment · 2 years ago
Apple making cars was an interesting play when they had a bunch of cash overseas and good relationships with Chinese manufacturers. Tax law changes made bringing money back to the US less punishing, and manufacturing in China is becoming problematic.
Comment · 2 years ago
Comment · 2 years ago
Yeah, I actually used OpenEmbedded, the predecessor to Yocto. The project was in 2011.
Comment · 2 years ago
Comment · 2 years ago
It's a bad market, probably the worst since 2000. Some of this is overhiring and zero interest rate behavior coming to an end. Companies are shifting from prioritizing growth to profitability. There is also a lot of asshole behavior. They are laying people off to please Wall Street, not because they need to for financial reasons. And they are doing layoffs in extremely callous ways, e.g., right before Christmas.

My daughter's data engineering team in finance was reduced from five to two, and they are not giving raises that match inflation. She is almost singlehandedly responsible for servicing million-dollar accounts. It's not like there isn't money.

There is also a lot of hiring of remote people outside the US. The companies figured out how to do remote work during Covid, and they are using it to reduce costs.

Things will probably improve in the next year, but it will be rough for a while.

Comment · 2 years ago
Sure, you can make deadlocks in any language, but it's uncommon in Erlang. Shared state is the exception, and message passing means that things that manage state, such as gen_servers, only process one message at a time from their inbox.

Contrast this with languages like Java where every object is a potential concurrency problem. Or the 10+ years of trying to make Python async (see Twisted).

Comment · 2 years ago
In some companies, staff positions can only be effectively done by someone who has been there for 10 years. They know the specific tech stack that the company uses, know the application, know where the bodies are buried, and everyone in the company trusts them. It's basically impossible for someone to parachute in and do the job.
Comment · 2 years ago
Erlang is based on virtual threads (confusingly called processes). The Erlang virtual machine schedules them on OS threads. Erlang processes communicate using message passing, preventing deadlocks. You can use millions of Erlang processes without problems, e.g., to handle millions of Elixir LiveView sessions.
Comment · 2 years ago
Like ogres
Comment · 2 years ago
I had a client who spent $1M+ per year on Google Ads, and Google would fly them to California each year to meet with their account manager.

I don't know what the equivalent GCP spend would be to get similar treatment. Presumably higher. So that's a data point, at least.

Comment · 3 years ago
I am an American who has worked with startups in Taiwan for 30 years. I am happy to talk.
Comment · 3 years ago
If you need a company in Taiwan, it's generally best to have your main company outside and have a branch in Taiwan. It has significant tax benefits, particularly for foreigners.

A branch can repatriate profits to the parent company, after paying Taiwan tax. If you have a standalone Taiwan company, then you have to pay dividends, then pay personal tax on it. If you are not resident in Taiwan, then you would pay 20% tax on those dividends. There is also a 5% tax on retained earnings.

Another benefit is that if your company pays someone overseas for services, then Taiwan considers that "Taiwan source income", and they owe 20% tax on it. Other countries like Hong Kong would not tax that money.

As foreigner, if you leave, then you would find it difficult to run your company remotely. So you might as well set up somewhere else.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton