1. 2

But…. does it have staying power? If I become a Fortran programmer, will I be able to find work in 10 years time?

I kid.

I’m pretty sure Fortran is the oldest extant programming language (just a smidge older than Lisp, Algol or Cobol). And I hope that this helps make it more accessible to newer folks and helps the Fortran community(!?) take advantage of other improvements that other languages/paradigms have developed.

1. 4

If I become a Fortran programmer, will I be able to find work in 10 years time?

Honestly? Yes. Even today, it still widespread use in the industry, particularly in numeric computing. Although I hope you’ll be content with maintaining legacy code.

I’m pretty sure Fortran is the oldest extant programming language (just a smidge older than Lisp, Algol or Cobol).

Fun fact: A predecessor of Lisp was an extension of Fortran (called FLPL). The other predecessor was IPL. Similarly, a predecessor of Cobol was Comtran, again, a Fortran extension. In addition, Algol was explicitly designed with a goal of covering shortcomings of Fortran in mind. I think it’d be an understatement to say Fortran was extremely influential. :-)

And I hope that this helps make it more accessible to newer folks and helps the Fortran community(!?) take advantage of other improvements that other languages/paradigms have developed.

That’s exactly what happened. Fortran (as a language) evolved a lot, constantly drawing new features from existing programming languages. Honestly, Fortran IV doesn’t even resemble Fortran 95. I’d say Lisp is the only other language that evolved this much but, unlike Fortran, it doesn’t have a single canonical standard.

1. 2

Halfway through your comment I was intending to link this, but it’s yours! It’s a great article.

1. 1

Thank you!

1. 2

I’d like this rule to be expanded to writing e-mails. If the 80-column line limit doesn’t make sense in source code (I partly agree; 80 limit is small, but 120 seems appropriate), then why on earth people think that e-mails should be hard wrapped to 80 characters? Nobody else is using hard wraps when communicating, only e-mail uses it.

1. 6

I find a consistent column of text easier to read than sentences that span the entirety of my monitor.

1. 6

That’s something that can easily be fixed in your email client by enforcing a maximum width on the reading pane, e.g. max-width: 50em in CSS, or in terminals just insert newlines every 50 characters.

The problem with hard-wrap is that it will look bad for everyone with smaller screen, which is actually pretty common and not something that can easily be fixed since you can’t tell the difference between a “soft wrap” and “intended hard wrap”. I actually wrote a thing about this a few weeks ago: https://www.arp242.net/email-wrapping.html

Unfortunately quite a few email clients don’t display this very good, but that’s an almost trivial fix. Certainly easier than telling millions of people that “you’re using email wrong”.

1.

So set up soft wrapping in your email client then. You will then have what you like, and others will have what they like.

2. 5

I don’t understand this either. I recently joined a mailing list where the predominant formatting is 80-character hard wraps. As a newcomer I emulated them (when in Rome etc.) but it would make far more sense if everybody wrapped their own lines to what is comfortable. It’s prose text after all.

When somebody complains about an unstyled HTML page being too wide on their monitor, others dutifully point them to reader mode. But email is different for some reason. (Why user agents don’t take more creative licence when given a bare HTML document baffles me but is verging off-topic…)

1. 2

No, only some communities demand their members to use email this way. If not 72 columns… :S

1. 23

Very impressive. Does it put images literally everywhere except the one place I want them to go?

1. 7

Admittedly, I never understood this behaviour until I wrote a thesis in LaTeX. Then the figure-floating-behaviour makes total sense.

1. 2

Could you please elaborate more on this?

1. 7

The float behaviour builds on LaTeX’ goal to have a harmonic typesetting result. Not to go to deep, you can give one or more of the “intents” “h” (here), “t” (top of page), “b” (bottom of page), “p” (full page) to a figure, which gives LaTeX the freedom to place the figure at the given positions. Using the intent “H” or even “H!” makes sense in some cases, but really is a misuse of the floating environment.

The idea is that you often end up with multiple figures in one place. LaTeX really watches out that figures don’t float too far away and even considers things when you have a multipage-document, such that e.g. your text is on page N and your two figures are on page N+1. It looks horrible in the editor, but if you look at the final printed out version you realize the motivation. But even if you don’t print it: Using this heuristic prevents too many figures from being in one place. What if you add more content at the front and it shifts half a page? Manually adjusting floats is almost impossible. With floats you just don’t have to worry about that.

I always use [htbp] for my figures for that reason.

1. 2

I always use [htbp] for my figures for that reason.

Oh god thesis writing flashbacks…

2. 2

Not GP but having also written a thesis in LaTeX, it’s pretty sensible. You place your \begin{figure} where it’s relevant and the image will end up positioned probably at the top or bottom of the page where you put that directive. If you have a lot of figures it will set aside entire pages for figures. Alternatively you can override it with various placement specifiers (including “put it right here”).

This avoids the two main problems you get with word processors like MS Word or LibreOffice Writer:

1. If you attach your image to text position you can get strange outcomes like a page with a one line of text, a figure, then the rest of the text below it
2. If you attach your image to page position it can end up several pages away from where it’s actually referenced
2. 3
<img src="cat.jpg"/>[!H]

1. 1

Does it put images literally everywhere except the one place I want them to go?

What do you mean? LaTeX puts images exactly where you put them, always. An image is just like a big character and it strictly follows the flow of your text. Unless you explicitly request a floating environment, LaTeX will never put an image anywhere else as it appears in your source document.

1. 6

I just watched the video tutorial and the UX seems amazing. The mouse and keyboard interactions mesh together dwimmerily. It’s a perfect fit for the gap between ImageMagick and GIMP in my image editing workflow.

1. 1

I’m really glad someone finally took the steps necessary to revive DOSBox.

1. 5

Honing my CV and scouring LinkedIn for jobs in mainland Europe. It’s a soul-sucking experience but, hey, what else can you do? Other than that, I’m planning to work on my guide to Scheme macros, and trying out JavaFX with Clojure.

1. 2

Best of luck with the job hunting!

1. 5

As you said, it entirely depends on the type of project. Some languages are more apt for specific tasks than others. But judging by the ‘commercial’ part, I think I’d go with Clojure or Elixir if I’m writing something meant to handle heavy burden. If it’s a smaller task, say, I need to hack together a development tool, I’d probably use Racket or just Scheme.

1. 2

I’m curious, how would you describe to a non-Racket user how Racket’s good for making dev tools?

1. 4

The standard library is fairly rich and extensive. 90% of the time, there’s a module that covers your use-case with a well-documented high-level API. You can just skip the boilerplate and use the DSL exposed to you, and even extend and customise it with Racket’s powerful metaprogramming tools if it doesn’t exactly fit your needs.

1. 6

Speaking of lisp and chinese cartoons, SICP has been a meme on /g/ for years. GOOG has many more.

There are days I wonder how many people got their start in programming through that.

1. 6
1. 2

I got my pdf of The C Programming Language from one of those images.

1. 2

That meme gave birth to textboard.org, an anonymous bulletin board in MIT/GNU Scheme.

1. 1

Don’t let your memes be dreams, gentooman.

1. 2

In my defence, I haven’t been on /g/ (nor any other part of that website) since 2012 and I’ve been a Scheme hacker since only 2017.

1. 1

gentooman.

Ironically, textboard is hosted on Gentoo Linux.

(I am just making this up)

1. 16

I knew learning Japanese would come in handy one day.

1. 8

Author here.

1. 3

Thanks for the post it really helped me understand what was going on as I’ve stopped following the reports during R5RS and never caught up with R6RS and R7RS.

1. 3

Excellent post! Thanks for writing it. Just wanted to recommend that you should mention you’re specifically talking about R7RS-small earlier in the post. Things might get a bit confusing when R7RS-large comes out.

1. 3

Thank you, that’s a good suggestion.

2. 3

Do you think R7RS-Large will be a game changer? Or will R6RS continued to be seen as “a full solution” you think?

1. 3

R7RS-large is IIUC larger than R6RS, already. And yes, according to me it is a game changer. Sadly C FFI is not part of it.

1. 2

For the R6RS implementations that have a built-in FFI, a portable C FFI is available in r6rs-pffi (as you of course know). In what sense is R7RS-large a game changer, do you think?

1. 1

R7RS-large promotes good coding practice with hygenic macros, a better exception story, and the inclusion of several foundational libraries like SRFI-41, SRFI-128, generators and accumulators. I miss CFFI, SRFI-145 assume as a type hint facility, and some network libraries including HTTP and websocket. Also a better port story would be nicer. I guess the predicate approach to exceptions does not please every one but I like it, so far.

I am good with the fact that there is no OOP, but I might change my mind, even when programming GUI I do not use OOP anymore.

2. 1

It would be better if someone else answers about R7RS-large; I’m out of touch with the standardization effort and haven’t even checked what the scope and the vision is. “Large” as such is not so appealing to me. But what I think will be a game changer is if we start to get more standards like SRFI 170 (POSIX API). R7RS-large is pushing for more things like this, which is really good. I doubt that R6RS will be supplanted by R7RS-large because there are even those who still prefer R4RS and R5RS.

1. 1

If large isn’t appealing to you, is that not the point of R7RS-small?

1. 2

Exactly. The way I understand it is that R7RS-small and R7RS-large were set up in a way that those who like small would have R7RS-small and those who like large would have R7RS-large. This way both parts of the community would be pleased by R7RS. I disagree with the assumptions behind that setup and I don’t think it will have the intended effect, because that is not where the disagreement really was. I don’t think we have a part of the community that wants a large language and a different part that wants a small one. There is more to it than large or small, and even those are relative concepts.

1. 2

It seems pretty clear to me that the community is split down the middle between people that want something like R6RS and people that want something like R5RS. I’d also suggest that’s the received wisdom in the community. Why is it that you disagree?

1. 1

I don’t disagree that some prefer R6RS-alike and some R5RS-alike. But rather I think that R7RS-large and R7RS-small, taken together, will not result in an R6RS-alike and an R5RS-alike. It will be something new and different than either of those two camps. And that was not the intended result, AFAIK.

(And please don’t take any of this as criticism of R7RS-large, it appears to have good effects so far, and I think we all need more respect and understanding of each other’s perspectives on Scheme).

2. 1

Where do you think the disagreement was?

1. 1

The disagreement should’ve been summed up in the blog post, or maybe I misunderstood your question?

1. 3

Perhaps when push comes to shove someone will step forward and provide continuing support for Python 2.7.

1. 9

• ActiveState offers Python 2.7 support past the EoL
• RHEL 7 supports all software shipped as part of the release for five years, maintenance for give years after that, and will provide further support after that by contract.
• Ubuntu 18.04 has four more months of full support and then an additional three years of maintenance. After that, “extended security maintenance for customers.”
• SLES 15, which ships both Python 2 and 3, has general support until 2028 but customers can buy support for it until 2031.

Lots of options for those who need Python 2 support going forward.

1. 6

Many distros have committed to supporting it for much longer, Debian will support it till 2022 for example. But those people are just putting duck tape on the holes, they’re not manufacturing any new pythons.

I don’t think python 2.7 has enough advantage at this point that supporting it would provide a large amount of value. What feature did it have besides momentum up till now?

1. 2

PyPy claims to support Python 2 indefinitely. In addition, there’s a Python 2 fork called Tauthon.

1. 1
1. You can store a price in a floating point variable.

This is how Cobol is holding us hostage. Spoilers: With fixed point fractions.

1. 1

1. 4

I depleted my booze cabinet in the last few stressful months, so all I want for Xmas is a big bottle of Bulleit Rye. But since we don’t celebrate Xmas here, I’m probably going to end up buying it myself and drinking it alone. Cheers.

1. 1

Make an automated microbrewery that tracks consumption and adjusts its output so that the supply of booze always matches the demand.

1. 1

Post your experience and get job offers from distilleries and power companies.

1. 2

I love these web buttons/badges. I have my own personal collection of Emacs web badges.

1. 6

The “GNU generation” bit hasn’t aged particularly well, if anything I see the influence of GNU disappearing further and further.

Apple is removing GPL stuff whenever they can, Android was never GNU at all, Clang has turned into a realistic alternative to GCC (and the competition made GCC better), Musl seems to become a more and more popular alternative to Glibc and Guile has lot less adoption than Lua. So having a non-GNU/Linux system is pretty much feasible/trivial.

1. 8

GPL licensed software is doing quite well in the enterprise, cloud, and web application space. AWS and GCP (and to a lesser but still very relevant degree, Azure) all rely quite heavily on Linux and the GNU userland. The Linux desktop doesn’t have anything like the market share compared to Windows or Mac but you won’t find many dev tools that aren’t cross-platform for all three.

The examples you listed (Android and Apple) are consumer products shipped by companies who would prefer the benefit of integrating and shipping open source software without the burden of having to contribute back to the community in some minimally meaningful fashion.

1. 6

I was specifically talking about GNU projects, not GPL projects. The only GNU projects without a serious non-GNU contender these days are what, coreutils and Emacs? The former could be replicated with moderate effort but there is little point to it and the latter is an editor.

My point being that GNU as operating system (as in GNU/Linux) has become less and less important, since it very much feasible to run a fully featured non-GNU/Linux operating system.

1. 14

The only GNU projects without a serious non-GNU contender these days are what, coreutils and Emacs?

Ahem…

1. 15

Isn’t MATLAB a serious non-GNU contender to Octave?

1. 0

No, because Octave is a free replacement for Matlab and Matlab is not a free replacement for Matlab.

1. 1

What do you mean by “free” in “free Matlab replacements”? I don’t think something has to be free (as in beer) to be a serious contender to a free (as in speech) application…

1. 3

The only free that matters to someone whose avatar is a baby gnu.

2. 1

If our baseline is “compatible-with-MATLAB” then yes, Octave doesn’t really have any serious competition in that space (bar MATLAB itself).

But if we’re looking at numeric/scientific programming environments, then Julia, Python + Jupyter are strong contenders.

1. 1

Yep, that is exactly the baseline. There’s lots of Matlab code out there that will be relevant for all foreseeable future. It needs to run on something and that something can’t be nothing but Matlab.

3. 4

How is having a competitor bad? If anything having competition means projects don’t stagnate to internal politics and actually innovate. It’s a shame that there is only one really viable kernel for gnu systems these days. The world would be a lot better of there were several.

1. 2

It’s a shame that there is only one really viable kernel for gnu systems these days.

GNU/kFreeBSD and GNU/kNetBSD are/were a thing. But apparently, there is not much interest in these.

1. 1

Debian GNU/FreeBSD is still developed (albeit at a very slow rate) but Debian GNU/NetBSD never matured enough to have a release before it was inevitably abandoned.

2. 4

Ghostscript, Make (and I am not talking about build-systems, but Makefile interpreters and runners), gettext, R, Nano, ncurses, and as we count coreutils, then AWK, sed, and tar.

4. 6

I think that the existence of non-GNU Linux variants isn’t coming at the cost of GNU/Linux. It’s a separate market that grows independently and still supplies good patches in the projects shared by both.

1. 1

Android was never GNU at all,

Well, the kernel used to boot Android phones is Linux / GNU GPLv2 .. but I get your point; noting in ASOP or any of the core apps is GPL

1. 6

GNU/Linux specifically refers to the kernel Linux plus the GNU userland (compiler collection, coreutils, libraries, etc). Android isn’t running the GNU operating system.

1. 5

Finally, my prayers have been answered by the Ghost of Sharp Zaurus, restlessly roaming the world, looking for a new body. Born like a star amongst pretenders like glorified Android phablets/PDAs with keyboards (Planetcom Gemini, Cosmo Communicator and their ilk), it is here to reclaim its niche domain.
And yet… alas and alack, there’s no way I can afford one with my bloody third-world salary right now. Wait for me, my friend. I’ll be back to take what is rightfully mine. Unless something cheaper comes along, that is.

1. 5

I’ve been using zsh for nearly a decade. No oh-my-zsh though, just a crufty pile of config and scripts accumulated throughout years (a bit over 2 KLoC). I’ve been experimenting with rash and scsh lately.

1. 5

My current site is written by hand but I’m considering switching to soupault.

1. 3

I’d love to find a single-file Prolog, preferably in C. I’m sure this exists.

1. 9

I built and ran this last year, but I don’t have any strong memories of it:

https://news.ycombinator.com/item?id=12193694

Except it’s actually in C++ and not C.

Somewhat related:

https://github.com/frankmcsherry/blog/blob/master/posts/2018-05-19.md

https://github.com/rust-lang/datafrog

1. 1

Thanks! Seems worth a try.

2. 3

Not C but nmh’s “LISPy things you can do in 64K bytes of core” describes an implementation in Kilo LISP’s extremely constrained conditions. The source is under 100 lines.

1. 13

Big fan of Firefox, have used it for years as my primary browser. Just a few days ago, I updated to 69 will happily piggyback this v70 announcement.

In case anyone of you uses a user stylesheet on Firefox and wonders why stuff doesn’t work in FF 69 anymore, the reason is that they disabled reading user stylesheets by default. You can enable it again by setting toolkit.legacyUserProfileCustomizations.stylesheets to true.

Don’t go down the same rabbit hole like me and try to figure out why the one thing you did in the user stylesheet doesn’t work anymore. You’ll find zillions of people with opinions - and none of their proposed solutions will work(;

1. 4

I hope that you have telemetry enabled. When a feature becomes not the default, that means that it is on the cutting block. If you’re not reporting that you are using a user stylesheet, then don’t be surprised when it is removed a few versions down the line.

1. 3

Thank you! This was driving me crazy!

1. 2

can you elaborate? Are you talking about  userContent.css, or Stylus and similar?

1. 1

Sorry for the late answer. I was talking about userContent.css.