10 ms·
Show HN: We built a terminal-only Bluesky / AT Proto client written in Fortran
Yes, that Fortran.
- cat-turner 7mo agoout 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.
- pklausler 7mo agomaybe they weren't really concerned about portability or a decent standard?
- FormerLabFred 7mo agoIt’s keyboard navigation only, and we got the Bluesky firehose raw straight into the Rust decoder. Or we switch mode to Jetstream with m+EnTER :) You hit l+ENTER to like a post. If anyone replies from Bluesky, we hit n+ENTER and see the notifs. And so on Fortransky is 70% Fortran, rest is Rust, C and a tiny Python helper
- enriquto 7mo ago> why fortran? 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.
- FormerLabFred 7mo agoFortran will survive the cockroaches even, when the world 404s
- pklausler 7mo agoYour code will work unchanged until you try to change compilers or your compiler adopts a J3 breaking change to the language.
- kergonath 7mo ago> 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.
- pklausler 7mo agoWe're definitely enforcing some of them. But the latest one from F'2023 isn't going to be.
- deadbabe 7mo agoGreat, can we see some benchmarks?
- FormerLabFred 7mo agoCobolsky holds the record for most surprised looks per line of code :) Fortransky benchmarks pending the feed scorer will have real numbers worth reporting Whenever time allows in future: Fortran vs Go vs Python
- foxglacier 7mo agoYea 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.
- pklausler 7mo agoFor 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.
- FormerLabFred 7mo agoYou are not the first one to ask :) 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 Can’t get enough Fortran
- embedding-shape 7mo ago> The world is better with a Fortran-based social network client in it If you don't mind me asking, why is the world better with more Fortran-based software?
- FormerLabFred 7mo agoOur modern languages are built on it, and it’s incredibly fast, so it deserves to be kept alive. We owe a great deal to the people who wrote it in the 1950s I guess
- embedding-shape 7mo ago> Our modern languages are built on it 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.
- mathieudombrock 7mo agoI think the best answer you're really going to get here is that it's cool and fun to learn and use old languages.
- embedding-shape 7mo ago
- blundergoat 7mo agofortran > cobol
- pklausler 7mo agofortran .GT. cobol
- FormerLabFred 7mo ago> forever
- uberdru 7mo agoThe world is a better place for this app. Wonderful!
- FormerLabFred 7mo ago:) I mean there are still some people alive out there who never saw a web UI when beginning dev. They get a bit nostalgic, missing their 286 It’s fun and it is appreciated by them, and the young ones who are curious
- hk1337 7mo agoAre there any other AT protocol apps that aren’t derivatives of bluesky? By that I mean, not social media feed related, twitter clone.
- iameli 7mo agoYep lots! Mine is a livestreaming service: https://stream.place https://stream.place Also a great blogging platform: https://leaflet.pub https://leaflet.pub Here's a goal tracker: https://goals.garden https://goals.garden This one just dropped recently; it's 44 different atproto-related apps with a cyberpunk theme: https://www.aetheros.computer/ https://www.aetheros.computer/ Lots others mentioned here: https://blueskydirectory.com/ https://blueskydirectory.com/
- FormerLabFred 7mo agoAT conference in a couple of days. In Vancouver. Bet they are all there and the rest of the AT bunch.
- FormerLabFred 7mo agoDon’t know if people are building GitHub-like systems, offline-first app sync etc Many devs reuse schema and write some twitter/bsky clone Kind of search engine for my Blueaky likes Gotta get off the timeline, germ has a messaging app, then there is Tangled and some more We do Fortransky and Cobolsky now, got more ideas for the protocol than time :)
- linolevan 7mo agohttps://tangled.org/ https://tangled.org/ <--- GitHub on ATProto that's all I'm aware of (edit) Oops, just saw that you mentioned it, confused by your first line then. Tangled is awesome!
- deleted 7mo ago[deleted]
- tjuene 7mo ago
- h4ch1 7mo agoIt's always nice to see production codebases in languages that you've never used but are interested in. Tangential, but to the author, are there any FORTRAN codebases you feel are well designed?
- FormerLabFred 7mo agoGood reminder to dig around. Will check. We picked up the Fortran manual and just went for it. The original Manual exists as a PDF. Was it in a Stuttgart uni URL? Just a search away. Late in Sweden, gotta Fortran tomorrow. Happy to continue discussion here tomorrow.
- patapim 7mo ago[flagged]
- DaleBiagio 7mo ago[dead]
- dualblocksgame 7mo ago[flagged]
- aimarketintel 7mo ago[flagged]
- nerdypepper 7mo agoy'all gotta throw this up on https://tangled.org https://tangled.org ;)
- FormerLabFred 7mo agoOn it!
- zoom6628 7mo agoBrilliant in every possible way. Fortran was first language I learnt at high school in its "PORTRAN" variant.
- FormerLabFred 7mo ago:) We tried Abacus Fortran on the C64 back in the days and were allowed to stay indoors during breaks doing Basic stuff too on school computer. One of the guys wrote 8xxROM some 10 years later. Today known as U−Boot :)
- isodev 7mo agoOn ATProto: it’s funny how we never learn the lesson: - VCs band together to fund something shiny. - Devs love shiny, helping spread the something. - VCs enschitify it to get their coins back.
- FormerLabFred 7mo agoVC is Fortransky no-go zone
- Ashkaan 7mo agoOh this is cool
- youhai 7mo agoFrom 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.
- FormerLabFred 7mo agoMultiple tabs open? :)
- kgwxd 7mo agoJust spam.
- arunakt 7mo agothats COBOL :)
- lzhgusapp 7mo agoLove 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.
- FormerLabFred 7mo agoThanks for the feedback! We got a spec for Assemblersky. Will be a weekend project. Cancel Easter :) And probably Midsummer too… We got image composer and decoder plugged in in dev env, but will let this first open version breathe first. ASCII or early Apple algo Fortran-fast feed builder probably in next open version. It crunches fast Morning, 9 o’clock in Sweden, coffee and check-the-feed-on- Fortransky-time :)
- bombcar 7mo agoCOBOLsky. It’s enterprise webscale.
- vincentabolarin 7mo ago'written in Fortran'. Interesting choice. Why?
- worldmerge 7mo agoI’ve never seen fortran before. Wow, that looks more readable than a lot of modern languages.
- cmrdporcupine 7mo agoModern dialects of Fortran, sure. Old school Fortran from before they added cleaner and more structured elements is terrifying.
- bee_rider 7mo agoModern versions of Fortran are reasonably pretty. 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!
- sitzkrieg 7mo agoive 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
- bee_rider 7mo agoInteresting. 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.
- 7mo ago
- grougnax 7mo agoWhy not Rust ?
- jrmg 7mo agoThere seems to be a bunch of Rust in there too?
- FormerLabFred 7mo agoIt’s early version yes. It’s 70% Fortran, next version more Fortran and we will add x86-64 assembly decoder for AT Proto firehose frames
- jrmg 7mo agoIt seems you’ve written an extensive blog post about this, but I don’t see a direct link anywhere! https://www.patreon.com/posts/fortransky-we-in-153457794 https://www.patreon.com/posts/fortransky-we-in-153457794
- FormerLabFred 7mo agoTo the repo? It’s in the blog post head, in section under first screenshot, https://github.com/FormerLab/fortransky https://github.com/FormerLab/fortransky
- jrmg 7mo agoNo, I mean the other direction. The repo is what’s this HN post links to, and I don’t see a link to the blog post in it or in other comments here. The blog post is interesting!
- FormerLabFred 7mo agoOk got you. Good point, added to repo README
- fortran77 7mo agoFinally! Some relevant news here. I wondered where all the other Fortran people were hiding. I thought I knew all the other BlueSky Fortraners.
- Uptrenda 7mo agoWhenever 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?
- FormerLabFred 7mo agoForecast: Fortransky on Tangled tomorrow Sunday
- vissnia 7mo agoI'm curious if you used AI during development and how it handled Fortran
- FormerLabFred 7mo agoGreat question! 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 :)
- mitul005 7mo ago[flagged]