For all their talk about low-tech, for them it’s obviously just an aesthetic, not something they practice.

    This is a low-tech website. It doesn’t need CSS or images or any of the other stuff this site is built on, and it conveys information much better than this site does.

    1. 9

      CSS isn’t exactly high-tech though. The linked site isn’t all talk, either.

      1. 7

        The stylesheet is 3kb and you don’t have to use it. Why care about css that minimalistic when the page loads several images, with the header image being 2,900% the size of the stylesheet? Weird priorities.


          Images can be used to convey information. CSS is just frippery, at least as that site uses it.


            Contextualization is information and CSS contextualizes. Anyways, it’s absurd to liken CSS to the great founding member of famous rock band King Crimson when I doubt he has to spend time doing web design. Jokes aside, the page works completely fine without the miniscule stylesheet, and it’s really not that hard to turn it off. I can show you if you like.


          This seems like the spark of a very interesting conversation - how do we define “low tech”?


            Standing on a mountain and banging two electrically charged rocks together? Oh, you said ‘spark’ already. Hah! :)


              If I pull out a 20-year-old computer, meaning something like Windows 98 and IE5, because I have nothing better, will the website be functional using that browser?

              What about a 23-year-old computer with Netscape 3? What about NCSA Mosaic?

              What about just a 10-year-old iPad with iOS 5 on it?

              For an English-language website which is only sharing information as text and perhaps some images, there is no good reason except effort required that the answer to those questions can’t be “Yes”.

              Example: http://hike.qdb.us/demo_oct15/


                I dunno about IE5, but it works fine in text-only browsers like Lynx and Links.


                  Lynx will actually handle a lot of things that, e.g., IE6 will not, because it is actively maintained. One of the hardest stumbling blocks standing between a retro browser and a modern bare-bones site is TLS versions (and ciphers). I run a self-consciously retro front-end for a modern web service, but I keep the TLS up to date because it handles logins. Lynx works fine on it (because it’s compiled against current OpenSSL), while anything older than early Firefox releases usually won’t (because of dropping support for SSL and for TLS 1.0).


                That is interesting. I suppose there are two different spectrums: one for human technological achievement, and the other for personal technological fluency. Relative to a state-of-the-art web app, this website/server is decidedly low-tech, but to my grandmother, it’s anything but.


                  I personally like to call it “Lo tech”


                  yarchive is low-tech because it’ll render correctly in the simplest possible web browsers. The linked site conveys information using images and a permanent footer, neither of which will render in low-tech rendering engines. There’s very little way to claim the linked site is as low-tech as yarchive.


                    What you’re saying sounds like some robert “frippery” to me, because this page renders just fine with (external) css completely disabled!

              1. 2

                Expanding on the currently small PHP piece of my project.

                For now, it is mostly a shim that makes updates faster than the scheduled Perl scripts, but I’m expanding it to eventually duplicate all of the same functionality, for redundancy.

                Recruiting someone else to add another language, perhaps Ruby or Python?

                1. 1

                  Another thing they told me about was the simpler control scheme. Previous Ultimas had a control scheme similar to what roguelike games have. W to wear armor, I to ignite a torch, K to klimb a ladder, D to descend a ladder, B to board a ship, etc. You specify the verb such as J to jimmy a lock and then after that you can choose a noun such as the lock to jimmy.

                  In Ultima 6 they reversed the order so that the noun came first and then the verb. This meant the game could tell whether you were trying to J jimmy a lock or B board a ship or K klimb a ladder because the game knew that it was a lock or a ship or a ladder. And that meant they didn’t need separate keys for these verbs, but instead one key, U use object. There are times when they had multiple verbs for a noun but for the most part they could get away with just one.

                  As in many cases of simplifying, it also limits your options.

                  In the new noun-verb scheme, how do you climb a ship, or jimmy armor, or ignite a ladder?

                  1. 1

                    The article addresses this:

                    And that meant they didn’t need separate keys for these verbs, but instead one key, U use object. There are times when they had multiple verbs for a noun but for the most part they could get away with just one.

                    So presumably for your examples something like:

                    how do you climb a ship

                    SC (ship, climb)

                    or jimmy armor

                    AJ (armor, jimmy)


                  1. 15

                    This doesn’t really talk about what’s going on.

                    For the most part, the “feature” that allows this is that if you aren’t running strict, a bareword that doesn’t resolve to a sub becomes a string. So offering an input of only Nok is taken as "Nok" and does nothing. This feature is not usually available, though there is one case that still works under strict, which is a bareword beginning with a dash. That can never be confused with the name of a sub, as dash is not allowed, and you’ll see it used very rarely to pass arguments that feel like command-line flags.

                    Since I’m explaining this to be educational, strict has been best practice for well over 20 years and on by default if you use v5.12 or later. I know strict was a thing in Perl 4 but i don’t know the history of the barewords-as-strings feature except that it’s almost always disabled and was also often the real secret to “perl golf” lines. Strict should just be the default but some folks concerned with backward compatibility believe that if they fixate on things like this, you’ll be able to run an ancient script with a new perl and absolutely nothing else will have changed and it will run fine.

                    The next feature I see helping out here is that if you use a numeric operator on a string, perl coerces to a number by looking for digits at the beginning. There is no switch for that, but there is a warning when that happens to a string that isn’t solely a number. Warnings are also a best practice and this can be made fatal, but note that it’s emitted/fatal at run-time while the feature above, rejected by strict, is fatal at compile time.

                    I think it’s the first one doing the heavy lifting, as most examples are just runs of letters. Both you don’t really run into with the old advice of use strict, use warnings.

                    1. 6

                      Paint spatters have yet to spell out “use strict” - I think if we can get the precise bootstrap Pollack, we can shrink the space of invalid perl paint spatters to a minimum 😃

                      1. 2

                        Strict should just be the default but some folks concerned with backward compatibility believe that if they fixate on things like this, you’ll be able to run an ancient script with a new perl and absolutely nothing else will have changed and it will run fine.

                        I respectfully disagree with you, and this is one of the reasons I have chosen Perl for my current project.

                        Not because of this specific feature– I am totally with “use strict”– but because of Perl’s general respect and high priority for backwards compatibility, unwillingness to break things for “progress”, and general stability.

                        1. 4

                          There’s not really anyone champing at the bit to break things, but things have subtly broken or become deprecated regardless so you still can’t necessarily switch out a dependency like the interpreter and expect things to just run perfectly. The only way to be certain is to freeze your dependencies, or put in the time to update alongside your dependencies. At least perl releases have very good changelogs.

                          Like I said, folks fixate on this particular thing and say to switch the default is “breaking backward compatibility”. It’s a great example because it’s barely a break to make strict default: it would make “use strict;” lines redundant in current code, save every perl dev from having to write some form of use strict; in every file forever, and require people who try to run code that has been called a bad idea for the entire life of perl 5 to add “no strict;” in their stuff if they really want to run it with perl 5.34 in the year 2022.

                          This is so easy and people have resisted so much over the years and it’s almost certainly harmed perl. I mean here we are in a post that’s pretty much having a laugh at perl’s expense… because nobody ever flipped this default.

                          And I don’t meant to sound to harsh on perl here, because perl has absolutely moved forward too, it’s just that sometimes things should break, otherwise they’re holding you back. I mean Debian is also well regarded for its stability … but it’s also moved forward when necessary.

                          1. 1

                            Umm… Use strict requires variable declaration before use, which is not required without it. That is a huge breaking change for many quick 10-liners.

                            And it would require an extra line of code “in every file forever” for every single quick 10-liner script people write in Perl, which is half of Perl’s use cases.

                            Have you ever written any Perl?

                            1. 2

                              I appreciate both yours and @meredith’s views on this topic - whether a future Perl should be “use strict” by default.


                              Have you ever written any Perl?

                              is uncalled for.

                              I’ve written a ton of Perl (first used in production in 1999). I’ve always used strict and warnings, because I’m a dweeb who reads the documentation, and it’s saved my bacon a ton of times, and pre-declaring vars is what I learned to do in Pascal, damnit. I’ve never written a “quick 10 liner”, added it to production, and blithely expect it to keep running 19 years later.

                              I’m sure there are Perl hackers who simply cannot imagine having to comply with strict (they probably don’t grok references either), but are they a majority whose views should always be respected? I don’t think so. They have a voice and a vote, but so do the strict proponents.

                              People write Perl in their own way. It’s the blessing and the curse of the language. But it also should prevent one from casting judgement on other’s choice of how to write Perl. After all, there’s more than one way to do it.

                              1. 2

                                I’ve been writing Perl for 20 years. I know the implications, as well as the possibilities for moving the language forward.

                                I wouldn’t call strict “variable declaration before use”, it’s more like “declare on first use”, except in cases where you need to refer to the variable again in the same statement it’s been declared in. I wouldn’t portray it quite like compulsory declaration at the top of a scope.

                                For anyone reading and unfamiliar with Perl, when you’re not in strict, the first mention of a variable without its scope having been established by my, our, or state, will be taken to refer to a package variable of that name, basically a global. In this context, strict is forcing you to be clear what you mean the first time you mention a variable within a lexical scope. Going without strict in this way is discouraged, for example, because it allows you to forget to say my somewhere then be surprised that a variable isn’t falling out of scope and being reset, it’s silently a global. Most Perl code today is ‘strict’, and there are occasional small scopes of no strict where someone can get weird in a controlled context (like an unsafe block in rust where you’ve got a hopefully small and readable scope where someone is carefully dereferencing a raw pointer), but it’s not usually this aspect of strict they’re turning off.

                                For example,


                                This is a pretty clear case of “on first use”. $xstr and $xid are declared at the same time their values are set in the middle of the function, even after a possible return. But the first use doesn’t even have to be the complete outer statement like this, it can be inline:


                                This is FFI, where I’m hiding weird C stuff from my caller in perl-land†, and I need to provide a reference to a variable for the C function to write the exception back in to - it’s only needed for this and to return on the next line, so it’s declared as a lexical, and a reference to it is made, in the middle of the line.

                                Personally, I think going without strict in any case except an actual command line one-liner is sloppy and prone to mistakes, but do you really think it would that burdensome to have to write ‘no strict;’ when you don’t want it or to just be explicit with ‘my/our’ in scripts? I haven’t had any trouble with it.

                                In my throwaway scripts I write everything strict-safe, even if I forget to literally enable strict - even in my REPL - but also I’m fairly sure there’s still much, much more business Perl code being written than “quick 10-liners.”

                                † Technically, Perl does allow mutating variables passed as arguments, but it’s somewhat discouraged (side effects!), as well as just more idiomatic to return a list of values, compared to how common this pattern is in C, so what you’re looking at is a tiny wrapper on the function just to switch the calling conventtion and return to something more perlish.

                        1. 11

                          The only consistent property of PHP is how badly it’s designed, yet it somehow remains widely popular. There’s a social dynamic at play here that science has yet to unlock.

                          Yeah, PHP certainly has its issues. First theres the inconsistent syntax, like strpos vs base_convert. Then you have other issues like no method to return input with a newline, like Python print(), forcing explicit newline like echo "hello\n";.

                          But its widely popular because it works. Its significantly smaller than Python to install, and I would argue faster than Python in many cases. As a simple test, time how long it takes to do php -r 'echo "hello\n";' versus Python or frankly any other scripting language. I think the only faster language is Perl, and I usually stay away from Perl, as I view it as a “write only” language.

                          There’s no reason for that: I don’t write programs in PHP, never had to use it, and don’t expect to ever need it.

                          Author doesnt use PHP, and yet they felt compelled to write 900 word screed about it?

                          I recently came across a link to the PHP manual, and morbid curiosity that caused me to look through it.

                          Here is another point, the PHP manual. Again, PHP has its warts, but I would argue the PHP manual is the best programming language manual I have ever read. Every function gets its own page, not everything crammed into a giant page. This allows documentation to expand as the writers dont have to worry about an ever expanding megapage. Each page tells you the return value, what arguments are optional, whether values or references are expected, related functions. And important, comments. Look at this comment:


                          It provides an algorithm for iterative traversing of a directory. An algorithm I use myself, as its pretty good. If author wants to slam PHP thats their business, and maybe justified in some narrow cases. But I think its unfair coming from someone who doesnt even use the language. In case anyone thinks Im biased, I maintain a comparison of programming languages:


                          and above are just some of my thoughts after using 7 different languages over the last year.

                          1. 6

                            I usually stay away from Perl, as I view it as a “write only” language.

                            How ironic that you include this prejudice against another language while explaining the wrongness of prejudice against this one :)

                            1. 6

                              As a Perl enthusiast, there’s a lot of truth in that statement. Perl is so flexible and so fun that individual Perl hackers soon develop their own instance of TMTOWTDI, so the output of one Perl hacker can be hard to read for another.

                              I don’t have much confidence in my own cleverness so I try to minimize this, but the more you learn, the easier it is to use map and friends to “collapse” an assignment via an explicit loop to a oneliner. It’s no problem for me as this is an idiom I’ve leaned and grown comfortable with, but it does constitute an “internal slang” that others might not get, depending on their background and skill level.

                              Bondage-and-discipline languages like Python don’t have quite this issue.

                            2. 3


                              This is really neat, thanks for sharing!

                              1. 2

                                Here’s another site that lists common tasks in multiple languages. When learning a new language, I often consult these resources.


                              2. 2

                                I think the only faster language is Perl

                                I assume that means “I think the only faster interpreted language is Perl” or “I think the only interpreted language whose interpreter starts up faster than PHP’s is Perl” or something? Obviously an assembly version of hello world would be significantly faster than even just waiting for the Perl interpreter to get to the beginning of its main() function :P

                                Author doesn’t use PHP, and yet they felt compelled to write 900 word screed about it?

                                It can be interesting to analyze how something works even if you don’t personally use that thing. Criticism can be valid even when it’s not coming from someone who uses the thing being criticized. I agree though that some parts of this article isn’t good criticism; the part about closures is good (assuming it is correct, which it looks like it might not be), but just throwing in unsubstantiated claims like “The reason PHP has sigils is that Perl had them and PHP copied Perl without knowing why Perl had them” is unnecessary.

                              1. 3

                                If you are technical enough to use irssi and screen in a console, IRC works quite well on mobile devices…

                                I have been working on a forum-like system which relies on .txt files, git, and GPG, structured in a way that any competent dev can reimplement it and re-verify the entire “dataset” in their favorite language in a day or ten.

                                1. 6
                                  1. Learn meditation. Meditation is basically, at least in the beginning, focus exercises. Try doing a 5-minute breathing meditation, where you focus all your attention on your breathing.

                                  2. I read a book called The Artist’s Way, which really helped me with its advice about “the morning pages”. Basically, in the morning (or any other time of day), sit down and write 3 pages of whatever is on your mind. This helps get whatever distracting thoughts are going around in your mind down and paper and out of your head.

                                  1. 2

                                    Hey ! The first point reminds me some exercice routine from Wim Hoff. I tried a bit but I didn’t commit to it. I will try again.

                                    I keep your second point mind too, thanks for your time :)

                                  1. 2

                                    I found it easy to navigate and a clean design. My main criticisms are accessibility-related. You should be able to do everything on these pages without JS, but the menu doesn’t appear with JS disabled. This leads me to believe that you didn’t do much testing. Also, a good portion of the content (all the examples) are in images with no alt-text, and titles that don’t match the image.

                                    1. 1

                                      I agree! Correct, haven’t done much testing yet. And we need to get alt-text in there. This is more in the prototype stage. I added this to the github issues so we remember to address these issues in a future release. Thank you!

                                      1. 1

                                        You’re welcome! Happy to help.

                                    1. 2

                                      I’m doing the same thing I’ve been doing for a while, putting more commits into my decentralized message board system. This week, as Burning Man winds down, I’m finally finishing up the BM-specific features I’ve been working on.. It’s somewhat disappointing, but that’s life for you. I’m glad to have had this motivation to test and develop more, and it’s resulted in several usability improvements.

                                        1. 12

                                          You need to enable JavaScript to run this app.

                                          Can’t make a simple blog page that doesn’t require JS, ncsc.gov.uk?

                                          Shameful, and makes me not trust the information much.

                                          1. 7

                                            It’s amazing how many sites whose primary function is to serve text (e.g. news sites, etc) completely fail when javascript is disabled.

                                          1. 4

                                            The only good config file format is a SQLite database

                                            1. 7

                                              With some YAML in it!

                                                1. 1

                                                  How do you feel about a tree of text files, each corresponding to a config key?

                                                  How many keys are in your config file? 100? 1000? 10,000?

                                                  Even 10,000 text files in a tree of subdirectories is not that unmanageable.

                                                  You can store them in a repo, and be able to immediately see what’s changed without even doing a diff.

                                                  Also one of the most accessible formats as far as tooling.

                                                  Easy to write GetConfig() and SetConfig() for, and performs well with basic caching (static hash in these functions.)

                                                  Did I miss anything?

                                                  Oh yeah, defaults. I have an imperfect solution to defaults that I use in my current project. There is a default/ directory, which contains all the default settings in the same format.

                                                  Example: default/interface/voting/enable_checkboxes

                                                  The first time GetConfig() is called on this value, if it is not present in config/interface/voting/enable_checkboxes, the value from default/ is copied over.

                                                  This also allows me to have a test which checks for orphaned default settings (if they’re present in default/ but not in config/ after test script.)

                                                    1. 2

                                                      Hey I first thought you were kidding but that’s pretty much how /proc works on Linux!

                                                      1. 2

                                                        DJB config? at least qmail does something similar

                                                    1. 0

                                                      The article defines it as “the most influential games of all time” and “defined a generation”, but I never heard about this game before.

                                                      It is for all intents and purposes a rather simple Finite State Machine, whereby the AI exists in a given state of execution into a behaviour until an event in-game forces a transition to another one. This same principle was later employed in Half-Life

                                                      Unfortunately, the article lacks any details about how it works. Any recommendations of articles that describe game AI in similar environments (i.e. first person shooters)? “Valve developer community” wiki has a collection of pages dedicated to AI; there’s gameaibook.org, and this article on gamedev.net.

                                                      1. 19

                                                        Maybe you weren’t in the generation it defined I guess. Golden-eye was THE first person shooter for console for hotseat competitive play for a good long while. It sold 8,090,000 copies. Top 3 in game sales for the n64 and beating pretty much any other FPS for its time.

                                                        1. 8

                                                          It’s not like there is some authoritative source on this that can be measured objectively, but I wouldn’t bat an eye. It was really that good.

                                                          See also: https://en.wikipedia.org/wiki/List_of_video_games_considered_the_best (I haven’t heard of every game on that list. Most of them I have, but not all.)

                                                          1. 5

                                                            FWIW, I’m not much of a gamer, but I have played it and know about it.

                                                            1. 3

                                                              On top of what @burntsushi said, I assume metrics like this for video games are subjective based upon relative age too. I remember Golden Eye coming and would agree it was really good. But like he said, I haven’t heard of a lot played of the games on that list, and in my case there seems to be a clear association between my age and the release date of the game.

                                                              1. 2

                                                                The state machine is pretty simple. Guard walks left to point B. Then turns around walks right back to point A. If the player shoots their gun nearby, the guard goes into run to the sound mode.

                                                              1. 1

                                                                My software uses the medium-long key ID for identifying users. I guess I know now that I have to switch to long IDs.

                                                                1. 1

                                                                  I still use CGI and SSI too.

                                                                  As another poster said, great for filling in small pieces of an otherwise largely static site.

                                                                  Also standard across most web servers.

                                                                  1. 2



                                                                    k-har (like if you say the first syllable of character, with a British accent)

                                                                    fsck (just like that)

                                                                    … how else would you pronounce schema? schemas.

                                                                    1. 3

                                                                      Google Blogger alternatives – WordPress, Medium, and Ghost are all good options.

                                                                      No, they are not good anything

                                                                      1. 3

                                                                        What’s wrong with wordpress?

                                                                        1. 1

                                                                          Yeah, I have the same question. If you say “security” then you can use wordpress.com and let them handle that for you, and also, if you’re dilligent about it, it’s such a well trod path you can secure your site pretty thoroughly if you’re on top of it.

                                                                          Not everyone wants to use a static site generator.

                                                                          1. 1

                                                                            I might have been hasty in judging all three of these with the same cloth. I’ve never heard of Ghost and only have a slightly negative opinion of Wordpress. My judgement was perhaps clouded by my immense hatred for Medium – the fact that it is recommended here makes me skeptical of all of these recommendations.

                                                                            1. -2

                                                                              /s ?

                                                                              1. 6

                                                                                We as a community can do better than this kind of response. Why not communicate what you think is wrong with Wordpress, instead of questioning the motivations of the person asking a question?

                                                                                1. 4

                                                                                  Wordpress is a good option if you host it yourself. Medium is an abomination these days. I never used ghost.

                                                                                  1. 3

                                                                                    I don’t see the problem with using wordpress.com either - At any time you can export to a self hosted instance trivially. I know everyone here feels super strongly about self hosting, and there’s a lot of wisdom in that, but some of us lack the hours in the day to properly secure and maintain a Wordpress site, or to tackle the extra necessary steps to do static site generation.

                                                                                    1. 4

                                                                                      I’m especially happy to pay wordpress.com because that’s what funds development - I know several automattic employees who are essentially paid to work on wp-core fulltime, and I’m personally extremely happy to support that arrangement (see also: fastmail and their work on Cyrus imap).

                                                                                      I own the domain; I own the data. I don’t need the headache that comes with actually running the thing if I can port to another host easily.

                                                                                      1. 2

                                                                                        Precisely! I think people are going a bit too overboard with the “SELF HOST ALL THE THINGS” - the important thing is data ownership and mobility.

                                                                                        I ran my own WP instance for years, and did a crappy job of it, and got owned pretty hard.

                                                                                        Not everyone wants the part time job of owning server resources. It’s admittedly gotten a LOT easier but I’m still much happier outsourcing this particular thing - just like I outsource my mail to Fastmail. I ran a mail server for years and years as well, but again - a part time job I don’t need.

                                                                                        1. 2

                                                                                          This is also my bugbear with mastodon. Federation is great, but most of the new users don’t own the domain their account is at, nor hold the keys used to authenticate posts as theirs.

                                                                            1. 7

                                                                              Some interesting thoughts, but I have a personal nit-pick:

                                                                              After several years of programming, I can safely say that about 80-90% of comments are redundant

                                                                              No, you can’t, unless you’ve actually measured, and then you should provide some evidence (number of code bases examined, number of comments total, etc). It bothers me that people feel the need to make up a percentage. Just saying “most comments are redundant” is fine; there’s no need to quantify it with an imaginary proportion.

                                                                              1. 4

                                                                                If most of your comments are redundant, then you need to get better at writing comments.

                                                                              1. 2

                                                                                I’m a fan of textfiles.

                                                                                I’ve been playing around with this currently prototype-grade system: http://hike.qdb.us/

                                                                                1. 2

                                                                                  details is great, and I have played with it extensively, but ultimately decided against using it for two reasons:

                                                                                  a) It is not supported by many browsers, including, most notably, both IE and Edge. In these cases, all of the content is shown, which is an OK fallback.

                                                                                  b) Even though it looks rather obvious to me, the overwhelming majority of users I have studied either do not notice it or can’t be bothered to expand it, looking for other options instead.