1. 4

    Work: Trying to get our program up to at least Qt 5.9. Unfortunately, I don’t have time to make it a 64bit app, so 5.9 is as far as we can go for now, as QWebEngine is 64bit only on Windows after that.

    In my free time, I’d love to get up to speed on Rust.

    1. 1

      And there’s already a du replacement called ‘dup’: https://github.com/ritze/dup

      1. 1

        That’s a wrapper that hasn’t been touched in years.

      1. 2

        A busy, bittersweet time - closing the camper for the season. Clean the camper, pull in the dock, take down the deck awning, that sort of stuff. Then we wait until next May. Sigh.

        1. 6

          Yes - thanks for the post! I’ve been using Emacs for 20+ years and I still love hearing / reading about it.

          1. 2

            Woah, 20+ years, 67% of my life :)

            1. 2

              Gee thanks :)

              1. 1

                Oh crap, I didn’t mean it like that, haha :-) But seriously, it’s pretty amazing, the fact that a software package is alive and keeps improving for decades and decades.

                Very rarely can you hear someone is using a piece of software for 20+ years.

                1. 1

                  No worries! 20 years might be underestimating, actually :) There’s some stuff in my emacs config files even I don’t understand any more! This might even spur me on to cleaning it up - a once a decade occurrence.

          1. 1

            Oh great - another pointless project I won’t be able to ignore!

            1. 4

              I actually had to laugh when I saw this title. Was ed ever a “good” editor?

              1. 16

                Yes, absolutely. Ed was a good editor in the 1970s, when 300 baud links were reasonably fast things and teletypes with printed output were common, and even significantly into the 1980s, when you might still be dealing with 300 baud serial links (1200 baud if you were lucky), heavily overloaded systems, very dumb CRT-based terminals, or some combination of all three. About its only significant limitation in those situations is that it’s a single file at a time editor, which makes some things more awkward. Using any visual editor in those situations is a frustrating exercise in patience (or outright impossible on hardcopy teletypes or sufficiently dumb terminals).

                (I’m the author of the linked-to article.)

                1. 2

                  The ancestors of ed, such as CTSS QED and it’s descendants on Multics (QEDX, Ted) all worked on multiple buffers, but those (and other) features were not carried forward to the simpler UNIX ed.

                  1. 1

                    Given that Ken Thompson was fully familiar with QED et al (cf), the omission of multiple buffer support in ed is clearly deliberate. I wonder if Thompson felt forced to do it by resource constraints on Unix or if he just decided that it wasn’t important enough and omitting it simplified the experience in ways he wanted.

                    (By the time of V7 I suspect that resource constraints weren’t a big enough issue, and the Bell Labs people certainly were willing to rewrite programs if they should be improved. And I believe that people did versions of QED for early Unix, too.)

                  2. 1

                    I don’t think I’ve ever actually used ed. I grew up in the 90s, so by then it was pico/nano. Is edlin from the MS-DOS days similar? If so I did use edline quite a bit, but would not be able to tell you anything about how to use it today.

                    1. 2

                      I never used edlin, but I’d guess that editor has more in common with CP/M ED than UNIX ed.

                      1. 2

                        Based on the edlin Wikipedia page, edlin is kind of a relatively simplified take on ed (although that’s not necessarily its historical origins). Full ed is fairly powerful, with a lot of text manipulation commands that don’t require you to retype lines to modify them and a bunch of ways of specifying what lines you want to operate on (including ‘lines that match this regular expression’). Interested parties can see the GNU ed manual. It’s probably simplest to start with the commands list if you want to see what ed is capable of.

                        (GNU ed is a moderate superset of V7 ed in both commands and its regular expression support.)

                      1. 1

                        I’d have to say no - it was clearly inferior to the QED descendants QEDX (and it’s descendent, Ted), which preceded it.

                        In defense of ‘ed’, this simplification was a design decision, according to Ritchie.

                        When using Multics, I often find myself reaching for QEDX, especially for quick editing tasks.

                      1. 1

                        Nice! I’ll have to make an Emacs template for when I first open a Makefile to insert that boilerplate. I’d also add the code to generate the header file dependency tree using the correct g++ flags.

                        1. 5

                          Here’s the rule I use (GNUMake) to do the dependencies:

                          depend:
                          	makedepend -Y -- $(CFLAGS) -- $(shell find . -name '*.c') 2>/dev/null
                          

                          This will exclude the system header files, but include all local headerfiles. Remove the -Y to include system headers.

                          1. 2

                            On BSD:

                            depend:
                            	mkdep $(CFLAGS) $(SRCS)
                            
                            1. 1

                              Better than this crufty make command I’ve been carrying around for probably 20 years!

                              MAKEDEPS=@echo Making $*.d; \ 
                                  set -e; rm -f $@; \ 
                                  $(CXX) -MM $(CXXFLAGS) $< > $@.$$$$; \ 
                                  sed 's,\(.*$(*F)\)\.o[ :]*,$(*D)/\1.o $@ : ,g' < $@.$$$$ > $@; \ 
                                  rm -f $@.$$$$ 
                              
                              %.d: %.cpp 
                                  $(MAKEDEPS)
                              
                              1. 2

                                Make already gets such overwhelmingly negative press so let’s not leave this as-is lest others think this is how things have to be. Here is mine:

                                %.d: %.cpp
                                    $(CXX) -MM -MT "$(basename $@).d $(basename $@).o" $< > $@
                                
                                1. 1

                                  Nice! I’m not even sure where I got mine, just a case of “leave it alone it works”.

                          1. 5

                            Our code uses this terminology and if I had more time, I’d change it as well. Maybe just server / client?

                            1. 3

                              If you want to keep all the terminology consistent with other apps, Travis CI seems to call them the “workers” and the “hub”. “Worker” is also used by TaskCluster, but they just call the central job thing “the queue.” Kubernetes calls its nodes the “master” and either “worker” or “minion”, and Docker Swarm has the “manager”, while the rest of them are just called “nodes”.

                              “Worker” seems like the standard almost everybody’s arrived at for that part of the architecture, while the name for the lazy bum in the middle is not really standardized. I’d go with “manager” or “hub”, though, if I were you.

                              1. 1

                                I like the idea of Manager, because that’s what the main program does - manage all the other ones.

                              2. 2

                                Server/client is already a term of art so that’s a bit loaded. I have always thought leader/follower is the most clear alternative.

                              1. 1

                                thanks for the heads up! Just changed it for my sites.

                                1. 2

                                  the only complaint I have with arch is that pip install and npm install fuck the system up. the solution is you have to use them inside virtualenv, nvm.

                                  1. 7

                                    Which is not a distro problem, but a problem with the defaults of these third party language package managers. Everyone assumes sudo pip install requests is a great idea while have these issues when installing the requests lib from the repository.

                                    I’ve configured my npm to install in ~ for globals things, so it doesn’t mess up my system :)

                                    1. 4

                                      The problem isn’t really an arch issue, it’s related to the defaults of pip and npm. I’ve never had an issue with either negatively affecting my system if I set it up as the arch wiki recommends.

                                      For pip, use --user if you aren’t in a venv, for npm, set $npm_config_prefix to be located in ~.

                                      1. 4

                                        You install pip or npm with the package manager

                                        then you use them according to the man pages and it borks your system.

                                        This is a fault

                                        If special configuration should be done this should come when you install it with the distro package manager. That’s the whole point of a linux distribution. If you’re supposed to use the virtual env you should at least get a warning about that when you install the tool. UX matters.

                                        1. 7

                                          If you’re supposed to use the virtual env you should at least get a warning about that when you install the tool.

                                          Actually almost every popular Python package suggests using virtualenvs (or more recently, pipenv). AFAIK, sudo pip install is considered bad practice in the Python community.

                                      2. 7

                                        Yeah, my solution to the npm problem is to stay far far away from npm.

                                        1. 1

                                          Not exactly a universally applicable solution.

                                          1. 2

                                            As a society, however, we’d all be better off if we could.

                                      1. 5

                                        I’ve always told my kids to find a job like I have - something I would do for free (shhh, but don’t tell my boss). If / when I finally retire, I’ll just code my way into the grave. IOW, I love it!

                                        1. 1

                                          Tells your boss. 😂

                                          That’s awesome to hear. How did you learn to like it or did it come naturally?

                                          1. 2

                                            Just fell into it and learned it from the seat of my pants. Took a couple programming courses in college but it didn’t click until a friend hired me basically because I knew what a keyboard looked like (those were desperate days!). A co-worker and I dove into it and I’ve never come out.

                                        1. 2

                                          Work: Think I may finally have finished my re-write of our iOS capture code, to split off the UI from the back end. Took a bit - I’m not really happy working in Objective C++, that’s for sure. Now for some more cleanup and get out of the iOS development business again.

                                          Home: Finish cleaning up my various web sites and the providers. I am slowly consolidating on name server provider, DNS provider and VM provider. Maybe get some of the web sites updated even!

                                          1. 2

                                            One question I had about Zig that I can’t seem to find an answer to in an admittedly cursory look is what does it have for multithreading / parallel processing? I won’t look at a new language that doesn’t have thread support builtin.

                                            1. 5

                                              this is in process, see https://github.com/ziglang/zig/issues/174 for an overview and links to relevant issues.

                                              Coroutines have already landed on master: https://github.com/ziglang/zig/issues/727

                                              1. 2

                                                I won’t look at a new language that doesn’t have thread support builtin.

                                                Funnily enough, I’d say that I wouldn’t get excited at a new language that does have thread support builtin.

                                                My reasoning is that the operating system should be enough for scheduling.

                                                Now, I know I’m probably biased by my work on Jehanne’s kernel and the Plan 9 style, so I’m sincerely curious about your opinion.

                                                Why do you want more schedulers to integrate instead of using just the OS one?

                                                1. 1

                                                  Threads are OS-scheduled too; they’re a kernel-provided parallelism API on both POSIXey systems and Windows. Maybe you’re thinking of green threads or threadlets or whatever?

                                                  1. 1

                                                    Maybe you’re thinking of green threads…

                                                    I thought @jdarnold was talking about green threads, coroutines, and other similar techniques that are usually provided by language specific virtual machines.

                                                    Pthreads are not language specific: they are a C api that any language could wrap, but not something that requires particular support from the language.

                                                  2. 1

                                                    Because threads are necessary for modern programming. If you want to take advantage of processor and OS level threading, how can you do it if the language doesn’t have some way of taking advantage of it? I’ve spent far too much time trying to figure out all the various ugly threading problems in other languages and I think the language should “just do it” for me.

                                                1. 1

                                                  Yeah, I got out of this rat race a long time ago - basically, when I started a family. The game business is no place for anyone that wants a life outside of work!

                                                  1. 2

                                                    Always a little wary when this is the first line:

                                                    At Microsoft, the core of our vision is “Any Developer, Any App, Any Platform”
                                                    

                                                    Orlly?

                                                    But I’m interested…

                                                    1. 4

                                                      Maybe “all platforms” means all versions of Windows, most OS X, and latest Debian stable.

                                                      1. 6

                                                        To be fair, that puts them miles ahead of almost everybody else working on platforms these days :(

                                                        All the action right now seems to be on “JS tool of the week” and “build for Android and iOS with one codebase”

                                                      2. 3

                                                        I sincerely don’t understand this hate against Microsoft.

                                                        Yeah sure, Ballmer days sucked and they really screwed up. But since Natya picked up the role, there seems to have been quite a shift in the company’s mindset. Plus all the OS things they’ve been doing in the past few years.

                                                        1. 1

                                                          That’s a description of what they want to extend and eventually extinguish.

                                                          1. 1

                                                            That view is a little out of date, don’t you think? What have they tried to extinguish recently?

                                                        1. 5

                                                          don’t know why this is here. Brick was an experiment during Firefox OS era, that is like four years ago. It haven’t been worked on or changed as far as I know.

                                                          It was a cool idea and project but it is not something that is news…

                                                          1. 2

                                                            Oh, you are right! The linked article is new, and I thought it looked interesting, but digging deeper, as you say, it hasn’t been updated in nearly 4 years. Yeesh.

                                                            1. 1

                                                              Looks like you’re right, last commit was in 2014. Weird that they didn’t update the landing page to state that it’s no longer in development.

                                                            1. 2

                                                              Some day, some way, I will go back to my blogging and I want to make it static, so this is another nudge in that direction. Just as a reminder: Static-gen - a list of top static site generates is a great resource.

                                                              1. 1

                                                                Sad to not see Blosxom on that list, although statically generated files are basically an afterthought for that system.

                                                              1. 2

                                                                That’s the main reason I left the insane game programmer market. The hours were crazy. Much more reasonable these days. However, I work from home, so the work/home split is a little harder.

                                                                1. 2

                                                                  Work: Checking out Meson to see if I can stop writing project files for all the systems I have to maintain, as I try to create a library to share with 3rd parties. I remain unconvinced, but perhaps. Any other multi-platform build file creation programs you recommend? Google’s gyp and GN just seem like typical Google overkill.

                                                                  Home: Still hope to check out pony, he says for like the 5th week in a row…

                                                                  1. 3

                                                                    At work: battling on squashing the few remaining (known!) bugs in our move from Qt WebKit to Qt WebEngine. In general, the migration has been smoother than I would have thought, but, as usual, it seems like the last 10% of the process is taking up 90% of the time.

                                                                    At home: Too busy really for much. I still really really really want to take a deep dive into Pony