Ben Matthews
  • New here on lemmy, will add more info later …
  • Also on mdon: @benjhm@scicomm.xyz
  • Try my interactive climate / futures model: SWIM
  • 0 Posts
  • 12 Comments
Joined 1Y ago
cake
Cake day: Sep 15, 2023

help-circle
rss

Wonder whether the popularity of the president will follow a similar pattern as in France, trying similar idea … ?


Note that Knesset has 120 seats (not obvious from the article). (also, of course, a large fraction of people between the river and the sea don’t get to vote for any of its seats)


Hmm, publishing that will really help those Crimean beach hotels get customers for this summer…


I can relate to this, having developed a coupled socio-emissions-carbon-climate model, which evolved for 20 years in java, until recently converted to scala3. You can have a look here. The problem is that “coupling” in such models of complex systems is a ‘good’ thing, as there are feedbacks - for example atmospheric co2 drives climate warming but the latter also changes the carbon cycle, demography drives economic growth but the latter influences fertility and migration, etc… (some feedbacks are solved by extrapolating from the previous timestep - the delay is anyway realistic). There are also policy feedbacks - between top-down climate-stabilisation goals, and bottom up trends and national policies, the choice affects the logical calculation order. All this has to work fast within the browser (now scala.js - originally java applet), responding interactively to parameter adjustments, only recalculating curves which changed - getting all these interactions right is hard.
If restarting in scala3 I’d structure it differently, but having a lot of legacy science code known to work, it’s hard to pull it apart. Wish I’d known such principles at the beginning, but as it grew gradually, one doesn’t anticipate such complexity.


I began programming java climate model with UK keyboard. When I moved to the continent, switched to swiss then belgian keyboard to better type emails/docs in french, but it was so tedious for code brackets {[()]} and some other punctuation, eventually switched back. Recently converted whole codebase to Scala 3 (here’s the model), now can drop most of those brackets. I speculate whether one motivation for creating scala3 (made in in Lausanne) was swiss/french keyboards.


Too true.
I still remember when java5 came out, many new features, great potential for a massive refactoring of my interactive climate model. Within that, I had an idea called “parallel worlds” for comparing scenarios, whereby for efficiency data was shared for parts of the system, and split across parts that varied as user adjusted parameters. So I pulled apart the whole codebase, and joined it back together again… - about two years later, by which time colleagues had given up interest.
[ story simplified to relate to point of OP - not only task in two years! ].
Now I develop a derivative climate system model in scala, but evidently it’s more interesting to develop some new complex part of the science code, than fix a graphical interface for beginners. But moods vary - some days lacking energy for refactoring, could be satisfied ticking off a few small tasks in a todo list. Yet after some time, brain craving for another big new complex idea…


In defence of the jack-of-all-trades, if everybody is a cog in the machine, nobody sees the overview of how the cogs could connect.
For what it’s worth, here’s an overview of some cogs made by a j-o-a-t, for whom software developer is just a sub-role, within understanding complex climate system.


It’s only 5th December, seems unusually early for -58º. From Wikipedia - Yakutsk, maybe daily min should be about -37º now. I recall crossing Siberia by train in early December, rain in west, fresh snow in east, lakes still water, yet coming back in April you could still walk on Baikal. Seems odd, but they get extra problem of fires in winter, as fire hoses freeze, can’t extinguish them. Anyway polar vortex went wobbly recently, so we get alternating cold and warm waves - always look for both sides of regional anomalies.


Hi, thanks for the encouragement, delayed response due focusing on the code, and a related conference, and now trying to keep up with the COP. As it happens, the “ratchet” system of pledges created in Paris (COP21) is an iterative algorithm - start with wild guesses and gradually improve them by feedback - this made sense given the weaknesses of diplomacy, but it’s hard to summarise this mess with neat code in a compact model.


This principle works most but not all the time. I develop an interactive climate-system model that evolved with many small steps over 23 years. So it has many patchy fixes as climate policy structure changed, gases and sectors added etc. Then converted from java to scala module by module (out of ±50) , each step checking the plots looked as before. Result is it works, but parts are messy with legacy options and outdated code style. So sometimes it’s necessary to radically rethink the structure, take big bold steps before it works again, that’s hard. Scala strong type system, with hints from compiler (and “metals”) help make such refactoring easier.


Some of us will even remember when compilers ran on big central computers, and you might have to wait 15–30 minutes to find out if your code was syntactically correct (let alone if it worked.)

My father remembers when he wrote code printed on a set of punched cards, they traveled several hours on an evening train to a warehouse with a big government statistics computer (that was too busy during daytime), the result came back by train next morning. Syntax error? try again tomorrow…


I develop an interactive climate / future scenario model, now in scala, earlier in java, almost no dependencies. No visualisation frameworks - the diverse plots hand coded in scala (transpiles using scala.js, makes SVGs on demand). The science code from demography through economy emissions, bioegeochemistry, to climate - just scala, no interface to other languages / models, no “solver” tool. Data input just text files -easy to check. Some modules over 20 years old (except converted java -> scala), still work reliably. It’s efficient as all client-side, no IO/net between adjustments and results. Seems no big institute would employ me for such model dev because my experience doesn’t tick the boxes of all the current fashionable frameworks. But at least I can share a way to explore the future for ourselves … and yes it’s bleak but not so dire as many people here seem to assume, we still have choices.