1. 21

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. 6
    • Writing a lisp compiler using this paper as a reference.
    • Doing some Lua + Love2D stuff for my tutorial channel
    • Setting up a little OpenBSD server in my dorm room ‘cause I need some OpenBSD in my life
    1. 5

      I want to learn data science related things for a very simple and stupid reason: The guys who know it seem few and far between, and there’s apparently a lot of demand for them, so I wanna be that guy.

      I’m familiar with statistics, but I’d need a refresher on the theory, and I need to learn all the bayesian inference stuff. Also, how do I work my way from there to machine learning, deep learning and more advanced stuff like that? If any of you guys have resources you can point me to, please do. Turns out I really enjoy playing with numbers that way, and also telling people that a delta between two averages that both have huge standard deviations is probably a bad idea if they want to know how much traffic they’ll have on Black Friday.

      1. 2

        The Data Science awesome list on GitHub might be useful.

        For that matter, there are awesome lists maintained on GitHub for just about anything tech related. I found the one linked above by searching “awesome data science !gh” on DuckDuckGo. the !gh part is called a bang.

        1. 2

          I found the one linked above by searching “awesome data science !gh” on DuckDuckG

          Damn … I just added 7 awesome-<lists> to my Instapaper. I dont know when I’m gonna have time to get through it all and pick the goods from the not so good, but it all looks so awesome that I want to!

      2. 5

        Finally setting up my OpenBSD router. I’ve never done bare-metal routing before; this is my first time using anything other than off-the-shelf consumer hardware.

        I was initially frustrated because my Realtek NIC wasn’t able to get an IP lease from the modem. It turns out all I needed to do was reboot the modem. -__-

        After finally getting internet access, I created a subnet on the other ethernet port, which is connected to a switch. However the subnet is currently isolated from the greater Internet. The next step is setting up packet forwarding to connect the two nets.

        My friend and I had a good laugh looking at the config files. I keep evangelizing OpenBSD to him, but he prefers Debian and FreeBSD for the time being. He certainty sees the appeal of simplicity:

        > cat /etc/hostname.re0
        dhcp
        up
        

        A whole eight bytes! That’s one tiny config file.

        1. 2

          you could shorten it to:

          dhcp

          :~)

          1. 2
            # sysctl | grep forward
            net.inet.ip.forwarding=1
            net.inet.ip.mforwarding=0
            net.inet6.ip6.forwarding=0
            net.inet6.ip6.mforwarding=0
            # sysctl -w net.inet.ip.forwarding=1
            net.inet.ip.forwarding: 0 -> 1
            # man sysctl.conf
            
          2. 4

            for $work:

            Shake

            I’m finishing up the mvp on a Shake-based build system. The purpose is to isolate and run builds for a (multi-language) mono repo. We’re using containers to isolate the builds, but are giving a significant amount of trust to the first users of the system. It also has a responsibility to produce Docker artifacts. I’d appreciate being pointed to any papers in this area to inform future work.

            UI

            On the UI side, I’m introducing Flow to a Relay-based application as well as shipping a component development environment for an internal component library. My first thought for the dev env was carte-blanche, but it is using webpack betas and I don’t have time to dig that deep into the internals to fix it. Thus I landed on using react-storybook which has a slightly less satisfying “API” (sample below) but is much more consistently developed and I can depend on it to not break as often.

            import React from 'react';
            import { storiesOf, action } from '@kadira/storybook';
            
            storiesOf('Button', module)
              .add('with text', () => (
                <button onClick={action('clicked')}>Hello Button</button>
              ))
              .add('with some emoji', () => (
                <button onClick={action('clicked')}>? ? ? ?</button>
              ));
            

            for $not-work:

            Superhuman Registry

            Building a GADT to define the API to implement multiple backends for my docker-registry v2 implementation, much like the users package has done. The first major backend is going to be Postgres based and use the large-object support I’ve been prototyping.

            personal site

            I’m trying to put some time into designing my personal site now that it’s readily deployable via the static site generator that I wrote. Historically I’ve done design work in Photoshop but I’m trying to work in Sketch for this project. I also want to get the deployment onto CI and am toying with the idea of splitting the content out from the UI code. that will give me ~3 branches on GitHub. master for deployment, leo for the UI code and data for the markdown files.

            1. 4

              I’m waiting on a potential job offer this week (hopefully not for too long), and looking over Programming in Prolog in preparation for university next year. I’m staying with my parents for most of the week, and then I’ll move down to London and being university next week :)

              1. 4

                Well, I just made the move from London to San Francisco. I’ve transferred internally within the same company, so no new-job-jitters, but starting on the mountain of boring personal admin I need to get sorted. First up, SSN and bank account.

                Who knows if I’ll have any time to do anything interesting this week :)

                1. 3

                  Welcome to the US and to the Bay! Good luck sorting through the mundane government stuff :)

                  1. 1

                    Thanks!

                2. 4

                  I’m Finishing up a refactor of the terminal emulator code into a support library TUI to be able to quickly write text oriented user interfaces (somewhat lower level than curses) without the legacy, bugs and cost of running a terminal emulator state machine - while taking advantage of some of the nice stuff I have when it comes to subwindow- window manager integration, state transfers, clipboard integration, dynamic monospace font switching, mDPI/hDPI awareness etc. Long term hopes for this is wrapping it into Rust and trying to make a LLDB/GDB frontend, but that’s for later.

                  1. 4

                    Just got a new job at a bread factory. Cleaning up around the house in preparation for Canadian Thanksgiving, with sprinkles of general maintenance. Additionally, the OCaml MOOC started, and my copy of real world Haskell arrived, so I’m back on my journey into functional languages. I’ve several Coursera classes on my plate as well.

                    On the fun side: I’m working through Project Euler and the Matasano Crypto Challenges.

                    1. 3

                      Continuing work on watchexec.

                      Last week I figured out the UI, namely how to specify which directory to watch. Many users will be running it with CWD set to the directory they want to monitor, so it’s probably easier to just easily specify file extensions to watch. I also added the ability to tell watchexec to restart the process, which is useful for servers.

                      This week:

                      • Add -E, to exclude certain file extensions from being watched
                      • Figure out how to build binaries for Windows x86/x64, and Linux for later releases
                      • A few bug fixes relating to path canonicalization
                      • Test on Linux and Windows

                      Hope to have this hit 1.0 this week, then I will work more on publicizing it.

                      1. 3

                        At work we’re wrapping up a release, so I’m triaging incoming defects and working to decrease our bug count as QA pounds on the product.

                        Outside of work I’m writing a basic synthesizer program in Common Lisp. I’m not sure where I’m going with it, but right now it plays notes of varying frequency in response to key presses. I’ll put what I have so far on Github tonight.

                        I’ve also been trying to spend as much time as possible playing outside before winter comes. Autumn is, IMO, the best season for hiking and biking in Colorado, and it’s been gorgeous lately.

                        1. 2

                          Contract work on Monday and Tuesday and then off to a conference Wednesday to Saturday (Double Your Freelancing Conference in Norfolk, VA, USA).

                          1. 2
                            • Figure out how to get Jasmine tests working for a hybrid Angular 1 & 2 app.
                            • Hopefully writing up a couple of blog posts for the company engineering blog.
                            1. 1

                              Try and pick up some of the things I’ve dropped unfinished, try my best for another big effort towards my (seemingly endless) job search

                              1. 1

                                Having finished recording events last week, I’m going to be loading them to replay a simulation and starting to think about ways to filter events.

                                The goal here is to make it easier to debug individual components (“federates”) whose behavior depends on any of the events occurring in the simulation; the workflow would be 1. run logger plus multiple federates, record simulation 2. run only the logger (in replay mode) and the federate of interest; logger pretends to be all the missing federates and replays simulation events emitted by them while debugging the federate of interest.

                                I might contribute some more to (golang rockstar) Dave Cheney’s httpstat (a knockoff of a python project with the same name?) project this week. It’s very satisfying to see how much can get done in a single, < 500 line file with go.

                                1. 1

                                  Back home after the long trip, the car made it without a scratch amazingly enough. Also the weather got better on the Pacific Ocean side vs. inland, interestingly. This is going to be another warm winter for N. America.

                                  This week I’ll be building a solar powered plant monitoring thing. I’ll use an Arduino Pro Micro clone I have left over from the Riscure hardware CTF and Sparkfun sensor modules/breakouts (these I’ll have to buy). I’m hoping to use a solar panel to both charge the device’s battery and to act as the sunlight sensor so I can log the amount of light received over time. I’m excited to solder things together and try out my new set of tiny breadboards!

                                  If anyone has experience working with solar panels and getting readings/data out of them, please contact me. I have more ambition than knowledge for this project.

                                  1. 2

                                    Here’s hoping the winter isnt too warm, we had an intersting situation up in Mont Tremblant around christmas due to a combination of mass tourists and low number of runs.

                                    1. 1

                                      Would you recommend traveling to Tremblant to ski? I’ve been thinking about making a trip there this winter, but trying to decide between there and Whiteface in New York.

                                      1. 2

                                        I’d say it depends on a few factors, but take in mind I’ve never actually been to whiteface.

                                        First of all, whiteface is a much higher mountain, so if you’re looking for powder, that’s were it is. And seeing as it’s been the site of one of the winter olympics, if you’re looking for a big challenge, that’s probably the way to go.

                                        Now Tremblant is probably the place you want to go if you’re more of an intermediate / beginner skier (Though there are plenty of expert runs there too, we’ve groomed our fair share of olympic athletes.) There are three bunny hills each with their own conveyor belts (I believe whiteface only has one), this allows us to (mostly) separate kids from adults and gives enough room to both novice skiers and snowboarders.

                                        If you’re planning on bringing children or a non skiing companion, Tremblant is a pretty great place to be, the resort is a charming mix of french mountain village and french canadian culture and has consistently won prizes for the quality of the resort (I think it’s up to 19 years in a row for Ski Magazine). Now I’m a little biased here because I’ve never seen the village at whiteface, but I think it’s one of our main advantages.

                                        Price wise they both seem to be around the same price (~90$ for a full day, before any seasonal rebates), though keep in mind that they’re in different currencies, so depending on where you hail from, Tremblant might be cheaper.

                                        Send me a pm if you ever choose to go to Tremblant, I grew up there, so I can give you a few pointers.

                                        1. 1

                                          Thanks for the response! I’m going with my dad and 2 teenage siblings, we’ve all been skiing since around age 2 and are ski patrollers at our local resort. so I don’t think beginner runs are going to be much of a factor.

                                          The challenging runs are the main reason we were considering Whiteface, but considerably cheaper lodging or lift tickets would probably get us to go to Tremblant. Does Tremblant run any good sales in that regard? If so, when would be the best time to visit to take advantage of them?

                                          I live in Ohio if that makes any difference.

                                  2. 1

                                    First year I try the https://2016.flare-on.com/ challenges, been able to give a few hours this week-end to complete 3 of them (With a total of 10 challenges). For the uninitiated, those are reverse engineering challenges, going from rather easy to nightmarish hard. This look like your usual reversing challenges found in security CTFs.

                                    Otherwise, working on Popcorn, an API on top of the Unicorn Engine emulator to load and simulate Linux and Windows binaries in many architecture. I want to use this as solid foundation for a library identification system through behaviour matching and an IDA built-in emulator. Last week I completed the base of Elf file parsing and am now working on an architecture independant API to manipulate the stack and common registers such as the instruction pointer and should be able to quickly move on to a first working prototype able to run simple Linux utilities such as cat.

                                    1. 1

                                      :work -> Setting up a Linux cluster with HAProxy for load balancing with auto failover. Already have it automated using Ansible, finally have the servers.

                                      :home -> Hopefully getting back on the learning Elixir train, been hard to concentrate lately. My schedule hasn’t mixed well with a 10 month old, I refuse to miss out on his life. Looks like I need to play late at night.

                                      1. 1
                                        reading

                                        I have started reading (the garbage collection handbook)[https://www.amazon.com/Garbage-Collection-Handbook-Management-Algorithms/dp/1420082795] which so far (first few chapters) has been very good.

                                        icarus

                                        I’m still chipping away at my programming language (Icarus)[https://github.com/mkfifo/icarus].

                                        Last week I added if statements to the language (including both backends), I also added in assignment to the c backend (currently lacking in the interpreter backend) which means I can now do fizzbuzz (using recursion rather than for loops - which my language still lacks) which you can see at (https://github.com/mkfifo/icarus#work-so-far---2c-backend)[https://github.com/mkfifo/icarus#work-so-far---2c-backend].

                                        I’m currently tossing and turning about how assignment should behave, if reassignment to a variable should be allowed - and if so - under what conditions.

                                        Because my language allows some kinds of mutation through argument I am worried about ambiguity, in c this would be similar to

                                        void foo(bar *b) {
                                          if (some-condition){
                                            b = bar_new();
                                          }
                                          b->a = 14; // does this line mutate the local b only or mutate the caller's version? depends on `some-condition`.
                                          ...
                                        }
                                        

                                        Since Icarus is primarily focused on static verification of ‘mutation contracts’ (that is, mutation being obvious and agreed upon) - this seems like a flaw. So I am leaning towards disallowing argument reassignment.

                                        However in the case of immutable arguments, again using C as Icarus syntax is unfamiliar to anyone reading htis

                                        void bar(int i) {
                                          if (i < 5) {
                                            i = 5;
                                          }
                                          ...
                                        }
                                        

                                        there is no ambiguity at all about mutation, as there is no externally visible mutation possible.

                                        So I think I might only disallow assignment to arguments that are passed as mutable (roughly equivalent to c pointers).

                                        1. 1

                                          Late to this thread because I’m on vacation; less computer this week. I did read Tracy Kidder’s Soul of a New Machine, which has been on my shelf for a while, and I started The Pentium Chronicles. Both are phenomenal reads, and I really recommend them.

                                          I’ve also been working on getting my personal VPS-based infrastructure switched over to my SmartOS-based physical server, and learning chef to get it all automated.