1. 24

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. 6

    At home, some Rust operating system fun. Porting a microkernel I last worked on eight years ago; it’s so much nicer to use something-that’s-not-C.

    At work, working on our new Markdown parser (… in C) and the transition of our existing user content from old-non-specified-Markdown to an actual spec.

    1. 2

      Since you are using Rust outside of work I figured I would share this markdown parser I saw a while back. Perhaps you have some special requirements at work but it’s a nice library.

      1. 3

        Thanks for the link! I was looking around a little while back to see what the Markdown/CommonMark ecosystem for Rust was like; this is probably something I’ll be looking to use or work on more in the future!

        edit: ah, I remember why I didn’t end up going with this when I was looking at some implementations – the spec compliance is not quite there. Perhaps I’ll try to help it along!

      2. 1

        You have a write up on or link to the microkernel?

        1. 2

          Not yet — it’s really babyish.

          The very old one can be found at http://github.com/kivikakk/akari — it did your usual hobby kernel things (multitasking, separated kernel/user space, ELF loader, harddrive access by DMA). There was a terribly slow IPC implementation that made its design (separate processes for the harddisk, VFS ‘driver’, FAT32 ‘driver’, etc.) a bit laughable, but it was still fun to do. An old (short) blog can still be found in the Wayback Machine: http://web.archive.org/web/20110202221708/http://akariproject.com/.

      3. 4

        Last week, I wrote a big article on Valve’s strategy (or lack thereof) on Steam machines.

        This week, I’m probably going to consider getting a grip on .NET Core after years with Mono.

        1. 1

          I skimmed that write-up. It was good. That PC’s are flexible and consoles are simple/optimizable is a good categorization. While Steam ended up worse of both, they could’ve gotten a lot of both with the right strategy. My idea was that they just take the Apple approach of constraining the hardware support to a small selection of good components. Keep them COTS so pricing stays low. From there, developers can target a baseline whose architectural details are slow to change so they can be productive and optimize. The code can be designed to scale up if, within same architecture, the customer adds faster CPU, extra cores, more RAM, more VRAM, etc. Gives that PC benefit of better experience with better hardware.

          For flexibility, they might consider a dual-booting or virtualized system. The dual-booting is obvious: game mode with Steam or regular OS optionally sharing same HD. The virtualized mode would have them running side-by-side with game VM going full-screen, getting all the CPU, and gaming-specific HW (eg GPU) is dedicated to that VM. If they want, they can pause the game to go back to their work, web browser or whatever. This also has a benefit where things like Netflix could be relegated to desktop apps on the main system if it was too hard to put them into SteamOS. Hardware that Steam doesn’t support or need is simply ignored by the OS or VM but main OS or VM gets full use of it.

          I don’t use Steam or even know much about it. Consider the above guesses based on limited reading of Steam, background with competing models, and prior thinking about combining those two models into one.

        2. 3

          This week, I’m continuing my NaNoWriMo attempt, and working out some vague ideas for blog posts that have been floating around in my head. I also need to finish up the chicken tractor I’ve been building, and apply for more jobs. Anyone need somebody with experience as a sysadmin/farm hand/carpenter/electrician?

          1. 3

            Not really sure what I’m going to be doing this week. I got engaged last weekend, and spent most of the last week telling family and spending time with my new fiance. I’ll probably try to get back into blogging at Suspect Semantics.

            1. 2

              Congrats :D

              1. 1

                Thanks!

            2. 3

              Big database migration in progress. We’re moving two hot tables of about 500M rows each from Postgres to DynamoDB. Having a lively workload on Postgres has made for a lively time keeping the DB in good shape, so we’re excited to move it to a more fully managed DB service. Shout-outs to the composite bridge design pattern and to AWS support in Sydney for shooting the shit about Postgres transaction_id exhaustion.

              1. 1

                Nice

              2. 3

                Work:
                Fairly humdrum in terms of code, but I am reading Becoming a Manager based on a recommendation from John Bullard at Distil Networks.

                Other:
                Giving a talk at the Houston Ruby Brigade about a hairbrained, irresponsible pattern-matching library for Ruby. I had built some prototype a year ago, but then saw an episode of Avdi Grimm’s Ruby Tapas where he did something similar, and decided to rework mine entirely based on his implementation. I’ll edit this post with a link tonight when I publish the code.

                1. 3

                  I just started a new job! I’m excited and thankful (it’s the season, right?) for the opportunity, especially at an incredibly young startup. So this week is all about getting oriented and small wins as I get acclimated.

                  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

                      Working on updating our Ruby JIT to work with something much closer to Ruby HEAD. Initial bits are done, but at the cost of neutering a lot of functionality

                      1. 2

                        What I thought were the last few bits for the boat arrived before the weekend last week, so I managed to get the sails hoisted which of course lead to more issues being noticed. Only got three sailing days left before the club stops sailing for the year, hopeful to get one sail in this season. (Need a smaller shackle for the mainsheet, and the forestay appears to be twisted where it’s mounted to the mast - hopeful I can fix that without dropping the mast as that’s quite a pain in that boat. Ugh.)

                        Started a prototype (Apple) watch app last week too, as I want a quick way to enter weight & body fat % when I weigh myself in the mornings. Currently I’m remembering it whilst I shower as I don’t take my phone to the bathroom, but I do have my watch on by then. Only thinking of those two metrics currently as that’s all my scales measure. WatchKit is … interesting for sure.

                        1. 2

                          I’m hoping to get around to replacing a Moto G screen and digitizer. It will be my first time tinkering with modern smartphones and I have already written off the device so it’s going to be a good time.

                          Aside from that I need to finish my NextBus display powered by an RPi 0. I have a new-found love for LED matrix displays and I’m looking for excuses to use them around the house.

                          When the display and software is finished I want to build a 3D printed enclosure for it. Last time I did any modeling was in the mid 2000s on Cinema 4D so it will be interesting getting back into it. I understand that 3D software has gotten a lot nicer to use.

                          1. 2

                            Writing a parser for the GraphQL simplified schema language for a Haskell GraphQL implementation. Schemas will be able to be written as such.

                            type Query {
                              hero(episode: Episode): Character
                              droid(id: ID!): Droid
                            }
                            
                            type Character {
                              name: String
                            }
                            
                            type Droid {
                              name: String
                            }
                            

                            This is a departure from my previous approach which intended to use native Haskell data structures to construct a schema and deliver introspection information, etc. I believe this new approach to be more easily implemented in conjunction with the query language and resolvers. Then I might be able to layer a more interesting DX later.

                            1. 2

                              Working towards finishing a course for AWS Certified Solutions Architect

                              1. 1

                                Ditto (well, I’m trying to do the studying for the three associate level certifications in one go before tackling the professional ones). As a matter of interest, which course are you doing?

                                1. 1

                                  I am following the courses from acloud.guru (but took them from Udemy). Next SysOps and finally DevOps certifications.

                                  1. 2

                                    Ah, same for me (although I bought direct from acloud.guru). Pretty decent courses, although things change so rapidly that there’s the odd minor mistake.

                                    Cool kids tend to laugh at certifications but in an enterprise environment they can be key to getting your foot in the door. That, and the fact that when you’re self taught they can help fill in the gaps in your knowledge (the stuff you never needed to learn so skipped over).

                              2. 1

                                Finishing up a go/mdns based rewrite of pow. Currently supports the regular config.ru stuff and procfiles. I just need to finish some proxy stuff and documentation.

                                1. 1

                                  Trying to learn to use Hadoop, Hive, HDFS, all the things that start with “H” basically. It’s mostly fun. Also I’m done with the MIT MOOC class, it was fun and informative, I still have access to the material for the next three months, and I intend to work my way through each and every case study in depth. Then, learn myself some solid linear algebra skillz. Then I don’t know. We’ll see.

                                  I started working on a toy project for fun but mostly to learn, I’m building a streak tracker. I started it out in Go, then I remembered I had this awesome Haskell book (Learn Yourself a Haskell), and I kinda wanna learn Haskell, so I’m considering just rewriting what I have, except, in Haskell. IDK. Anyone knows what the market looks like in Montreal for Haskell jobs? I know there’s value in learning the language just to experience the paradigm shift, but it would be really fun to know I could actually use it for realsies.

                                  1. 2

                                    Not had much luck finding haskell jobs in montreal, though there are a few functionnal programming users, mostly scala.

                                  2. 1

                                    pushing towards a 0.01 release of a web frontend for my crossword conversion app.

                                    1. 1

                                      Now that the Flare-on 3 challenge is close (Was stuck on the very last stage of the very last challenge…) I start doing vulnerability research for bounty programs. Right now I’m looking at mruby and there seems to be a few interesting bugs in there. With the help of a few collegues, we have been able to find multiples security vulnerabilies, one of them where we have a complete sandbox escape and another one we believe to be able to exploit as well. This is my first time auditing a script engine and it definitely have been an interesting experience, from finding the bugs to exploiting them into popping shells.

                                      1. 1

                                        Working on user stats using AWS redhsift + rds. Discovered dblink and materialized views : https://aws.amazon.com/blogs/big-data/join-amazon-redshift-and-amazon-rds-postgresql-with-dblink/

                                        1. 1

                                          @work: working with Python and RADIUS attributes for Change of Autorization

                                          @home: writing a Python software to automatically update BGP filter in an IXP peering router.