1. 3

    Mathematics is vital and fundamental to programming. The problem is, “mathematics” is a vast field that isn’t just arithmetic and calculus.

    When I write code, I have to know some:

    • arithmetic (obviously)
    • algebra (the concept of factoring, variables, etc)
    • predicate logic (conditionals, branches, filters, existence predicates, etc)
    • set theory (collections, intersections, unions, and definitely anything dealing with databases)
    • relational algebra (if dealing with relational databases)
    • lattices (class hierarchies)
    • ordering (total orders, partial orders, sorting, stable versus unstable sort)
    • automata (regular expressions, parsers)
    • combinatorics (count numbers of possible states, etc)
    • algorithms (everything, plus Big-O)

    All of these things are going to be known to a greater or lesser extent by even moderately-skilled hackers, even if the hacker doesn’t know that they know it. I understood predicate logic as a programmer long before I ever understood it as a pure mathematical discipline. I knew regular expressions long before I knew about automata theory. Total-versus-partial ordering comes up the first time you sort different datatypes.

    The problem is that these things aren’t presented to “hackers” as “math”…they’re just “hacking”. I learned all the things in the above list long before I ever attended a formal computer science class (though obviously, I know them better now and know, especially, how much I didn’t know then and don’t know now).

    The problem, in my opinion, with “pure” or “formal” mathematics is that I have no entry point. I learned about all those things because I had to to write software…and before I wrote software, I could use software. I could sit down and use an operating system and get an intuitive idea of “process” and “file” and all that, even if I didn’t actually know how they worked under the hood.

    More “formal” mathematics is not something that you can do that with, though. I can’t sit down and “use” topology theory or number theory or whatever the way I can use a text editor. The difference between “hacker math” and “math” is that you can get to one by hacking and you get to the other by…I mean, I realize there’s experimenting with math and stuff but it’s not (at least not to me) like sitting down at a computer and playing around.

    1. 2

      I think this is a good observation. I’ve found that it’s easier to learn stuff when I’m curious about the result because it would help me solve a problem. I think a curriculum that used programming problems to motivate diving into the underlying math would be great for CS people, teach the process of going from a problem to calculating the more formal math, and then applying that.

      At least, that sounds better than my CS degree, which had plenty of math and programming but rarely at the same time.

      1. 1

        Formal math isn’t about how to get “practical” or “useful” results from a technique, it’s about how and why the technique works at all. It’s all about proof. And you’re right, it’s difficult to learn because it’s so self-contained. Usually the entry points come from needing to go deeper into some particular application. Like, if you do 3D graphics you might eventually need to understand why quaternions don’t commute.

        If you want to play with math like you’d play with an OS or a programming language, install SageMath or something similar, and just start working through some tutorials and textbooks. It’s not really all that different. You might just need to re-calibrate your expectations about what “use” means.

      1. 2

        This looks like exactly what I need for homelab sautomation.

          1. 1

            Thanks for the writeup! I’m still waiting on mine to ship so at least reading other people’s experience gives me something to do.

            1. 4

              Packing and moving tomorrow. Hopefully the new place and taking the whole week off will do some good for my mentality.

              1. 1

                Moving is a pain. I just finished a move recently. Are you doing everything yourself or using movers?

                1. 1

                  Everything myself. I don’t get to take much so I’m basically starting from scratch save for smaller things. Moving out from home for the first time drains one’s wallet real fast.

                  1. 1

                    Agree… but later when you have a bunch of stuff, it still drains your wallet, just, differently. (Paying to move all the stuff rather than get it the first time,)

              1. 1

                Does anyone know the timeframe for delivery? I purchased one a few days ago, got a receipt, but haven’t heard much else. Just curious what I should expect.

                1. 2

                  it takes a little while as they build and ship from China but I’m unaware of the exact length.

                  1. 1

                    Don’t know specifically about the PineBook, but my PinePhone took a while - a couple of months from pre-order through manufacturing and shipping. Worth the wait though :)

                    1. 1

                      They don’t ship constantly, but they are currently shipping, so hopefully you (and I) get shipping notifications this next week. Lookup Pine64 on Twitter for more updates.

                    1. 2

                      Wow, I’m reading a lot of mac equivalents for the features afforded by AutoHotKey but I’m surprised no one has mentioned Alfred (£25).

                      The downside of Alfred is that its drag-and-drop-blocks automation feature, Alfred Workflows, relies on integration with other apps. This means you need BetterTouchTool to bind your mouse/trackpad/remote, and you need to know bash/zsh/ruby/python/anything to actually get things done.

                      The upside of Alfred is that it’s really easy to pick up. In short, you write scripts that take in argv and spit out stdout. Then you have Alfred handle the rest, i.e. passing outputs to inputs and binding hotkeys.

                      Yea there’s a whole library of cool blocks, but (since I prefer bash) pretty much all of my workflows look like

                      [hotkey block] --> [bash script block]
                      

                      You don’t need to learn another language for automation. I’m only drawing from bash knowledge, but that’s enough to bind these bash one-liners with minimal learning and effort:

                      • a hotkey to draw a Graphviz or mermaid.js graph from highlighted code. [Hotkey block] sends currently highlighted text to [bash block], which saves it to /tmp, pipes through dot or mermaid.js, and opens the results in your favorite image viewer
                      • a hotkey to compile and run code you’ve highlighted. [Hotkey block] sends currently highlighted text to [bash block], which saves it to /tmp, pipes through gcc, runs, and opens the results in your favorite text editor.
                      • a hotkey to run OCR on the clipboard and paste the result. [Hotkey block] sends current clipboard contents to [bash block], which pipes the clipboard image through your favorite OCR command to stdout, and sends that to a [clipboard paste block].

                      The key in “handling the rest” that I couldn’t find in any other automation software, is offering lots of control over inputs and outputs between blocks. Instead of argv, you can pass data into a block via straight up text replacement into the bash script block, controlling what characters get escaped. Or store it in a variable, or log it to a nice debug console, or pass it to another workflow… I find this level of control in “handling the rest” to be incredibly important, since the last thing I want to learn is how to stop my automator from escaping backslashes or utf-8-garbaging my outputs.

                      tl;dr as far as automation software goes, I’ve found Alfred Workflows to be dead easy to pick up since it leverages your existing knowledge and offers the least surprise

                      1. 1

                        I use alfred… although, i must with some embarrassment admit that I mostly use it just so I can type this: ¯\_(ツ)_/¯

                      1. 7

                        Happy to see that macos support is in a much better state now :)

                        1. 1

                          Hope they keep up the good work! I’m waiting for this: https://gitlab.com/inkscape/inbox/-/issues/1577

                          1. 1

                            https://gitlab.com/inkscape/inbox/-/issues/1577 Interesting - it seemed to be working fine for me (i didn’t open a huge/ super complicated image). I’m on mojave.

                        1. 1

                          Company: AWS

                          Company site: https://www.amazon.jobs

                          Position(s): [Systems|Software] Engineers

                          Location: Onsite, Washington DC area or Seattle

                          Description: Work with me and my teammates to deploy AWS IoT services to air-gapped regions and support government customers operating in those regions. This is a US citizen/security clearance role (but of course AWS has a lot of other opportunities of all kinds.) Full description: https://www.amazon.jobs/en/jobs/984834/system-engineer or

                          Tech stack: Ruby/Java/Python, Linux, AWS Services

                          Contact: Apply through amazon.jobs link above but message me (kennebru@amazon.com) if you’re interested/have questions, I can make sure you don’t get lost in the void. (I’m not a recruiter or official spokesperson, just a SysEng who would be glad for a few more good teammates!)

                          1. 3

                            i like this idea a lot!

                            1. 1

                              I was bored today and wanted to learn more about RPN calculators. Some searching brought me to this video, that’s not only funny in it’s nearly monty python-esque presentation, and the sudden costumes, but also interesting since first of all I was quite surprised to see this sophisticated calculators (supporting stuff like symbolic algebra, string concatenation, and on-device user programming) existing in the early 90’s –albeit for a high price, and secondly it’s a quite nice introduction to stack programming, just with HP’s language.

                              I guess I should add the disclaimer that this is actually a kind of infomercial/manual, but I guess since it’s for an discontinued product, I hope nobody has too much of an issue with this.

                              1. 2

                                Its hilarious to me that you posted this since i was just watching this video earlier, having bought myself an hp48sx via Craigslist earlier this week. I really like RPN (although mostly i use it via a phone app), i don’t really get why it’s seen as unintuitive (but i mean, people are different and that’s ok.)

                              1. 1

                                This is interesting - I’m in the camp of people who have more or less bounced off of KiCad, is this more intuitive?

                                Edit: Subjective question I know, but I’m interested in any anecdotes one way or the other.

                                1. 6

                                  Brings back memories of playing noctis iv back in the day (when there was still hope of a noctis v). Arguably that game had most of the good parts of no mans sky (given the limitations of the time).

                                  1. 7

                                    I’d like to call out Amazon in my personal experience (i know this can vary) as a good example - I reached out to one of their recruiters and was asked for my resume, and from then on was walked competently through the process - I started a position with them not long ago. I know it helps for them that they operate at a scale which lets them have recruiters in house.

                                    1. 8

                                      It doesn’t take a large one to do it better. The smaller firms down here just have the managers do it. The best ones have managers and engineers in the interview. I keep wonderimg why these other companies don’t do that.

                                      1. 7

                                        We never conduct any interviews without engineers (even for non-engineering positions). Pretty easy to do (unavoidable in fact) if all managers are also engineers. ;)

                                      2. 6

                                        My experience with Amazon recruiting has been different. I’m regularly contacted by different recruiters from Amazon about roles in places I have no inclination to move to & I cannot get them to stop.

                                        1. 1

                                          Yeah I’ve heard of this happening

                                        2. 6

                                          From what I know, Amazon managers do their own recruiting so you’ll often get emails from many departments at once. I always found that strange.

                                        1. 2

                                          I’m going to have to start using this

                                          1. 4

                                            I frequently buy paper copies of books from No Starch Press, even though through humble bundle I often have very cheap access to the pdfs. I don’t even mind reading PDFs on my ipad, but I’ll gladly buy a physical copy of anything well written that I will actually read, to me that’s never wasted money.

                                            1. 5

                                              I definitely enjoyed reading this! I would like to point out though (and i may butcher the explanation) that there is a position which supports property rights in general but strongly opposes copyright/the idea of “intellectual property”, on the basis that property rights are a necessary result of scarcity, so it does make sense to have scarce things have an owner and it doesn’t make sense for not-scarce things to have an owner - under this view i have no objection to Disney retaining full ownership of Disneyland and using it for their corporate profit, but I do have an objection to them maintaining full ownership of every idea they have ever imagined, because that kind of “ownership” does actually take freedoms away from me (I can not, for example, create a mod for a video-game that adds characters which Disney claims to own without expecting them to eventually come make me stop.)

                                              I feel like that’s a long winded way of saying that precisely because I do agree with the author that this new world of postscarcity (at least as regards the world of software) we live in allows for an unrestrained/nontransactional giving that was totally impossible in the past, I can’t agree that we should look at Stallman/Linus/etc as misguided because they are more quarrelsome, because there are real ways that these freedoms CAN be taken away from us. There’s a reason the MIT license still has to be a license and not just “do whatever you want” because there are people who are not “mere” freeloaders but who would happily, if allowed, take what was given freely, claim ownership themselves, and then use litigation to prevent other people from also receiving the gift (and there are a lot of subtle ways to effectively do the same thing.)

                                              But really I enjoyed the post, I don’t mean to be contentious/split hairs. :P

                                              1. 2

                                                Thanks so much for putting this - I had read it before years ago, but totally failed to find a link to it when I wanted to reference it.

                                                1. 3

                                                  Tim Rogers used to have some of the most beautiful internet writing back then. I always remember this one too:

                                                  http://archives.insertcredit.com/features/dreaming2/

                                                1. 4

                                                  Okay so I applaud the effort of turning these despicable consumption systems into production systems!

                                                  My idea is to approach it a little bit differently though. Not to rain on your parade or anything but why not simply use a regular notebook if this is the purpose.

                                                  So hear me out on this, I’m really aware that this is a longshot. Still there are no viable solutions to this, touch is basically two finger typing, whenever the voice recognition fails to recognize [ or * or { you’ll loose your flow whatever.

                                                  My idea is to scrap the keyboard structure as we now it and instead present the symbols dynamically using an efficient structure onscreen. This could be designed so that search gives us appropriate values from a Big-O notation point of view. So basically we are doing compression backwards.

                                                  I’ve worked some on this using single strokes and using a gamepad or whatever low key count input device. There is also the Dasher project that goes along similar lines.

                                                  I’m painfully aware that there’s an learning curve associated to this but then again what alternatives are there. Especially when VR is around the corner.

                                                  Am I crazy or should we try to invent some new paradigm of UI, to reclaim our devices as devices made for creativity instead of mind-numbing consumption devices?

                                                  1. 1

                                                    Do you have any thoughts as to what that symbol representation would look like? I too think that especially with the ubiquity of touch interfaces (and especially potential VR interfaces in the future) it’s worth exploring alternate paradigms for input. So far it seems that either we haven’t come up with anything better for controlling the incredible power of computing than something that is basically a computer text terminal, or else if we have, these ideas have been snuffed out by the terminal in “Worse is Better” fashion.

                                                    1. 3

                                                      Yes I have two angles of attack at the moment when it comes to creating streams of symbols. My own idea is based on a discrete categorization of the symbols sorted by frequency. Either as recursive grids or as trees, which more or less is the same when you think of it as graphs.

                                                      The first one implemented as a game

                                                      http://sigma.eruditenow.com/theory.html http://sigma.eruditenow.com/index.html

                                                      I also have a series of videos on the subject over at bitchute: [introduction] https://www.bitchute.com/video/FklGhgQGbuDk/ [comparation between classic and trees] https://www.bitchute.com/video/FklGhgQGbuDk/

                                                      The second approach I got some brilliant feedback from lobsters when I published my silly game. This was concerning the Dasher input method. Here we are dealing with the same fundamentals, N-signal input where N is low, feed it into a prediction model with compressing characteristics. The difference here is that he is taking the continuous approach and using arithmetic compression instead of a huffman encoding. https://www.youtube.com/watch?v=ie9Se7FneXE

                                                      ** What I am working on now ** At the moment I’m doing an implementation in nim which is supposed to span several platforms and to be as universal as possible. A lot of work has to be done to interface to existing program, create frequency profiles from text and so forth. While supporting several platforms. I think it’s essential to have a web demo that corresponds quite closely to the actual variant.

                                                      My current target is to create an editor loosely based on vim. With two input systems, one that handles text input as a stream and the other one handles control of the text. So given a game pad setup, the left stick might represent input of text/code and the right one would correspond to the “command mode” of VIM.

                                                      ** Organisation Cooperation ** My dream is to set up some small group of people who are prepared to think outside of the box and set up a forum or discord server to cooperate on this!!

                                                      Inteested?

                                                      1. 1

                                                        That does sound interesting! I’m certainly not an expert on the subject, but I do find it fascinating (probably related although more traditional: I’ve spent a lot of time building small mechanical keyboards for myself and customizing the keycaps in qmk.) I’d certainly enjoy looking into it further.

                                                        1. 1

                                                          Lovely, I’ve set up a discord server just now as a first step of trying to organize the effort. Perhaps discord isn’t the ideal solution for organizing stuff like this.

                                                          https://discord.gg/8sPDxRa

                                                  1. 3

                                                    I’ll be doing a lot of reading. At my startup, our main focus largely reduces to “knowledge management.” And over the past few months I’ve been pointedly going back and reading (or re-reading in some cases) a lot of the books that I consider the “canon” of KM, looking to either solidify my understanding of certain things, mine ideas for messaging from a sales and marketing viewpoint, mine ideas for new product features (or even whole new products), etc.

                                                    Right now I’m working on The Fifth Discipline by Peter Senge. Once I finish that, I’ll probably move on to The Living Company by Arie de Geus.

                                                    If I take a break from all that, it will probably be to go to the gym and lift, or maybe get out and do some bicycle riding if the weather is nice.

                                                    1. 2

                                                      What are the others? And if only one, which should someone buy to learn the most important concepts?

                                                      1. 2

                                                        I’ve been meaning to write a blog post about this for a while, but haven’t gotten to it yet. But briefly, a few of the books that I consider “the canon of KM” would include:

                                                        Wellsprings of Knowledge

                                                        If Only We Knew What We Know

                                                        Working Knowledge

                                                        Common Knowledge

                                                        Winning The Knowledge Transfer Race

                                                        The Fifth Discipline

                                                        Business @ The Speed of Thought

                                                        The Living Company

                                                        If I had to pick one book that gets the key ideas across, I’d probably start with Wellsprings of Knowledge.

                                                      2. 2

                                                        Interesting. I’m finding at my company that we have a… deep need for improvement with regards to knowledge management (not a subject I know a lot about, unfortunately.) It seems like most efforts for improvement are rapidly lost in the background noise and “what actually happens” ends up fairly random.