News for hackers. Stuff that matters.

lukehutch

I'm 46, and while I do think my cognitive speed has declined a tiny bit, my abstract thinking has improved throughout life. The one change I have noticed though is that programming has become insanely complex during the 37 years I have been programming, but more especially during the last 10-15 years. It's at the point now where you can't even create a basic website, to modern standards, without spending months of work to develop it, or without spending 95% of your time on StackOverflow wrestling with bugs and complexities of 7 different pieces of framework that you're trying to get working together. It's utter insanity.

What I suggest for your current situation is to diagram everything. Just buy some big sheets of butcher paper, and draw out the entire nested API structure. Rely on your visual sense so that you don't have to do as many mental gymnastics. Your visual processing center is the GPU of your brain, it has vastly more parallel processing power than the language processing centers of your brain.

Also remember that everyone has different aptitudes. You might not be decreasing cognitively at all, it might just be that this problem doesn't click with you like it does with the other developers.

Try switching to Dvorak. It's a trip for your brain (which will stave off cognitive decline), but also 70% of the keystrokes are on the home row on Dvorak vs. 30% on QWERTY, so you move your fingers around less, which should result in a lower error rate once you get back up to speed.
Re:Ask HN: Meta Question Does FAANG Become Maang or Manga? on Thursday October 28, 2021 @06:39PM (#29032945)
Kind of a silly question when we're not saying FAANA rather than FAANG.
How about instead aiming for 1000x as fast, so that it's as fast as a statically-typed language? (Google's pure Python Protobuf implementation is literally 1000x slower than their Python front-end that wraps the C++ Protobuf library...)

Oh wait, achieving native speed is close to impossible for a dynamically-typed language.

I'm pretty sure the only thing that playing Factorio really tests is the player's ability to learn and play Factorio.
Re:ARM Cortex-A72 fetch and branch processing on Monday December 14, 2020 @02:48PM (#25422271)
What's the previously-investigated dataflow processor architecture that the author refers to in the bolded text?
Planes can be switched out last-minute. I plan to check the plane type at the gate every time I fly for the next 10 years, and if it's a MAX, I'll reschedule my flight on the spot.

They claim they solved the software problem, but they didn't solve the physics problems created by the engine position (which necessitated the software in the first place).

Re:We Rewrote Everything in Rust, and Our Startup Still Failed on Tuesday November 24, 2020 @09:42AM (#25198812)
Pretty sure it's 100% satire, but that doesn't mean it's not the story of 80% of startups.
This is a straw man argument. Python's associative array code is written in C, not in Python, and Redis is written in C. So you're comparing C to C. The 40% loss in performance is due to Python being much slower at doing the stuff that's actually written in Python.
Re:Manuka, the World’s Most Coveted Honey (2018) on Friday November 06, 2020 @07:18PM (#25012334)
I grew up in NZ and find it hilarious when I see a tub of manuka honey in a supermarket in the US. This is the most genius marketing ripoff of all time. Most honey you could buy in NZ back then was either clover honey or manuka honey, it cost about $3 for the same amount, and there was nothing special about manuka honey. Manuka is just teatree, by the way. And all honey has the same antimicrobial properties -- it has nothing to do with hydrogen peroxide and definitely nothing to do with UMF. The reason honey kills microbes is it has exceptionally low water content.
These days the standard way to do this is to use a USB UART adapter, or a USB-connected Arduino, an Ethernet-connected Raspberry Pi, etc. -- they have GPIO ports, both analog and digital, as well as I2C, SPI, etc etc. There are enormous numbers of options for motor controllers and sensors available off the shelf. You can bit bang all you want from your desktop computer, via this interface!
Next thing we'll hear from QAnon is that the Clinton Foundation is putting MDMA in the water to turn everyone liberal.
Re:A tool that increased my typing speed on Monday October 12, 2020 @05:45PM (#24759785)
I switched to the Dvorak keyboard layout 20 years ago (in the middle of a mission-critical project, no less), and not only doubled my typing speed, but significantly reduced arm/finger strain. Once you put in the 3-ish weeks to retrain your brain, and get back to at least your original typing speed, you'll never go back to QWERTY.
Because the average of infection has dropped by over 20 years.
They say in the article that the conversion efficiency is 90%, which I assume means that if the reagent supply is infinite, 90% of the electrical energy you put into the catalyst is turned into chemical bond energy.
Presumably when the ethanol is burned, all the captured carbon is released again... So you have to re-capture each time you use it.
Re:Rob Pike: Go at Google on Friday October 26, 2012 @11:02PM (#4705195)
Favorite quote: "While that build runs, we have time to think."
Re:Solving the Multicore Dilemma on Sunday October 14, 2012 @05:39AM (#4651094)
Some good ideas -- have you looked at Dryad?
Re:Solving the Multicore Dilemma on Sunday October 14, 2012 @05:36AM (#4651089)
The least upper bound can be thought of as a virtual node consisting of the set of static constants (and the set of all inputs) fed into the rest of the lattice. The greatest lower bound is a virtual node consisting of the set of final output values that are "used" (written to an output file or database). If an intermediate value is computed but is not referenced anywhere, the data dependency DAG has a local lower bound node that is not connected to the greatest lower bound since the value is not written anywhere. If these unused nodes are pruned away, the result is a lattice.
Re:Solving the Multicore Dilemma on Saturday October 13, 2012 @11:48PM (#4650556)
This is only intended to be an optimal solution to the problem of building highly parallel data manipulation pipelines.
Re:Solving the Multicore Dilemma on Saturday October 13, 2012 @11:46PM (#4650555)
Yes, I have come across now fewer than five programming languages called Flow since posting the Flow Manifesto. It already has a new name, but the new name and info about the new directions of the project haven't been posted publicly yet.
Re:Solving the Multicore Dilemma on Saturday October 13, 2012 @11:30PM (#4650517)
Cyaegha: Since we're talking about graphs generated from source code, they will always be finite. These are not abstract infinite mathematical objects. All finite lattices are posets, but not all finite posets are lattices, so I stand by the usage. And "Program lattice" sounds a heck of a lot better than "program bounded poset" :-)

The second sentence is intended to be redundant, it gives further explanation as to the implications of the first sentence. (This doc was never intended to be a tight mathematical definition, only to give a quick introduction to the concepts, with links to the strict mathematical definitions.)

The reality is that the lattice or bounded poset formulation is only needed to understand that the specific language constraints described ensure that the dependency graph of any valid program can be statically determined to be a partial ordering. The compiler doesn't even need to build a DAG internally, it just needs to ensure the specific language constraints described are in place, and as a result, the language will be able to be parallelized in any manner consistent with the partial ordering of data dependencies.

Re:Solving the Multicore Dilemma on Saturday October 13, 2012 @11:00PM (#4650448)
Right, a loop is a morphism (or sub-lattice) from the state of loop variables at the beginning of a loop iteration to the state of loop variables in the next iteration. Iteration represents unrolling copies of the loop body sub-lattice in a linear string until termination. Recursion represents expanding sub-lattices inside sub-lattices until termination.
Re:Solving the Multicore Dilemma on Saturday October 13, 2012 @10:55PM (#4650443)
Variable assignment is not strictly necessary, what is necessary is that one loop iteration can modify the initial state of variables in the next loop iteration. This is the second alternative to setting the current value of a variable presented in Flow (specifically, recurrence relations, e.g. x' = x + 1, which are syntactic sugar but allow "variable assignment" but only allow assignment to variables accessible in the next loop iteration). So the Flow Manifesto doesn't cover the hole in the Böhm-Jacopini theorem specifically, but that doesn't mean this computational model is not Turing complete.

As far as proofs or working implementation, sometimes life gets in the way of progress :-)

Re:Solving the Multicore Dilemma on Saturday October 13, 2012 @10:45PM (#4650424)
What specifically is wrong with the definition of a lattice?
Re:Solving the Multicore Dilemma on Saturday October 13, 2012 @10:36PM (#4650413)
I'm not the OP but I'm the blog owner. Whoever posted the link posted the mobile link, and blogger.com has re-formatted the image to maximum width... not sure how to fix it, but I'll take a look :-)