Hacker News new | past | comments | ask | show | jobs | submit | awiesenhofer's favorites login

My mum and dad were teenagers during the war and did fire-watching, notoriously avoided if at all possible (they said) so given to anyone biddable or old. It got a bit hair-raising according to my dad, he stood in a doorway near Imperial College watching a plate glass sheet decide if it was going to fall on him or into the building. Walking through labs with bombs dropping was .. intense.

If you had an "anderson shelter" in your garden you were lucky. Many poor working class families got a "morrison shelter" which was basically a steel table you could use in a dining room or kitchen and then hide under. In some ways more convenient I guess? (Anderson shelters got cold and damp)

He was bombed out of a house in Stepney. They lost everything. I can't decide if he missed more the entire collection of the first 50 penguin books, or a lump of melted glass he scavanged from the fire of crystal palace in the 1930s: these are the two things he remembered in the 60s and 70s talking about it.

He was studying electrical engineering and maths at university by the end of the war and so not called up. He said they trained in how to manage live power cables with wooden "tongs" and were part of rescue crews when buildings collapsed. My mum was tracing maps for D-Day, and packing munitions and my Aunt did technical drawing on the "mulberry harbour" concrete caissons floated over to the beaches for D-Day.

A good read on the blitz would be "the people's war" by Angus Calder, which in large part is made up from "mass observation" recruited/organised diaries kept during the period, and donated to the University of Sussex. My mum kept one of them.

A standing joke in Architecture circles is that the greater london council destroyed more Wren churches in London than the Blitz. UCL used to say the basements where compsci was sited were kindly dug by the Germans.

Postwar housing was a mess. My aunt lived in a 5 story block of flats in Paddington she got on a long lease as bomb damaged property, my Uncle bought into commercial premises around Farringdon in a deal which demanded he do structural repairs immediately. There was a huge housing shortage and for years you could still see the pre-fabricated houses around Lambeth Palace which were a godsend of temporary housing but persisted into the 60s. Stepney where my dad grew up was a wreck, anywhere around the docks basically. It was a patchwork.

The pseudo-documentary film "Fires were started" by Humphrey Jennings has some iconic footage of the dock firestorm (not to be compared with Dresden, but it was severe) You would recognise the shots of the fronts of builings collapsing and firemen holding hoses wearing brodie helmets.

Comparisons are evil. Coventry was really badly affected and the modern day cathedral stands next to the wreck of the original gothic one. It's like the Kaiser Wilheim spire in Kurfürstendamm in Berlin, a very pale shadow of the reality at the time. Berlin, Dresden, Hamburg, Cologne, Rotterdam were all significantly worse affected than London in the end, but to anyone in London I doubt it felt like it. The bombing in Japan was on an altogether different scale.


I think all these comments discussing white noise miss the point, which isn't white noise but "if people would listen to what is more profitable to us, instead of what they enjoy listening to, we would make X more profit".

They couldn't even have gotten to the point of confusing white noise and leaves rustling with podcasts and other "content" to make a buck off, if it wasn't for that first step. And that view of users as a resource, as people who need to be told what they want, permeates so much of tech... like a giant elephant shitting all over an otherwise quite elegantly made couch.


Thnak you, this had been bugging me for a while. Looks like I'll need to permanently install a UA-switcher extension.

Yesterday I saw a HN comment saying you can add the (?|&)disable_polymer=1 parameter to the end of YouTube URLs to make the site much faster - iirc Polymer is extremely slow on Firefox only. This extension was also linked: https://addons.mozilla.org/en-US/firefox/addon/disable-polym...

Unfortunately there doesn't seem to be any workaround for ReCaptcha on FF. I generally end up opening the website in the GNOME or KDE (Falkon) browser which use something like WebKit/Blink - there it works on the first try every time.


So I have been thinking about software projects lately, and I have come to the conclusion that a lot of these tools/solutions exist to "build houses" when most of us are just throwing together lean-to sheds and dog houses.

Software projects today are naturally more complex and have more complex tooling the same way building a house today requires more knowledge and skill than it did 50 years ago.

Then there are some folks/organizations building cathedrals, and the associated tooling (react, angular, maven, etc) and all the rest of us look up in awe and thing "well I guess if I want to be that good I need to use those tools on this dog house."

But your dog house doesn't have the need to host parties, provide security, or even real weather protection other than a roof to keep the rain and sun out. Yet we all try to build our dog houses in ways that might be better if they are one day converted to a proper living quarters but likely will never have a need for running Water or windows.


I'm down 83 lbs from 2017 and I'm at a healthy BMI for the first time in 15 years. I know I will not gain the weight back. Why? Because I finally figured out how to manage a routine, how to exercise regularly, how to plan out what I eat, and I learned to get enough sleep.

Don't want to be fat anymore? Stop eating at restaurants, cook all your own food, bring in a lunch to work, count your calories. Also exercise, lots. And get 7+ hours a sleep a night.

That's it, that's all it takes.


This ties to something I was thinking about yesterday, while wandering around neck deep in brambles with a brush-cutter.

We live in a steep sided river valley in northern Portugal, and the place came with 5 Ha of woodland, on a SE facing slope.

We’ve only lived here some six months, and we’ve gradually realised that almost every square inch of the hillside has been terraced - the process is to build hefty walls along the contours, and then let the hill slump into the gap, making a level growing area.

The thought that occurred to me/thing I noticed was just how much IR the wall I was working next to was emitting after the sun went down - felt like a patio heater pointed towards my face from a few meters away. I then realised that the reason that they’re all so incredibly overgrown is likely the combination of thermal mass warming the surrounding area, water being forced to ground level at the foot of each wall, and accumulated mulch being trapped by each wall.

I can’t count the number of times since starting here that I’ve marvelled at the simple ingenuity applied towards working with nature, from the terraces creating a better growing environment than the now-farmed planes above us, to the positioning and orientation of the mill - it’s situated at the one point along the bank that gets sunlight all day, all year, apart from two weeks in midwinter - which just happens to coincide with an outcrop that they co-opted into a weir.

Anyway. I wonder to what extent the idea of a fruit wall stemmed from people seeing this sort of terracing, and deciding to do it without a hill.


It really depends on how you define rich. I think the traditional concept of “having enough assets work for you that you do not have to” (i.e. the idle rich) is the correct bar, but we often mean mega-rich now (centimillionaires+) when we say rich.

I ran a small business you’ve never heard of, and left it four years ago with a not huge (<£1M) amount of money - but it was enough for me to acquire enough working assets that I have been able to retire from having to work in my early 30’s. I spend less than the assets earn, and because I’m free from having to work, I’m able to live in an inexpensive country, where my purchasing power is huge - freeing yourself from direct labour is the dividing line in my view - and you can get there by eschewing depreciating assets and instead acquiring earning assets. I don’t own a helicopter, I don’t have a yacht, my car is a beat up 1988 hilux - I could have those things, but then I would be poor again.

I did spend a lot on coffee, while running the business, admittedly.


I'd set three milestone goals:

1) enough to weather a one-time unexpected event and necessary expense without going into debt (car needs brakes replaced, dog needs surgery, someone spills an entire frappuccino into your open laptop, you break a bone and have medical bills, you need to fly cross-country for a good friend's wedding, etc). For most people, $1000-2500 is enough for this. Keep it in an interest-bearing checking account or a "high yield" (yeah, right) savings account that supports easy transfers to checking. There is a 99.9999% chance you will need this money in the next 10 years. This is the money that keeps you off the knife's edge of a debt spiral.

2) enough to live on for 1-3 months of unemployment. Even if you can easily get a programming job within a month now, that may not be the case if the startup bubble bursts. And besides, even now you don't want to be beholden to the first thing you find. If the first job you take turns out in the first couple months to be a nightmare, you'll need to be ready to handle another month or more of unemployment while you find something better. Or you can afford to take a month of vacation to recover from burnout once you've completed the stressful process of job hunting. This also gives you a cushion to take small risks like switching specialties or moving to a new city. Keep this in an easily accessible "high yield" savings account. There is a 98% chance you will be glad to have this money some time in your life. This is the money that gives you security.

3) 3-12 months of living expenses. This lets you weather larger life events (a parent is diagnosed with cancer and you want to stop working and move back to be with them for the last several months of their life). Or take bigger risks like moving abroad or going back to school or even switching careers or starting your own business. Or deal with a severe recession as some other posters mentioned (the market for programmers seriously bottomed out when the first dot com bubble burst!) This money can and probably should be invested as long as it's not in a retirement account with penalties for early withdrawal. There's an 80% chance you'll want to access at least some of this money some time in your life. These are the savings that give you freedom.

And yes, I have personal experience of using my savings - I've started a freelance business that took longer than I'd hoped to reach profitability. I've founded a startup. I've taken anywhere from three weeks to two and a half months between jobs, largely voluntarily. Always glad to have these funds.


I think he forgot to mention that you need to try the freelancing route when you have saved some $$$ buffer, for me it was about a year worth of free falling.

It is going to be bumpy and you need to have the peace of mind to focus on the present.

Moving to a foreign country to save money could be a good idea, but only if you would like to live abroad. If you do it only for the money your life will be miserable. Also the cost of leaving your local network behind might be very high


I've started doing this as a hobby, to see how many services I regularly use can be replaced. They're all behind an nginx reverse proxy + letsencrypt cert on a hetzner box.

IRC: https://github.com/thelounge/thelounge/ (Use a lot, and it works decently well)

Cloud: https://github.com/nextcloud/server/ (Works surprisingly well, however, I've heard there are security issues)

Analytics: https://github.com/matomo-org/matomo/ (I'm comparing how much I'd lose out compared to google analytics, if I ever move away from it)

Chat: https://github.com/RocketChat/Rocket.Chat/ (never really use it, just wanted to see how it works)

Git: https://github.com/gogits/gogs (Mostly for mirroring git repos)

Browser IDE: https://icecoder.net/ (I'm able to edit the code for the bots/projects I host from the browser itself)

Calibre library front end: https://github.com/janeczku/calibre-web

Pastebin: https://github.com/LINKIWI/modern-paste (never use it)

Linkshortener: https://github.com/LINKIWI/linkr (occasional use)

Mail + mailbox + webmail: https://mailcow.email/ (Had to spend a bit more time, but now it is able to deliver mails to gmail/outlook/icloud without issues. I use it as a mailing solution for all the selfhosted projects which need smtp)

Online Markdown editor: https://github.com/joemccann/dillinger (Used quite a few times)

Minecraft server

Music streaming: https://github.com/phanan/koel/ (I'm not a native english speaker, so quite a few songs I listen to aren't on spotify)

Neo4j, mongodb, mysql and postgres: For all database needs.

Server monitoring: https://github.com/firehol/netdata

Photos: https://github.com/Chevereto/Chevereto-Free (I use it quite a lot to host images I'd have used imgur instead)

R Studio server, and Jupyter notebooks: For work/hobby programming

I've had a lot of help from https://selfhosted.libhunt.com/ and https://www.reddit.com/r/selfhosted/

I"ve had to move from one VPS provider to another while testing, so I have a handy guide for setting up quick here: https://github.com/itsmehemant123/basic-vps-setup .

I have a separate guide for hosting each of the above projects behind an nginx with https, but its quite rough right now. So its private.


Cute. "liver and onions."

I'm very fit and in excellent health. 50 year old male, a performance athlete, 6'4" 230 lbs, 14% body fat (i.e., lean and muscular). BP is 120/65, lipid panel is:

Total: 235 HDLC: 69 LDL: 154 TRIG: 58

I got a Coronary Calcium Scan (CAC) this year and my score was zero, i.e., no arterial calcification. This is a far superior indicator of heart/cv health than a lipid panel.

Nutrition is a backwater of poor science, mostly backed by epidemiological survey studies rather than randomized control trials. Eating meat is a proxy or associative marker for people with poor lifestyle habits eating a (terrible) standard american diet. The health orgs are usually political animals, esp the AHA who still believes that dietary cholesterol is a cause of heart disease, that polyunsaturated oils are good for heart health, etc. They look at nutrition as follows: "Let's see, you consume sugar soft drinks and beer, you eat hot dogs, bacon-cheeseburgers, pizza, cheesesteaks, french fries, wings, donuts, waffles and pancakes, eggs and sausage, candy bars and ice cream. You don't exercise, don't sleep well, you're obese, pre-diabetic and show signs of cardiovascular disease. THE PROBLEM HERE IS YOU NEED TO CUT ALL THAT UNHEALTHY MEAT OUT OF YOUR DIET!!"

Research gaps in evaluating the relationship of meat and health https://www.sciencedirect.com/science/article/abs/pii/S03091...


"There’s something fractal about rest: we need it daily, weekly and yearly."

First with the Skylake CPUs only being supported on Windows 10, now with these Atoms not being supported anymore. That makes two.

Strike three and you're out, Microsoft! And I mean if this happens again soon, it should be clear to everyone that Microsoft is indeed abandoning hardware at a much faster rate with Windows 10.


I know one person who does this for real estate developers. He gets involved in contentious projects early on, goes to community meetings, offers testimony before the city council, etc. When construction gets going and people inevitably get pissed about some aspect of the project, he gets publicly fired to deflect the blame while the project moves on. Have seen it happen on three different projects in two cities now and, somehow, nobody catches on.

The most important operation in QNX is MsgSend, which works like an interprocess subroutine call. It sends a byte array to another process and waits for a byte array reply and a status code. All I/O and network requests do a MsgSend. The C/C++ libraries handle that and simulate POSIX semantics. The design of the OS is optimized to make MsgSend fast.

A MsgSend is to another service process, hopefully waiting on a MsgReceive. For the case where the service process is idle, waiting on a MsgReceive, there is a fast path where the sending thread is blocked, the receiving thread is unblocked, and control is immediately transferred without a trip through the scheduler. The receiving process inherits the sender's priority and CPU quantum. When the service process does a MsgReply, control is transferred back in a similar way.

This fast path offers some big advantages. There's no scheduling delay; the control transfer happens immediately, almost like a coroutine. There's no CPU switch, so the data that's being sent is in the cache the service process will need. This minimizes the penalty for data copying; the message being copied is usually in the highest level cache.

Inheriting the sender's priority avoids priority inversions, where a high-priority process calls a lower-priority one and stalls. QNX is a real-time system, and priorities are taken very seriously. MsgSend/Receive is priority based; higher priorities preempt lower ones. This gives QNX the unusual property that file system and network access are also priority based. I've run hard real time programs while doing compiles and web browsing on the same machine. The real-time code wasn't slowed by that. (Sadly, with the latest release, QNX is discontinuing support for self-hosted development. QNX is mostly being used for auto dashboards and mobile devices now, so everybody is cross-developing. The IDE is Eclipse, by the way.)

Inheriting the sender's CPU quantum (time left before another task at the same priority gets to run) means that calling a server neither puts you at the end of the line for CPU nor puts you at the head of the line. It's just like a subroutine call for scheduling purposes.

MsgReceive returns an ID for replying to the message; that's used in the MsgReply. So one server can serve many clients. You can have multiple threads in MsgReceive/process/MsgReply loops, so you can have multiple servers running in parallel for concurrency.

This isn't that hard to implement. It's not a secret; it's in the QNX documentation. But few OSs work that way. Most OSs (Linux-domain messaging, System V messaging) have unidirectional message passing, so when the caller sends, the receiver is unblocked, and the sender continues to run. The sender then typically reads from a channel for a reply, which blocks it. This approach means several trips through the CPU scheduler and behaves badly under heavy CPU load. Most of those systems don't support the many-one or many-many case.

Somebody really should write a microkernel like this in Rust. The actual QNX kernel occupies only about 60K bytes on an IA-32 machine, plus a process called "proc" which does various privileged functions but runs as a user process. So it's not a huge job.

All drivers are user processes. There is no such thing as a kernel driver in QNX. Boot images can contain user processes to be started at boot time, which is how initial drivers get loaded. Almost everything is an optional component, including the file system. Code is ROMable, and for small embedded devices, all the code may be in ROM. On the other hand, QNX can be configured as a web server or a desktop system, although this is rarely done.

There's no paging or swapping. This is real-time, and there may not even be a disk. (Paging can be supported within a process, and that's done for gcc, but not much else.) This makes for a nicely responsive desktop system.


Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: