1. 3

    Outside of work, I’m working through two coursera classes (maths for machine learning, algorithms & data structures), reading an intro to quantum computing (got some basic exploratory programs working with the Microsoft Quantum SDK and Rigetti’s pyQuil), and trying to refine and explore some ideas I’ve had while learning about natural computing.

    At work, I mostly fuzz YAML files, but I’ve started to get some actual development work for the first time in about a year.

    1. 3

      This is cool — I do something similar. My home directory is managed in git and I manage the software on the machine (mostly) with Salt. Restoring backups from restic and highstating gives me a pretty much identical machine in about 60-90 minutes, depending on the network connection.

      1. 4

        I absolutely agree with “developers need to pay attention to build flags”. Like the well-known -D_GLIBCXX_ASSERTIONS and -fasynchronous-unwind-tables. Only applicable, of course, when using GCC. I mean only when using GCC when this article was written. Only on Linux. With glibc. Did I mention only RedHat Enterprise? (AMD64?) (C or C++?)

        For those of us C programmers writing for anything other than the intersection of the above, please, please, please “pay attention to” -W, -Wall, and if you’re feeling bold, -Wextra. (And everybody’s friend, -g.) Depending upon obscure GCC or Clang flags only muddies the waters—as if we need more difficulties keeping C software portable between Linux, BSD, and Mac OS X. (I don’t have the courage to write “Windows” here.)

        Maybe the author should clarify to “HPC on Linux developers” or “kernel developers”? Or more practically, “RedHat Enterprise developers”?

        1. 1

          I also almost always use -pedantic, too.

        1. 3

          Nitpicker’s corner: minicomputers were the big fridge-sized ones, because they were smaller than the room-filling ones. Microcomputers are what we’d call this.

          1. 1

            Ack, I knew that. Too bad I can’t edit it now.

            1. 1

              Fixed.

          1. 1

            I remember having to use spkmodem to debug coreboot work — it unsurprisingly makes the boot go a lot slower, but it works.

            1. 3

              I’m making another pass at GEB, this time with copious note taking so that it’s easier to pick back up.

              1. 3

                You have a nice, cross-section of stuff with programming languages and design methods. Try Stavely’s Cleanroom since it was first, low-defect methodology that wasn’t about formal verification. I haven’t got to read the book yet but the site below looks promising. Back when I programmed, I imitated what I read of Cleanroom’s structuring with good results.

                http://infohost.nmt.edu/~al/cseet-paper.html

                I’ve also heard good things about Building High-Integrity Applications With SPARK below. SPARK is a language for low-level code that lets you prove your code has none of the common errors in say C code. It uses annotations in regular, Boolean logic. You can put in as little or as much work depending on how much you want to verify with formal methods as opposed to code review or testing. Book targets beginners rather than formal methodists.

                https://www.amazon.com/Building-High-Integrity-Applications-SPARK/dp/1107656842

                1. 2

                  I’ll second “Building High-Integrity Applications With SPARK,” for which it’s helpful if you know Ada (for example, via Building Parallel, Embedded, and Real-Time Applications with Ada). I found it a pretty accessible intro to formal methods.

                1. 4

                  Should the link be to a playlist rather than a specific talk?

                  1. 1

                    you are right. I don’t know how I messed up the submission. Now I can’t delete or edit it. How do I bring this to moderators attention?

                    1. 1

                      I’ve fixed the link to point to the playlist.

                  1. 4

                    As someone who loved their N900, (and N800!) I’m pissed at what potential has been squandered by nothing being done with it after Nokia gave up. Samsung’s latest attempts are… not great.

                    1. 3

                      What do you think about SailfishOS? It’s successor of MeeGo so in a way that’s continuation of N9/N900/N800 legacy.

                      1. 1

                        They’re still living in 1491, so I haven’t seen any HW in the flesh, but from what I’ve been seeing, it isn’t terribly interesting. Jolla got lost in the woods with a tablet, a la Playbook.

                      2. 2

                        I’m still looking for a useful replacement for the n810, which may have been the best portable computing device I’ve ever used; the n900 was just a little too bulky (but I still have mine).

                      1. 13

                        No Bullshit Guide to Linear Algebra, because I’ve realised not knowing linear algebra is the thing holding me back the most for my personal goals lately.

                        1. 6

                          I liked Axler’s “Linear Algebra Done Right”. I am still undergrad student, but felt like I could learn more, so I found this book really appealing. But it could be too academic and kinda “dry” if you have finished with college long ago.

                          1. 3

                            I never took the class in school, and dropped out of college; text books are pretty hit-or-miss for me. I’ve tried a lot of resources to learn, though. My first intro was a crash course in an ML class on Coursera, and I’ve tried Shilov’s Linear Algebra, a linear algebra refresher course on Udacity (learn it by programming), and the Khan Academy videos, and a few other books. This book clicks, and also has a math refresher so you can relearn high school math first (which was over a decade ago for me). The thing that really sold it for me was it has lots of example problems and all the answers. I’ve taken the approach of working all problems and going back when I get one wrong to figure out where it went wrong, essentially using the answers as a unit test for my thinking.

                            1. 2

                              I have Linear Algebra Done Right on my bookshelf. It is quite good, a bit dry, and I wish I’d had it as the core of a class in university. The No Bullshit Guide to Linear Algebra looks like it might be a good reference with a bit more spice and entertainment to it.

                            2. 4

                              No Bullshit Guide to Linear Algebra

                              Is it good? Linear Algebra came up in a job interview recently and it stumped me; it’s amazing how much you can forget if you don’t keep using it.

                              1. 2

                                See my response in the other thread for why I like it. The writing style can be a bit off-putting at times, though; I just work through that because the rest of it really makes sense to me.

                                1. 2

                                  Another thing I forgot to mention, you can get laminated cheat sheets that summarize things. I picked up one when I grabbed a probstats cheat sheet, looks like it’ll be helpful later on.

                                2. 3

                                  Hi kyle, thx for the plug! Be sure to check out the jupyter notebooks that come with the book: https://github.com/minireference/noBSLAnotebooks The chapter numbers are a bit off (you need to s/n/n-1/g), but you can take a look to see examples of the SymPy commands—it’s an awesome tool for learning if you feel comfortable with code.

                                  For everyone else interested in the book, check out the preview here: https://minireference.com/static/excerpts/noBSguide2LA_preview.pdf or if you don’t have that much time, there is also a four-pager you can print an read on your next coffee break: https://minireference.com/static/tutorials/linear_algebra_in_4_pages.pdf

                                  Linear algebra is very powerful stuff!

                                1. 6

                                  I’m an admin on a public shell server where we basically do this. As part of creating a new user, we give them a home space (shell-server.example/~user and user.shell-server.example), and create MySQL credentials for them. Then you’re not stuck with ~6k instances of MySQL or what have you. With some extra work, we could support proxying that site to a Unix socket in their directory (e.g. to support a web app). It’s worked well enough for a couple years now, and is essentially performing the same functions as the SparcStation in the article.

                                  1. 5

                                    I’m an admin on a public shell server where we basically do this

                                    That’s cool! What do people use it for? Do you rely on goodwill, or did you do fancy things with the security setup? Is it written up anywhere?

                                    1. 1

                                      A combination of application process, a variety of shell / perl scripts, and some locking down of the operating system. Some of the admins gave a talk at vBSDCon in 2016 that might be interesting, but it’s not really written up anywhere.

                                  1. 7

                                    I know this is a minor point to the whole endeavor, but that tiny OLED display is so darn neat!

                                    1. 2

                                      I bought a couple of them off ebay for about 15 USD a piece; you can them cheaper, but I went for ones that came with I2C instead of SPI (the extra pins matter on an ATtiny85). They’re pretty neat indeed!

                                    1. 3

                                      Still working through the art of electronics. I also upgraded my amateur radio license this weekend from Technician to Extra, so I spent some time this weekend putting together an HF rig (i.e. picking up a transceiver, power supply, antenna, etc) but didn’t get around to setting up the antenna yet.

                                      1. 2

                                        I had a bit of an epiphany a week or so ago, and realised I really don’t like computers all that much, but what I have enjoyed is the more electrical engineering bits of my background. I’m continuing to work through Nature of Code (it’s less computers and more exploring the world), but I’ve also started working through Learning the Art of Electronics (with all the supplementary reading from The Art of Electronics). I’ve also been playing around more with my amateur radio license (shooting for an upgrade to General this weekend, and maybe Extra soon after if I study enough), particularly motivated by digging up the HamShields I kickstarted a while ago.

                                        1. 1

                                          Oh, so that was you I read. You thought about getting involved in the open hardware movement? There’s almost no talent in there vs software FOSS. We need everything from cell libraries to analog to I/O to CPU’s. Plus boards putting them together. Plus them being in something cool that sells and justifies the effort past sheer enjoyment. Lots of potential stuff for you to get into there.

                                          1. 2

                                            Sorry for the confusion, I didn’t write that — it just really resonated. At some point I might get involved with the OSHW movement, I’ve designed a few boards and such in the past (I started this a while ago, but it sort of fizzled out.

                                            1. 2

                                              Oh OK. Well good luck anyway. Embedded walkthroughs might make an interesting start as they’re both helpful by themselves and might show where pain points are that better HW could eliminate.

                                        1. 2

                                          I found it wasn’t necessarily syntax highlighting that I didn’t like, but syntax colouring. To that end, I’ve been using an eink-based theme for several years that has minimal highlighting and no colouring — strings are underlined, comments are shaded, and in the emacs version certain things are bold-faced. For me, I found a lot of colouring was visual noise that was distracting.

                                          1. 3

                                            Outside of work, I’ve been reading through Nature of Code (NoC) and trying to regain lost electrical engineering skills. The big push with NoC is to learn more and not let my perfectionism with professional software engineering get in the way — a lot of projects I’ve started have died because I insisted on doing them The Right Way™ and ended up not having the time or energy to see them through. The reason I picked NoC is because it gives a good background for the concepts that I think I’ll need to get through Cities and Complexity; I made it through about two or so chapters, but didn’t really have the background to understand it. Those two chapters were fascinating, though, and it’s a subject of a lot of interest to me.

                                            For the electrical engineering side, learning to play some instruments has gotten me thinking about audio electronics, which is driving me to start tinkering with that again.

                                            1. 4

                                              The Right Way™ is all too common a problem with me. I can crank out little utilities that I actually need, but larger projects, which I expect to eventually talk about and try to promote some, I find I get really defensive and struggle to settle on a way, mostly, I think out of fear of criticism.

                                              Being criticized on the Internet, for a technical choice made is all too common, and I simply would rather not deal with it. The problem, though, with being this defensive, is that realistically speaking, exactly no one cares about my project but me, unless it has something of value in it that people relate to. So, in theory, whatever. But in practice, it’s hard for me to convince myself that no one will care about my ideas because I believe in them.

                                              Still haven’t come to grips with this. Would NoC help?

                                              1. 1

                                                There’s a couple things about NoC that made me choose it:

                                                • You use Processing, which is a language intended for artists and beginners. I don’t know how to modularise things in it or do anything really but open a new sketch and put code in the IDE.
                                                • Processing is all Java, which I had no interest in learning. Now, I just don’t care; it’s what comes of it that makes me care.
                                                • It’s all an exploration of ideas without having to worry about things that would be production quality.
                                                • Getting things like sound and graphics Just Works (in my experience, on an XPS-13 running Ubuntu), so you don’t really spend time trying to fight a build system.

                                                There’s a Processing app for Android as well that builds an app on the phone (v. the iPhone version that lets you run sketches, sort of) and lets you import libraries. This means you have a handheld device with a lot of sensors and interesting interaction possibilities, so I’ve pressed my old Nexus 5 back into service as a WiFi-only handheld computing device, much like what I used to use my Nokia N810 for.

                                                I completely sympathise with your concerns. I work in security engineering, and have been fairly focused on crypto, which is a constant defensive battle and a battle to try to get people to care about the things I’m working on and to use the things I’m working on instead of hacks and workarounds.

                                                1. 2

                                                  Now, I just don’t care; it’s what comes of it that makes me care.

                                                  I’ve written a blog post about this sort of philosophy when it comes to programming languages. I think of them as a means to an end, not an identity. The post tells a story about a feature that I wish existed in Go, and how people got defensive because “why would you need it?” This interaction made me realize that they are “Go programmers” in their minds, not just “programmers” and as as result, I was insulting them directly.

                                                  Ironically, I haven’t published this post because I’m not happy with the way I tell the tale. I got some feedback from a trusted friend who suggested I make some suggestions to the tone, which I agreed with, but haven’t yet done.

                                                  Also, Processing is great. I played around with it a ton when it first came out and was super excited about it, made lots of sketches, and had a blast. I opened it up a couple of months ago, and it’s largely unchanged from what it was originally, but the ecosystem has exploded, which is simply amazing! I’ll consider the book, if not, just to play around with something fun. Thanks!

                                                  1. 3

                                                    ’ll consider the book, if not, just to play around with something fun.

                                                    The book, for me, is a means to an end — it explains the concepts I’m interested (all of the things that I need plus a few extra things) and just happens to use Processing; the real goal here is to end up being able to understand Cities and Complexity.

                                                    This interaction made me realize that they are “Go programmers” in their minds, not just “programmers” and as as result, I was insulting them directly.

                                                    This phenomena, where people base their identity on a particular technology (including programming language), is usually where I lose interest. I used to think like that, so I understand it, but it’s so very wearisome anymore. I find that so many of the trivialities that people get worked up about in tech are absolutely uninteresting anymore, particularly so because many of the end products are things that I either don’t see much value in or just don’t care about. I think that as I get older, I’m focusing on what things I want to do, not how I want to do them. Processing sketches that I write as I work through the book aren’t going to end up needing to be maintained; I might refer back to them, but I find that the notes I take are on the concepts and not how to implement them. For embedded devices, there’s PlatformIO that uses an Atom package. In the past, as a stalwart emacs user, I’d have taken umbrage at the thought of using Atom, but I find it’s a useful tool to have around.

                                            1. 2

                                              I used to use it for key distribution, but rolling keys is a real pain, so I stopped using it. I never got around to trying the keybase filesystem, though.

                                              1. 5

                                                I use a pair of Ergodoxes (one with MX Cherry Blues and one with Matias Clicks) and an Atreus with MX Cherry Blues. They’ve ruined me for traditional keyboards.

                                                1. 3

                                                  Practicing photography :)

                                                  I’m also idly wondering about what the best place to discuss and improve your photography with others actually is. It seems like there’s a lot of different avenues to this ranging from the big photo sites down to tiny outlets—mailing lists, subreddits, blog rings wrapping around popular photographers. The Big ones all seem to have some variety of angst from the perspective of growth as a photographer. Flickr is probably still the best, but for whatever reasons seems to be on the way down. 500px gets routinely dashed for its focus on likes and demands for reciprocation.

                                                  Does anyone have any recommendations for a place where people can share photos, discuss, and critique in a good atmosphere? A community focused on learning/self improvement would be the best.

                                                  1. 3

                                                    I also would be very interested in this. I am thinking of taking an off-line photo class this winter, because I like it a lot when I take a good picture, but my current procedure is to take hundreds nearly identical shots and pick the one I like the best after the fact. That seems wasteful.

                                                    1. 3

                                                      Also interested.

                                                      I’ve been trying to think more before taking shots, trying to figure out some of what the story I’m trying to tell with the photo, and to coax that story out of the film / sensor. It’d be really helpful to be able to discuss this with people.

                                                    1. 2

                                                      Just got back from vacation, trying to remember how to computer again; also, dropping several VPSes and setting them up to run on my SmartOS server instead. I was trying to learn chef to do this, but that was taking a while and not moving as fast as I wanted, so I went back to Salt (it’s what I have the most experience with). This weekend I also started learning how to tear down and work on some electric guitars; it’s been a lot of fun combining electronics and music.