Perl was the first language I learned on my own after graduating university many years ago. I fell in love with it because of quirks like these and because code written in it can have a poetic quality you don't see often.
Now I am old and joyless and I want the code I write for work to be boring and unsurprising.
Perl was also my first productive language, and I do miss it a little. Write something like []string{"foo", "bar", "baz"} in go and you really appreciate qw(foo bar baz). Perl was always designed to be easy to type in, and maybe not so easy to maintain later. Good memories, but not for me anymore.
I learned Perl after trying C; and after struggling with `scanf` (not even getting to tokenization), the ease and speed of `while (<>) { @A = split;` for text-handling made it easy to fall in love. This (in the mid 90s, before Java, JavaScript, and C++ TR1) was also my first contact with associative arrays.
I was also drawn to the style of the Camel Book.
More than most other languages, Perl encouraged one-liners. When I later read PG's "Succinctness is power" essay, I thought of Perl.
> This (in the mid 90s, before Java, JavaScript, and C++ TR1) was also my first contact with associative arrays.
Associative array is just a fancy term for map / dictionary. C++ has always had one of those, even before TR1: std::map (which is a tree under the hood). It does have the extra requirement that your key be ordered, which isn't part of the core definition of associate array[1]. But usually it's not a problem even if you don't actually need the ordering.
As I think you're implying, TR1 / C++11 added std::unordered_map, which is a hash table and doesn't need keys to be ordered (just hashable).
[1] It isn't part of the core definition of "map" either, which despite C++'s usage just means the same thing as dictionary / associative array. A lot of those early STL containers are confusingly named: e.g., in general, "list" just means some ordered sequence of elements, so it covers static arrays, dynamic arrays, and linked lists, but C++ uses this term for linked lists, probably the least likely understood meaning. It use of the term "vector" for contiguous dynamic arrays is very odd. But I'm now way off topic...
This isn't the first time I've said this but also had an early-career job writing Perl code. And I actually got to the point where I liked it -- I mean I could see why it had a following.
Subsequently I've written code in almost every popular programming language and I will frequently go years between languages but even so I have very little trouble picking them back up. Even C++. But not Perl. It's just so weird with so many idiosyncrasies that I just can't remember it.
I discovered Perl directly after PHP before Web 2.0 days. Compared with the extreme, Java or (contemporary) Go, Perl codes (can) have a soul. Interestingly, modern ECMAScript (JS) brought in a few of the nice breweties from Perl world which I haven't seen a long time.
> My router assigns dynamic IP addresses, meaning my server location kept changing.
I've had a similar problem in the past. It turns out that most routers have a way to assign an IP address statically based on the MAC address of the requesting device without affecting the other DHCP devices on the network.
I do this for my pi-hole, my NAS and my gaming PC.
As long as that's on the router's side. I guess I did that on my phone for some reason so when I upgraded and migrated they had the same address. I'm surprised it worked at all. It was just painfully slow.
The wording can vary quite a bit: I've seen names like static, fixed, DHCP reservation, etc. -- I tend to like DHCP reservation, because from the client's perspective, "static" means not using DHCP, but this does use DHCP (just not the pool).
Most home routers also have some addresses that are outside the range managed by DHCP, or if DHCP is set to manage the entire range of LAN address have a setting where you can reduce that range. This gives you a third way to manage static assignments.
Let's assume the LAN is 10.0.0/24, so addresses of devices on the LAN are 10.0.0.1-10.0.0.254. In the following I'll omit the 10.0.0. part of an address, so will just refer to addresses 1-254.
Find the range DHCP manages, which should be somewhere in the router settings. If it is 1-254 reduce it. Let's say it is 1-200 (either by default or after you have reduced it).
Then you can simply go the settings on your server or other device that you want to have a static address and configure it to use a hard coded address outside that range, such as 201.
A possible downside of that is that on some devices if you want to give it a hard coded address you also have to hard code the gateway address and the name servers.
Some devices though have an option to use a hard coded address but still get the gateway and name servers from DHCP.
In summary, there are three ways to manage address for a given device on most home routers.
1. DHCP assigns the address. It can choose any address in its pool. Each time the device needs an IP address, such as after a boot or when its lease expires, it could get a different IP address.
2. DHCP assigns the address, but you can tell it to give a specific address from the pool to a given device identified by the device's MAC address.
3. Tell the device to use an address outside the router's DHCP pool. It's up to you to decide how to assign these address and how to make sure no conflicts arise.
For #2 if you want some device to have a fixed IP address but you don't actually care what that address is, many routers have an easy way to do that. Connect the device under #1, so DHCP picks the address.
Then go find the table in the router's web interface that shows all currently connected devices and find your device. Many routers will have a toggle in there to tell it to switch to #2 for that device. From then on the device's current address will be reserved for it.
That's a little easier than going through their "assign an IP" dialog, because that usually makes you enter the MAC address. If you go through the connection table details it doesn't have to ask you for the MAC address.
I've got a TP-Link Archer C7, hardware version 5. No such toggle unfortunately, but thanks nevertheless. Perhaps I should try and flash it with OpenWRT.
The term originated on 4chan before the advent of mass AI-generated content. Only the normified definition of the word means "LLM-generated content I don't like".
For what it's worth, they already fail to update the status page. We had an "outage" just this morning where jobs were waiting 10+ minutes for an available runner -- resolved after half an hour or so but nothing was ever posted
Last week (Sunday to Sunday) I had a repo running a lot of cron workflows 24/7. After like 4 or 5 days I exceeded the free limits (Pro plan) and so set up self hosted runners.
After like day 2 my workflows would take 10-15 minutes past their trigger time to show up and be queued. And switching to the self hosted runners didn't change that. Happens every time with every workflow, whether the workflow takes 10 seconds or 10 minutes.
I don't want to shit on the Code to Cloud team but they act a lot like an internal infrastructure team when they're a product team with paying customers
Now I am old and joyless and I want the code I write for work to be boring and unsurprising.
But sometimes one can still want to write poetry.
reply