HNHacker News
TopNewBestAskShowJobs

jbandela1

2,838 karma · joined October 27, 2013

Programmer, Medical Doctor, ex-Neurosurgery resident.

jbandela@gmail.com

hn@bande.la

submissionscomments
jbandela1··on Mathematics Without Numbers (1959)
I think the biggest mistake people make when thinking about mathematics is that it is fundamentally about numbers.

It’s not.

Mathematics is fundamentally about relations. Even numbers are just a type of relation (see Peano numbers).

It gives us a formal and well-studied way to find, describe, and reason about relation.

jbandela1··on How the 'hypnagogic state' of drowsiness could enhance your creativity
This is one of the areas where memorization/deep familiarity with material is important.

Sometimes, when I have a difficult problem, I will spend time reading up as much on the principles of the problem and then go to bed.

Sometimes, I wake up with the answer.

jbandela1··on Hollywood's vision of ancient Rome is all wrong, according to Mary Beard
Actually we have the descendants of both with us now and they are roughly the same size in terms of spectatorship

Circus Maximus - Nascar - 250,000 spectators

Coliseum - Football - 50,000 - 80,000 spectators

jbandela1··on A visual history of Visual C++ (2017)
Brings back memories.

But with a focus more on C++ features.

I started with Visual C++ 1.0. There were no templates.

Visual C++ 2.0 had templates.

There was by Visual C++ 3.0. They went to 4.0 to sync the MFC (Microsoft Foundation Classes) versions.

IIRC, you could use a bit of STL with 4.0

Visual C++ 5.0 was mainly optimizer differences.

Visual C++ 6.0 was actually pretty good. However it lacked partial template specialization. I was a Boost author at the time and lots of Boost code had specific workarounds for Visual C++ 6.

Visual C++ 2002 also had no partial template specialization.

Visual C++ 2003 was the first version with partial template specialization and that could compile all of Boost.

Visual C++ 2005 and 2008 did not have much changes.

Visual C++ 2010 tried to get back to 6 in the IDE (there was a deliberate marketing as such). It also had some C++11 features. But no variadic templates.

Visual C++ 2012 had no variadic templates.

Visual C++ 2013 was the first with variadic templates.

Nowadays, Visual C++’is doing much better tracking the C++ standard and often has compiler and library features before clang and GCC.

jbandela1··on Hash Ordering and Hyrum's Law
https://www.youtube.com/watch?v=ncHmEUmJZf4

Is a fun presentation by Matthew Kulukundis (designer of Google's Hash Table) with Hyrum Wright offering objections from the crowd (Hyrum's law) about the design and rollout of it at Google

jbandela1··on The Algorithm and the Hippocratic Oath
I think that is what this article is addressing.

You can never have a thorough protocol that always works.

Doctors need to be trained in the limits of protocol.

This is why the humanities are important. Doctors should not just be unthinking executors of protocols. Trained human intuition, expertise, experience still matters. Knowledge of the human factors still matters.

jbandela1··on The Algorithm and the Hippocratic Oath
> Several years ago, I was involved in a case that illuminates the difficult position many doctors today find themselves in. The patient was pregnant, close to delivery, and experiencing dangerous declines in her baby’s heart rate. She had been on a blood thinner, which kept me, the anesthesiologist, from placing an epidural in her back. She also had strange airway anatomy, which would make it a struggle to put her to sleep quickly if an emergency cesarean section became necessary. I advised the obstetrician to perform an elective cesarean section now, in advance, while we had good working conditions, and not to wait for an emergency, where time is of the essence, and where the delay needed to induce general anesthesia might seriously injure the baby.

I am a doctor and that scenario scares me. This has a very high likelihood of stuff hitting the fan and you need to think about your plan when it does.

You want stuff to hit the fan during daytime when everyone is around. In this case, during the day surgery is around, ENT, around, other anesthesiologists all of these can rush in if needed to help you secure an airway. You also have the neonatologists around.

If it happens in the middle of the night, the staffing will be much reduced and you won’t have as many resources available.

One of the most important things to learn as a doctor is when algorithms and guidelines actually apply to the current situations.

“Life is short, the art long, opportunity fleeting, experiment treacherous, judgment difficult”

- Hippocrates

jbandela1··on How the Hourglass Won
Apart from networking, the hourglass design is common throughout

Electricity is an hourglass. Coal plants, solar panels, gas turbines, wind turbines, nuclear power plants all produce electricity. This is then consumed by electric cars, computers, washing machines, etc.

LLVM IR is an hourglass. Many compilers and languages produce LLVM IR. This is then converted to many different instructions sets.

I think if you want many-to-many non-coupled relationships, you will end up with some sort of hourglass design eventually.

jbandela1··on If Your World Is Not Enchanted, You're Not Paying Attention
I personally find software development to be enchanting and am often thankful to have a job like this.

I get to make in the comfort of my home creations where I am only limited by my knowledge, imagination, and attention. I can experiment easily and explore completely different designs with an ease that any other discipline would be envious of. And then I can allow millions or billions to have access my creation with ease.

That seems pretty enchanting and almost god-like and magical to me.

jbandela1··on The staggering death toll of scientific lies
What is really interesting is looking at the meta analysis cited in the Vox article:

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3932762/

This reaches the conclusion that beta blockers are harmful. However, if you look at the meat analysis, specifically figure 2, you find that the conclusion is mainly driven by a single trial - the 2008 POISE trial.

If you go to the POISE trial: https://www.thelancet.com/journals/lancet/article/PIIS0140-6...

You find that they discovered fraud in at least some of the hospitals:

" Concern was raised during central data consistency checks about 752 participants at six hospitals in Iran coordinated by one centre and 195 participants associated with one research assistant in three of 11 hospitals in Colombia. On-site auditing of these hospitals and cases indicated that fraudulent activity had occurred. Before the trial was concluded, the operations committee—blinded to the trial results at these hospitals and overall—decided to exclude these data (webappendix 1). "

We have an important question - should pre-op patients be given beta blockers - and the largest, most definitive trials to answer that question have at least some taint of fraud.

jbandela1··on The human typewriter, or why optimizing for typing is short-sighted
The code presented has problems, but they are not the problems the author thinks it is.

The code is listed as c++. However, it is using a style that will result in problems.

First thing that jumped out at me is using const char* for strings. Using this muddies ownership and doesn’t store the length of the buffer which can result in all sorts of fun. Add to that that many times paths are formed by string concatenation, and it is looking like a code smell.

Second, there is no RAII and just manual management of resources.

These problems are far more likely to cause issues that the use of type deduction which by now has pretty good tooling support and is used successfully in many languages. Of course, not using RAII, using raw pointers make it tricky, but you shouldn’t be using those like that anyway.

jbandela1··on Airlines are running out of 4-digit flight numbers
> Except they don’t. American Airlines, Delta, and United are running out of flight numbers, and nobody knows what to do about it.

All of the above mentioned airlines are the size they are because of mergers.

Why don’t they use the IATA codes of the airlines they absorbed. For example Delta merged with Northwestern. In addition to DL, they could also use NW. American merged with USAirways. They could use US in addition to AA. United merged with Continental. They could use CO in addition to UA.

jbandela1··on Teaching Programming with Basic
Especially when teaching children, limiting abstractions is helpful.

A 5 year old can tell you what:

    10 PRINT “HELLO”
    20 GOTO 10

Does. You can basically look at each line In isolation and figure out what is going on. There is no nesting or scopes.

In addition other than the quotes there are minimal additional symbols. Even parentheses in a function call can be confusing.

jbandela1··on New insights into transcription factors and chromatin remodeling
> “By pinpointing AP-1 as a master controller linked to aging across cell types, we can now study the effects of drugs that reduce its activity to extend quality of life,” he said [2]. Targeting AP-1 and its associated pathways could lead to interventions that slow down or even prevent the onset of these diseases, marking a significant advancement in geriatric medicine.

Unfortunately, AP-1 is also involved in cancer.

From https://www.ncbi.nlm.nih.gov/pmc/articles/PMC10361657/

> Activator protein-1 (AP-1) is a transcription factor that consists of a diverse group of members including Jun, Fos, Maf, and ATF. AP-1 involves a number of processes such as proliferation, migration, and invasion in cells. Dysfunctional AP-1 activity is associated with cancer initiation, development, invasion, migration and drug resistance.

Mentioning AP-1 without mentioning its role in cancer is misleading. Many of the mechanisms that are involved with aging, likely have a role with controlling cancer by keeping cells, especially cells with damage, from proliferating or invading nearby or distant tissue.

jbandela1··on Tech doesn't make our lives easier. It makes them faster (2023)
Reposting my previous comment:

What technology has brought is choice and options:

A woman can choose to decouple having sex with getting pregnant.

A person can choose to live hundreds of miles away from their family yet still visit them every weekend.

A person can choose to move to a new country, halfway around the world, and still have their parents be able to see and converse with the grandchildren every night.

I can choose to talk to a person who speaks another language and have a computer translate for us.

On a more serious note:

I can choose to have my tooth decay treated without experiencing horrific pain.

A compound fracture is not an automatic sentence of death or lifelong severe disability.

jbandela1··on Google's carbon emissions surge nearly 50% due to AI energy demand
Apparently, instead of batteries the original idea was to have them be part of a brain based neural net which makes a lot more sense than batteries. But this was felt to be too complicated.
jbandela1··on Make Something With Your Hands (Even if It’s Hideous)
Most of the reasons for doing and the advice also applies to personal programming projects:

* Don’t begin with a ship in a bottle.

* Have a ‘learner’s mind.’

* Aim for meaningful rather than perfect

The cool thing with programming is that you can more easily experiment and evolve.

For me, the biggest draw of programming is the ability to create in a way that is largely only limited by my imagination, time, and knowledge.

jbandela1··on The lifespans of ancient civilisations (2019)
One issue is that this is mixing civilizations where we have a written historical record with civilizations where we don't have that and rely on archeology alone.

The problem with that, is that the historical record allows much finer grained distinctions which makes the civilizations seem shorter, while the archeological record can not have those distinctions which makes them seem longer

For example, without the historical record, could we really distinguish between Ancient Rome and Roman Empire. Or between Old Kingdom, Middle Kingdom, and New Kingdom Egypt? Or between the various Chinese empires since there has been a continuity of civilization and culture even across the various empires.

So this article ends up averaging two very different things.

In addition, some of the numbers are suspect. For example, Byzantine Empire is listed at 350 years. Most scholars would agree that the fall of the Byzantine Empire is 1453 with the Ottoman conquest of Constantinople. The latest date for the considering the empire "Byzantine" would be 800 with the coronation of Charlemagne as split from western Europe. This gives over 600 years. If you take 476 (fall of Western Roman Empire) as the start of the Byzantine Empire, that gives almost 1000 years.

jbandela1··on An Anatomy of Algorithm Aversion
I think part of the reason is that people understand that while in games such as chess, etc the entire state of the “universe” of the problem is provided to the algorithm, in the real world, they don’t have that confidence.

There are all sorts of cofounders to algorithms in the real world and an expert human is better at dealing with unexpected cofounders than an algorithm. Given the number of confounded possible, in real world use, it is likely that there will be at least 1 confounder.

jbandela1··on There's more to mathematics than rigour and proofs (2007)
> 3. And then write programs with vectors and maps.

But the maps this time are absl::flat_hash_map (or another C++ alternative hash map such as Folly F14, etc) instead of std::map (or even std::unordered_map).

jbandela1··on There's more to mathematics than rigour and proofs (2007)
> One can roughly divide mathematical education into three stages:

Similarly with programming.

1. Write programs that you think are cool

2. Learn about data structures and algorithms and complexity and software organization.

3. Write programs that you think are cool. But since you know more, you can write more cool programs.

If things are working as they should, the end stage of mathematics and programming should be fun, not tedious. The tedious stuff is just a step along the way for you to be able to do more fun stuff.

jbandela1··on First randomized trial of Ozempic for alcoholism shows big drops in drinking
This actually makes me a bit concerned about long term, general Ozempic use.

This to me at least makes one suspicious that this pathway is very deep in the reward subsystems of the brain, and is not just specific to say appetite and food.

What are the long-term effects of Ozempic use on these pathways? I am not sure we know?

For example, will people who have taken long-term Ozempic be less likely to do startups because their reward seeking behavior is altered?

It will take many years (decades?) before we get a complete picture of all the downstream effects of this.

Now, if someone is morbidly obese, severely diabetic, has heart disease, etc, I think it is pretty obvious that the benefits outweigh the risks. However, if it is used as an "easy" way for weight-control, especially long-term, I think there are still questions.

If you look back at the history of medicines, we do have a history of "wonder drugs" - see for example Heroin or even the COX-2 inhibitors (Vioxx) that later in retrospect had some major caveats.

jbandela1··on Apple's AI will erode human creativity one prompt at a time
1453: Printing press will erode human creativity one pressed page at a time. Every copy of every page in a book was unique reflecting the humanity of the scribe copying the work. Now we will just get mass produce pressed drivel.

1822: Photography will erode human creativity one plate at a time. A human creatively chose every color in a painting for portrait. Every form every line was creative. Now we just let light hit chemicals.

The truth is that when you automate a tedium a new art form emerges.

> and compose bedtime stories to read to your child complete with AI-generated illustrations.

One thing about AI stories is the ease of change. Imagine not just reading a bed time story but composing one together and changing it to explore new possibilities. Imagine changing major elements such as plot and characters and villains and heroes and have the story and illustrations reflect that. Imagine the creative fun you and your child can have!

If you can’t see such possibilities, the lack of human creativity is your fault, not technology’s.

jbandela1··on Viagra improves brain blood flow and could help to prevent dementia
That is true that it was originally for cardiovascular issues.

However, it seems that there was at least theoretical consideration that it could be used to treat ED

A nice overview is here:

https://www.nature.com/articles/nrd2030

jbandela1··on What use is prehistory to the historian?
> The distinction between history and prehistory has been dissolving for some time

The difference between history and prehistory is like having the source code with comments (history) versus the compiled binary (prehistory). Now the comments may be wrong or misleading but they are valuable to help understand the why.

And written records compared with oral traditions is the difference between having a git history versus just a source file. Having snapshots back in time is valuable to see how things evolved.

jbandela1··on Last hours of an organ donor
> When told of my upcoming case, I had mixed feelings. On the one hand, being in perfect health, unaccustomed to suffering and therefore easily disconcerted by the thought of death, I was horrified. My attitude toward death was like that of a young person standing blindfolded and tied to a post, awaiting a volley from a firing squad. The whole concept made my blood run cold. Yet the case also aroused in me a feeling of relief. Simply put, there was no risk of malpractice, as my patient was already dead. Many anaesthesiologists have such self-centred thoughts when taking care of ASA 6 patients.

> After we moved her from the gurney to the operating table, the doctors and nurses, so used to taking care of living patients, stared at one another stupidly, as if not knowing why they had come together or why they stood around the table.

Sorry this strikes me as embellishing for the case of writing a story.

Background: I was a neurosurgery resident at a level 1 trauma center. I was involved in determining brain death (though the final certification was by an attending surgeon). I worked closely with the transplant team. I declared (normal) cardiac death many times. I had many agonizing conversations with families about withdrawal of care.

Anesthesia is a 4 year residency. Even the 2nd year anesthesia residents I worked with had more of an awareness and lack of naivety that this author shows.

And the OR teams were much more prepared and professional than this. They knew what they had to do and why they had to do it.

If there are other physicians here, I would love to hear your opinions, but this whole piece strikes me as overwrought and full of embellishments to make a certain point.

jbandela1··on More Falsehoods Programmers Believe About Time (2012)
All models are wrong.

Some are useful.

Determine what level of the model is useful for what you want to do.

jbandela1··on Low-cost shield ardEEG to measure EEG with Arduino Uno R4 WiFi
Reminder to consider shielding and stray signals when interpreting an EEG.

You can get an EEG trace from a blob of Jello:

https://www.nytimes.com/1976/03/06/archives/jello-test-finds...

jbandela1··on Clever code is probably the worst code you could write (2023)
I think “clever” is more related to unfamiliarity.

There is actually a lot of cleverness going on that people just become familiar with.

Structured programming is actually very clever if you think about it.

Function calls are, when you look at it closely, very clever. It encapsulates how to jump to a function entry point, how to pass on values in registers or in memory, how to adjust stack pointers, and all other sorts of cleverness.

For loops are clever with different parts of the statement controlling and executing different parts of the loop.

Compare that with BASIC

A six year old child can understand:

    10 PRINT “Hello”
    20 GOTO 10
Going on to object oriented programming, dynamic dispatch and v-tables are clever. What you call and where you go to in your program are determined by the dynamic type of an object. This is very far from the simple BASIC GOTO

What difference does looking at it like this make.

First we don’t reject automatically reject new concepts just because they aren’t simple. While function calls are complex, they bring many benefits. In addition, this approach emphasizes the role of education to in taking useful concepts and making them familiar to a broader group of people.

jbandela1··on The prospects for 128 bit processors (John R. Mashey, 1995)
One area that 128bit points would be useful for is tagging.

This could be used to improve memory safety. For example, a pointer inside a range could potentially include its bounds.

Page 1 of 12Next →