1. 3

    IRC is great. It’s easy to implement a client for, simple enough to understand, and used pretty widely. It’s still the main protocol I use to keep in touch with people.

    The only thing I wish that it would get is server side history, so I could scroll back in a channel without idling or setting up a bouncer.

    1. 2

      Early this year I finally broke down and subscribed to IRCCloud. They handle all the details of staying connected so you have access to channel history. Admittedly it works out to about 14 cents per day. Well worth it, in my opinion.

      1.  

        I’ve been keeping an eye on IRCCloud – I currently keep a ZNC server running… playing with it has been quite fun and instructive so far, but I would be OK paying 5$/month for someone taking care of it all. I’m waiting for them to open up a bouncer service so we can connect with other clients than their official IRCCloud client… apparently it’s on their roadmap (see bottom).

      2. 2

        There are people working on a revised spec called ircv3, that aims to address those issues. I haven’t been in touch with that group, so I can’t speak to their progress or success.

        1. 2

          I’m aware of ircv3, but I’m not aware of any proposal to add server side history to it – at least not one that’s gone anywhere. I’m sure someone cares about the other features, but they don’t really make a difference for me.

          Edit: And I found one: https://github.com/ircv3/ircv3-specifications/pull/292

          1. 1

            Uh, that is interesting. Thanks for sharing! I wonder if there are already any clients and servers out there.

            Also see this story: https://lobste.rs/s/zdkuil

            1. 2

              the rust irc crate aims for ircv3 support ;) (I’m trying to contribute to it (but outside of the v3 things))

              1. 1

                You mean this crate? https://crates.io/crates/irc

                1. 1

                  Yup.

        1. 2

          Really really cool. I also like the linked 4K picture suitable for use as background image. Awesome stuff.

          1. 2

            It made me think of some cosmic background, really cool indeed!

          1. 5

            We use Apache Airflow at my company. I cannot say why it was chosen before other alternatives as that happened bevor I joined the company. It is Open Source, actively maintained by a not-so-small community. It is written in Python, quite customizable, and you can write plugins in Python. It is not very complicated to deploy and configure. You can schedule not only on timers but also on other triggers, like a file appears on a file system or an HTTP end-point is called. The tasks are expressed as graphs in clean Python code and can be arbitrarily complex. You can certainly use it to cover complex ETL pipelines.

            Having said that, Apache Airflow has it’s quirks. Multi-user is a bit of a problem and while it is definitely powerful it adds to overall complexity, too.

            1. 5

              tldr; learning

              1. 1

                Thanks. I was looking for the thesis stated in the usual places and couldn’t find it.

              1. 11

                My first suggestion would be to install VirtualBox, put your distro of choice inside that, and then run it full screen most of the time.

                You could also try the Windows 10 Linux stuff. I haven’t tried it (because I don’t use windows) but those who do say it is pretty great.

                Cygwin would be a very, very remote third. I used it once in $corporate_office_job and the best thing I could say about it was that it was better than nothing.

                Worst case, if your manager can’t or won’t provide you with the tools you need to do your job, you need to move on. Never stay long in a job you don’t love, that’s how you lose your soul.

                1. 6

                  My first suggestion would be to install VirtualBox, put your distro of choice inside that, and then run it full screen most of the time.

                  This is my life right now. It is decidedly second class; all the corporate-mandated bloatware is still there wasting utterly ludicrous amounts of memory and CPU time, but at least I don’t have to look at it and I can use a decent window manager and terminal environment. I certainly consider this preferable to the Bash-on-Windows features (and far, far better than Cygwin).

                  1. 1

                    That was my choice for years, too. Most of the times, I ssh‘d into that machine using putty or another terminal emulator. They are not good but you can get the job done. SSH’ing-in also circumvents any input lag, too. Plus side: suspend and resume would work flawlessly with Windows.

                    Anyways, I switched jobs since then. Doing Linux only now. Macs serve as ridiculously expensive SSH terminals now. No more Windows.

                    1. 1

                      Have you noticed significant input lag when running linux fullscreen? Whenever I’ve tried it it’s been too laggy to be usable, but I was running on an AMD FX 8350.

                      1. 2

                        My 2 cents - a few years ago I had a powerful laptop (one of the WS Lenovos, maybe 16-32GB RAM, i7, etc.) and I tried VMWare (paid edition - company paid for it), Microsoft Hyper-V, and VirtualBox. I could never get rid of, or stop being bothered by, input lag.

                    2. 6

                      Can’t install VirtualBox. This is a workspace, think something like remote desktop. See above for a link.

                      1. 1

                        You could also try the Windows 10 Linux stuff. I haven’t tried it (because I don’t use windows) but those who do say it is pretty great.

                        WSL is good, but not great. I’ve been using it semi-seriously on my home machine for the past year and half and it’s better than it was, but I’m consistently disappointed in all the terminal emulators. The only setup I’m happy with is running urxvt on Xming. You will be disappointed in file system speed, but that seems to be a Windows thing regardless of WSL.

                        1. 1

                          Have you tried ConsEmu? https://conemu.github.io/

                          1. 1

                            I have. I… do not like it.

                            1. 1

                              I suspect one of the fundamental problems at play here is the fact that many of these tools want to be able to embed things like CMD.EXE or PowerShell and don’t have the native characteristics we associate with UNIX terminals.

                              1. 1

                                Possibly, but I just found ConEmu to be hideously ugly. Personal preference thing, really. Other than its grotesque UI, it seems like a capable terminal emulator.

                                1. 1

                                  Ah. Yeah. I’m not so concerned about that :) When you’re trying to make a home in the malarial swamps, first you ensure that you have shelter, then you worry about whether the drapes match the tablecloth :)

                      1. 2

                        It’s so old that I played this on IT classes in elementary school :D

                        1. 1

                          People who never knew it still get amazed. Let’s call it a classic then? :)

                          1. 1

                            You got IT classes in elementary school? Now I feel old :D

                            1. 3

                              It’s not that uncommon, even my mother got these too.

                              But in Poland, most “IT class” stuff in elementary and middle schools goes down to using MS Paint, occasionally MS Word or PPoint and doing some crazy and outdated theory like “this is a keyboard and here’s a monitor, you shouldn’t stay less than 70cm from it”. No programming, no creativity, no digital-savvy education about internet resources, no privacy and data management education and so on. But I think it’s the same thing everywhere else.

                              And if you decide to waste additional year and go to something called “technician school” (it’s like high school, but focused on computer science and IT in general), you won’t get any special knowledge… except great Quake I-III skills, or why Counter-Strike doesn’t even compare (as someone said to me “you can’t run and shoot at the same time”) :D

                          1. 1

                            Despite all Node.js-related content in this article, is anybody here using Snap or Flatpak already?

                            1. 3

                              I used FlatPak to install one or two Desktop apps but I wasn’t impressed. That could be the packagers’ fault or the system’s.

                              All real problems aside t’s also a bit annoying as you seem to have to run the applications with a long command line that I kept forgetting, maybe just providing a directory with shims/wrapper scripts with predictable names would’ve gone a long way (I mean, /usr/local/bin might be debatably ok as well)

                              My solution for non-GUI-heavy things so dar has been nixpkgs - so I can for example run a brand new git or tmux on Ubuntu 16.04.

                              1. 2

                                You might also be interested in checking out Exodus for quickly getting access to newer versions of tools like that. It automatically packages local versions of binaries with their dependencies, so it’s great for relocating tools onto a server or into a container. You can just run

                                exodus git tmux | ssh my-ubuntu-server.com
                                

                                and those tools are made available in ~/.exodus/bin. There’s no need for installing anything special on the server first, like there is with Snap, Flatpak, and Nix.

                                1. 1

                                  Thanks, I’ve heard about exodus but I think it’s a bit of a hack (a nice one though) and first I’d need to have those new versions installed somewhere, which I usually don’t :)

                                  I’m actually a big fan of package managers and community effort - just sometimes I’m on the wrong OS and would have certain tools in a “very fresh” state - so far nixpkgs is perfect for me for this.

                              2. 2

                                I use snap for a few things, and have even made a classic snap or two of some silly personal stuff. They seem to work fine, but ultimately feel out of place due to things like not following XDG config paths. They also get me very little over an apt repo, or even an old-school .deb, since most of the issues (e.g. you must be root) remain. Generally speaking, given that Linux distros already have package managers, I’m more interested in things like AppImage, which bring genuine non-package but trivial to install binaries to Linux.

                                (What I really want is to live in a universe where 0install took off, but I think that universe is gone,)

                                1. 2

                                  Yes, quite a few popular projects: Spotify, Skype, Firefox, Slack, VLC, Heroku, etc.

                                1. 6

                                  Sometimes, I get on the box, and it’s just me. That is, there’s just one user on board, that user is me, and I’m running my “w”. Nothing else is there. Many times, I’ve gone off and looked at the part of syslog which captures login information. This might be /var/log/secure depending on how the system is setup. I’ve found that grepping for “accepted cert” is a great way to look for prior ssh connections (possibly for interactive logins) while discarding a bunch of other stuff that’s relatively uninteresting.

                                  On a recent Linux box, equivalent commands I ran to get roughly the same output were

                                  $ w --from --ip-addr
                                  $ sudo journalctl -b0 -u sshd.service --grep="Accepted publickey"
                                  
                                  1. 3

                                    Can we stop using the term technical debt? It was invented by Ward Cunningham to explain to business people the risk and benefit of cutting corners. We are not finance people and like all analogies it breaks down quickly. Who incurs the debt and who pays it back? Its unclear.

                                    1. 2

                                      Who incurs the debt

                                      First the developers. They have to do more work. Then the users. Code tends to be delivered to them later because TD adds to time.

                                      and who pays it back?

                                      Your boss. Either he invests in giving you time to fix the TD or he pays continuously because your day-to-day work takes longer and longer.

                                      I think the term pretty much nails it. Not only for finance people.

                                      1. 1

                                        First the developers. They have to do more work. Then the users. Code tends to be delivered to them later because TD adds to time.

                                        Technical debt saves time! That was the argument Ward Cunningham gave as a benefit of technical debt. You save time now for complexity later. It’s a way to push out software faster in the beginning. it’s about cutting corners. You incur TD because it saves you time!

                                        Your boss. Either he invests in giving you time to fix the TD or he pays continuously because your day-to-day work takes longer and longer.

                                        What if there is no boss? What if you never pay technical debt? What if you just keep patching? What if your software reaches a point where it’s feature complete and there is not reason to tackle the technical debt? Is this a debt jubilee?

                                        It makes no sense, who do we borrow from? the universe? ourselves? Is there interest? Is it quantifiable?

                                        I prefer other terms than technical debt like entropy, code rot, or incidental complexity. It’s about keeping a clean shop. After the first release it’s all maintenance. A better analogy might be a car mechanic keeping a clean shop.

                                        1. 1

                                          Is it quantifiable?

                                          Yes, for companies producing software, yes it is. For Open Source projects, may be.

                                          It’s about keeping a clean shop.

                                          Well, no. It can be all dirty but this might not add to the total cost of maintaining or producing the product. It’s not about work ethics or craftsmanship.

                                          TD is used to assess the real cost of certain decisions. (I like your “cutting corners”.) Whether these costs are too high or not, or like you said, if it even saves you in the end, doesn’t matter. It is just a term for those costs.

                                          1. 2

                                            Yes, for companies producing software, yes it is.

                                            Can you expand on that? Quantifying software development has, so far, been a very difficult challenge.

                                            1. 1

                                              Yes, sure, exactly quantifying the costs has been a very difficult challenge. But you can estimate, get a measure of, or roughly calculate the costs. And this is in fact what you do in every sprint planning, if you do follow an agile methodology.

                                              Example: When I use SVN as a version control software I can add up a certain amount of time, say 10 minutes, when I do manually “rebase” my changes on the current trunk. If I do that 3 times a day, that’ll be 30 minutes. Or I can use git, where it’ll take me lets say 1 minute, or 3 minutes a day.

                                              Now when I want to switch the repo to git, and want to preserve the commit history, I need to understand and use cvs2git to transform the SVN repo. Then I need to test the import. Publish it. Train my fellow colleagues to use git. Lets say I need two weeks for that.

                                              Now is it worth it? When will the cost amortize?

                                              I think this is pretty good quantifiable. If you just guesstimate.

                                              1. 1

                                                Or you could just decide commit history isn’t all that important to you and do merges, no tool change needed! Your example leaves out a bunch of other work, though. For example, if your company has a bunch of tooling that makes assumptions about using SVN, then moving over to git could be extremely expensive, and that expense is usually a challenge to quantify, IME. Is it worth having the tools team abstract SVN away or move everything to git? What won’t we have in the time it takes for them to do that? And that’s what TD usually looks like IME. It’s not “if we do this, I’ll save X minutes every day, and doing this is free”. Almost always, it’s “we can do this, I’ll save X minutes every day, but doing this will cost us a month of doing other things”. And since quantifying the future is hard, that statement becomes much harder to quantify.

                                                1. 1

                                                  I might be wrong but it seems you mix-up business decisions with engineering decisions. And of course, taking decisions in a world where you do not know everything is difficult. That’s what makes it so interesting :)

                                                  But I believe I see your point: TD is a limited concept that does not encompass the entire problem-space of software quality. True.

                                                  1. 2

                                                    I might be wrong but it seems you mix-up business decisions with engineering decisions.

                                                    TD is inherently a business decision, otherwise not having it/solving it when it does show up would be trivial: just do refactor/rewrite and take as long as you want.

                                    1. 3

                                      Kind of old, but I keep watching them again and again. Mainly because they tend to cheer me up on, you know, those days were you wish you’d become a carpenter or something decent.