Computer Science as a degree is kind of weird. Most people are training for software development jobs but it doesn't really teach software development skills.
Community colleges have job oriented certs and stuff, but as far as universities go, it's pretty much still just CS as an option, right?
Like a CS degree generally doesn't have stuff like source control, APIs, dependencies, etc. as curriculum - it's a degree for how computers work at a base level.
I like to use #OpenSource tools when I'm teaching, and I'm teaching more game programming to kids age 10-16 in the summer. Love2D worked really well, though I'd like to help them also learn how to make game art.
I mostly just know #GNUimageManipulationProgram but I'm not giving children flash drives with a program named "gimp" on it. Can you imagine what their parents would think??
I work on the #atomistic simulations of materials, mainly density-functional theory (DFT) methods, understanding #simulation errors and #uncertainties in predicted materials properties.
Since time immemorial, software has had version numbers. A developer releases V1 of their product. Some time later, they add new features or fix bugs, and release the next version.
What should that next version be called? Modern software broadly bifurcates into two competing standards; SemVer and CalVer.
Semantic Versioning is usually in the form 1.2.3, the last digit is usually for minor bug fixes, the second digit for new functionality, and the primary digit for big and/or breaking changes.
The semantics are pretty loose. There's no real consensus on when a new "primary" number should be issued. There are two main weaknesses:
The numbers might not be decimals. Is V1.29 newer or older than V1.3?
There's no semantic information about when the software was released.
Calendar Versioning is, ironically, more semantic than SemVer. The version number is the date when the software was released. For example, Ubuntu releases are in the form of YY.MM - the latest stable release at the time of writing is 24.04 - so we can tell that it was released in April 2024.
There are three main problems with this approach.
ISO8601 or GTFO! Surely these should use YYYY-MM to make it obvious this is a date?
Minor bug fixes are often given a release number like 24.04.1 - is that still obvious it is date-based? Was it really released on the 1st of April?
No information about big and/or breaking changes. Software released several years apart may be functionally identical whereas software released days apart may be incompatible.
Ruff is a sort of bastard child between SemVer and CalVer, but adds this delightful complication:
Stable releases use even numbers in minor version component: 2024.30.0, 2024.32.0, 2024.34.0, … Preview releases use odd numbers in minor version component: 2024.31.0, 2024.33.0, 2024.35.0, …
It's the versioning equivalent of setting up a fully scalable cloud database and hand-chiselling HTML out of stone for the cookery blog you update twice per year.
The venerable TeX uses PiVersioning. The current version is 3.141592653, the next version will be 3.1415926535.
As the software gets refined, it gradually reaches a state of perfection. This is a charming versioning scheme which shouldn't be used by anyone other than Knuth lest hubris overtake you!
Sometimes marketing takes the reins and insists that consumers need a Named Version to help prevent confusion.
Ubuntu uses things like Bionic Beaver, Distinct Dropbear, and Mantic Minotaur. By convention, names increase alphabetically, so you should know that Jaundiced Jackdaw is before Killer Kangaroo - until you've released 26 version and have to wrap around the alphabet again.
NameVer is helpful for distinct products which aren't related, but probably more confusing than necessary.
You will notice that all of the above are monotonic. That is, they all proceed in one direction and never reverse. Any subsequent version was definitely released later than a previous version. So, in a sense, they all contain some level of semantics.
Taking the Cryptographic Hash of the code, or a commit, allows one to create HashVersioning. For example 43317b7 is a HashVer for something which would otherwise have the dull and unworthy name of v0.118.1
But, of course, a hash does have a modicum of semantic information - even if it is only loosely related to the content of the code. What if there were something with no semantics and no monotonic behaviour!?!?
The ERCIM #postdoctoral Fellowship Program for 2025 is now open for applications! 🚀 A unique opportunity to work with leading European research institutes, collaborate on cutting-edge projects, and expand your network.
A gray/gray-orange cat is laying on a white blanket. Her name is Ophelia, and she has one eye half open, which is a brilliant green-orange. She is very relaxed. You get the faint impression of a person's legs underneath the blanket
Jean E. Sammet (March 23, 1928 – May 20, 2017) was an American computer scientist who developed the FORMAC programming language in 1962. She was also one of the developers of the influential COBOL programming language.
She received her B.A. in Mathematics from Mount Holyoke College in 1948 and her M.A. in Mathematics from University of Illinois at Urbana-Champaign in 1949. She received an honorary D.Sc. from Mount Holyoke College in 1978.
"We may say most aptly that the Analytical Engine weaves algebraical patterns just as the Jacquard-loom weaves flowers and leaves."
(Notes on the Analytical Engine invented by Charles Babbage)
Happy Birthday Ada Lovelace!
She was an English mathematician and writer chiefly known for her work on Charles Babbage's proposed mechanical general-purpose computer, the Analytical Engine. She was the first to recognise that the machine had applications beyond pure calculation.
Diagram of an algorithm for the Analytical Engine for the computation of Bernoulli numbers, from Sketch of The Analytical Engine Invented by Charles Babbage by Luigi Menabrea with notes by Ada Lovelace
In addition, the paper "Sketch of the Analytical Engine invented by Charles Babbage, Esq."
by Luigi Federico Menabrea and translated by Augusta Ada Lovelace will be available pretty soon at PG.
American admiral and computer scientist, (designed COBOL) Grace Hopper was born #OTD in 1906.
She created the first compiler, the A-0 System, in 1952. She was also one of the first programmers on the Harvard Mark I computer. Hopper popularized the term "debugging" in computing after discovering an actual moth causing a malfunction in the Mark II computer.
Hello to all out there ...
a group of people here at ITU #Copenhagen is exploring how the #fediverse works (better) for them ... perhaps connecting through AcademicChatter group might help?
A LOOK AT INTERNET FAKERY takes a computer scientist deep into the history of frauds, hoaxes, disinformation, and propaganda. Lots of detail, especially about the earliest days of the Internet and current AI controversies. SOLID B
ChatGPT and other AI are set to create mountains of electronic waste. But there is a cleaner option
By James Purtill
Huge data centres built for generative AI will generate millions of tonnes of electronic waste by 2030, the equivalent of discarding billions of smartphones each year, a study suggests.
I like #music but I am bad at it and I try to impress people by saying I speak five #languages but between you and me I'm bad at them, too.
I'm into #ffxiv as my avatar probably indicates, FF in general, really, and I think #anime is real I mean good. That'll do I think. What else do you need to know?
Course catalog states "Utilize a professional software development environment." as a required part of class.
I know it's written vague so we as teachers can decide for ourselves. In a way, I consider Visual Studio to be "more professional" for C++ development than VS Code, just because all the big software projects I've worked on used Visual Studio.
But... If I had everyone in VS Code... I could have one set of instructions for all operating systems. 🤔
A photo of my back yard. On our concrete patio we have an old picnic table. I've brought out some bean plants in a long planter to hang in the sun. My laptop, notebook, big cup of water and a cup of coffee (both covered) are also out here in the shady part of the table.
It's about asking, "how does this algorithm behave when the number of elements is significantly large compared to when the number of elements is orders of magnitude larger?" ...
Big O notation is about what matters when the numbers get big. ( programming.dev )
It's about asking, "how does this algorithm behave when the number of elements is significantly large compared to when the number of elements is orders of magnitude larger?" ...