Hacker Newsnew | past | comments | ask | show | jobs | submit | JimBlackwood's favoriteslogin

It's not any kind of paradox. Structural unemployment happens when the skills of the work force don't match the needs of employers, so there is both unemployment and difficulty hiring.

Structural unemployment is usually high when there's a rapid change in demand for skills, as of course there is in tech. It results in crazy high salaries too. People with machine learning experience are getting 7-figure offers, while people with jQuery experience can't find jobs.

As an individual, you can both improve the economy AND make fat stacks by learning the skills that are in high demand. As an employer, you can do better by finding skill sets that aren't in high demand, with enough overlap with what you need that you can retrain. There are a lot of unemployed video game programmers right now, so if you can figure out how to use people with those skills you can hire some smart, energetic people at moderate salaries.


PDF files, and why the heck they are so slow to read. Hours upon hours of perf(1) and fiddling with ugly things in C. My main takeaway is everyone in the world is doing things HORRIBLY wrong and there's no way to stop them.

(Digression: did you know libpng, the one everyone uses, is not supposed to be an optimized production library—rather it's a reference implementation? It's almost completely unoptimized, no really, take a look, anywhere in the codebase. Critical hot loops are 15 year old C that doesn't autovectorize. I easily got a 200% speedup with a 30-line patch, on something I cared about (their decoding of 1-bit bilevel to RGBA). I'm using that modified libpng right now. I know of nowhere to submit this patch. Why the heck is everyone using libpng?)

The worst offender (so far) is the JBIG2 format (several major libraries, including jbig2dec), a very popular format that gets EXTREMELY high compression ratios on bilevel images of types typical to scanned pdfs. But: it's also a format that's pretty slow to decompress—not something you want in a UI loop, like a PDF reader is! And, there's no way around that—if you look at the hot loop, which is arithmetic coding, it's a mess of highly branchy code that's purely serial and cannot be thread- nor SIMD- parallelized. (Standardized in 2000, so it wasn't an obvious downside then). I want to try to deep-dive into this one (as best as my limited skill allows), but I think it's unlikely there's any low-hanging optimization fruit, like there's so much of in libpng. It's all wrong that everyone's using this slow, non-optimizable compression format in PDF's today, but, no one really cares. Everyone's doing things wrong and there is no way to stop them.

Another observation: lots of people create PDF's at print-quality pixel density that's useless for screens, and greatly increases rendering latency. Does JBIG2 support interlacing or progressive decoding, to sidestep this challenge? Of course it doesn't.

Everyone's doing PDF things wrong and there is no way under the blue sky to make them stop.


Meditation seems to sound really weird to lot of people but the zen breathing exercises I've done are mechanical and completely devoid of mystical culturally relative concepts.

Simple introductory exercise in meditation for those unfamiliar with it. No mystical chanting required. The only caveat is that it can be as boring as hell. I'm not an expert but this should contain the essentials of a simple zen practice:

Equipment: timer and a comfortable place to sit without interruptions

Time: 10 minutes (or 5, whatever you feel like but try to commit to the timespan you choose). Put the time on the timer.

1. Sit down. The position should be stable so you don't fidget around.

2. Get a good posture: keep you back straight

3. Concentrate on your breathing. Keep breathing slow and deep breaths

4. Count your breaths, mentally, from one to ten, starting from one on exhale, two on inhale etc until you reach ten and go back to one.

5.Start the timer

Proceed until timer runs out.

Try to maintain this: sit still, back straight, rythmic breathing, count each breath.

You may observe thoughts arising. Observe the thoughts but do not get lost in them. You will notice you have been lost in your thoughts because you loose count of your breaths, at which point you just start counting from one. Do not try to block the thoughts.

If you can keep complete count throughout the entire span on first try then that's great!

Any weird sensations you might get are just pointless disruptions created by your mind.


Create a folder on your computer or get a sturdy box made of good cardboard with a lid. Name the folder “Process”. Write the word “Process” on the box.

While working, occasionally take photos or screenshots of what you are doing showing your workspace, the computer desktop, the desk with pencils and papers and cables everywhere, the wall or piece of string with notes. Show the messy process of creating something.

Type notes on text files and save them with a name like yyyy-mm-dd-note-title.txt. Write notes on bits of paper and notebooks and journals with pencils and pens that you keep all around the places you spend most of your time in, including within arms-reach of where you sleep.

Practice writing down notes on a piece of paper in the dark, so you can do so when waking up in the night, before daybreak, to jot down thoughts and ideas from dreams.

Record messages and melodies using your pocket computer and remember to save these in your Process folder, too. You are looking for your voice.

Put these digital and physical notes in the Process folder and in the Process box.

Thank yourself later, in years to come.

You are what you observed. Experiences, memories, stories to be told. Put your marker on the map in time, that others may find and learn from.


I chose to live in Michigan mostly for climate crisis and natural disaster reasons. One of the largest fresh bodies of water, no earthquakes, hardly any tornadoes, no hurricanes, ocean levels won’t impact directly, forest fires aren’t common in the scale of California. Projections show it will still be farmable in 50 years. The downside is it’s a Midwest flyover sate, and the winters can be tough. The lack of sun and abundance of snow can be impactful on mood.

At FOSDEM 2023 I will be presenting glidesort in the Rust room.

It is a new stable sorting algorithm that is a hybrid of quicksort and mergesort which is much faster for random data, while still taking full advantage of pre-existing order or inputs with many duplicates. On an Apple M1 in Rust the latest version is ~4.5x faster than the stdlib slice::sort for sorting 2^25 random integers while using 4 times less extra memory. It is 11.5x faster if you happen to sort only 4096 distinct integers with many duplicates. Note that the algorithm is purely comparison based and does not contain special type-dependent SIMD stuff.

I have a short preliminary talk on glidesort here: https://www.youtube.com/watch?v=2y3IK1l6PI4.

Perhaps the V8 people will be interested in it as well.


O'Reilly's "Termcap and Terminfo" book was very helpful in filling in some of the random holes in my understanding of the tty and it's history.

In brief:

1. What worries you? Not some blatant project stuff but bigger deal issues. "How do I learn enough here to make a lot more money in a few years" or "I don't understand how our product is going to make money in this environment". Stuff like that is probably on your mind in some way (unless you are an unthinking dolt, but you wouldn't be asking this if you were) - get it out there and gain perspective.

2. Blind spots. You know how everyone in your life has some stupid thing that holds them back that they are oblivious to but is obvious to everyone else? You have it too. Find a way to convince your manager that you can tolerate real feedback and ask them about this. It will make your life better way beyond work.

3. Find out what worries them. Maybe in some way you can help them deal with stuff "beyond your pay grade" - your pay grade will eventually have to catch up :)

4. This should have been number one - get to know them as a person and help them get to know you.

Good luck. Doing any of these will put you on an exponential growth pattern compared to others.


I plan to learn woodworking and gardening.

Read the Sam Altman vision of the future. It's brilliant and highly utopian. Corporations and wealthy will not accept high taxation over property and assets. But AI will reduce jobs dramatically.

So, I will work using my current skill set and happily move away from this madness.

Incorporating AI into workflow? No.

In this rate of innovation and adaptation, the short products' lifecycle will diminish any long term effect.

The bottom line is: Those who have more labeled data to train on, will win.

I don't have data. I don't have access to capital. The only capital I have is the knowledge and experience.

Joke aside, woodworking and gardening is real. I plan to learn C and C ++. The market for supporting old systems is big. Huge.


Just like Uncle Bob. I am dismayed by the fame of these two.

If you want to actually learn what they call "clean coding" (aka proper design, these guys are great at creating buzzwords, and great public speakers), the way to go is "Systematic Program Design" (in youtube [1], same material as edx's How To Code), which is based on the Htdp book ("how to design programs"), followed by MIT's OCW 6.005 [2] ("Software Construction").

Both are free. But who knows this? There is no one to hype them, no "movement" behind what are tried and trusted techniques, no flashy CQRS SOLID acronyms.

These two courses, instead, teach you timeless concepts and techniques that will survive all fads.

[1] https://youtube.com/channel/UC7dEjIUwSxSNcW4PqNRQW8w

[2] https://ocw.mit.edu/courses/electrical-engineering-and-compu...


Seems like a good place to copy/paste one of my comments from a different thread.

Disclaimer: I'm not particularly good at this, so whatever comments I make are well intentioned but may be of varying accuracy.

...

Online sources:

* OWASP.org is a good place to find info. If you look something up, there's a good chance you will find it here.

* https://owasp.org/www-project-web-security-testing-guide/ Thanks to redis_mic for this one, I didn't know it existed until today.

* overthewire.org Similar to HTS, but you don't need an account. The subject matter covered is also slightly different.

* https://0x00sec.org/ A forum dedicated to security. There's a lot of script kiddies, but also some gold.

* https://www.hackerone.com/ What better way to learn then practice on live targets? That being said, I would do some of the others first.

...

I do a lot of learning through reading, so books:

* Network Security Assessment by Chris McNab. I have second edition, which is a good and instructive read, but quite outdated.

* Real-World Bug Hunting by Peter Yaworski. Web security 101. Good read, and fairly useful.

* Advanced Penetration Testing by Wil Allsop. Outdated, but interesting. You will never use flash again after reading this.

* Social Engineering, The Science of Human Hacking by Christopher Hadnagy. This is a very interesting read. Also, one of the few that can't go out of date.

...

This should be enough to get you started. There's a couple more books I can think of, but they tend to be more specialized into certain fields of security and less approachable/generally applicable. If you want these recommendations as well, feel free to email me, my email's in my bio.


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

Search: