1. 14

    “Congressman, I don’t have all the answers to your very technical questions…”

    That’s not something you hear everyday. Who is this Riggleman guy?

    1. 7
      1. 2

        It’s interesting because he sounds decently familiar with GitHub. I wonder how many Congresspersons have GitHub accounts, if any?

        1. 5

          Perhaps your expectations of congressman is so low that the ability and initiative to use a website to do research is the more surprising part, because it doesn’t take a lot of familiarity with Github to perform a search. He did sound familiar with programming on more than a surface level, however.

          1. 7

            He was able to talk confidently about nightly toolchain builds though, which takes a fair amount of technical understanding.

            1. 12

              His mention of DoD practice leads me to think he picked this up as an intelligence officer. You don’t have to be an experienced developer to recognize high-level risks. Extrapolating from a single point of experience working for a former I.O. for several years, they have a keen skill for picking through details.

              1. 1

                He was also an NSA contractor.

                1. 1

                  I think he did indeed mention he had a background in intelligence.

              2. 4

                What jgb said. He talked like a programmer or project manager, not someone vaguely familiar with it.

                1. -5

                  It’s not so much low expectations it’s just the average age of a congressperson is 57, so it’s kind of new to see folks who would be familiar with something like Git.

                  1. 29

                    About half my computer science lecturers at university were older than that, and they were all familiar with git. My dad’s about that age, and he’s familiar with git.

                    57 isn’t actually particularly old. Many of the pioneers of computer science have died of old age at this point. We’re well past the point where programming or computer science is a ‘young man’s game’ in any reasonable sense.

                    1. 5

                      The number of programmers doubled roughly every 5 years for a long period of time. Possibly from the beginning up until recently. This suggests that there are 64 times more 25 years old programmers than there are 55 years old programmers. Yes, all the pioneers are now old. But they were exactly that: few pioneers.

                      Programming has never been a young man’s game, but this exponential growth skews the numbers like crazy, and make it appear like a young man’s game. After all, if the only thing you know about someone is their age, the older they are, the less likely they are to have learned programming.

                      1. 2

                        there was definitely a dip in the rate of CS enrollment after the dotcom bust in 2000, but then numbers of both major and nonmajor CS exposure has seen a massive surge since 2005

                        1. 1

                          Very well explained, thank you!

                        2. 8

                          Linus Torvalds himself turns 50 this year.

                          1. 4

                            57 and working in computer science is different from the average 57 year old who may not have an in-depth exposure to computer science.

                            1. 20

                              I wouldn’t expect that the average 57 year old has a better or worse idea of git than the average 21 year old. People often claim that young people are better with technology. In my experience, they tend to not be at all.

                              1. 4

                                In my experience, they tend to not be at all.

                                Young people work for cheap and are more easily taken advantage of.

                                Why do you think so much of advertising is aimed at people in their twenties? Some disposable income and not as much life experience.

                                1. 3

                                  Yeah, the average 21 year old also has no exposure to computer science either. I agree it’s a pointless comparison.

                              2. 2

                                Good point! My bias is showing (growing up where I did, the only people I knew who knew about computers were my age). This makes me hopeful that I can still be programming well into retirement age :)

                        3. -1

                          Yuck

                          1. 1

                            I agree that his tie isn’t the most flattering, but I wouldn’t necessarily say “Yuck”.

                            Care to elaborate?

                            1. 1

                              Lol I didn’t notice the tie. Purely a political yuck. He’s proud of bombing Afghanistan, pro-trump tax cuts, pro-deregulation, and anti-gun control. ¯_(ツ)_/¯ to whether his staffer gave him talking points on rust and javascript.

                      1. 4

                        I switched to a basic, non-smart phone, some time ago. I’ve run into some issues with things that require a smartphone app, but overall it’s been good. I still waste plenty of time on the fediverse, but only when I’m on my computer.

                        1. 2

                          I’ve been making the steps to do this, one at a time. One recent critical step was setting up a MacOS VM so that I can have a bridge connector to iMessage. I think another one will be having an android VM in a cloud server so that I can make simple adapters to certain app-only interfaces.

                          This tendency towards app-first/app-only interfaces while the web interface is non-existent or non-functional is something that seriously troubles me, but as long as I have a brain and a computer, I’ll find a way around it.

                          I’m trying to figure out if I can make a keyboard-first phone, one that has touchscreen only as a fallback, and I’m making slow progress towards it.

                        1. 2

                          I learned about this months ago and I have a one liner I use as a workaround, since, funnily enough, the stat tool actually does know about birth date, but it’s a little obfuscated.

                          fd -tf -d1 -0 | \
                            xargs -0 stat -c '%W %n' | \
                            sort -k1,1n | \
                            cut -d' ' -f2- | \
                            fzf --no-sort --print0 | \
                            xargs -0r open
                          

                          I use fzf as a file opener UI here with the pre-sorted files by birth time. The relevant bit is stat -c '%W %n' which formats the output (this should be o.k. even for files with spaces in the name), and %W represents birth time.

                          When I learned this, I was confounded because I checked the man pages man 3 stat and the birth time wasn’t there, so I looked into stat’s source code, and it turns out that they just have a custom implementation which looks it up.

                          It’s perplexing to me, because it’s honestly the most useful sorting metric after modified time.

                          1. 1

                            It probably depends on the file system if it is available? For my ext4 home directory stat outputs something like this:

                            Access: 2019-06-22 20:05:51.326934512 +0200
                            Modify: 2019-03-09 20:50:54.475030909 +0100
                            Change: 2019-03-09 20:50:54.487028674 +0100
                            Birth: -
                            

                            No birth date available.

                            1. 2

                              Yeah, birth date is highly file system dependent. Although it’s weird that ext4 wouldn’t have it, since mine does (also ext4).

                          1. 9

                            I got a MacOS VM working, so I’m going to be writing a server to be able to interface with imessage. This will be pretty easy, since I’ve already mapped out most of the queries and applescript commands. Cross compilation should be interesting, though. Worst case scenario, I could always just compile directly on the VM if I run into roadblocks. That’ll allow me to get rid of my iPhone without much loss.

                            Then I’m going to be fixing up my blog. I want to use/make a basic static file markdown template engine, so if anyone has any recommendations, let me know! I like Drew DeVault’s site, and a few other programming blogs that are simple static sites.

                            And once I fixed the blog, I’m going to continue my work on writing a JSON tokenizer, and documenting the effort in an attempt to make a series on an intermediate level project in Rust. The first part will be on the naive implementation I made, which has “ok” performance, but only runs at about 250MB/s. This next part will be converting it to operate on byte streams instead of str/utf8 strings, which will make it able to be usable on network streams. As for why I’m choosing to do this, that will be a future blog entry, :P. It’s one piece of a very large puzzle.

                            I’m also going to try to publish my Sway library I wrote in Rust and the utilites I wrote for it. I’m also going to try to publish my wayland utility I wrote.

                            I’ll also be finishing packing up my life, so that I can be a bit more nomadic and work for a while in the bay area again. But, simultaneously, I’ve finished the outline of my potential future SaaS company, so I’ll start the MVP of that and work with my friend to come up with an investor deck.

                            It sounds like a lot, but to be fair, I’ve been working on these things for the past few weeks, so this weekend is about tying up loose ends.

                            1. 4

                              I got a MacOS VM working, so I’m going to be writing a server to be able to interface with imessage. This will be pretty easy, since I’ve already mapped out most of the queries and applescript commands. Cross compilation should be interesting, though. Worst case scenario, I could always just compile directly on the VM if I run into roadblocks. That’ll allow me to get rid of my iPhone without much loss.

                              Someone should run a SaaS that’s nothing but Mac VMs running iMessage with some well known protocol interfacing them to the outside :) They’d make a killing - until they got sued by Apple :)

                              Just curious - what makes you want to switch? The increased hackability of Android?

                              1. 3

                                When I told my Mom (after sending some test messages) about that little project she said “can you make money off of this,” and I was like “oh, I actually could, couldn’t I?” I think getting sued by Apple would be worth it as a badge of honor, :P

                                And I want to switch to neither iPhone nor Android. Phones these days are just really disappointing to me. I don’t need a 6” screen, and I’m tired of suspecting my apps of stealing my data or pestering me. I can do with just a web browser, GPS, and text messenger. Plus Apple’s abrasive need to stop me from modifying my own software/hardware irritates me. So, yeah, hackability is a big one. I haven’t used an Android in a while, but I’m suspecting that nothing will really hit my needs, so I’m thinking about making my own phone this coming year and using my old Nexus 5X in the meantime.

                                I might try to snag a PinePhone dev kit and see if I can mod it for my own needs.

                                1. 2

                                  When I told my Mom (after sending some test messages) about that little project she said “can you make money off of this,” and I was like “oh, I actually could, couldn’t I?” I think getting sued by Apple would be worth it as a badge of honor, :P

                                  Heh :) I would support such a service!

                                  If you don’t sell it, you should consider open sourcing it!

                              2. 3

                                Dude, that doesn’t just sound like a lot. Anyway, good luck! Did you intentionally not describe your potential SaaS company? I would like to hear more – I would like to start something myself one day (which might be exactly the reason that you didn’t give any details, haha).

                                Anyway, I have a statically generated blog as well. I don’t know what type of content you want to post, but most of my posts are mathematical. I did a quick and dirty writeup on my blog.

                                1. 3

                                  It’s a fintech company based on automating various accounting things for compliance with the IRS in the US, for now. From their it’ll evolve into more, hopefully. It’s based on experience I gained from my first job at a startup.

                                  Many ideas are fine to share, since it’s the implementation/management which makes or breaks it. I would recommend working at a startup in order to learn how they work first. It really does make a big difference. I’m in the IRC if you want to talk more.

                                  Nice blog! Gotta love how quick it loads.

                                2. 2

                                  If you want to roll your own static site generator with Python – jinja is good for templates, and mistune can handle the markdown.

                                  1. 3

                                    Definitely, and IMO look at Pelican for ideas. The code is clean and accessible. Would still be using this if I didn’t have a thing about wanting to blog from my mobile devices :)

                                    1. 3

                                      Seconding Pelican—I recently replaced my own home-rolled static site generator with it, and was very happy with the results. If you’re already considering Jinja for templating, I think Pelican will end up being very similar to whatever you would build if you built it yourself.

                                      1. 1

                                        Indeed! And the code is so well written I was able to steal large chunks of it for a project I wrote to ingest Pelican blog entries and convert them to Wordpress.com posts.

                                        Note - it’s ugly in that it requires you to use a local config file for your username/password - the API I was using seemed to want me to be a website and use OAuth and I never could figure out how to make that work.

                                    2. 1

                                      I also have my selfmade generator. 256 lines of Python and a large chunk of that is for RestructuredText which most do not need.

                                    3. 2

                                      Out of interest, what are you running your VM on?

                                      1. 2

                                        The easiest version is to use this https://github.com/foxlet/macOS-Simple-KVM/. Extremely simple. I’m running on Arch with qemu 3.2. qemu 4.0 broke my windows 10 VM for a reason I haven’t figured out yet.

                                      2. 2

                                        For static site generators, I’m fairly fond of Zola these days: https://www.getzola.org/ Part of that is just ‘cause it’s Rust, so I know the ecosystem, but it’s also young enough to be simple but old enough to have the features I want.

                                        Rolling your own using askama is also very fun.

                                        1. 0

                                          That’s a really good one! And having Rust is actually an important factor in case there’s something I need to modify (not that there is a language that I’m not comfortable with anymore, at this point). The author seems very active too, which is always a plus. It’s got very well polished documentation too.

                                      1. 14

                                        Is there a mirror which actually complies with the GDPR (i.e makes it possible to opt out of their tracking)? I can’t read that article without clicking “I agree” to “We use cookies and other technologies to customize your experience, perform analytics and deliver personalized advertising on our sites, apps and newsletters and across the Internet based on your interests.”, which I’d rather not do.

                                        EDIT: I suppose outline.com is the answer: https://outline.com/FW9FzX

                                        1. 7

                                          Spoiler alert: when you click “I agree”, you get to the article, and the full page is covered with a popup: “We noticed you’re browsing in private mode.Private browsing is permitted exclusively for our subscribers.”

                                          1. 17

                                            Thanks to Firefox and one or more of its add-ons (possibly uBlock Origin and/or NoScript), I don’t see these annoyances.

                                            1. 20

                                              I don’t leave the terminal without sunscreen and uMatrix.

                                          2. 3

                                            It is ironic if you do not consent to unlimited tracking, you cannot read the article blaming Chrome for being a spy software (which it is)

                                          1. 18

                                            I’m working on a post describing the time system of TempleOS. It’s a very interesting thing. The documentation for it is actually somewhat wrong, it doesn’t have sub-second resolution like it claims. I’m gonna walk through how the code works as well as how to interface with the real time clock.

                                            1. 4

                                              can’t wait. So you basically only have POSIX time() to work, with returning the time as integers counting seconds?

                                              1. 4

                                                From what I’ve dug into so far, yes. I am pretty sure that there’s a higher resolution timer because of the 3D rendering stuff in TempleOS, but I think that might end up using the processor timers instead of the system ones.

                                                1. 4

                                                  Yeah you’re right that it wouldn’t work without a timer.

                                                  Is the timer code writteh in assembly or holy-C?

                                                  1. 3

                                                    I’m fairly sure it’s HolyC, but I need to dig more into things.

                                                    1. 3

                                                      How did you notice that it doesn’t support sub second resolution?

                                                      1. 3

                                                        Here is the code to read the time from the CMOS Real-Time Clock. Here is the structure it reads into. Note that it doesn’t populate the first two struct fields (b[0] and b[1] respectively in KDate.HC function NowDateTimeStruct). I am not sure how these are used yet, but I need to do more looking into the code.

                                                        1. 2

                                                          Seems like you are right, should be sec10000 and sec100 right? Whatever that means, maybe on account of being BCD coded?

                                                          Have you found any timing code elsewhere that uses sub second timing?

                                                          1. 1

                                                            Not yet!

                                              2. 2

                                                Where will you be posting it? I’d like to read that. I’m interested in learning from TempleOS’s interactive editor and shell, but I haven’t spent time to set it up yet in a VM. TempleOS is probably a treasure trove of little bits that we could learn from.

                                                1. 3

                                                  my bet would be this: https://christine.website/

                                                  1. 3

                                                    I’ll also post it here!

                                              1. 29

                                                Did you know that you can search all open tabs (even across synced devices) if you prefix your search term in the urlbar with a percent sign (%)?

                                                There are also other modifiers to restrict results to bookmarks, history etc. See https://support.mozilla.org/en-US/kb/awesome-bar-search-firefox-bookmarks-history-tabs#w_changing-results-on-the-fly

                                                (N.B. We actually call it the “awesome bar” instead of address or search bar, because of all these extra features:))

                                                1. 6

                                                  Oh wow, I had no idea! The fact that it works across synced devices too is incredible. I’ll be using all of those extensively from now on; thank you!

                                                  1. 3

                                                    Wow, thanks! This is like half of the reason why I use the Vimium plugin and, nowadays, qutebrowser! God, I wish “advanced user” features were more well documented. Just a list of productivity tips in a concise format. At this point, I’ll have to write it myself.

                                                    1. 2

                                                      Start a draft and I’m happy to proof read (and maybe even contribute a few tips). Would be a great guide to have.

                                                      1. 1

                                                        God, I wish “advanced user” features were more well documented.

                                                        Firefox 66, released 9 days ago, documented that % feature. Specifically, that version added a Search Tabs menu item to the ‘⌵’ tab overflow menu. When activated, that menu item just moves focus to the Awesome Bar and prepends “% ” for you.

                                                        I found that an elegant way to teach me the shortcut syntax without having to display help text anywhere. But now that I think about it, the interface could be even better if the Awesome Bar results popover displayed “searching in tabs” somewhere whenever the text contained %. And I didn’t realize until reading that linked help article that the % could be anywhere in the text, not just at the start.

                                                    1. 1

                                                      Great article! As a user of sway, I’ve been aware of drew’s work for a while now. I like his classic approach to reducing complexity and those were some good tips.

                                                      I have a shortcut script which I use (I got it a long time ago) called soft_rebase. The scenario it solves is for when I’m working in a branch and I intend to roll it up into a single commit at the end when I make a pull-request. What it does is reset the working tree changes against the master branch, compile all the commit messages that I had put in the branch until that point into a file, and re-commit it as a single commit and open the editor to modify the commit messages. The functions I use are fish functions, but you can easily adapt it to sh:

                                                      # Defined in /home/ashkan/.config/fish/functions/soft_rebase.fish @ line 2
                                                      function soft_rebase
                                                        set FILE (mktemp '.COMMITMSG.XXXXX')
                                                        set MERGE_BASE (git merge-base origin/master (git_branch_name))
                                                        get_commit_messages $MERGE_BASE..HEAD > $FILE
                                                        git reset --soft $MERGE_BASE
                                                        git commit -v -e -F $FILE
                                                        rm $FILE
                                                      end
                                                      
                                                      # Defined in /home/ashkan/.config/fish/functions/get_commit_messages.fish @ line 2
                                                      function get_commit_messages --argument RANGE
                                                      	git log --reverse --pretty=format:%B $RANGE
                                                      end