1. 19

This is the weekly thread to discuss what you have done recently and are working on this week.

Be descriptive, and don’t hesitate to ask for help!

  1.  

  2. 9

    I just finished making the first version of https://github.com/kori/flare , which is just a silly small thing, but it’s good for learning, I guess!

    Next, I want to work on a notification daemon that receives notifications from libnotify and just prints them to the terminal.

    I’m a new programmer and that’s pretty hard.

    1. 2

      It might be silly and small, but it is still cool.

      1. 1

        More interesting than my early programs in QBASIC as I was learning. Don’t worry about how amateur work look to others: just keep learning, building, and improving. :)

      2. 4

        I’m working through the Rust exercises for exercism.io, and organising my permanent move to Munich to start my new job in December, which involves cancelling some student loans I took out (I dropped out and no longer need them) and moving my stuff to my parents house so I can collate it all and box it before I ship it over.

        I also started a blog post (my first) and hope to start blogging more frequently in the future.

        1. 4

          Last week I submitted some minor patches to Mono upstream. Not bad.

          My little project? Refactored some code. It’s… object oriented! Gasp!

          On the server front? Motherboard turned out to fine I think, so the problem is isolated to the CPU. It’s almost never the CPU, but in this case…

          1. 4

            Trying to wrap up and launch Portier, a passwordless authentication microservice that’s a spiritual successor to Mozilla Persona. It works well enough locally as a proof of concept, but we’ve got some fit and finish bugs to iron out, as well as some tweaks to make it easy to host on a PaaS like Heroku.

            1. 2

              Nice! I’ve only just taken a quick glance at it but it looks very interesting.

              BTW, is “passwordless authentication microservice” PAM for the hipster generation? :)

              1. 1

                The PAM pun was unintended, but now that you mention it… ;)

                What part struck you as the most interesting? Planning on a formal announcement in ~2-3 days, so knowing what captures attention is super helpful.

              2. 1

                Interesting, I cannot find any information about which protocol it uses, though. Is it BrowserID based or its own?

                1. 1

                  For federation, we haven’t quite figured out which protocol to use – something based on BrowserID or OpenID Connect Dynamic Discovery / Dynamic Registration is likely. The MVP does Google Sign-In for Gmail users, and falls back to single use email codes for everyone else. More in the design document.

                  For websites relying on Portier, it exposes an API conforming to OpenID Connect’s “implicit” flow. Which actually isn’t terrible.

                  1. 1

                    Hm, I’m somehow less convince now. I liked BrowserID a lot, especially because of the straight-forward spec and this seems to have many moving parts…

                    Allowing for implicit OpenID flow seems nice though, as many providers don’t have that :).

                    In any case, I’m no expert and don’t want to be overly critical.

                    Love Rust though, especially for deployment reasons!

              3. 4

                A while ago, I finished my blog post on why the quintic is unsolvable. It got a pretty good showing on r/math, which I was happily surprised by! I’m not entirely satisfied with the performance of the interactive visualizations, and have some half-baked ideas to redo them in WebGL, but I’ve decided to move on for now.

                This week I’m focusing on finishing the second problem set from a class I’m auditing on algebraic topology. Maybe when the class is done I’ll write a blog post about it, since it’s a topic that lends itself to computer graphics. :)

                1. 4

                  Putting any finishing touches on my rust cloc (count lines of code) alternative (https://github.com/cgag/loc) before I try posting it around HN/reddit tomorrow. Readme improvments, removing calls to unwrap(), things like that.

                  Someone else published their own rust implementation of the same thing before I finished mine (I can’t believe two people were working on that) 0, but I figured I should keep going, and mine turned out a good bit faster. I’m currently trying to get rust-everywhere 1 to build artifacts for platforms other than linux, but I’m running into errors getting it to actually push the artifacts to github.

                  edit: those numbered links were supposed to be footnotes but they got turned into inlined links :\

                  1. 2

                    I gave you a pull request for GLSL. :)

                  2. 3

                    Building a Secret Santa/Gift exchange app in Python 3/Django. This is the first version plan - link (this doc was written for my friends, who are tech newbs)

                    1. 3

                      I wrote a Phoenix channel client in C# using Reactive Extensions that I want to do clean up, nugetize, and open source this week. Originally it was part of a mobile app I was writing, but I wanted to separate it so it could be used by others (and by myself in another app).

                      1. 3

                        More hacking on watchexec. I was pleasantly surprised by the warm reception in general.

                        Specifically, I’m implementing launching child processes in a distinct process group, allowing me to exert complete control over the group. In order to do this, I need to handle signals. This is, quite frankly, a bitch to implement. On POSIX platforms, you have to use pthread_setmask, a new thread, and sigwait() to handle them safely, as you can’t do anything in a signal handler registered by signal()/sigaction(). I looked at few crates but settled on just dong it myself for now, especially since I need to watch two mpsc channels most times for activity.

                        I’m also adding handling for child processes that don’t respond to kill(), letting you at least exit the program.

                        This is likely the most difficult of things watchexec will ever cover, so I’m glad to be getting it out of the way early.

                        1. 3

                          Data archaeology, dealing with Nuget’s bizarre idea that identity is mutable. Le sigh. Otherwise, it’s been a while since the band has played, so I’m going to try and record some ideas with Garageband to present on Wednesday. We also got the bad news that our landlord sold our building, so we’re looking for a new place. We were sort of looking to buy, but this accelerated schedule has made it more logical to find a new place to rent for at least a year, rather than rush into spending ALL OF THE MONEY on a house that we might not actually like that much.

                          1. 2

                            There’s always money in the banana stand…

                            1. 1

                              Given that we live in Toronto, we’d have to burn down a lot of banana stands to make it work.

                              1. 1

                                Ah, greetings from Edmonton, Alberta!

                                1. 1

                                  Don’t even tell me how much the median single-family house goes for in Edmonton. My wife’s best friend from law school just moved back to Fredricton and continually sends us taunting real estate listings.

                          2. 3

                            Servers and more servers:

                            Work: Fan spoofing on the HP Proliant worked! By splicing the blue and green rotation detect wires from a working fan into a disabled fan’s plug, I can trick the system into thinking all fans are spinning. So far I have only disabled just one of six fans, and it’s somewhat quieter. I will monitor temperature and decide whether to disable an additional fan.

                            Home: The Sun UltraSPARC T5220 arrived! These fans are larger (60x60x38mm) and don’t make that hideous screaming sound that 1U server fans do, but it’s still pretty loud. I’d like to replace the fans with Noctua models, but the closest size is 60x60x25mm and would require a shim. Also, the fans are soldered to the fan caddies.

                            1. 1

                              The Sun UltraSPARC T5220 arrived

                              Would love to hear how you get on with the fan modding. I’m planning on moving my loud servers to a rack in the garage (still need to sort out some kind of dust proofing, it’s not the friendliest of environments), but anything that’d keep the noise of a T-series down is a winner in my book.

                              1. 1

                                Sure, I’ll probably be posting about this week to week!

                                Another thought occurred to me… I’m not racking this server, so I’m tempted to hack a desktop CPU fan in there instead of modifying the 60mm fans. There are a few challenges with this:

                                1. The heatsink mount screws are spaced in a 60mm * 45mm rectangle. I have no idea what x86 CPU sockets this correlates to, if any. A desktop CPU cooler would be difficult to mount, and might require a custom bracket of some kind.

                                2. If I use a CPU cooler, the original 6 fans will need to be disabled in a way that doesn’t upset the ILOM monitoring environment.

                                3. Most CPU coolers would be too tall to leave the case top on. Fortunately it looks pretty easy to trick the case-open detector

                              2. 1

                                UltraSPARC T5220

                                We were discussing open hardware using the open-sourced T2’s from Oracle a while back. Looks like that system uses T2’s. The main thing people brought up was horrific, single-thread performance. Maybe nice use of the box was testing some benchmarks or real-world things like zip compression against an Intel or Power system to verify that. It would be a no-go if a severe drop happened outside quite dedicated customers in open-hardware space.

                                1. 2

                                  Yes, that was a consideration while shopping. I’m actually not sure whether “UltraSPARC T2” and “OpenSPARC T2” are identical. But, the hardware was cheap. :)

                                  It might be a while before my system is ready for benchmarks, but in the meantime, check out these results comparing a T5120 and a Talos workstation. It looks like the T2s are especially awful at H.264 encoding.

                                  1. 3

                                    BTW, @tedu blogged about his experiences with OpenBSD on a T5120.

                              3. 3

                                Learning Scheme and trying to get stuff done with scsh. If I like it, I plan on extending scsh to allow easy (easier?) interop with Bash.

                                1. 2

                                  There was some recent discussion on the Racket mailing list about shells written in Racket. scsh was written a long time ago, isn’t really actively maintained, and people were looking at ways in which to leverage the Racket ecosystem. Would love this to happen, but also curious about your upcoming experiences with scsh, as well!

                                  1. 1

                                    This is very interesting. I occasionally try to make a go of a non-traditional language for writing shell-type programs, and I’ve looked at scsh in the past, but never made it my go-to. Keep us posted!

                                  2. 2

                                    New job: Perl, Docker, LDAP. In my spare time: messing around with MicroPython and Python in general … just wrote a very silly FUSE filesystem mounter to make MicroPython devices mountable into the file system, which works, kind of.

                                    1. 2

                                      Recovering from some weird flu, taking Monday off. I’ll probably be working on some scala stuff this week. Cheers!

                                      1. 2

                                        Writing, lots of writing. Finished and published a JS generators piece over the weekend. I have 80 other blog ideas that I have to get around to writing…

                                        Other than that… React day in, day out. Have my first client project in React Native coming up shortly and I’m pretty excited about it. The DX is absolutely paramount. “Learn once, write anywhere” holds true… mostly.

                                        1. 2

                                          New blog post about character encoding butchering that happens in some web apps, and going to try and release at least one Python lib related to SQLAlchemy testing.

                                          1. 2

                                            This week, I’m working on two problematic cars. One (an 05 Mercury Sable) whose transmission was believed to be on its last legs, we’ve narrowed down to an electrical issue involving the lock up solenoid. The other is a retired Crown Vic Police Interceptor that has a vaccuum leak somewhere, a faulty heater, and some ugly aftermarket wiring that needs to be brought back to stock.

                                            May have a small construction gig coming up, so I’ll hopefully have some new work (at least shortly, since no one seems to be calling bagk after my applications).

                                            1. 4

                                              I’m just getting into the art of mechanicing. I’ve been watching lots of YouTube (Scotty Killer, Chris Fix) and I’m eyeing a Haynes manual for a possible car purchase in the future. Do you recommend any additional resources?

                                            2. 2

                                              I am hoping to write an Iron/Rust server that talks an antique web services paradigm (pre-REST, pre-SOAP, all XML)

                                              First I need to create some Rust structs from an XML schema. serde-codegen taks you halfway, but first I need to generate the structures, and there’s coexisting code base for it. I hope that an XSD to C++ thing will help.

                                              1. 1

                                                So, I’ve discovered gsoap, which is pretty nice for making C/C++ structures out of XSDs. I’m trying to modify it enough to get it to produce Rust ones. I only need the structure tree, if serde-codegen is to be believed.

                                              2. 2

                                                I’m spending some time this week on working on the Self programming language. I’m hoping to make progress towards getting the VM 64-bit clean. Currently it can only be built as a 32-bit application and is full of casts to/from pointers and 32 bit integers. If this ever gets completed it’ll pave the way towards getting a 64-bit version working - someone would need to write the x86_64 JIT code for it though. I took some small steps towards it this weekend with patches to fix compiler warnings and clean up some of the build system.

                                                1. 2

                                                  I just got my static site generator working with “scaffolding plugins”, which means it’s only a bit of cleanup and some testing away from being able to support anything that compiles to JS and can render “universally. The first POC is going to be a site using Preact since it’s so similar to the first React/Relay scaffolding. Then I’m going to turn an eye to something a bit more "difficult” to integrate like PureScript and continue on with Vue.js, GHCJS and other examples.

                                                  The best part is that all of the “frontends” will have the same data-layer (GraphQL), so any advancements in data types, image processing, generating search indexes, etc can be shared by every single LEO site.

                                                  1. 1

                                                    Work: Working towards a webfronted for a simulator. The simulator is a system that has evolved over 30 years with bits of Fortran, C++, C# and now Clojurescript. ! Work: Trying to write a duplicate file/directory finder and cleaner. It doesn’t go well because I get an hour at night and my brain is fried, so I am not really effective.

                                                    1. 1

                                                      Just a week into Programming Languages, Part A and I like it. I also like Standard ML so I started looking at OCaml, because I don’t think SML is used a lot outside of these kind of courses.

                                                      For work more C++. I started to maintain an embedded Linux application that’s written in C++/C.