1. 4

    It is funny to see an article about writing better SQL mentioning both Codd and PostgreSQL without mentioning QUEL even once. Not only it was query language designed by Codd himself, it was also the first query language in Postgres (then it was named PostQUEL). And IMHO QUEL is clearer than proposed EdgeQL.

    1. 3

      I have a manual of Ingres QUEL on my desk (from the times that Ingres shipped with both SQL and QUEL). I remember my supervisor (who had worked on initial (Stonebraker’s) Postgres) saying that QUEL was superior, but in the end this did not matter. SQL marketing won.

      1. 1

        Maybe it is time for the great come back of QUEL. With current state of query languages it do not matter that much anymore to follow “the marketing”.

        1. 2

          I wouldn’t mind working on a QUEL implementation for anything, but I’d need someone to pay me for it :) Unfortunately we do not always get paid for the next cool thing that can be reintroduced in CS :(

    1. 4

      When the user is as technically proficient as the OP, then you do not need it. When your userbase is banks and you’re required to have some form of 2FA within a userbase that does not necessarily owns (or can use) a smartphone, then SMS-2FA might be your only choice for 2FA (or 1FA, if you view the password part as an easy guessable constant and the time limited SMS token as the actual password). The world runs on trade-offs and this is one of them.

      1. 20

        If a civil or structural engineer were told by their boss to do something so clearly deceitful and potentially harmful to the public on behalf of a big client, they could take their concerns to their professional society, who would protect them and perhaps even take other legal action to protect both the public and the reputation of the profession. In fact, if they didn’t, and one of their colleagues found out, they could be in trouble with their association – which could have real consequences for their career. But if a “software engineer” has such qualms, the best they can do is quit (leaving a vacancy for someone who may not have the same scruples) and maybe, as a stretch, put themselves at risk by trying to raise awareness as an unprotected individual whistleblower.

        That’s why I say we’re not real engineers. It’s nothing to do with what kind of work we do or how we do it. It has everything to do with our lack of professional standing in society at large, and institutions which can defend it. Until we can govern ourselves the way that architects or attorneys or doctors or all the real engineering disciplines do, we are just unusually well-paid labor, externalizing risk onto the public with no effective responsibility, to our collective shame.

        1. 4

          That’s why I say we’re not real engineers.

          I agree entirely - but have largely given up on a battle that most of my colleagues and employers incorrectly consider to be purely semantic.

          I’m also very, very wary of calls for compulsory regulation and registration with professional societies. A lot of what programmers do isn’t engineering, by design.

          1. 1

            I’m not interested in the semantics battle, myself. I’d say it’s still very early days for the professionalization of software, and I’d like to be clear that I’m not calling for anything in particular at present. Nor am I holding my breath. But I do anticipate some change over the span of my own career, and there’s plenty of historical precedent for anyone who cares to look. I spell out my position in some detail in my reply to LibertarianLlama.

          2. 4

            If a civil engineer does something bad, a building collapses and 100 people die.

            A software not-engineer does not have this problem 95% of the time.

            For the OP’s article, the story is a person who was asked to code a marketing website for a drug. Another person suicided while on said drug. Therefore, the marketing website is unethical.

            This is wrong. It could have been that the drug will save 10,000 people for every suicide it causes. It is the responsibility of the patient and their doctors to weigh the risk/reward of a particular drug. Doctors and researchers have a system they build the weigh the risk/reward of drugs and to control corporations that develop those drugs.

            To simply conclude that the drug is unethical, therefore making a website marketing it is unethical, based on one case of a negative outcome, with no mention of positive cases, is simple not a good way to arrive at the conclusion of whether this is ethical.

            That’s why I say we’re not real engineers. … It has everything to do with our lack of professional standing in society at large, and institutions which can defend it. … we are just unusually well-paid labor, externalizing risk onto the public with no effective responsibility, to our collective shame.

            Lawyers are considered bane of civilisations by many people. They build an overly legalised system to extract rent from societies via legal obligations. Why do you consider them to have ‘standing’ in society?

            Is your argument that if programmers get together, create “The Grand Association of Serious and Ethical Programeers”, that we will have standing? Or that we will be ‘serious business’ in the eyes of the public? Or that we will be real white collars? Or a real profession? And that we will be able to defend the honour and dignity of our sir programeers? Will we demand a uniform of t-shirts and hoodies like lawyers do? Because we are serious business.

            Programmers have deliver HUGE amount of value. There’s absolutely no gatekeeping. A random kid with internet access from the poorest part of the world can get a remote job, with salary that will completely transform his extended family’s lives. This is not possible as a lawyer, or a doctor, or an ‘engineer’. No matter how good you could be, without the correct due paid to the correct universities, and going through their gatekeeping processes. It is the realisation of the free market dream, in a way that is potentially completely transformative. But we shouldn’t have that, because some people decided to code a marketing website or a drug that has otherwise been okayed by those doctors and lawyers that you hold in such great esteem, and he didn’t like it that a person who was on that drug died from its side-effect.

            If you only read the news about people drowning, soon you will want to ban water.

            1. 4

              Regardless of whether the drug itself is good or bad, the marketing was deceptive, which both the OP and I see as unethical. Anyone with even a passing acquaintance with the US (and international) pharmaceutical industry knows that they have a long history of doing some incredibly shady stuff, despite being highly regulated. Certainly they love loopholes. But that’s pretty tangential to my point, which was simply about what actions you can take as an engineer given a task that you judge to be unethical, what are the expected outcomes of those actions, and what that says about our societal status collectively, as a nascent profession.

              I get that you don’t like lawyers. Maybe (like some people would say about guns) it would be a better world if they had never been invented, but that’s strictly fantasy. In the real world, I think it’s pretty uncontroversial to point out that they wield significant power, have effective self-regulation and autonomy, and consequentially command respect. Certainly, as a profession, they are nearly as old as medicine, and equally established. It doesn’t matter how you feel about them as a class of people.

              I don’t see any need for your GASEP: in fact, we already have the ACM and the IEEE. And no, I don’t look forward to a world where (say) ACM membership is compulsory for junior web devs. There are several established ways that society regulates dangerous work. Building contractors, for example, must be licensed, bonded, and insured – but that doesn’t replace building permits and inspections. Architects have their own responsibilities. It’s a complex and nuanced topic that might not be the best basis for analogy anyway. What I’m saying is, as society gradually comes to rely more on our work, and the potential for real harm increases, that work will be regulated, one way or another. We can either self-regulate, or we can be entirely governed by legislation and the internal regulation processes of other fields. In practice, it will probably be both, and will emerge gradually over a generation or two, because our field is still too immature to have any real basis for standardizing practices. But I’m from a blue-collar background myself, and I’m in favor of software practitioners having at least some autonomy and professional standing, which requires self-regulation. We’re not all like handymen or union carpenters. At least some of us are doing work that’s more like that done by architects and structural engineers.

              In summary, you argue that:

              1. Most of what we do can’t cause real harm
              2. Doctors and researchers and laws already sufficiently regulate the drug market such that no professional judgement by website developers is needed
              3. The economic benefits of unrestricted access to high-paying tech jobs outweigh any prospective dangers

              I’d say that (1) is becoming less and less true as software chews through the world and digests what it can. As for (2), I suppose we can just wait for web-based pharmaceutical ads to be as regulated as on TV etc, but it’s entirely beside my point. As for (3), I think it’s worth distinguishing between the costs and benefits borne by practitioners and those borne by their employers, their customers, and society at large. A balance must be struck, and that balance may well shift over time.

              1. 3

                If a civil engineer does something bad, a building collapses and 100 people die.

                A software not-engineer does not have this problem 95% of the time.

                I’m pretty sure most of the civil engineer fuckups just result in expensive shore-ups and re-builds. But… I can’t actually back up that claim.

                It could have been that the drug will save 10,000 people for every suicide it causes.

                As mentioned elsethread, this was probably anti-acne drug Accutane.

                1. 1

                  A software not-engineer does not have this problem 95% of the time.

                  That is why even a senior software is engineer is equal / equivalent to a skilled builder / construction worker. They do not go to jail for the collapse. The Civil Engineer does (depending countries and jurisdictions on the size of what was built, etc).

                  So, who’s ready to go to jail?

              1. 10

                Doing some Erlang stuff :)

                1. 1

                  I always wanted to get into Erlang but it seemed pretty intimidating. I read Learn you some Erlang but never got around to finishing it unfortunately. Hopefully this weekend I could make some time to mess around with it ;)

                  1. 4

                    I’ve always wanted to work with Erlang. Even before it was open sourced I had my supervisor sign an NDA so that I could download it from Ericsson. At the time I saw it as the perfect platform for load balancers and the like. And it was not only me. Members of the Erlang team saw that too (link 1, link 2). But like most people I am not paid for stuff I love to hack with, rather on stuff people who pay think I am good at.

                    I have the book in print too. Mostly for library completeness.

                    So this is a 20 year long slow process for me.

                    1. 3

                      Go check it out! It’s my favorite programming language. It gets the functional parts right, the data structures right, the network & RPC primitives right… It’s a lot of fun. Build a small thing with it. I never found that book very helpful.

                      1. 1

                        I am evaluating Erlang for use in a professional project, so I have been spending some time learning it. I’ve been going through the Getting Started Guide from Erlang.org, and I’ve found it is actually very approachable and helpful just going through each example. Going through a whole book was too much for me right now.

                        1. 2

                          Your link to getting started is a little messed up (here it is fixed) https://erlang.org/doc/getting_started/users_guide.html

                          I’ve always had an interest in Erlang, but like most languages I’m never sure what to build :/

                    1. 1

                      How do you prevent self hosted mail from getting caught in a spam filter? I never quite understood how to prevent that.

                      1. 6

                        Easy, you don’t.

                        There’s a lot of stuff you can do to reduce the likelihood:

                        • setup DKIM
                        • setup SPF
                        • ensure DNS is setup (MX record for your domain pointed to your email server, A/AAAA for your mail server set (e.g. if your mail server says it’s name is mail.example.org, an A record for mail.example.org is connected to the IP it’s sending out from), optimally set reverse DNS to match
                        • make sure the domain you’re using is clean (not something you normally need to care about of you’re using a domain you’ve owned for ages that’s particularly unique, but could run afoul of a blacklist if you’re buying an aftermarket domain or an available domain that’s changed hands in the recent past)
                        • make sure the IP your mail server uses is clean (generally not a huge issue either, but some providers are notorious for having whole IP ranges blacklisted)

                        But at the end of the day, Gmail, Outlook(/live.com/Hotmail/MSN), et al. are still gonna think you’re suspicious until they’ve started seeing users interact with you / flag messages you send as “not spam”.

                        In my personal experience Gmail is more lenient than Outlook at “first time sender” type stuff, but all the big players generally care just as much about your domain/email server’s “reputation” with them as they do about the technical correctness of your setup.

                        1. 7

                          I’m going to say that again, and again, and again… That’s an argument for hosting your own email, not against it. Every self-hosted email user giving up and switching to one of the oligopolists is a win for the oligopolists.

                          Dropping mail from self-hosted servers is a way for them to get more users (all while often cheerfully accepting spam from hijacked accounts on big services, including their own). Whether they are doing ot intentionally or not doesn’t matter—they are aware of the problem or could easily find out if they wanted to, but they are doing nothing to improve the filters to actually detect spam.

                          1. 5

                            Something I don’t think gets mentioned enough to go along with the domain part of this is that a lot of the new, hip, trendy TLDs are instant points dinged against you for the configurations of SpamAssassin et al that a lot of incoming mail servers use.

                            I messed around with Mail-In-A-Box for half an hour or so on a fresh .space domain one time a little under a year ago and took a peek at a SpamAssassin score test to see why mail to my own Gmail was bouncing (not just getting filtered to spam), and it turns out you can be half done for from the start if you don’t have a domain on a tried-and-true TLD. Even with DKIM etc all configured and clearing SpamAssassin properly, my score was only in range to hit the spam filter instead of bouncing, and it still bounced on Gmail, although that may have had to do with the now-repeated attempts to get through, or maybe some caching of my untrusted status from when DKIM wasn’t set up properly(?). In any case, between IPs, TLDs, and resold domains, it’s wild how easy it is to end up in a situation where there’s nothing you can do about how spam filters see you, even if you’ve never sent spam in your life.

                            1. 1

                              I had the same issue in the past when I owned arrrgh.pw (I know, it makes a pretty cool email !). Turns out .pw is simply blacklisted in most email filters, and I could never get a single mail delivered. Someone then told me it’s because these TLDs are cheap, and heavily registered for spamming purposes. Big mailers simply spamlist them by default just in case. The advice that came after that was to choose a domain that’s not cheap (~30$/year), and fo with it. I did that, and never had a problem with getting my mails delivered since.

                            2. 2

                              make sure the IP your mail server uses is clean

                              That is why I send my mail through Mailgun for a small mailing list I host privately (ie the VM relays through them).

                              1. 2

                                In my personal experience Gmail is more lenient than Outlook at “first time sender” type stuff, but all the big players generally care just as much about your domain/email server’s “reputation” with them as they do about the technical correctness of your setup.

                                True. One thing that helps is to have a GMail sender mail you a few times to your own domain ; or if you have an account there, set it up to forward every email it gets to your personal address. I guess you could do the same-ish with Outlook, etc. Still annoying.

                                I once worked for a mail-delivery shop, and both Microsoft and Google provide tools for “professional senders” to monitor their IP addresses reputations, and ensure that the customers’ email blasts hit the inbox. You kind of have to be a pro player to be able to send “bacn” at will, but if you’re trying to share baby pictures with grandma, you’re out.

                            1. 2

                              It is always good to try and host a service on your own before moving to a hosted solution. You get a grip of how such a service works in production (even at a limited scale), what it entails to offer some nines of availability and also it gives you enough insight so that when you complain to support about an issue, you can make (more) accurate remarks than it’s not working, or I feel it slow.

                              1. 2

                                Mixed. If you want me to run it on Kubernetes, I can do it, be it EKS, bare metal, Rancher, you name it, I can happily do it. Is it a solution to the problems your architect thought when they decided on it? Never.

                                1. 23

                                  Lol. I’ve spent weeks hunting bugs where the fix ended up literally being a single bit change. To be clear, that’s not intended to be a flex but rather an underlining of the original author’s point that a line of code is not really a metric of anything at all.

                                  1. 26

                                    I came to say something similar. I recently found a bug in the Linux kernel in an obscure code path that no one except us and paravirtualised MIPS use (which, realistically, means no one except us). Debugging took several days. The fix was changing a 0 to a 1. Even in ASCII in the source code, this was a change of 0x30 to 0x31, so a one-bit fix in both the source and the compiled binary.

                                    There’s the old (and possibly apocryphal) story of an engineer coming to service something, tapping the machine with a hammer, fixing it and charging $5,000. The customer objected and demanded an itemised bill. They got this:

                                    • Hitting the machine with a hammer: $1
                                    • Knowing where to hit it: $4,999

                                    Fixing a bug is often trivial. Figuring out the correct fix and where to put it is the hard bit. My favourite bug fixes are the ones that involve just deleting code.

                                    1. 4

                                      There’s the old (and possibly apocryphal) story of an engineer coming to service something

                                      Here you are

                                      1. 1

                                        This is one of those cases where the 1 byte change should be accompanied by a multi-paragraph explanation ;-)

                                      2. 7

                                        It’s not one line of code, it’s which line of code in the millions of them.

                                      1. 13

                                        I switched jobs days before the lockdown in Greece. The new work is totally remote, which in part was a good thing. On the other hand with all the family of 5 inside a small apartment during a strict lock down, this was not working from home, this was working with home. Now that the measures have relaxed, I wfh.

                                        We coped reasonably well given the situation. No tensions and we somehow managed to keep both us and the children occupied, though the daily count did impact their perception of things.

                                        On a personal level. No new hobby that I can brag about. I declared Haskell bankruptcy and started learning some Erlang and Groovy for work related reasons. I forgot all about xkcd 386 and got into some heated discussions about lockdowns, pandemic policies, whether Ioannidis or Taleb is right and the like. I wasted time, energy and calmness there.

                                        The worst thing: For the whole of lockdown I could not read a single page from a book, be it electronic or paper.

                                        1. 3

                                          I have been working from home exclusively for about 15 years. When people ask how it’s going I tell them, it’s about the same for me, there’s just a lot more people here with me all day. I also lost my home office this year, so that change is particularly… noticeable. “This was not working from home, this was working with home,” is a very clever way to describe it.

                                          1. 2

                                            Greece held reasonably well, thankfully. It helps that the population is small too.

                                            Χαιρετίσματα! :)

                                            1. 1

                                              I love that “Haskell Bankruptcy” :)

                                              I found reading tough during the super thick of it too but I’m coming back to it, mostly reading articles now and grazing at books again.

                                              1. 3

                                                “Haskell Bankruptcy”

                                                I’d been trying to learn Haskell since 1998 when @mtheofy introduced me to it, because of his MSc studies.

                                                1. 1

                                                  Do you think you never got there because of lack of desire or the inherent inscrutability of the language, lack of good learning materials, or all of thee above?

                                                  Feel free not to answer, just curious :)

                                                  1. 3

                                                    I have a reasonable understanding of Prolog for a language I have not used in production (and I see this knowledge transferable to Erlang now that I am giving it a second try - funny the first one in 1997 before being opensourced).

                                                    I believe the main reason that I failed with Haskell was that there was no real project for me to implement with it.

                                                    1. 2

                                                      If you are a visual person like I am, you might enjoy scribbling little interactive programs using https://code.world/haskell#

                                                      It offers a Haskell compiler a barebones IDE and a graphical environment at the click of a link and you can share your multi-user contraptions with your friends as a simple URL. Here’s the puny little beginnings of an agar.io clone I’ve started building with CodeWorld: https://code.world/haskell#PKXzp1mIAB8aiwek3UqyBug I’m building that project live but it’s in Turkish: https://www.youtube.com/watch?v=xbeWTD1dyPU

                                            1. 2
                                              • Where is this going to run? The “where” defines a lot about where DNS is going to point at, and who will be responsible for restarting the process. Is it going to be something like Heroku, AWS Lambda or a VM that the process will run?
                                              • If it is going to run on a VM, how is it going to be restarted? systemd, supervisord, someone doing it by hand?
                                              • Do you own the domain name, for which you are going to use a lot of subdomain names?
                                              • Where is that domain name hosted? Is there an API to manage it?
                                              • Is your process a web server, or is it simply opening a socket waiting for connections via TCP or UDP?

                                              Mind you, you are not required to know all these answers, but unless you provide some context using them as a guide, any advise we offer is useless.

                                              1. 1

                                                So the impetus behind this idea is I wanted to move away from Google Sheets to something like Airtable, because I’m more familiar with SQL and databases and APIs than I am with spreadsheets and formulas. But I don’t like depending on closed-source platforms because any change they make to their platform is a Black Swan event to me I may need to address (or can’t address). So I wanted to build out a tiny alternative to Airtable using PostgreSQL and PostgREST, and some very basic UI layer I’ll write myself. I don’t care too much about site performance, I care a little bit about availability, I mostly care about data freedom and integrity.

                                                I found that ElephantSQL (PostgreSQL as a Service) can create databases for free using a multi-tenant (?) model, and EC2 / DigitalOcean / etc. is fairly cheap for a tiny instance. I’ve worked with containers and there’s a lot of cognitive load just to get it working in production (especially if I move on in my career and forget about it). So I’d rather create a VM and fill it to the brim with processes.

                                                Problem is, PostgREST has a static configuration for a PostgreSQL URI, which means it can’t support multiple databases without restarting. I could model my “spreadsheet” around this and create a spreadsheet as a table. However, ElephantSQL restricts 20MB of data for the free tier on a per database level, and database costs are scary for personal projects. It also seems like a waste of resources to have an entire EC2 instance for one process, which could negatively impact my costs over time.

                                                • I’m thinking about running these processes either on Heroku free tier (which I think probably uses EC2 spot instances underneath), or using an EC2 group + load balancer. If it’s the EC2 group, then I’d probably want to fill up the server with processes.
                                                • I’m not terribly familiar with systemd or supervisord, but I think systemctl uses systemd underneath the hood, so probably that…
                                                • Yes, I own the domain name.
                                                • The domain is hosted on AWS Route 53, so I can use AWS APIs to manage it.
                                                • The process is a web server.
                                                1. 2

                                                  Here is how I’d approach it:

                                                  • Domain name on R53. API calls to make any changes needed
                                                  • Server on Hetzner (cheaper than the rest and considerably better than its previous bad reputation). For a 32G machine you can choose between a previously used bare metal, or a VM.
                                                  • I’ve run multiple instances of postgrest on a 16G VM on Heztner without any issues
                                                  • Use docker-compose to run everything: The web service, the postgrests and postgres. I’d use a host directory mount as the postgres data partition.
                                                  • database backups on S3.
                                                  • Use Mailgun or some other sending provider to send email if needed (they charge too).

                                                  YMMV, I cannot judge how much you’re willing to spend. You could do most of these with a $4/month server and no docker depending the load.

                                              1. 2

                                                Getting exhausted :)

                                                1. 3

                                                  Nostalgia.

                                                  1. 4

                                                    Indeed, Turbo Pascal that was taught in my high-school and I vividly remember struggling with a thought on procedures: “who on earth would use these when you can use write the code without them” 😂

                                                    I generally feel that it was a very good introduction language for that time, maybe it still is? At the time other schools at neighboring countries were doing high-school introduction to programming in C which to this day makes me shake my head in horror lol

                                                    1. 3

                                                      Still quite a nice and friendly way of doing a cross-platform application that is easy to install and use ..

                                                      1. 2

                                                        My reaction exactly. When I started university, we were taught Pascal with Delphi 5 (not using any of the GUI features, just as an IDE for writing command-line apps in Object Pascal). Delphi 3 was a free download, but it had a bunch of serious bugs (I spent a whole day tracking down something where one of the slightly obscure string-manipulation functions was documented to take a pascal string, actually took a C string, and for some reason the type checker let you pass either). We had the Free Pascal Compiler installed in the computer society’s machines[1], so I started writing the code in their lab, or in vim over ssh when I wanted to keep working on it from my room[2]. Free Pascal Compiler made that course a lot easier. I never used it for anything after that course. It’s probably hard to avoid hating the first programming language that you were forced to learn, after the half dozen or so that you learned for fun.

                                                        [1] Well, actually, machine. At the time, the computer society had silver.sucs.org, which was a 200MHz (I think) Pentium (clone?) that was Internet facing and did mail, talker, and web hosting for the society and platinum.sucs.org, which was a 133MHz Pentium (I think with 32MB or RAM, maybe 64MB?) that ran remote X sessions for half a dozen SparcStation 2s, which we were using as dumb X servers. I’m still amazed that a 133MHz machine could run rich GUI sessions for so many users back then when today a 1GHz single-user mobile phone feels painfully slow.

                                                        [2] That was probably when my vim addiction started. Any decade now I’ll manage to kick it!

                                                      1. 9

                                                        Catching up with work that I did not do during the workweek.

                                                        1. 4

                                                          Let me join that team too. The grape of servers which I planned to use to run some models and make some calculations is down after a security breach. So I am spinning those in my laptop with its poor 4 cores. I am thinking about getting a cloud instance because I am on a short timing. Or I can see if the fan of my laptop can make it levitate.

                                                        1. 3

                                                          Lovely comment by one of my role models when he returned back to NTUA:

                                                          * DESCRIPTION:
                                                          * Take a deeeeeeep breath & read . If you can avoid hacking the code
                                                          * below (i.e. if you have not been "volunteered" by the boss to do this
                                                          * dirty job) avoid it at all costs . Try to do something less dangerous
                                                          * for your (mental) health. Go home and watch horror movies on TV .
                                                          * Read some Lovecraft. Join the Army . Go and spend a few nights in
                                                          * people's park . Commit suicide...
                                                          * Hm , you keep reading , eh ? Oh , well , then you deserve what you get .
                                                          * Welcome to the gloomy labyrinth of the tuple level rule system , my
                                                          * poor hacker...
                                                          
                                                          1. 3

                                                            Studying for the CKA exam

                                                            1. 4

                                                              I am not teaching my kids to code. But I never objected to them learning to code when they expressed an interest to do so. It is just that while I am good (and get paid) at teaching others to code, not family. Roles get mixed and it is not helping.

                                                              1. 1

                                                                That seems pretty strange to me. You’re good at teaching people to code, but you won’t teach your kids because of ‘mixed roles’? They’re your kids so it’s obviously your decision but from my perspective teaching your kids things is a huge part of parenting. Are you not going to teach your kids to cook either?

                                                                1. 3

                                                                  Do I teach them Mathematics? Geography? Physics? No, I send them to school for that despite the fact that I am an EECS. I am a parent. My job is to parent them. Like most parents, I have outsourced their education to the school system of my country (I’ve no opinion on homeschooling; this is not something we do over here). And no, I did not teach them to cook, the Scouts did :) In our schools, it is very rare that a parent who is a teacher will also have their child in their class.

                                                                  See also this thread, where an even better Python educator than me, said the same thing: failing to teach his own children. It is not strange, it is something that happens. Maybe you can keep a better distance while teaching and not parenting, but I cannot.

                                                                  https://twitter.com/hakmem/status/1257232513837170688

                                                              1. 3

                                                                The projects that make me feel pain! SmallTalk-80 the Language was the first Computer Science book I bought and I worked at a construction site to get the money to buy it.

                                                                1. 3

                                                                  Seeing a friend for the first time in 2.5 months outside in the park (distance laws yes yes yes).

                                                                  Bloodborne: just beat shadow of yahrnam. Apparently I’m pretty much halfway done the game? Surprisingly short compared to Dark Souls IMO.

                                                                  Random studying I think. Currently looking through microKanren paper, playing around. Hoping to get some insight into relational programming (rather than just surface knowledge which most people end up stopping at).

                                                                  ’bout it.

                                                                  1. 2

                                                                    Oooh, if you find anything cool related to relational programming, I’d be interested in hearing about it. I’ve been messing around with applying logical/relational programming to gamedev recently, and I keep falling back on column-oriented dataframes (inspired by kdb/pandas) since they fit the problem domain well. I feel like the pandas DSL is an improvement on SQL (i.e. it’s more composable and cleaner syntactically), but I’m hoping to investigate other options. I’d also like to find an extension to the standard relational queries that allows for streaming/lazy time-based queries (kdb has some inspiration for this with the as-of joins).

                                                                    I haven’t been able to find too many relational database resources besides the wikipedia article and Foundations of Databases (which is a bit dense for what I’m looking for at the moment), so I’ve mostly been working off of implementation details of kdb, SQLite, pandas, etc.

                                                                    1. 1

                                                                      I only know of one person who has read that, and they did it twice. I’ve only attempted the Datalog part.

                                                                  1. 1

                                                                    Groovy on Exercism.io and eksworkshop.com

                                                                    1. 4

                                                                      NAWK is probably my favourite programming language. It might not be the best or most featureful, but in the context of doing one thing (string processing) and doing it well, very few programming languages compare. It would be cool if the language had UNIX pipes inside expressions though.

                                                                      1. 2

                                                                        And then turn all problems into a string processing problem.

                                                                        Concurrency can even be handled with a wrapper that outputs a single stream of all events it receives with a prefix, to tell which stream we are dealing with [1].

                                                                        1: https://github.com/aaronNGi/jj/blob/master/jjc#L100-L103 - not mine

                                                                        1. 2

                                                                          nawk! I still have the DEC manual!