Love seeing niche Show HN projects like this. The choice of Fortran is wild but that's what makes it fun. As someone building small Mac utilities, I appreciate any project that proves you don't need a massive stack to ship something useful.
out of curiosity, why fortran? no disrespect. I wrote a lot of scientific software in the earlier days of my career and I learned fortran to update ocean modeling software.
We built Cobolsky. Will go public soon.
Parallelly too curious on Fortran. The world is better with a Fortran-based social network client in it :)
When we are building the feed composer, in next version, Fortran will be great for the algorithm etc.
Keeping the ancient languages alive. I built some Cobol stuff many years ago. Back at it again. Rusty.
Both Cobolsky and Fortransky looks great on Swordfish90’s cool-retro-term, but we are building our own terminal for Fortransky too. There is a blog post with screenshots over at Patreon/formerlab
It's part of the lineage, yeah, probably started with Algol though? Fast I guess is always nice, but I'm not sure that's enough to keep it alive solely for that, at least to me.
I'd agree with all of those reasons! I do so myself as well, was just specifically curious about the "The world is better with a Fortran-based social network client in it" part. Don't get me wrong, I've spent too many nights learning "dead" languages too, but never with the idea that the world would be better if I published more code in these dead languages, it's just for my own gratification and learnings.
I came here to suggest COBOL as a better fit, then saw your comment a few levels up in this thread.
Out of curiosity, does your implementation use CODASYL?
(For people that don't pay much attention to historical software systems, most CODASYL implementations were similar to JSON document databases, so going that way isn't as crazy as it sounds.)
Which version of the language is it? It looks like you used Fortran90 at least (modules are used), which is pretty old, but not totally ancient like Fortran77.
Thank you for choosing Fortran. Seriously, I mean it.
Someone else already said this, but it is awesome because it proves that you can write useful software using languages others consider ancient or dead and therefore "unusable".
why not? the language is straightforward and loops are fast. It is portable and your code will work unchanged for the next 50 years. It may be a bit verbose, but that's not a big deal with today's tooling.
Yea na, Fortran is pretty compiler dependent and there are a lot of compilers. Already old Fortran code used all sorts of now-dead proprietary compilers and can take a huge effort to get it to compile on modern compilers or even modern computers. Modern code might use Gfortran which sometimes makes breaking changes so that's not an option. Perhaps if everyone uses the latest shiny new Flang or whatever, then it'll finally last 50 years? Not likely, given the history.
For a standardized language, Fortran isn’t very portable across compilers. GNU Fortran has done a great job supporting legacy features, and I hope that our work in flang-new has made it easy to port to, as well. I basically ignored the zealots who wanted flang-new to be a strict compiler by default. The hobbyist project LFortran is quite the opposite, and will yell at you by default for perfectly conforming variations in keyword spelling. For those who like that sort of thing, that’s exactly the sort of thing that they like.
> your compiler adopts a J3 breaking change to the language
Like all the 3 of them they added in the last 30 years, and that compiler vendors are not enforcing anyway because they don’t want to annoy their users?
Windows’ backward compatibility is a joke compared to Fortran.
It’s a fairly nice language. You can probably get better performance out of C/C++ with unlimited effort. But, it is really nice for allowing computational scientists to get, like, 95% of the way there.
I think it actually suffers from the reputation as this ancient/super hardcore performance language. The name comes from “Formula Translating System,” which implies… it was written for people who speak human languages first!
ive maintained a simulation software where the core is written in fortran. its using some intel math library that is expensive that i cannot recall, does immense calculations and makes faster binaries than c on every compiler we tried
MKL is Intel’s famous numerical library (it includes things like BLAS “basic linear algebra subroutines” and fast Fourier transforms). It is availible for free, but IIRC they had some support plans maybe, maybe that’s what you are remembering?
It is closed source, but you can look at the source of the best open source competitor libflame/BLIS, and see that most of the performance comes from C and assembly.
It is difficult to beat “unlimited effort” C, but not many program really justify that treatment.
Have you tried using the restrict keyword everywhere you can in c?
In Fortran, arrays are not allowed to overlap which allows some optimisations. c has rules in the spec about how memory accesses must occur, and overlapping arrays being possible prevents some compiler optimisations. The restrict keyword is you promising that the memory at some pointer won't be accessed through another pointer.
You can compare two implementations in Fortran/c using godbolt to see how each of them compile.
Dummy arguments may not alias anything else, including other dummy arguments, in conforming Fortran if either are modified, with some exceptions. But there are many ways in which arrays can overlap that don’t involve dummy arguments. GNU Fortran optimizes ASSOCIATE names as if they were free of aliasing, too, but that is a bug.
i apologize i missed this. the core hot loop was fairly straightforward to optimize and audit all aliasing. we ported from c89 to all cutting edge (at time) c99+ compilers. we still couldnt quite eek out that minor difference. the intel compiler unsurprisingly generated the most close asm for the machine
the fortran library we only had one license on a physical machine, i had to travel for one extensive recompilation of that side lol! it wasnt the library mentioned below, i would have to ask a collegue.
How do you plan on differentiating it from just a trivial setup of an FTP account that's mounted locally with curlftpfs and has files in a SVN or CVS on the mounted filesystem?
This was quite straightforward to code ’manually’, but we got stuck for some hours when trying to send the first message.
CPU topped, fans spinning, no message through. Analyzed, and after a while when we got same block the nth time, someone proposed Claude.
So Claude got the repo, prompted Claude:
”You got one job, why isn’t message through and why CPU usage high?”
He didn’t solve it. Probably could have if we kept Clauding.
But we found the problem. The issue was that the code was hitting the terminal 300 times trying to send the message :)
For clarity reasons Claude got the job to write the README, personally I don’t like that approach, but we got many other projects so time management basically.
We are building Cobolsky too.
Right now we are building the part to get images through using Apples old algo. Will be 576x720 using the Föoyd-Steinberg dither, 1984 Apple algorithm :)
Whenever I hear about this AT protocol I think about the text-based commands to control cellular modems. I can't be the only one, r-right guise... r-right?
From my experience building browser automation tools, the biggest challenge with most Chromium-based solutions is that their TLS fingerprint is a dead giveaway. Firefox-based approaches tend to fare much better against JA3/JA4 fingerprinting.
The key insight is moving fingerprint spoofing from the JS level (which is itself detectable) down to the native C++ level. It's a fundamentally different approach.