1. 19

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

Please be descriptive and don’t hesitate to champion your accomplishments or ask for help, advice or other guidance.

  1.  

  2. 9

    I’m putting the final touches on an update of my book, Practical Elm, and I also wrote an intro to a package for creating complex forms in Elm (https://korban.net/posts/elm/2018-11-27-build-complex-forms-validation-elm).

    EDIT: I’ve also helped restart Elm Weekly as one of the new maintainers. Check it out if you’re interested in Elm: elmweekly.nl

    1. 1

      Having not touched Elm (or heard much about it) - any thoughts as to why I should/might take a look at it? :)

      1. 2

        There are a few different reasons off the top of my head:

        • It can be a relatively easy introduction to functional programming in a statically typed language
        • If you already use JavaScript, it gives you a different perspective on dealing with state and data flow
        • There is an Elm package which allows you to step away from HTML/CSS and write your UI code in pure Elm; I think it’s a very interesting experiment and I wrote up an introduction to it. Again, you can use it to broaden your perspective on how web UIs can be constructed
        • It has a time-travelling debugger, which isn’t something widely available in other languages
        • It’s also an experiment in different approaches to building the community and evolving the language. It’s starkly different to the constant churn in the JavaScript world
        • There are at least dozens, and possibly over a hundred companies already using it in production.
    2. 9

      My main goal last week/this week was/is decreasing the AWS bill from running my own Kubernetes cluster. So far, I’ve reduced the cost from around $160 a month (cost of resources created by the default Kops) to around $80 a month. My biggest gains came from utilizing Spot Instances and Reserved Instances, which fortunately Kops makes trivial.

      I’ll also be spending this week writing up a blog series detailing my work to decrease costs.

      1. 8

        Working on learning C++ for a new job next month. (Junior dev, after 10 years of linux sysadmin / cloud / devops). This week chapter seven and up: https://www.learncpp.com/cpp-tutorial/71-function-parameters-and-arguments/ - last week finished a simple blackjack game (https://i.imgur.com/m2rm0u1.png). Also working through the c++ primer 5th edition.

        1. 6

          Effective C++ by Scott Meyers is a must-read after you are done with the basic introductions ;):

          http://shop.oreilly.com/product/0636920033707.do

          1. 2

            Or if you don’t feel like buying the books, g++ has a -Weffc++ flag that issues warnings for violations of the principles in either of the Meyers books. If you want those to be errors, also add the -Werror flag.

            1. 2

              Thanks! Will add that to the reading list. Any more tips?

              1. 4

                Also subscribe and listen to CppCast from Rob Irving!

                1. 4

                  Thank you - I did not know about these! Apparently there is both a podcast and YouTube channel.

                  1. 2

                    I believe the YT channel is no longer maintained.

            2. 1

              Hey too funny we’re both learning C++ at the same time! Though it seems you’re much farther along than I.

              I really didn’t like C++ primer and switched to Stroustrup’s Tour of C++ instead which I’m much happier with. I may steal the exercises from C++ primer just to get more practice though :)

              1. 2

                Your last sentence hits home. I need to do excersices and a lot off them to make sure I remember everything and can apply it. Good luck with learning

            3. 5

              Finishing up my talk for BSides Lisbon on Microcontroller firmware reversing and a badge for the event. The badge comes with a built-in memory monitor. If you can find the serial port and get it working, you can pause execution, drop into the monitor and play around with on-chip SRAM and EEPROM, then inspect the flash memory. By manipulating structures at the top of SRAM you should be able to get it to execute arbitrary code from flash memory.

              1. 5

                Not at work, doing advent of code 2015 to practice for this year’s contest. Also going through https://github.com/data61/fp-course to make sure I understand the fundamentals of writing code in Haskell.

                At work, adding more tape and band aids to our cloud product written in Go.

                1. 2

                  Are you actually going to try to compete? You have to be awake at the time the puzzles are published and try to work on them as quickly as possible. You’re going for that?

                  1. 3

                    I’m competing against my coworkers who are also playing. We have a private leaderboard where we gain bragging rights by solving the problems faster than others in our favorite fun language.

                2. 4

                  Teaching myself C++ with Stroustrup’s A Tour of C++ and the exercises from exercism.io

                  Kinda sad though, because there are only 11 C++ mentors there and about a zillion students. If anyone who knows C++ is looking for a great way to give back to the community without the mondo commitment of joining an OSS project, maybe consider signing up as a mentor. You can give people feedback on their problem solutions as you have time and help a really awesome community project.

                  1. 2

                    I don’t feel like joining some website, but if want to chat with me (JordiGH on Freenode or @JordiGH@mathstodon.xyz), I’d be happy to help with C++.

                    1. 1

                      That’s very kind of you, thanks!

                      This is NOT an advertisement or any kind of promotion, but I realized I didn’t give people a good sense for what Exercism is.

                      Katrina Owen who is a fairly well respected dev in the Ruby community and lately has been doing Go stuff got interested in the problem of educating new programmers, so she created Exercism, a totally open source teaching platform that gives accomplished practitioners a framework for helping newbies that focuses mentor’s efforts on actually providing helpful feedback on people’s code and newbie’s efforts on solving carefully selected problem sets.

                      It’s really quite revolutionary in my opinion, and it’s taken off big in Ruby and Python (and Perl not surprisingly) but not so much in other languages. Maybe the gestalt of those communities is different, I dunno.

                      I’ve enjoyed it tremendously and have used it to good effect for Python and Ruby in the past.

                      1. 1

                        @JordiGH@mathstodon.xyz

                        Just followed you there and replied to your “C++ as first language” query. I love Mastodon! Such high signal to noise ratio there. It’s like the intertubes before eternal September! Best we enjoy it while we can. Such things never last forever :)

                    2. 4

                      Hello.

                      Christmas holidays are approaching, and with that, a 3 week trip back to the US. So it is a great time to be working on wrapping up a lot of things for the year.

                      For work, I’m getting my client updated to a new version of emscripten, switching to WebAssembly, simplifying their build process, and working on things to reduce the size of the generated code. A lot of good fun that spans C++, JS, cmake, WebAssembly, and more.

                      Outside of that, I’ve been working again on my Z3 bindings for Rust: https://github.com/prove-rs/z3.rs

                      As part of that, I’ve also been submitting a number of improvements upstream and into the main Z3 repository. A big focus of that has been improving the documentation, both for the C API and for the Rust bindings. I’ve also been continuing a process that I started a while ago of having Z3 switch away from a custom Z3_bool type over to bool from stdbool.h … the actual change had already happened, but Z3_bool and Z3_TRUE / Z3_FALSE were still around. They’re almost entirely gone now though!

                      I’ve been continuing to submit some improvements upstream to Zircon and am slowly working on my Vega-Lite Rust bindings.

                      1. 4

                        Today is the first day that I’m full-time on The Labrary, my consultancy for helping and upskilling software teams.

                        So this week involves lots of office hours calls, improving my website, and otherwise generating leads and clients before the bank account runs out. Additionally a lot of learning.

                        1. 3

                          Be sure to check out Barnacl.es if you haven’t yet for more ideas on generating leads.

                          1. 2

                            Thanks! I’m already signed up over there, although at the moment that DNS name doesn’t seem to be resolving.

                          2. 2

                            Very interested to see what Labrary turns into. Had a read of the site this weekend and will be pointing people at you.

                            1. 1

                              Thank you Matt!

                          3. 4

                            $work:

                            • I’m on research week, so more symbolic execution and future of smart contract stuff
                            • some report editing
                            • fixing up some client tooling
                            • looking into some F# stuff I’m seeing in the space

                            !$work:

                            • I removed 369 lines of type parsing code from my compiler, which resulted from a simple grammar change I made
                            • need to finish some more work on the match form
                            • I’ve started stubbing out a new CTF I’m working on, a historical CTF with historical machines & languages
                            1. 2

                              Any more info on the historical CTF? That sounds really interesting.

                              1. 2

                                so I’ve written a historical CTF once before: Gopher, a modified RSH, and MUSH running atop Inferno, which was pretty interesting.

                                For this one, I’d like to have a MULTICS/PR1MOS-like system and a VMS/TWENEX-like system that players must attack and defend. The code would be written in languages appropriate for those two systems (like a DCL-clone, some Algol clones, and so one), with flags planted throughout. It’s a lot of work, but I think the result would be really fun, if quite challenging for participants (new languages, structures, protocols).

                            2. 4

                              Trying to find a path forward on learning a programming language. I asked around and a programmer suggested Python as a good choice, given my goals and my familiarity with HTML and CSS. My recollection is some other programmer was wanting me to learn Python as well because that’s what his project is written in.

                              I spend a lot of time online on my phone. I’ve been trying to read stuff here and I briefly checked for videos.

                              1. 3

                                Python is a great choice of language to learn! The community is super welcoming and helpful, and there are a TON of resources out there to help you get started.

                                1. 2

                                  Thanks. I have all the challenges typical of someone 2e when it comes to learning something new. The right material makes a big difference, but to some extent, I just need to stumble my way forward, as usual.

                                  1. 2

                                    What material are you learning with if you don’t mind my asking?

                                    And what tools are you using? Have you looked at Mu ?

                                    1. 1

                                      As stated above, at the moment I’m just trying to read articles on Lobsters that are coding related in some way and I poked around briefly on youtube the other day. I’m just trying to get my toes wet.

                                      I am often online on my phone, not a laptop or PC, and I’m visually impaired and yadda. I have a lot of barriers to just jumping in with both feet like a “normal” person.

                                      1. 3

                                        Normal is overrated :) I’m blind in one eye, low vision in the other. Good luck!

                                        1. 1

                                          Thanks!

                                          I’m one of the admins on a google group called Blind Dev Works. You are welcome to join, if interested. Just private message me and I can point you to it so you can submit a “join” request or I can simply add your email if you prefer. (It’s really low traffic so far. Not something that’s going to flood your inbox.)

                                2. 2

                                  From purely a tutorial standpoint I really like https://automatetheboringstuff.com to learn python. But it’s not a “learn computer science with python” type of book. The practicality of that book is unmatched in my experience though.

                                  1. 2

                                    Thanks. I’ll look it over.

                                3. 3

                                  Work stuff is… well, I don’t actually know, have the meeting to determine that in about an hour.

                                  But non-work, I’m making some progress on my from-scratch gui library again and am not quite out of steam yet. It is amazing how a few fairly minor visual tweaks and behavior bugs make it feel so much better to me, so probably going forward on that, though I also cannot put off the text layouter rewrite forever… but eh, I will probably just keep polishing the little things this week, and do the fun part of using the language reflection to generate more and more guis from object definitions.

                                  1. 1

                                    That’s a D GUI library, right? What OS are you targetting?

                                    1. 2

                                      Yes, on Windows it uses the native widget set (or the custom ones with a compile flag) and on Linux it uses 100% custom. I might add more later, but it is primarily for my personal use and all I really care about right now are Windows and Linux so that’s my focus.

                                  2. 3

                                    I’ve been without a development computer for almost a month now, but my replacement should be arriving this week. So my goal for the week is to get it completely configured for development.

                                    1. 3

                                      What I recommend doing is documenting your process for configuring from scratch, and trying to write it as a script. Once you have that script you have it for the rest of your life and will forever thank your former self.

                                    2. 3

                                      Taking a couple days off from work… realized I hadn’t taken any time off in 5-6 months :(

                                      Then working on some JS unit testing blog posts :)

                                      1. 3

                                        Sliding in to my nth consecutive week (where n is some number larger than 10 and I’ve lost count) of good mental health, I am hoping to make some progress on the following:

                                        • at least one feature in my GTD application
                                        • have my first minimal demo of my side-hustle project
                                        • process some of my GTD inbox

                                        At $DAYJOB, I am going to really try to slide through my working hours as quickly and easily as possible so that I can focus on the things I enjoy.

                                        1. 3

                                          We’re scaling down from peak traffic, which is easy for my group, so we’ll be helping out others whose system are less well designed. Interviewing a bunch of candidates for an open role on my team. Writing the 2019 plan for the group I’m part of. Boring, manager stuff. I love it.

                                          1. 2

                                            Work:

                                            • some software upgrades that where being planned for a long time
                                            • going to spend a couple of days on secondline, hopefully it’ll be quiet but probably someone will end up being upset and start yelling…
                                            • after the training I got some ideas and my teamlead approves them and wants us to continue, so that what we’ll do!

                                            Not work:

                                            • I created some personal telegram bots this weekend, maybe I’ll extend them a bit more
                                            • I did some research this weekend and found out my idea is viable. Didn’t end up doing a PoC, hopefully I’ll do that this week.
                                            1. 2

                                              Trying to stay motivated on bug fixing duty. It’s really boring so it’s hard to stay focused. How do you guys spice up dull work?

                                              1. 2

                                                Getting a remote engineering management role in a public-facing software company.

                                                1. 2

                                                  $home: I’ve started working on (and streamingpast recordings here) a geolocation library for Racket based on the free DBs that MaxMind provides. I’m going to work on documenting and releasing it towards the end of the week. Streaming definitely slows me down, but I’ve found it really enjoyable so far and I like the sense of improvement that I get after each stream (re-watching my first and my latest stream there’s quite a lot that has improved IMO (and a lot more room to improve still)).

                                                  1. 2

                                                    With my friends, we set goals with each other twice a week (stuff like “clean up my desk” or “write an e-mail to a family member”), and try to motivate each other to set short-term goals that are useful and actionable.

                                                    So I have been working on a website to track this stuff for us. I’ve been writing functionality a bit haphazardly so now I’m trying to clean things up like by fixing up how the API works to be more regular, and getting typescript set up. Also since my whole 2 other users only use the site on mobile, I’m planning on doing some proper CSS work to make things feel nicer in that form factor.

                                                    I’ve forgotten how many shortcuts you can take working on a project by yourself, but TDD sure saves me a lot of time. Yet more proof that rigor is a net positive when you have more than an hour to write something

                                                    1. 2

                                                      This week we’re finally finishing up one of our biggest projects of the year. It’s supposed to launch tonight. Then, we get to actually do work for other clients that have been put off for way too long, and that feels nice.

                                                      We recently switched to a sprint model at work (agile), but we’re still transitioning. I feel like today marks the day where we’ve fully transitioned to agile as a company. And I’m stoked for that.

                                                      1. 2

                                                        Surprisingly I actually have something to say in this thread. Last week I was trying to figure out how to use the Google API to authenticate a user with Angular, and I finally succeed. So, this week, I’ll see if I can make the whole oauth thing authorize access to google drive, and figure out that API. The end goal is the build an app that can store data on Google Drive, so I don’t need a backend and can just publish it on Github. There’s a couple of personal itches I wanna scratch that would be cool to build in this way, I think.

                                                        1. 2

                                                          Preparing for a whiteboard interview after 12 years in the field by slowly solving LeetCode problems. I know now how much I suck at writing software. The light at the end of the tunnel, at least for me, is that I will be slightly better after a few weeks of this practice. This thought is very freeing. Good luck to me.

                                                          1. 2

                                                            I might be reading into what you wrote, but I would absolutely not confuse leetcode problem-solving with software-writing ability. Those silly brain-teaser type problems I liken to the SAT/ACT (US college admissions tests). They test your ability to take them, not your intelligence.

                                                            1. 3

                                                              Right, but leetcode style problem solving does map pretty well onto the sorts of nonsense problems one encounters in white-board interviews.

                                                              1. 2

                                                                I would agree that solving LeetCode problems for an interview isn’t the same skill as actual software development, but there’s good evidence that SAT test does in fact measure intelligence in an abstract sense rather than simply the ability to take a SAT test divorced from other desirable uses of brainpower.

                                                            2. 1

                                                              $work:

                                                              • finish up some small but important tasks for some worker services
                                                              • return to a stale feature branch from a while back on our main product service
                                                              • evaluate the current effectiveness of our logs on Elasticsearch
                                                              • set something up to delete old Elastic indices

                                                              !$work:

                                                              • finish up migrating side project to postgres to play with PostGIS
                                                              • wire side project to normalize incomplete addresses w/ the Open Street Maps public API
                                                              • hopefully make it through a few pages of SICP, progress through the book has stalled for a while
                                                              • figure out some rabbit holes to go down to continue to hone my chops (feel like I need to push through a learning wall)
                                                              1. 1

                                                                Two personal projects. First is https://github.com/bytefire/vmtool which is a Linux kernel module and way to play around with Intel virtualisation. This week I’ll use VMREAD assembly instruction to read fields from VMCS which is a structure inside memory and is used to pass information between VM and hypervisor. Any ideas or discussion about how can this project be made more useful will be more than welcome!

                                                                Second is a website. It’s first time in about 9 years that I’m doing web development. This one is supposed to contain reseach content related to South Asia: historical, anthropological, social, economic, geographic and political. It will support two languages, English and Sindhi (https://en.m.wikipedia.org/wiki/Sindhi_language).