"What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "Setting up my personal software (daemons and bots) for raspberry pi. They are mostly written in Go so it should in theory be as simple as recompiling. And traveling for the rest of the weekend. -- "Staying offline as much as possible. I’m already on diet on weekdays - let’s see a zero screentime weekend. -- "I am doing... https://youtu.be/4lmW2tZP2kU?t=36 -- "Cram writing my GSoC proposals, and probably working on ADS-B Mode S reception stuff -- "I'll try to do some work on my project PDB! I've done some good work the last few weeks, but took a bit of a hit to productivity with the Switch I got lately. Vue.js has been a pleasure to work with for the client side. I'm starting to reconsider Java and Spring boot for the server-side too. Kotlin with the option to share code with the JS part seems like a good choice to me since I could re-use my knowledge of Java. If any of you have any suggestions for me, I'm still thinking about this decision. I started to planned the game-features a bit better so I'm starting to have an idea of what I need to work on next so I might panned the work for the next month or so. I will need to start growing my plants for my first garden and planned how to have a garden on my patio. -- "I'm attending the [\"SaarCHICKEN\"](http://wiki.call-cc.org/event/saarchicken-spring-2019) spring event where I'll be socialising with fellow Schemers, and of course working on CHICKEN Scheme. -- "Meeting up with a friend and skiing Saturday. No definite plans other than that. -- "Where are you skiing? -- "We were at Arapahoe Basin. -- "Nice! Did you get to the steep gullies? I've been wanting to get out there since I heard about the expansion... -- "No, I still haven't skied them. I'm not a big fan of chutes, so I've been avoiding it. One of my friends will drag me over there eventually, but in the meantime I've been exploring out all the tree runs they added. They're a lot of fun, but really steep and really bumpy. -- "Not going anywhere near a computer because my wife's aunt the fine arts documentarian is visiting for the weekend and she's a hoot :) -- "Work on a RFC for Ponylang, make white kimchi, maybe fix the bathroom's syphon. Maybe I will also work on the css for gambe.ro, the italian lobste.rs that we are about to launch. -- "Heading to my friend's house for an informal gathering on Saturday, hopefully going to enjoy gaming and discussions with like-minded people. I suspect we'll put some home automation things in as he has spare bits & pieces sat on shelves waiting to be fitted as well. If I get a chance I'd like to get out on the bike as well, but that's more weather dependent than anything. So far this week the UK has not been kind to a fair weather cyclist. -- "Speaking at http://princetonquanttrading.org/ -- "Probably carrying on with a gopher frontend to stackoverflow I'm prototyping. -- "From a tech perspective: I hope to finish compiling all applications on my HardenedBSD laptop with [Speculative Load Hardening (SLH)](https://releases.llvm.org/8.0.0/docs/SpeculativeLoadHardening.html) to see what the performance hit looks like. I'm pretty sure I'm gonna be down to 1995-era speeds, since SMT is disabled, retpoline and PTI are enabled, and now SLH. I also need to figure out how to properly apply SLH to the kernel. From a personal life perspective: I want to take my five-month-old puppy to a nearby park and do some outdoor training. Also probably go on a date with the missus, either by going to the movies or a dinner theater. -- "I'm going to my nephew's birthday party Saturday. If it's warm enough I'm going to go to the track and try running a mile. Was busy this week so I still have some _Nicomachean Ethics_ left. I read most of _1984_ at work this week, so I suppose I'll finish that and try to work through a few chapters of _Book of Proof_. I'm going to start doing school again this summer so I need to prepare. -- "Making final improvements to the upcoming Sound Driver reimplementation for Advanced Mac Substitute. This is a big deal for the project: Not only does it add an entirely new sensory dimension to the emulation, but it's the first code contribution from a non-principal (i.e. someone other than myself), and a highly non-trivial one at that. -- "Enjoying the nice weather with my wife and daughter. Visit my parent. Do ACL reviews when time permits. -- "Learning to write a Slack bot. -- "http://nhooyr.io/websocket -- "I will try to update my dot files. It's been two years since I did anything meaningful with them. Maybe buy an old ThinkCenter or some such computer. -- "Taking a day off in projects and the Internet in general, and going out. On sunday I probably return to start learning Rust and setting up some VMs in my homelab! -- "2 weeks ago I posted in here and I realized that it was a good as a #standup exercise for the weekend and for personal time. I also realized that when I got bored I could resort to do something as simple as checking my last comment in here for an idea on what to do next. I ended up investing some time in my personal project (learning Rust) and doing activities with the kids, while understanding that \"there's no rush\". Use your time, get some rest, do not try to do everything; but anything you do, make sure you are enjoying it. So for this weekend: * goal: get rest and enjoy my time with the family * stretch goal: keep learning (and enjoying) Rust -- "I mentioned that [last weekend I was working on an Elasticsearch plugin][last-weekend]. That went really, really well. Here's what I did: 1. wrote a skeletal Elasticsearch plugin to introduce a new field mapping type for a problem I'm working on, and got the prototype basically working 2. learned a lot about how the ES open source project handles unit tests and end-to-end integration tests, and used those to exercise my plugin 3. decided to try to get my plugin working with another Elasticsearch feature I want to add, which involves modifying the way the existing Elasticsearch `cardinality` aggregation is implemented -- together with my other plugin, it introduces the possibility to save a ton of storage cost and improve performance for certain Elasticsearch use cases that are relevant to `$WORK` 4. to do 3, I [forked elasticsearch temporarily](http://github.com/amontalenti/elasticsearch/) and began working on [my own pull request][my-pr] that lays out my plan for the features/plugins; that PR also has links to all my research/documentation on the project's goals I'm going to continue working on that PR this weekend, because, by the end of last weekend, I managed to get my prototype working [end-to-end in a basic way][working]. I'm pretty excited about the potential so I'm going to keep charging ahead on this! [last-weekend]: https://lobste.rs/s/vzg7vf/what_are_you_doing_this_weekend#c_beecaz [my-pr]: https://github.com/amontalenti/elasticsearch/pull/1 [working]: https://twitter.com/amontalenti/status/1112549119334203392 -- "Throwing a birthday party for my partner. Brunch at 11, afternoon tea at tea time. Going to have 17 adults and 20 kids running around over here. Should be fun, but I'm going to need to take Sunday off. -- "Playing my first show with my new band! Been preparing for months, lots of people coming that I respect... haven’t been this nervous for a show in many years -- "How did it go? Even if you were nervous, did you enjoy it? -- "It went really well but had some pretty large hiccups, guitar wouldn’t stay in tune the first 2 songs, 2 strings broke before my set even started, my vocals were too quiet. But i had quite a few people say really nice things so i think the point got across by the end :) -- "I was going to do some work on the chargen codebase, but I ended up deploying a self-hosted notification service and [writing about it](https://chargen.one/steve/self-hosting-portable-notifications) instead. -- "- Snapshot upgrades for our laptops (in progress) - Finish all taxes including wiring the payments (done) - Gaming - putting Deus Ex on hold, felt like visiting Arkham Asylum this weekend - Cleaning up the house while wife is out shopping - Likely watching some movies, perhaps finally finishing second season of Suburra. -- "I know I'm late to the party on this, but I spent my weekend digging trenches, and installing 17M/55' of stormwater drain. Oh and I installed the Redis/Stunnel/HAProxy configs on the production cluster, as per the reply on https://lobste.rs/s/6t3jdn/what_are_you_working_on_this_week#c_8jmdkk. -- "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. -- "I have three projects in the cooker at the moment: * A complete ground up rebuilding of a static site generator I started working on in 2015; otherwise known as aggressive refactoring * A loose port of Isso to Go; this is to help me learn Go and what better way than to port tens of thousands of LOC from one language you don't know to another? * A simple podcast publishing platform that can be self hosted while also offering federated publishing of feed My day to day at work involves PHP, Node and a substantial amount of front end JS in the form of Vue and Angular; I am a backend developer at heart so I need these personal project just to keep my sanity. -- "I can relate to you. I did quite a bit of PHP and AngularJS work at my last job. Now I’m just starting up on a job where I’ll be doing a lot of Python and React. While react is alright, I still prefer backend and Python is much more fun for me. -- "I've recently created a little programming language, that unexpectedly blew up on twitter. This week I'm working the tools ecosystem to help people learn that language. https://twitter.com/neauoire/status/1114770190552653824 -- "Oh that is beautiful! -- "I had watched someone do a screencas with ORCA ([this one](https://www.youtube.com/watch?v=RaI_TuISSJE)), it's really fascinating stuff. -- "Watching the part where she introduces U-Turn makes me want to write a musical Galaga style game in it 😂 -- "On my own time? I don't know yet. (begins ruminating) * I have an essay that's been bugging me to write it for a few weeks now about how the word \"Agile\" has lost all meaning and might have more negative than positive connotations. I need to at least rough that up -- it's going to keep bugging me until I get it out. * Going to set up a community/room on Riot.im. I want to find a way to have more in-depth discussions online about important topics. My best guess is that I'm not going to make much progress but it can't hurt to try. If nothing else maybe I can learn something to share with others. I'm also interested in the Matrix protocol and need to find some reason to dive in more * I have a tagged compilation engine I started refactoring last year but haven't looked at in months. Might be a good time to dig that code out and see if I can easily pick up where I left off. The concept of an analysis compiler is pretty cool. Always fun to play around with cool stuff. -- "I’m an avid Matrix user. What type of discussions are you most interested in? I might be interested in joining. -- "Working on my pet programming language more! I've already rearranged the base library into something resembling organised and given it a basic module system; this week I'm cleaning up the compiler, making it understand more of the language, and (hopefully) adding an inliner so the test program compiles itself in less than 2 seconds. -- "I'm making a fast reading device with 2.13in e paper and raspberry pi zero - something like spritz but without giving me headache and making my eyes sore. My first 'low level' project ever. I have managed to reduce refresh time from over 2s to about 0.5s, that's about 240 wpm. -- "A new (to me) gigabit switch should be arriving from eBay today so I can re-network my “lab”. I had been working on reimaging all my SOCs, but realized I outgrew my current switch setup. I ordered a very similar model switch (24-port, gigabit, unmanaged) for $30 a week prior that was DOA, but got refunded swiftly when I brought up the issue. I snagged one with the same specs but the added bonus of some fiber ports for a dollar or two more, so that’s looking on the bright side. I also got some nicer usb and ethernet cabling, so hopefully this means things will be slightly more visually appealing. I also ordered a Dreamcatcher board from Othernet.is last week that should also be getting here. It seems to be aimed for devloping countries so the user can aim an antenna at a satellite operating in the ku-band and suck down data to make something of an offline data store, all for free. It’s not traditional web with 2-way communication, more like multicast where you just put your lips up to a hose and suck what comes down. I’ve gotten into amateur radio over the past few months, and this seems to marry that with my long-standing interest in off-grid communications. -- "I'm confused. You're buying from eBay but it's a weekly cost...? I can't say I use eBay but I always thought it was a pretty straight forward classifieds site where you either pay a fixed price, or bid and then pay that price? -- "Oh no, no weekly cost, all fixed “buy it now” costs. I’m not sure where the confusion is, so I’ll summarize it this way: 2 weeks ago, I ordered a switch for $30 fixed from seller X. 1 week ago I got the switch and noticed it was dead. Got a refund from seller X and ordered a similar switch for $32 fixed from seller Y. Today the switch from seller Y arrives and hopefully works :) -- "Ah. I misread the *for $30 a week prior* part, as I re-read the sentence now it still sounds like it needs a comma in my head, but I understand your meaning. Good luck with it! -- "Thanks! Just made an edit for clarity. -- "ordered a switch, for $30, a week prior? -- "In spare time: - actively looking for a new job (PMs and other suggestions highly appreciated! Go language expert; experience with distributed as well as low-level systems; preferably in Go, but others possible too (polyglot), except pure JS; in Kraków, Poland, or remote) - writing a Dalvik assembler (in Nim): an experiment with a hope of eventually enabling native Android development without needing Android Studio nor JRE. -- "After the [weekend's success](https://lobste.rs/s/br7uxb/what_are_you_doing_this_weekend#c_8rpc4u) with the Redis production environment I now have to see how well Qless works in a replicated Redis environment, and I'm already roughly elbow deep in ruby trying to make the provided `qless-web` mini-app work with non-default connection details (our main app is not ruby so the recommended 'just mount it via rack' isn't an option). I also need to move user sessions off the web server's local disk into either the Percona Cluster or Redis, so we can finally run a fully redundant (within this DC at least) stack (we already have redundant LBs and PXC/Redis nodes). And I need to start migrating the current cron-based faux queues into actual Qless workers & jobs. -- "Apart from work I'll continue hacking on my 7.5\" e-ink display, hacked it together in an ikea photo frame this weekend. This week I intend to clean up the code, write documentation and hopefully speed up writing an image to it which was particularly slow. Project is on Github https://github.com/jelly/e-ink-status-display -- "A few things: * Sorting out [44CON sponsorship](https://44con.com/44con-sponsors/) * Bidding on some security consulting work * Writing a ludicrous amount of 44CON promotional tweets to be scheduled over the next 5 months (kill me now) * In the downtime I'm working on my collaborative writing platform, chargen. -- "I spent last week laying out PCBs for an experimental neuromodulation device, which was frustrating, because the PCB layout tool I use is an Australian monstrosity written in Delphi which is stonkingly expensive, and it's chock full of inexplicable design choices and weird bugs... (I'm an Australian monstrosity too, and chock full of weird bugs thanks to my toddler, but at least I'm written in C.) The neuromod device is particularly interesting because it's driven by an FPGA which I'm writing in Python via Migen. Having worked with VHDL/Verilog over the past decade it's a really refreshing way to design logic. Migen has its faults - chief amongst which is lack of documentation - but it's a very good tool. Being able to structure systems in a high-level language, and automate crappy jobs like memory map assignment, is fantastic. Now I'm getting my hobby project moving again, which is a plug-in cartridge for a Sega Saturn that hijacks its CD-controller brain and streams \"CD content\" from an SD card instead of a disc. The core hackery has been working great for years but now I'm trying to turn it into something people can pick up and use. I'm slogging through manufacturing and production test systems, which feel like 10× more work. I'm glad I don't do manufacturing or test for a living! Some interesting problems but they're just not up my alley. -- "Working on wrapping up and releasing some personal projects I've had mostly ready for a while. I just pushed [skiparray](https://github.com/silentbicycle/skiparray), an unrolled skip list library for C. It has roughly the same relation to a regular skip list as a B-Tree has to a basic balanced binary tree. Aside from that, getting back to learning TLA+, working through hwayne's book. -- "I'm working on [crates.rs](https://crates.rs/), which is a showcase of Rust libraries and applications. I'm tuning [the new crate ranking algorithm](https://users.rust-lang.org/t/improving-ranking-and-crate-search/26765), so hopefully it'll be easier to find the little gems that are there. -- "I'm working on more of my [Site to Site WireGuard](https://christine.website/blog/site-to-site-wireguard-part-2-2019-04-07) series. This week I hope to tackle the custom TLS CA (with [minica](https://github.com/jsha/minica) to manage certificates) as well as setting up custom endpoints with [Caddy](https://caddyserver.com). I have a map of some of the custom endpoints I am playing with [here](https://home.cetacean.club/). I am also about to move from the Seattle area to the Montreal area. If anyone has any Quebec French textbook ePub or PDF links handy (or a place I can buy them), I would be most grateful. Be well, all. -- "- over the weekend I figured out a way to make mocking a nicer experiment in Python (well at least CPython). I want to document the library I wrote to do this and set up building it - my Chinese classes started again and I'm trying really hard to get back in the rhythm and study -- "I'm working through _Finding Success (and Failure) in Haskell_ today. I bought my copy this morning and I've finished most of it. So far not much is new to me, but I'm now up to the chapter on applicative, and I've never really understood applicative so this should be useful. For my currently \"stealth mode\" startup I'm essentially doing chores; implementing features in Haskell with an event-sourcing approach. For [NewBusinessMonitor](https://newbusinessmonitor.co.uk/) I'm going to send out about 1,500 sales letters to businesses in the UK and try and drive some more sales. NewBusinessMonitor automates the enveloping, printing, and sending, so this is pretty simple. I just select 1,500 businesses I want to target and click send. It will merge the recipient details into my sales letter template for me. -- "Rewriting an old PHP + JS web interface with Flask + JS. My goal for midweek is to deploy it and ensure it is both responsive and minimal. Making sure my other Flask apps are secure and following best practices in regards to security. -- "Mostly still trying to get my footing as a Dev Lead. Couple months ago, I got moved officially into a Dev Lead role and that's been interesting - trying to determine costing and coordinate a team is a new and fun ball game I've not played yet. Besides that, writing a lot of Rust which isn't new. -- "At work, I'm implementing a DSL for high-speed pattern recognition in streams of data. Right now, it is a simple AST-walking interpreter. I'm transitioning it to a compiler + bytecode interpreter, hoping for a 3-5x speedup. I'd like to wrap that up this week. Additionally, I'm banning all dynamic allocation once we are running, which should reduce variance in the latency from input to output. Outside of work, I'm just focusing on resting better. I made it to see Muse last week and they were amazing, but I haven't quite recovered from the trip and the show. -- "Playing around with actually making a game with [ggez](https://github.com/ggez/ggez), a lightweight 2d game framework for Rust. This has helpfully motivated me to actually work on ggez a bit more as well as some add-on tools, which has been nice. I want to keep going on this a little bit longer, then return to [Cargofox](https://cargofox.io/). -- "- Working on a feature for my magazine clients to allow them to attach lots of files of various types to each issue - Trying to finish up a PR for my templating language which I started like a year ago (https://github.com/positiondev/larceny/pull/61). It's using StateT monad to store all the template state, instead of half passing parameters around explicitly and half keeping it in StateT. It makes the language more like its inspiration, Heist. I don't know if I like it, though (which is why it's taking me so long to finish). I might make a second PR to compare this to that goes in the opposite direction and gets rid of the State, fully embracing the quirky Fn \"plain old Haskell functions\" style. -- "At home, I have a fibre media converter coming from Amazon and I'll swap out the terrible Bell basestation out when that arrives (for a couple of perfectly cromulent Netgear doo-dads). I'll also trade down to 1Gb/s from 1.5Gb/s, because honestly without bonding two interfaces we don't see the 1.5Gb/s, so eh. I also picked up an almost unused 2015 MBP with all the bells & whistles, so I'll be spending some time getting that thing set up exactly right. At work, there are some organizational changes coming, so I'm prepping for those. Doing Scala code reviews, because we're badly understaffed at the moment -- attrition and vacation collided this last two weeks, and there aren't enough hands to go around without drafting in the managers. -- "I'm making a little Hacker News to Discord pipeline system. I implemented SMS too, now refactoring all that to be able to add more sources and destinations. Wasted quite a bit of time reimplementing the Discord API/Websocket because discordrb didn't work as well as I need to. Also something similar to FactoryBot (rails app) except that it's just ruby so there is no before(:create) ordering bugs. -- "A whole bunch of stuff (and super excited for it)! Finishing up an extension for [Ueberauth](https://github.com/ueberauth/ueberauth) to make both e-mail sign-in and [IndieAuth](http://indieauth.spec.indieweb.org/) more feasible. Then I'll work on finishing up the hosted service for [Koype](http://koype.net/) and its 'hub'. Then I think I'll sit down and make a 'template' Elixir/Phoenix project since I've built like six of them with a companion post. -- "At work I'm working on manual testing for our next release. Outside of work, I refactored the main data structures in my quadtree library, and I want to benchmark against the old implementation. I'm also going to start on a Common Lisp binding to the Blend2D library that was posted a few days ago. I started on Friday, and got the code built on Linux, but ran into a problem building on OSX. Apparently at some point Apple broke compilation on Mojave with the XCode command line tools. The compiler can't find any standard header files. I'm getting *very* close to just installing Debian on my macbook and being done with Apple software altogether. -- "Last week, I worked on integrating llvm's Speculative Load Hardening (SLH), a SpectreV1 mitigation, into HardenedBSD. Due to its large performance hit (10% to 50%), it's disabled by default. FreeBSD recently gained an incomplete Address Space Randomization (ASR) implementation. This week, I plan to start work on allowing FreeBSD's ASR and HardenedBSD's Address Space Layout Randomization (ASLR) to co-exist in the codebase, allowing users to switch between the two implementations with a boot-time tunable. -- "What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "Yard work is planned. Local housing area society (sorta like a HOA but not as strict) has its annual meeting. I plan to attend to show my face and to support local democracy ;) -- "Hoping to get a lot of work done on my source hosting/build/deployment system, I have been working on for a while. Maybe go visit [this tower](https://www.effekt.dk/camp/), which was just completed near my home, if the weather is good. -- "The \"Effekt\" camp seems really nice! If I visit Denmark some day, I'll definitely check that out. -- "Going to visit my girlfriend’s parents in my newly bought 1990 Volvo 244. -- "Heading off to the Norfolk Broads with a few other members of my Sailing Club, to sail round in big yachts. Looks like the weather is going to be favourable for us, really looking forward to being around on big boats again (I've been sailing a 20' keeled dinghy in the last couple of years.) -- "Taking part in a small shooting competition tonight. Machining a raiser foot to our new washer: laundry room floor is too steeply inclined for it. Raking some moss in the backyard. -- "Final weekend here in Bangkok before we fly back to Poland. It's bittersweet. I'm going to miss the warm weather, but I'm also looking forward to driving [my tiny car](https://www.instagram.com/p/BYeIDUpnlp0/) again. -- "Wow, that is a tiny car. -- "Now that my zine work is wrapped up, I'll be cleaning out and updating all my SBCs and likely spend tomorrow out in the city as the weather will be great for the first time this year. -- "zine work what is that? Is it zines like the papers or what? -- "Yeah, I'm working on a paper zine for https://n-o-d-e.net and have been for a few months. There will be a digital version too :) -- "Ah looks interesting, I'll check it out! -- "Going with a friend to some kind of woodworking mentorship/workshop introductory event ahead of the real one a month from now. The friend wrote an application, put me as a participant, and then told me about it. Our idea is vaguely to find some local old furniture nobody wants or some historically related stuff and rebuild it into some funky postmodern thing that might fit into a local alternative café. So tomorrow we’re going to meet the others and check out the situation... It’s all a bit of a joke but I hope we can make something out of it. -- "Working on designing the virtual architecture for the virtual micro-controllers in the video-game I'm working on and on the assembler for that architecture. -- "A wonderful cornucopia of things: * Taxes * Setting up a local xapian/omega instance and indexing my documents * Finish reading a couple of books * Maybe go for a bike ride if the weather isn't terrible -- "Fixing the motorcycle that I wrecked about a year ago with a few buddies and then hopefully working out exactly how to integrate a database into my rocket.rs site. Oh and finishing up reading American Gods. -- "Probably gonna try to remove the steering column in my DeLorean so I can replace the steering column brushing. This'll be the first time I'll be doing something that puts me in danger if I mess up (I'd lose steering control), so I've been delaying doing it, but I figure I'll have to do it at some point. -- "Work on several patches for utils at work, probably put in some time on development of my C compiler. Maybe read a new book. -- "Which language are you writing the compiler in? -- "Cool! What is the reason for writing a C compiler? -- "implement localStorage with 2 of my sites so that they remember which page you last visited - also will add a link to clear the storage: - https://cup.github.io/umber/radio/ - https://cup.github.io/umber/tv/ -- "I will head off to the beach and read Domain Model Made Functional by Scott Wlaschin. -- "Starting the tomatoes! Trimming another apple tree. Playing with my kids! -- "Not entirely sure. I'm skiing with a friend Saturday, possibly Sunday also. Other than that I'm rewriting the [Teeko](https://en.wikipedia.org/wiki/Teeko) game I created a while back. My main goal is to add computer strategies that compete against each other (or a human player), but the current implementation makes it difficult. I'm going to make it use CLOS, which should simplify it quite a bit and make it easier to do what I want. I'm also removing the Qt dependency. I want to pull out the main game logic into its own package and create a new REPL front end and a simple GLFW front end. -- "Visiting New Orleans for a wedding just months after having been married there myself. Good times await. -- "Drinking a tall glass of ice cold water. -- "On Saturday, while my wife works in the afternoon, I'll probably take my almost-five-month-old puppy to a state park (Patapsco, probably) and do some outdoor training. He also needs to get used to riding in the car, and not just for going to the vet. On Sunday, if I feel good (depression and anxiety suck!), I'll probably work on HardenedBSD Foundation financials and researching a regression in OPNsense 19.1. -- "I intend to have an article detailing my new Gopher hole on my server tomorrow. I've been intending to have a Gopher hole for years, I believe, but hadn't gotten around to it until recently. I'll be submitting the article here, tomorrow. -- "I finished Miyamoto's _The Book of Five Rings_ and I'll finish Yagyuu's _The Book of Family Traditions on the Art of War_ tonight. I'm hoping to read _Nicomachean Ethics_ tomorrow, but not sure I'll get through all of it. I'd like to read through a paper on Idris as well. -- "Due to a fault with previous laptop, I have one with a Touch Bar. This might not be temporary, so I will be attempting to re-learn the muscle memory I had for using CTRL-[ instead of ESC. I thought this might be a complete solution to the problem of having no (usable) ESC key but I forgot there are plenty of OS and app functions where I would reach for Escape to cancel something. Might need Karabiner or something. -- "You could also remap Caps Lock. macOS now even has this as a native option: https://stackoverflow.com/questions/127591/using-caps-lock-as-esc-in-mac-os-x/40254864#40254864 -- "I have Caps Lock mapped to CTRL (again since ~20 years ago) but as it’s possible to treat a key down in combination with another as CTRL and a key down+up on its own as ESC maybe I could try that, thanks! -- "Drinking absinthe, riding my bike, doing schoolwork Order is UB -- "Going to a Vince Staples show in Oakland tonight! Otherwise, I'm unreasonably excited about doing laundry and hanging out with [my dog](http://take.ms/wOpc5). I've been traveling a lot lately with more coming up, so it'll be nice to just...not. -- "I'm going to Chicago to (belatedly) celebrate my birthday, where I'll eat ramen and pie (but not together), see some animals at the zoo, and top things off with a visit to the Museum of Science and Industry. @hwayne, you're a Chicago person, have you ever been to Wasabi or Bang Bang Pie & Biscuits? -- "I put some code on GitHub that is a cleaned up version of some scripts I was using to generate Prolog files: https://github.com/cloudbootup/cwacop (cloudy with a chance of prolog). Plan is to work on it enough to keep the ideas fresh in my own head. -- "I finally got around to making [a blog](https://benoncoffee.github.io)! :) I plan to do a minor revision of my first post tomorrow, as I always seem to goof up with things when I work late in the evening. -- "Working on https://nhooyr.io/ws -- "Site doesn't work for me, do you mean [github.com/nhooyr/ws](github.com/nhooyr/ws)? I am not a Go user, but it looks good. Having a relevant README is a huge plus. -- "Yea it’s broken for some reason. Will fix thanks. -- "Going to see a juggling show with my lass. ..and read lobters ofc -- "This time I only plan to rest (spent the last few weekends working on presentations). 1. Gaming - finished Far Cry 4 last week; now going through Deus Ex Mankind Divided; 2. Still reading the Godfather - so far I'm deeply disappointed by the book; 3. Dog walks tomorrow at least several hours in the park with Frisbee. 4. Watching some movies with wife. -- "On Friday eve I pushed my [.dex assembler library in Nim]( https://github.com/akavel/dali ) to a state where I'm happy to say the first minimal PoC is finished: it appears I can correctly [assemble a few .dex samples from the web]( https://github.com/akavel/dali/blob/master/tests/tdex.nim ) now. To be able to assemble/link/package a proper .apk file (still without JVM and Android Studio), I [believe]( https://github.com/fractalwrench/ApkGolf/blob/master/build.sh ) the next thing I need to do would be to [port apksigner from Java to Nim]( https://github.com/akavel/apksigner ). But first, I want to do some initial spring cleaning at my place. There's *way* too much of it for me to be able to complete it over the weekend, but I must at least start :) Also meeting family and some friends. -- "Oh a fellow nim:er, for how long have you been coding in it? Why do you want a nim .dex assembler, is it just for fun or do you plan on using it elsewhere? -- "Hi! Since just a few months ago really. How about you? :) As to the assembler... it's mostly that I want to code some apps for my phone, but I kinda hate the heavy weight of the whole Android Studio + JDK environment (at least when considering doing this in my free time). And then I don't even like Java that much. I tried writing some stuff in [Yeti]( https://github.com/mth/yeti ) once; I liked the language quite much, but then the complexity and slowness of the multi-stage compilation process/feedback loop became even more unbearable. So, now that I found Nim, and it feels good to me for those kinds of hobby projects, I wanted to try pursuing this alternative path I considered for quite a long time, and see how far can I get with it. I explored PWAs in the meantime, but I found them too limited and too slow for me. Similar with React Native. And all in all, .apk and .dex are just file formats, and Android is kinda open, so I imagined there should be some specs and examples somewhere... and indeed found some, they looked approachable, so, you know, I pondered some name I'd like for the project for a while, then git init, nimble init, vim, and here we are, yet another hobby project, like I don't have enough unfinished ones out there already ;P -- "Same here. Thing is that I want to create a keyboard replacement, so the requirements are that it has to be fairly resource efficient and make use of low level systems features. At the same time I want to demo it with HTML technologies. So I've been diving into it for some months. Do you think your project could be a part in making nim available for the android platform somehow. That would be extremely interesting. -- "Lol, hahaha, yeah, sure, that's certainly the \"moonshot\" best-case scenario, you've seen perfectly clear through my deception :D I actually have a few various ideas how this could be useful however, trying to think about minimizing effort so that it could be doable with my limited time. Note (I've read somewhere recently) that it seems Nim can already be used to build the native part of JNI apps, so in a way it's apparently already \"available for Android somehow\"! :) But I believe it still requires Android Studio, so I'm pondering maybe trying to replace this part of the equation with a wrapper built purely with Nim? Though a thought of this maybe becoming a full-blown backend for Nim surely burns at the back of my mind. Still, I'm trying to plot my paths such that intermediate steps could also be useful to some people, in case I get sidetracked at some point. That said, I did take a quick glance recently, and at first sight, the Nim backends seem to look surprisingly approachable. But I must resist the overwhelming temptation, and focus on an incremental approach :) Hm, by the way, but would you be maybe interested in collaborating in some way? Just asking, don't feel pressured or whatever. But if you e.g. were, say, curious to explore what it might take to emit the first [\"black triangle\"](http://web.archive.org/web/20120505055300/http://rampantgames.com/blog/2004/10/black-triangle.html) (i.e. like hello world or whatever) from Nim backend to .dex, wow, that would be *soooo* immensely exciting! :D As to keyboard, stuff like this is sure interesting, had some thoughts about those too at some point :) -- "Sure I would be very interested! Even though I'm currently targeting computers mainly as that's where I feel most at home, I'd like to target android devices as well. I have a chat room set up for my keyboard discussions. Head over there and we can broaden the scope to nim on android as well. https://discord.gg/8sPDxRa -- "Trying to work on a mouse replacement scheme, that's sort of out there but I always wanted to do. The premise is the following. Start out with the mousekiller, keynav (link below). That works by dividing the screen into four and then dividing and conquering until you reach your destination. I'm not sure whether anybody seriously uses this but perhaps some of the tiling wm guys swears by it. If that's the case please comment because this might be of interest!! So my take is that if we throw in some simple image analysis into this we could find discrete blobs. So instead of having to select from width by height elements top, it could be boiled down to say 3000 or so discrete elements. What I'm currently am looking at is using a FFT to get the frequencies from the display. The idea being that icons are not discernible by means of colors. However they will change pixels at a similar rate, compared to backgrounds. This means that the system could operate without intrinsic knowledge about the UI system. Which might come in handy for say VNC sessions, games and whatnot. All in all I'd like to think of it as an endeavor similar to pentadactyl/vimium/etc. As far as FFT is concerned, I'm not sure if this is the best case. There might be other simpler more well suited algorithms that could be plugged in instead. What is needed in essence is a function that calculates an energy value for each pixel. Something along the line of what they are doing with seam carving, content aware resizing (which is an source of inspiration). https://www.semicomplete.com/projects/keynav/ https://en.wikipedia.org/wiki/Seam_carving -- "I've done something similar in the experiment pile as an alternative to mouse acceleration and accessibility support. It worked well enough to put it in the \"clean up, integrate, writeup\" queue. Instead of FFT and blob detection though, I went with gaussian downsample + sobel operator, then raytrace along the mouse cursor vector, and at each intersection over a threshold, walk the edge and look for a loop, if found, warp to the centre. -- "Interesting would you happen to have a demonstration of it somewhere. Would be fun to see it in action. I see how a sobel operator would make sense even in my case. And where thinking of something similar. I made room for implementing different filters for detection to see what works. I feel that for some cases, say in some future setup where you want to interface legacy systems this kind of thing could be extremely useful. Since I feel that in the next big paradigm mice might not be available. Say if you have a fancy VR setup and want to access legacy mouse driven interfaces. -- "Nothing online yet, holding it as part of an article. The better one (and for fancy eye-tracker as well though) is eye trackers. In VR they are more than enough precision wise, but even desktop tobii- ones are about the same level of precision (~0.5-1cm) as this tactic, but cheaper and more robust. -- "interesting when is the article due? -- "Not a dang thing. I think I'm going to declare today \"Horror movie-fest day\" and veg-out watching popcorn movies. -- "Working on an Elasticsearch plugin -- custom aggregation and corresponding field mapping. Really fun problem. Spent some time researching it over last couple weeks, and I have the whole weekend to focus on it. Since I've been coding Python for years and haven't written production Java code since Java7, I'm also familiarizing myself with the new tooling required -- sdkman, gradle, intellij, java 8/9/10/11. -- "I am watching the [HaskellRank](https://www.youtube.com/playlist?list=PLguYJK7ydFE4aS8fq4D6DqjF6qsysxTnx) series of screencasts and taking a Pluralsight course on [Newtonsoft Json](https://www.newtonsoft.com/json). -- "What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "Hmm polish up a library wrapper for the Salt Stack API in Rust, do some reading on basic physics and see about messing with SDR again. Nice quiet weekend. -- "I recently became a homeowner so this weekend I'm prepping most of the walls for painting and hopefully finishing removing the wallpaper in the basement. -- "Adult life strikes again! -- "create SVG favicons for my websites https://stackoverflow.com/a/31522006 -- "Learning some FM synthesis to improve my sound design skills. -- "- [Releasing Pony 0.28.0](https://github.com/ponylang/ponyc/issues/3103) - Seeing \"Us\" - Exercising - Relaxing -- "Us was really awesome. Y'all should go see it. And I got that [release done](https://www.ponylang.io/blog/2019/03/0.28.0-released/). So I guess all that is left is exercising and relaxing. Nice. -- "I'll be preparing for a computability and formal languages test in a few weeks, and will be writing an APL interpreter in Elisp in whatever time is left. -- "Pool tournament (super rusty, but should be fun), maybe some more VR and drawing practice. -- "Coming back from the vacation we went on to celebrate our tenth wedding anniversary. I'm dreading Monday; I know work's going to be pretty bad. The vacation was nice though. -- "This week I'm trying to keep the Carpal Tunnel Ghost at bay, so I cashed in some of my ubiquitous extra hours to extend the weekend. I've been baking long rise Emmer wheat rolls, riding my fatbike in the snowy forest, and listening to Galbraith/Rowling's fourth Strike novel (after 35% I'll be generous and say \"OK minus\"). I'm always surprised at how many creative ideas I get when I just force myself to stay away from the computer, without having any other plans for the day. It's a bit like spring cleaning, should really make a habit of it. -- "Finishing *Mao II*. Trying to read more of *Code Complete 2*. Trying to maybe take my film camera out and find something to shoot. There's lots of natural beauty surrounding me. There's also the fringes of the city, which might offer up some nice views. Continue restoring a Neo Geo arcade cabinet. New vinyl siding arrived and I need to actually plan out the entire process of applying it without making a mess of things. Maybe watch *Street Fighter* (1995)? -- "I have to take a test for work, so I can be an actual employee. I'm also going to the local university library; going to check out _On War_ and some Aristotle. Going to the library also means getting some of the world's best pizza! -- "1. Working on slides for my 'Googling in PostgreSQL' presentation this Thursday. I will go over the functionality provided by the database and how to use it to implement a full text search over a corpus of emails (how to design a search document etc). 2. Gaming still haven't finished Far Cry 4 and Sundered 3. Continuing to read the Godfather -- "Can't wait for the slides! I was thinking about working on this kind of project for fun and for learning more about how search engines work. -- "The slides arrived, however they are in Polish. You should be able to get the gist of it from reading it and be able to reproduce the test setup as I include a clonable repository and dataset that you can load to your postgres instance. Slides: https://junk.tintagel.pl/talks/Googling-in-PostgreSQL.pdf Dataset: https://junk.tintagel.pl/talks/misc.tar.gz Repo: https://github.com/mulander/googling-in-postgresql 1. Clone repo 2. Download misc.tar.gz 3. tar zxvf misc.tar.gz 4. make -- "Hacking on some small language. Last week was rather successful: - Made the language's `===` operator work on all types (not only references) - Introduced a shorthand syntax for function definitions, whose body consists of a single expression - Implemented some intrinsic operations in assembler So my plans for this weekend: - Migrate all language modifiers to annotations - Better parsing of negative number literals: `-1.isNan()` should work, I shouldn't have to write `(-1).isNan()` - Introduce `Unit` and `Nothing` types, and discard special function syntax for procedures - Improve naming of existing Stuff, `internal` -> `intrinsic`, `int` -> `Int`, `Nil` -> `Pending`, `Str` -> `String` etc. -- "What language are you making? Do you have it up or documented anywhere? -- "There isn't much documentation yet, but I link to/write up some documentation I should have done long ago. My starting point and a short intro into the design philosophy before I go to bed: From where I see it, most people have an idea or want to accomplish some specific thing when they create a language. They spent a lot of effort to get that aspect right and everything else is largely left unpolished. My takeaway from this is that we tons of languages which are good at 20% of what they do, and terrible at 80%. The difference between languages is largely how the 20%/80% have been allocated to different parts of each language. My goal: - A language that discards all the fancy ideas and focuses on getting the basics 100% right. - The most minimal, useful language leveraging all the lessons we learned from the last 40 years of language design. This means discarding decades of cruft, unifying similar language concepts and minimizing surface syntax&semantics. I want to have a core language that is minimal, correct, self-consistent that – instead of having no obvious defect – has obviously no defects. Three guiding principles: - A language can be popular _or_ high-quality. - Good language design is leaving things out, keeping things out and throwing things out; not adding things. - In a world in which no language seems to be done ever and keeps adding new features with every release; I want to actually finish the language, declare it done after I have convinced myself that there is nothing left to remove. --- Wow, that text got long. Sorry for that. Some actual technical details when I'm on a real computer tomorrow, I promise. -- "Continuing to work on my language learning iOS app side project, mostly at a local Coffee & Code meetup. Now that the other night I finally solved a terrible issue I'd been having with AVFoundation for a while now (hooray for proprietary libraries emitting numeric error codes), I'm stoked to get moving with it again. -- "I'm working on configuring my work setup to be more vim/keyboard focused :) -- "Can't recommend [this](https://pragprog.com/book/dnvim2/practical-vim-second-edition) enough. Short lessons - \"kata\" that if you spend a few minutes on them a day will accelerate your Vim-fu tremendously. -- "dude. You're awesome. Thank you! -- "I second this recommendation. The tips in Practical Vim are clear and to-the-point. I wish all technical learning could be like this. -- "Definitely! I started to say that I wasn't sure whether some topics would lend themselves to kata more than others, but then, if the goal is to come out the other side building a skill (Learning Vim, programming in Haskell/Python/C++/whatever) then kata are probably a good fit. -- "I'm out on holidays this weekend, I've just arrived in Miami and are flying to Tampa tomorrow only to roadtrip back to Miami past Disneyland and mother trucking Kennedy Space Center. I'm stoked :-) -- "Hiking up Black Mountain (CA)! -- "Backcountry skiing in Utah's Wasatch range! I'll be here all week! -- "Hiking. Also probably watching the fallout from the Mueller report. -- "Ooh it's gonna come out this weekend! I saw it on Lobste.rs! :) -- "Playing with writing a fuse filesystem in rust. -- "I dunno, probably something. I kinda wish these threads were \"what did you do this last weekend?\" instead, I'd know for sure by then. Might be one of: * Work on my [tokio-coap](https://github.com/azdle/tokio-coap) library. * Finish up my new automation system for the front door to my apartment building. * Keep playing with writing some really basic parts to a git implementation in pure Rust. * Go hiking on a bit of the [Superior Hiking Trail](https://superiorhiking.org). * Clean and fix my bike now that its spring so I can start biking to work. * Put up a hammock and read something. * Something completely different from any of that. -- "* Sell a car (other half disagrees that four is the correct number of cars to own) * Replace the front brakes on the big car, given the parts are here and the ones on the car are basically shot * Oil/filter change on the smallest car, given the parts are here, etc * Potentially get out for a bike ride * Go racing in the dinghy! Finally got her in the water yesterday and pottered around for a bit. Sadly my crew is away camping this weekend, but I'm sure I can still have fun without them even if I don't get a handicap boost for being single-handed. -- "* Bike work. I just built an e-bike (AMA) and tomorrow I'm putting on a suspension fork and upgrading the motor mount. And replacing the chain it ate two nights ago. * Attempting to buy a pickup truck. * Oh yeah I have a six-month old -- "Do you have any details written up about your experience building an e-bike? I ride an h-bike (human powered bike), and love wrenching on bikes, so I'm intrigued by what you did and your experience since it seems like you would have to modify quite a lot to make it work. -- "I don't have anything written up, but basically I added [a Cyclone 3000W mid-drive motor ordered direct from Taiwan](http://cyclone-tw.com/) to a Surly Karate Monkey I already had. I got [this battery sold by Luna Cycle](https://lunacycle.com/triangle-52v-panasonic-ga-18650-24ah-pack-high-power-long-range/), added some waterproofing and padding around the edges, and installed it in the main triangle of the bike. Today I'm putting on a [suspension fork](https://www.sram.com/rockshox/products/30-gold) to replace the stock rigid fork, swapping out the crap mounts that came with the motor in favor of [this motor mount also sold by Luna Cycle](https://lunacycle.com/luna-cyclone-3d-cyclone-mounting-system/), and replacing the chain it ripped apart a few nights ago. :) -- "I suspect you need a special chain for that since it ate one a few nights ago? This sounds like a very fun project, one day I would like to build a bike! -- "Well, my chain selection is limited because I have a 9-speed gear cluster in the rear, so I can only use a nice, heavy, wide BMX chain for the motor-to-chainring drive. The chain it ate was a few years old, I'm hoping that had something to do with it. The work today went well, except that I cut and yanked the throttle cable apart, so I ordered a new one of those. I'm certain the new motor mount will perform a lot better than the old one. -- "> I just built an e-bike (AMA) Any things you wish you'd know before on building one up? (I keep debating retrofitting the other half's bike with ebike gubbins. Can't decide if that's worth it or if I'm better just selling the current one and getting her one that's already put together.) -- "I did a fair bit of research, so I'd say: not really. I used to have a Very Loud bike stereo setup for a few years, so I was prepared for the chore of running DIY, high-current electronics on an all-weather bicycle. I am having fun so far! -- "Footnote: looks like I will have a bike stereo again. Just found and ordered [this very inexpensive 2x150W board](https://www.amazon.com/gp/product/B07L4T1397) based on the [Texas Instruments TPA3255](http://www.ti.com/product/TPA3255) class D amp-on-a-chip. It'll run right off my 52V battery. I'll have to figure out speakers and mounting, which is easier on my other bike because it has a front rack, but that's not too hard. -- "Being evening on call for work and when not on call going to the [MFA Boston](https://www.mfa.org/). Also more playing with trig and curves in PICO-8. -- "IFrame payment gateway integration. Hike? Pet doggos!! :D -- "I loved the look of the recently-posted [Endlessh](https://lobste.rs/s/whumzd/endlessh_ssh_tarpit) project so much that I'm going to integrate it with fail2ban and iptables to redirect banned attackers into the tarpit. -- "Apparently we have similar ideas. I just threw an SSH tarpit together earlier and was looking at how to integrate it. -- "Fighting off strep throat. Which consists of downing antibiotics, ibuprofen, gargling aspirin and saltwater, sucking on Tyrozets and generally feeling miserable while sleeping on the couch so I don’t get the wife and kids sick... -- "Continuing to unpack infrastructure as prolog. The use cases at work are mostly a success so the idea has legs. -- "It's crunch-time on one of my Haskell apps for the next few days before a few meetings in the coming week with potential investors and potential beta partners. One of my business partners had his last day at his day job yesterday; he resigned so he could join me full-time on this project. That's two of three co-founders full-time on this now. This week will also be my final full week in warm, sunny Thailand before I return to Poland, and freeze. -- "Taking care of the kids, 2 of them: 5 and 2 years olds. If I get to have a bit of time for myself (like now) I'll probably read something about Rust and continue working on my pet project, written in Rust. Days are sunny but cold, maybe a bit of bike practice with the little one. Going to town for an ice cream after lunch and a few games of chess with the kiddo before dinner. #simplelife -- "Trying [LÖVE](https://love2d.org/) with [Fennel](https://fennel-lang.org/). This is *fun*. -- "I finished up my AWS/Lambda/CloudFormation/F#/Python/Vue/C# project this past week. I think I'll take a bit of free time and clean it up, check it in, maybe make a quick explainer video/blog about lessons learned along the way. -- "Writing a little tool to split old git commits easily https://github.com/FedericoCeratto/git-split -- "Visiting family & old friends, so pretty much nothing else. Next week will be a lot, so I'll try to do some work beforehand while I travel back and forth. -- "My old trusty ps3 broke down last weekend, after ~12 years and I was kind of bummed about it. I'm on call this weekend and I'm going to grab a new ps4 slim and a couple of second hand games. Other things: * more Go reading, I kind of gave up doing a big bang and am starting from basics * making soup together with the kids, they love helping * taking care of our cat, it got hit by a car, probably low speed because there is no big damage but he's sore and won't get up and walk * start looking at practical AWS/Google cloud implementations, never used them and we're looking at using them at work. Tips to get started on them are always welcome. We have a vast amount of Dev + Ops knowledge in our team but noone really played with cloud setups -- "Working on Arch's mirror notification system, automating mails to be send out to mirror admin's if their mirror is broken or lacks behind. Tomorrow hopefully migration some Arch infra into terraform. -- "Beekeeping course, protesting against article 13 of the EU copyright reform, baking sourdough bread, spending quality time with my girlfriend. -- "Finishing a long running WordPress refactoring and redesign. The design was ported from the pixel era to a design system; the code again was refactored from typical spaghetti to use PHP/HTML/SCSS/JS components a-la-React style. Quite an interesting job. Finally I can see a WordPress site updated to 2019 best practices. On the other hand it was revealed how cost effective a design system / code components can be. -- "A Vim script that leverages [Intero](https://github.com/chrisdone/intero/) for Haskell code editing smarts. I find the current plugin offering insufficient and the only other Intero script is for Neovim, which I happen to not use (yet). -- "What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "Friend is hosting a call of cthulu party. Keep working on a flask-based blog (actually working on using ansible to provision an aws server to do development + have ansible on it to provision the real server on a lambda). Yeah yeah use a static blog I want to play with stuff and have the possibility to innovate, plus plug comments that aren't Disqus. -- "This weekend, I'm continuing working with Rust and Actix-web. I'm going to attempt to write a url service like bit.ly with Actix and Diesel -- "The snow melted and it's 60F. I'm going to be outside as much as possible. Bike ride, yard work, building something in my garage workshop with the garage door open, etc. -- "What kind of stuff do you build in your workshop? :) -- "The usual - fixes for the house, minor woodworking projects that I play around with, crackpot inventions that won't ever work. The last thing I made was an electric shoe sole brush that actuated when you stepped on it - it manages to clean the shoe and in the process spray debris everywhere :). That was the prototype and was too large to be practical (if that's even possible). I'm going to try and make a smaller one tomorrow. -- "That's a really cool idea. Care to share a photo with us? At least in my imagination you could probably contain the spray of debris with some partial enclosure. -- "With the door *open*? Living the life! -- "Indeed! -- "I just built a desktop machine, my first in 9 years. Going to finish setting up my Ubuntu install and then see if I can make use of this expensive GPU and train a GAN to do something neat. Any ideas? -- "Perhaps thislobsterspostdoesnotexist.com along the lines of https://www.thiswaifudoesnotexist.net/ ? I know nothing about GANs, would it be easier to create random real-looking comments? Or for extra terror, this HR Giger painting does not exist? -- "One of [these waifus](https://imgur.com/a/tdrbtK0) is not like the others. -- "I’m trying to finish my first real woodworking project, a cantilevered table with the same height as our kitchen bench to serve as an extra working surface. With hand tools so I’m exercising some rip cuts, some mortising and tenoning, some gluing, some rasp chamfering, etc. I might finish tomorrow or probably on Sunday because I don’t have enough clamps to glue several parts simultaneously. -- "I'm going to a metal show with a friend this weekend. -- "Learning maths with Khan Academy as recommended by someone from here, and after shabbos putting aside my own projects to do some unpaid overtime for work :^) -- "I'll probably keep plugging away at my research to try to finish up my PhD, and I'll continue to work on the documentation for a project I've worked on for a few months. I've been waiting to release it until there was some decent documentation, but it's obviously not the most exciting task. I told myself I couldn't start a new project (which I've been itching to do) until I finished the current one, so I'm using that as motivation to get the current project out the door. -- "I made a way to mod [Celeste](http://www.celestegame.com/) using [Jetbrains Rider](https://www.jetbrains.com/rider/) https://github.com/shawwn/celeste Here are some modding videos: [Celeste reverse engineering + modding](https://www.youtube.com/watch?v=XNC5gJCAyKQ) [Celeste modding: Flappy Mountain](https://www.youtube.com/watch?v=SOZtsKmz88g) [Celeste modding: Opposite Dash](https://www.youtube.com/watch?v=LYTxrUC-wqQ) Note that this is very similar to [Everest](https://github.com/EverestAPI/Everest), the existing modding API. You must legally own a copy of Celeste in order to use it. The way this was done was to use [Jetbrains Rider](https://www.jetbrains.com/rider/) to decompile Celeste.exe and manually copy-paste each file into a codebase generated by [dotPeek](https://www.jetbrains.com/decompiler/). It took a lot of hours. The codebase compiles on both Rider and Visual Studio. I contacted the developers to ask for permission. Noel was initially surprised but said he'd talk to the team about it. -- "Hopefully studying observability in k8s and continuing to build out my own k8s cluster, now with my own services. -- "Squats for sure! -- "Traveling down to Portland to run Fennel Conf 2019! https://conf.fennel-lang.org/2019 It's a pretty small low-key conference, but it should be a lot of fun. -- "Playing a ton of Elder Scrolls Online and getting trashed at a block party in San Francisco. ¯\\\\\\_(ツ)\\_/¯ -- "Moving to Cincinnati -- "Welcome to the midwest neighbor. It is very flat. -- "Southern Ohio is quite hilly. -- "Also northeastern ohio, especially in the cuyahoga valley national park. -- "haha I moved from Akron, OH, Cinci isn't too bad. -- "I agreed to write a programming book last summer. I'm now almost done with only two chapters remaining. It has turned out to be a lot more work than I thought it would be, and the publisher has been unhelpful, to say the least. I'm now a few days behind schedule for the current chapter, and my editor is giving me a ton of grief. Sorry, I guess I just needed to vent. What am I doing this weekend? Writing. -- "Any demo content we could see? -- "Sorry, I'm not allowed to release any of the writing independently of my publisher, but you can check out the code at: https://github.com/codeplea/Hands-On-Network-Programming-with-C -- "Writing a book is freaking hard. I don't think folks who haven't done it yet understand what all is involved. There's code, there's tweets, there's essays, there's long-form content, there's informative graphics -- and writing a book is all of this and more. Kudos on almost making it! You've got this. -- "Yeah, I didn't really know what I was getting into. If I had it to do over, I would work out a longer schedule, and I would try to do the work in chunks instead of continuously. -- "I've taken several runs at book-writing, finally finishing my first \"real\" book last year. I don't have any words of wisdom. Actually I had to do it the other way -- just sit down and keep flailing until I got to the end. Otherwise I would have spent forever bike-shedding. My first couple of tries I finished a book, and it was extremely well-constructed. It just didn't do what I wanted it to do. That's because I was focusing on chunks instead of themes. There's one thing I heard that rings true, for what it's worth: every book writer has to grow and evolve their own system. The more you follow a recipe the less creative you might be. I have no idea if that's true. It seems right -- and I know that once I gave up reading advice and trying to be perfect and instead just tried to be cogent and consistent? It worked better for me that way. Having said that, I was writing about how to think about creating tech that people want -- an immensely fuzzy topic that I had struggled with for years. If I were doing a language reference? I'd probably do chunks. -- "I'm about 2 chapters into writing (after weeks of scaffolding out and research) a beginners book, and man, writing is tough, so props to you... -- "Keep it up! Starting is the hardest part (along with finishing, and the middle, which are also both quite difficult). Do you have a publisher, or are you self publishing? Feel free to drop me an email if you want to commiserate together (or provide encouragement). -- "I’m plugging along when I can alongside regular work. No publisher, haven’t even looked as of yet and it’s for a pretty specific context around using basic programming and OSS tools and command-line tools to do collection, cleaning and analysis of data. It’s aimed at humanitarian staff so I might put it up free in the end. Especially as it’s my first go at writing anything more than a technical spec or architecture doc... have to curb my enthusiasm for turning everything into UML diagrams... -- "hopefully: get some decent progress on a \"pet-project\" app; sourdough loaf; hit the gym -- "Leaving for vacation to celebrate our tenth wedding anniversary. When we got married we thought for our 10th anniversary we'd go to Monaco. After one kid that was scaled back to Montreal. After two kids that was scaled back to a hotel on the river one city over... -- "and to think that people used to have 7 kids -- "Despite being middle aged, I recently bought a Rubik's Cube (speed cube version) for myself. I had an old school one a very long time ago which I found cumbersome to play with. This new one is soooooo much nicer. I plan to spend time making patterns and memorizing how to solve it again. Yes. This is my plan. :-D -- "Just going through all the archives of data/pictures/old projects that I have tucked away, and cleaning them out. Sort of an early data spring cleaning. -- "I'll be doing a lot of reading. At my startup, our main focus largely reduces to \"knowledge management.\" And over the past few months I've been pointedly going back and reading (or re-reading in some cases) a lot of the books that I consider the \"canon\" of KM, looking to either solidify my understanding of certain things, mine ideas for messaging from a sales and marketing viewpoint, mine ideas for new product features (or even whole new products), etc. Right now I'm working on *The Fifth Discipline* by Peter Senge. Once I finish that, I'll probably move on to *The Living Company* by Arie de Geus. If I take a break from all that, it will probably be to go to the gym and lift, or maybe get out and do some bicycle riding if the weather is nice. -- "Interesting. I'm finding at my company that we have a... deep need for improvement with regards to knowledge management (not a subject I know a lot about, unfortunately.) It seems like most efforts for improvement are rapidly lost in the background noise and \"what actually happens\" ends up fairly random. -- "What are the others? And if only one, which should someone buy to learn the most important concepts? -- "I've been meaning to write a blog post about this for a while, but haven't gotten to it yet. But briefly, a few of the books that I consider \"the canon of KM\" would include: *Wellsprings of Knowledge* *If Only We Knew What We Know* *Working Knowledge* *Common Knowledge* *Winning The Knowledge Transfer Race* *The Fifth Discipline* *Business @ The Speed of Thought* *The Living Company* If I had to pick one book that gets the key ideas across, I'd probably start with *Wellsprings of Knowledge*. -- "The way I've been going, probably spend it neck-deep in Rust data mining and database stuff, and running a hackerspace. Said database nearly has enough stuff in it to be non-trivially useful, so there might be a website launch soon, if some odd bugs get fixed. I don't know how anyone survives SQL; surely there must be some relational database system out there that's actually *helpful*? The hackerspace is already non-trivially useful; turns out being on the board of it mostly means wrangling paperwork and giving people someone to complain to. Then you just nod sagely, agree that what they're saying is true, and suggest they bring it up at the next members meeting. -- "Writing a front-end for my [ETH Paris hackathon project](https://github.com/coventry/RSADonations), which was a smart contract which commits funds to an RSA public key, to be released on receipt of an appropriate RSA signature. This allows you to send ETH to anyone with an RSA key (most github users, SSL-protected websites) without any other setup on their end. They do have to get an ETH address to claim the funds, though. -- "I'm playing with inotify and text user interfaces in Haskell. Also getting back on my mountain unicycle for the first time in awhile! -- "Heeey, hi fellow unicyclist! :) I'm a simple recreational flatland/city one, though at my place it's still somewhat too cold for me to take it out for some quick fun :) have a good time! :) -- "If you get a muni, weather is less of a problem. I used to take mine out on the gulf of Bothnia when it was frozen over. -- "I'm going to see an improv comedy show, but other than that I don't actually have a lot planned yet. Maybe some reading and much-needed relaxation. I might also sneak in a little bit of CHICKEN coding. -- "First sprint of gambe.ro, the italian version of lobste.rs. I'm working with the guys to translate everything and set-up the instance for the closed testing. -- "Starting the course that teaches me to be a beekeeper. -- "Wrapping up some code I’ve been working on for fantasy baseball valuations. For years I’ve been writing little scrapers and scripts that have made me thousands of dollars just in my own games, but over 2019 I want to take some of my more innovative tools and productize them for the 2020 season. There are some really great sites and tools out there already, but they all have a few blind spots, and that’s where I’ve gotten my edge over the years. -- "you expect to make more selling it as a product than by doing more of the same at a larger scale? -- "I currently live outside the US, so I can’t play daily fantasy any more (where I first made more than $1k in a season). I’m restricted to just playing season-long leagues that require a fair bit of hands-on management for each league individually. That makes it more scalable to sell a product rather than try to play 100 leagues myself. -- "I'm not familiar with fantasy baseball, or indeed fantasy just about anything. Is the money also fantasy? Or are you making real money scripting a game? -- "Kicking around some code-gen and machine readable definitions for the W3C WebDriver bindings. When that's working I can start on examples and bloggenating about property-based state machine testing for web interfaces. Seems like a wicked fun kernel of an idea, will be interesting to see what falls out. -- "I'm switching from a 2013 MBA to a 2018 X1 Carbon. So mostly wondering why full disk encryption is such a herculean task on Arch. Admitably my ambition is making it significantly more difficult than has to be. Aside from that, I'm helping a friend build an undefined box and hoping that I don't find myself in it, buried in the back yard. Also germinating. -- "I'm importing UK company data into https://newbusinessmonitor.co.uk/. Currently, the site holds data on a little over two million companies registered from April 1st, 2015. After today, it should hold all active UK companies. Local testing shows my database should grow to around five million records. I'm using the Haskell library [conduit](http://hackage.haskell.org/package/conduit) to stream data from a big CSV file, do some processing, and insert it into Postgres. I'm also hiring people to do things for me. Other than finding Haskell programmers to work with me on my funded startup (not NBM), I'm trying to find someone to properly setup nginx and fail2ban with NixOps. I set up a [minimal working example](https://github.com/jezen/minimal-hs-nix-aws) of a small Yesod app which can be deployed to an EC2 machine for this purpose. -- "Attempting to run 12 miles at an average pace of 8 minutes per mile. -- "I'm planning to finish _Sun and Steel_ and _On the Existence of Digital Objects_. Might start _Storm of Steel_ (the 1929 translation) as well. -- "- Working on slides for my talk 'Googling in PostgreSQL' - about full text search features in PostgreSQL; - Gaming (Far Cry 4; Sundered); - Updating the laptops; - Updating ports I maintain; - Reading the Godfather. -- "Looking into OpenShift, maybe even set up a master just to play around. We'll see how that goes. -- "I highly advice you to use the 4.0 one. It's installation is enormously easier to deploy than the 3.11 release. I went to a redhat course and the teacher said the 4.0 release will free up 1.5day on a 5day course. -- "I have to rely on OKD as requested by my employer so no 4.0 for me I guess... -- "I've got some lambda code I want to get running on AWS as part of a serverless app. I've been getting into AWS in a big way over the past two months and little sample projects are the only way for me to stay interested. -- "We're taking the kiddo to the zoo today. I'll probably keep working on my speed reading plugin, stutter (https://github.com/jamestomasino/stutter) for a bit, and keep reading the many, many books in my queue. -- "Decided to rewrite a blog post in a different tense: third-person...as I was getting nowhere with first-person singular. It seems incredibly vain, but might produce a better reading experience? Otherwise, taking my dog to a dog park, reading all I can, drinking coffee, and much much more! -- "Trying https://github.com/ThomasTJdev/nim_homeassistant and contributing to it. -- "Son turned three this last week so we're having a big party for him this weekend. Prepping all day today for roughly 2-3 hours of kids going nuts in a bouncy castle and eating cake tomorrow... Also going to try the TIS-100 game which was recommended to me on another posts comments. -- "setting up a new mac... argh. I used to be a mac user since MacOS 8.x then couple years ago I jumped ship to a Surface and Windows 10 and I was happy. I love the Surface form factor. Now, got a new gig that requires me to use a mac, so it is time to set everything again... -- "Working on presentation slides for the next formal methods meetup. -- "Well sundays are my day of so I try to do nothing mentally taxing or working. Today that is expressed by learning about LISP. Yesterday I was working on input prediction based on ngrams that doesn't occur on a word basis but rather on a symbol level. This adds a lot to memory requirements, but I feel that it can add some benefits. To exemplify it's usefulness consider dialects of language and changed words due to puns. In general I'd say that doing the statistics on a symbol basis leads to a more beutiful and generalized interpretation of language. Also it get's rid of the issue of thinking about which delimiters should be used. In the end I'll probably end up with some kind of hybrid giving weighted input from several engines. -- "We moved to our new house last week, so it’s unpacking and cleaning the detritus. The kids at least love the new place, so that’s one fewer thing to worry about. Due to a bug in the moving dependency graph, we sold our bed before having the new one delivered, so the wife and I are sleeping on an air mattress. -- "https://nhooyr.io/ws An improvement over the gorilla/websocket and gobwas/ws WebSocket libraries for Go. -- "Via: https://medium.com/@olegkovalov/what-i-dont-like-in-your-repo-a602577a526b What I don’t like in your repo Oleg Kovalov Mar 12 Hi everyone, I’m Oleg and I’m yelling at (probably your) repo. This is a copy of my dialogue with a friend about how to make a good and helpful repo for any community of any size and any programming language. Let’s start. README says nothing But it’s a crucial part of any repo! It’s the first interaction with your potential user and this is a first impression that you might bring to the user. After the name (and maybe a logo) it’s a good place to put a few badges like: recent version CI status link to the docs code quality code coverage even the number of users in a chat or just scroll all of them on https://shields.io/ Personal fail. Not so long time ago I did a simple, hacky and a bit funny project in Go which is called sabotage. I put a quote from a song, have added a picture, but… haven’t provided any info what it does. This takes like 10 minutes to make a simpler intro and explain what I’m sharing and what it can do. There is no reason why you or I should skip it. 😉 Custom license or no license at all First and most important: DO. NOT. (RE)INVENT. LICENSE. PLEASE. When you’re going to create a new shiny new license or make any existent much better, please, ask yourself 17 times: what is the point to do so? Companies of any size are very conservative in licenses, ’cause it might destroy their business. So if you’re targeting big audience — it’s a dumb way to do so. There are a lot of guides on how to select the license and living it unlicensed or using an unpopular or funny (like WTFPL) will just be a bad sign for a user. Feel free to choose one of the most popular: MIT — when you want to give it for free BSD3 — when you want a bit more rights for you Apache 2.0 — when it’s a commercial product (that’s might be an opinionated list, but whatever) 😉 No Dockerfile It’s already 2019 and the containers have won this world. It’s much simpler for anyone to make a docker pull foo/bar command rather than download all dependencies, configure paths, realise that some things might be incompatible or even be scared to totally destroy their system Is there a guarantee that there is no rm -rf in an unverified project? 😈 Adding a simple Dockerfile with everything needed can be done is 30 mins. But this will give your users a safe and fast way to start using, validating or helping to improve your work. A win-win situation. 😉 Changes without pull requests That might look weird, but give me a second. When a project is small and there are 0 or few users — that might be okay. It’s easy to follow what happened last days: fixes, new features, etc. But when the scale gets bigger, oh… it becomes a nightmare. You have pushed few commits into the master, so probably you did it on your computer and no one saw what happened, there wasn’t any feedback. You may break API backward compatibility, forgot to add or remove something, even make useless work (oh, nasty one). When you’re doing a pull request, some random guru-senior-architect might occasionally check your code and suggest few changes. Sounds unlikely but any additional eyes might uncover bugs or architecture mistakes. Do not hide your work, isn’t this a reason for open sourcing it? 😉 Bloated dependencies Maybe it’s just me but I’m very conservative with dependencies. When I see dozens of deps in the lock file, the first question which comes to my mind is: so, am I ready to fix any failures inside any of them? Yeah, it works today, maybe it worked 1 week/month/year before, but can you guarantee what will happens tomorrow? I cannot. 😉 No styling or formatting Different files (sometimes even functions) are written in a different style. This causes troubles for the contributors, ‘cause one prefers spaces and another prefers tabs. And this is just the simplest example. So what will be the result: 1 file in one style and another in completely different 1 with { at the end of a line and another { on the new line 1 function in functional style and right below in pure procedural Which of them is right? — I dunno but this is acceptable if it works but also this horribly distracts readers for no reason. Simple rule for this: use formatter and linters: eslint, gofmt, rustfmt…oh tons of them! Feel free to configure it as you would like to but keep in mind that the most popular tend to be most natural 😉 No automatic builds How you can verify that user can build your code? The answer is quite simple — build system. TravisCI, GitlabCI, CircleCI and that ‘s only a few of them. Treat a build system as a silent companion that will check your every commit and will automatically run formatters/linters to ensure that new code has good quality. Sounds amazing, isn’t it? And adding a simple yaml file which describes how the build should be done in minutes, as always 😉 No releases or Git tags Master branch might be broken. That happening. This is unpleasant stuff but it happens. Some recent changes might be merged and somehow this causes troubles on the master. How much time it will take to fix for you? few minutes? an hour? a day? Till you’ll be back from vacation? How knows ‾\\_(ツ)_/‾ But when there is a Git tag which points to the time when a project was correct and able to be built, oh, that’s a good thing to have and make the life of your users much better. Adding release on a Github (similar as Gitlab or any other place) is literally seconds, no reason to omit this step. 😉 No tests Well, it might be okay. Of course, having correct tests is a nice thing to have, but probably you’re doing this project after work in your free time or weekend (I’m guilty, I’m doing this so often instead to have a rest). So don’t be strict to yourself, feel free to share your work and share knowledge. The test can be added later, time with family and friends is more important, the same as mental or physical health. 😉 Conclusion There are a lot of other things that will make your repo even better, but maybe you will mention them personally in comments? 😉 Thanks. -- "Nice summary of a good README, one thing I'd add that really grinds my gears is projects not taking the time to add at least a single sentence explaining what the thing actually does, in a way that people that may not even be involved in the ecosystem at all can understand what problem they are trying to solve. What most have is something along the lines of \"Do what `x` does but with `y`\", with both blanks being libraries or concepts people not involved in eg. Kubernetes, OpenStack or the newest JavaScript stuff would maybe know by another name or which might be completely made up. I try to do this with all my projects, just adding a succinct description I would tell eg. my parents as well as two usage examples does wonders for clarity, in my opinion. Examples (shameless plug): https://github.com/cbdevnet/midimonster -- "Nice repo and great README, thank for sharing! -- "_No Dockerfile_ and _Bloated dependencies_? I thought that one contradicts the other, no? -- "Why so? I don't get it, can you clarify a bit more? -- "I'd like _Chrome_, so ... http://dockerfile.github.io/#/chrome -> http://dockerfile.github.io/#/ubuntu-desktop -> http://dockerfile.github.io/#/ubuntu -> https://hub.docker.com/_/ubuntu ... but **first**, I need a Linux VM to run Docker on it! Doesn't that look _bloated_ to you? Did I miss anything? -- "Sorry, are you counting the Linux kernel as bloat because you want to use a technology your operating system's kernel doesn't support? I agree that Docker is not the leanest piece of tech out there but that seems drastically unfair. -- "Docker would be a huge _dependency_, but this article isn't arguing that you should depend on Docker. The article is arguing for adding a Dockerfile to make it easier for people to run your project in docker, but unless it's actually necessary, your project absolutely shouldn't depend on it. -- ">When you’re doing a pull request, some random guru-senior-architect >might occasionally check your code and suggest few changes. Sounds >unlikely but any additional eyes might uncover bugs or architecture >mistakes. Is this true? I would love to have someone review my code but I cant see it ever happening. Do I just open a PR and hope someone comes along to review it? How would they even know I am waiting for public review. It feels quite rude to jump in to someone elses project and start reviewing their changes. -- "\"Watchers\" of the repo will get notifications, so they can get involved pretty easily if they want to. Also, you can add a label like \"needs review\" or something like that to attract more attention. -- "I always say this, but a \"readable README\" is always preferable over a \"README that says something\" ... but only when opened via GitHub. Badges are just among the things that have become so annoying in my experience, it makes opening a README via text editor nearly unreadable. Others are long lines, inline links, HTML, images after images. The [author's README](https://raw.githubusercontent.com/cristaloleg/sabotage/master/README.md) is _ok_, but certainly not my favourite style... -- "For over 95% of the projects, none of those things are needed, except a README. People use CI/CD and docker for simple projects just to get more experience with the technologies, for when they'll have a complex project to work on. -- "I feel old when reading this. A README is a text file that I usually read in less or vim so the fancy badge URLs are just noise. I dislike docker with a passion. I think we took the completely wrong route with that technology. It feels like we all said \"we give up, let us just repackage everything with every app\". Also, if I share a library as open source, what is the Dockerfile good for? No Pull Requests? Of course not. Also no merge-commits for pull requests, ever! Why would I put my own work into pull requests? I am sharing code I wrote, I am not at work. One can have automatic builds w/o making them visible on github. I really feel like the author has never used anything else but github, which is sad, since there are other ways to do things and they can work equally well. -- "I agree. As far as pull requests are concerned, many projects either: 1. Do development elsewhere but have a github mirror (Could be emails and patches, could be something like gerrit or phabricator). 2. Allow contributions via multiple methods, including github pull requests. In either case, just because a commit hasn't come in through a github pull request doesn't mean it hasn't been reviewed. -- "Docker is way overkill for some projects, and it also really depends on what's your app doing. If it's a server that needs Nginx, Python and Postgres, then sure Docker is a right solution. But if it's just a command line tool written in Node or Go, `npm i` or `go get` is much simpler. -- "The author may be a bit disingenuous when talking about licenses. > Feel free to choose one of the most popular: > > - MIT — when you want to give it for free > - BSD3 — when you want a bit more rights for you > - Apache 2.0 — when it’s a commercial product I strongly believe that choosing a license must be a very informed decision. That the author simply pretends copyleft licenses (notably the GPL) do not exist is worrying, considering that they are in widespread use. Neither does he make any point why the Apache 2.0 license should be chosen over the other liberal licenses “when it's a commercial product”. The choice of license is a one-time act that has legal consequences—if anyone gets their hands on a version under a particular license, it is out there—and must be carefully deliberated at least once in one's life. Handwaving these concerns away with “(that’s [*sic*] might be an opinionated list, but whatever)” followed by U+1F609 WINKING FACE does not make it okay. -- "Thanks for this. Understanding ramifications of a licensing benefits the ecosystem. People are often unaware of how patent risk, tivoization, \"cloudification\" and so on can hurt developers and create platform lock-in. -- "Disagree on docker as well. Might be nice for a few people but I don't use it for development and will probably not use it for deployment, so why should I waste time? (Yes, I am just now wasting time working with docker...) Patches welcome, as they say - I surely won't turn down a PR if someone offered a Dockerfile for a project I work on. -- "I'd love to see standard machine-parsable metadata on projects: - Maturity: alpha/beta/stable/mature/finished/abandoned - Stability: minimum guaranteed time between deprecation and subsequent breaking change - is semver used? - Security: contact points for notifications, policy around backporting fixes into stable releases - PR and contributions policy -- "s/semver/a versioning scheme that matches community expectations/ I am not calling semver insensible. The Haskell world uses the [Package Versioning Policy](https://pvp.haskell.org/). -- "On having bloated dependencies, badly formatted code and no git tags? Absolutely agreed. Those are all bad signs. I'm sceptical about the rest. There are a lot of bad READMEs out there no doubt. But the suggestion that you should fill your README with badges instead of it being a proper README with nicely formatted text I can read in a text editor is juvenile. Licenses? What if I don't actually care about some stupid company using my code? I'd rather they didn't, actually, so I use Artistic License 2.0 or AGPLv3. The presumption that people writing and publishing free software are keen to have some company make money on their work is strange to me. It's up to you to write yourself a Dockerfile for your projects, not me. I don't use Docker. GitHub pull requests are a horrible way of managing software changes that ruin commit history and create a huge amount of noise in changes. They make it virtually impossible for anyone other than the original pull requester to change the code in the pull request without recreating the whole pull request. They're just.. bad. Tests, automated builds, etc. are not necessary at all. -- "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. -- "Over the weekend I started typesetting SICP for print. The [SICP pdf](https://github.com/sarabander/sicp-pdf) has the entire book in TEX, but it's in a single 35K line file. So most of what I've done is split the book into a file for each section, and I removed some of the fancier bits like syntax highlighting. I've managed to get the whole book building so this week I'm going to be working on real typesetting. I'm trying to decide if I should stay as close to the original as possible or do whatever produces the highest quality, and I'm leaning towards the latter. Right now I'm trying to decide on fonts; so far I'm using CMU for the main text and Source Code Pro for code. I think I'd like something different than Source Code Pro but I need a monospace font that can differentiate between code and REPL response like in the original SICP. -- "I just started reading it. Everybody talks wonders about it so i really wanted to give it a try. -- "Good luck on it. If it doesn't click, check out [How to Design Programs](https://htdp.org/) which teaches programming with Racket Scheme. Then, [The Little Schemer](https://www.betterworldbooks.com/product/detail/The-Little-Schemer--4th-Edition-9780262560993) is all about recursion. -- "Thanks. Also i'm watching the CS 61A video lectures to complement and to have a main idea of what's crucial. -- "I didn't know Berkeley put out videos for that class. I watched the 1986 MIT lectures which were pretty good, but a bit dated. -- "The first chapter of SICP uses a lot of math problems for exercises or examples. This puts off a lot of people. If it has that effect on you, push through it. The rest of the book is very practical - the second chapter is writing methods like map, filter, etc. for example. -- "Exactly. I found chapter 3 really interesting; covering a lot of topics I didn't know about. And of course chapter 4 and 5 are also great, I worked on my own scheme implementations because of them. -- "Whoa, that's an impressive job. Why did you decide to get into this? -- "I wrote about it [here](https://forum.hunterpraska.com/b/blog/4), but basically I think that books are made cheaply now and I'd like something nicer. I decided to try hand-binding a book and picked SICP since I like it, it's already available in a workable format, and the binding on my copy is damaged. -- "Great work! I remember finding this pdf for the first time on some image board and thinking to myself how great it looked. -- "Why are you trying to typeset SICP for print yourself? You can buy a print copy of it on Amazon for about 30 bucks. -- "Yep, I have a hardcover copy I bought used back when they were ~$20. I wrote about it more [here](https://forum.hunterpraska.com/b/blog/4), but the tl;dr is that I think books today are low quality so I want to try making a high quality book. I picked SICP because it's a book that I like, the text is already digitized, and my copy is falling apart. -- "I own both the first and second edition of SICP. Does the electronic version have anything different? -- "Not as far as I know. The pdf is typeset specifically for screen use and it might contain errata not listed on the website. -- "Comic sans for everything? -- "I am beginning the hiring efforts for my reinsurance startup. I'm looking to hire a couple of remote Haskell developers within the next few months. Naturally this is time-consuming work, because it's important to not just select for technical excellence, but also communication skills and professionalism. I've worked at too many companies where management are apathetic about infighting or the development of a \"bro culture\", and that's something I will be constantly working to avoid. -- "Sounds cool. I am working on a model for an insurance company, and I constantly run into issues with state. Things like if (settings == null) initializeSettings(withParametersOnlyValidForMyUsecase); which means that running things in the wrong order means that settings are wrong. Which sometimes matters, sometimes not. I figure working functional would avoid many of these issues. -- "Would you be willing to train a developer in Haskell? -- "Probably not at the earliest stages, but if you can drop me a note privately I'd be happy to have an informal chat with you. We may be able to work something out in future. -- "I'm slowly retyping and typesetting Beauville's _Surfaces algébriques complexes_ in LaTeX. The original (which I just bought) is still being published with the typewriter typesetting, which I just plain object to. I'm also making some progress on a few-year-old idea of making a frontend for the arXiv that sucks somewhat less than the one they offer. The daily email updates are formatted like... it's just bananas, and the TeX in author names, titles and abstract contents mixes badly with RSS readers. So far I've got an OAI harvester that's pulled all the historical data and keeps my copy up to date, and an import job that creates a record stream in Sqlite. Next up is to process the stream into more refined data, and then write a basic API to query for the things that interest me. I hope to have a basic prototype up by the end of the month to show an old math friend when we get together. -- "I'm also working on a typesetting project, but I think I'd give up if I had to retype it too. Good luck -- "I'm continuing work on my bachelor’s thesis. ICYMI, I’m working with Adam Shaw to add typeclass-supported iterative programming to SML. On the plate for this week: - Right now the AST is uncurried. This means `fun(x)(y) x + y` has type `int * int -> int` instead of `int -> int -> int`. This was a dumb early design decision and it's high time to reverse it. - I want to add polymorphic n-tuples. This will have an interesting problem to solve: how can we make `fun(x) #2 x` (where `#2` is the \"select second item\" operator) have a reasonable type? Many languages will just fail to type that expression, but I would like it to be expressible. This may be tabled until typeclasses are implemented, so that I can say something like \"`x` has unknown type but must belong to the typeclass `#2`\", which would mean that it has length at least 2. - I'm finally, actually going to make that blog post I promised two weeks ago. The original idea I had didn't pan out into an interesting post, so I'm going to do a catch-all post on my progress thus far. -- "Looking at creative ways to get code changes into production faster and more regularly for a collection of development teams all working on groups of microservices, mobile apps and web front-ends - in AWS. Help! -- "I'm quite happy deploying to AWS with NixOps, but I'm not doing microservices and I don't know if what I have is better or worse than what you have. -- "In the office: keep trying to define Faust's agents programmatically and reshaping our ML pipeline for a new release In private time: still working on reimplementing Pony's Range class in the stdlib and working with a bunch of guys to create an Italian version of lobste.rs branching out from the Journal Du Hacker version. -- "* Sell all the things (I feel the correct number of bikes and cars is N+1, but my other half disagrees.) * Bought a car, need to sell the old one * Bought a new pushbike [last year], need to sell at least one of the old ones. -- "the correct number of bikes is at least N+5 (MTB, BMX, Cruiser, Hybrid, Fat...) and that's without Cyclocross, Road, and Speedway ;~) -- "For work, figuring out how to manage and deploy software and configuration settings to things that fly. My reflex is to reach for Ansible, but there's been some pushback from other people, even though they don't necessarily have a better solution. My gut inclination is to do it anyway, for a small test case, to demonstrate how awesome it is. For non-work, working on doing some interesting dependency analysis on [the Rust package database](https://crates.io/). Hopefully by the end of the week I'll have an interesting tool to release, at least an early version. -- "Today is the day I finally move my development workstation (re: company issued thinkpad) to Linux. Something I've been meaning to do for the last half year but also didn't want to do in the middle of a massive project. Now that project is launched and everything is back to regular day to day so I have time. -- "Which distro? -- "I've been using Xubuntu for the last five years or so. All my other machines have it installed and configured how I like except for this machine. I have managed in Windows 10 with WSL for a while but compared to the ease of web development on Linux I've just grown frustrated. -- "We're moving on Friday, and are hilariously unprepared. We have a bunch of stuff to sell or donate, and a lot of packing and rearranging to do. Thankfully, we are paying movers to pack us as well, so the worst case is that we spend money to have a bunch of stuff moved and then dispose of it after we arrive. I wasn't able to get twisted-pair pulled to all the various places I wanted, so that's going on the backlog of house work, but otherwise, I am very excited by our move into debt peonage. -- "Been working on [hnix](https://github.com/haskell-nix/hnix) a bit since yesterday. There was a hackathon over the weekend which got a huge amount of work done. A big chunk of [hnix-store](https://github.com/haskell-nix/hnix-store) has been implemented, so hopefully it can be used to actually build software. -- "At work I'm still trudging along adding new terrain support to our plugin. Getting a little frustrated by the slow progress, but I think I'm getting over the learning curve and about to make better progress. Outside of work I'm starting to benchmark my [quadtree library](https://git.sr.ht/~jl2/quadtree). Also made [this animation](https://vimeo.com/322667552) showing refinement as points are added. -- "Asking V8 for help from a PHP application to execute some user-made JavaScript. Most likely start studying for AWS Associate Solutions Architect Certification -- "I started a new job last week and promptly got the sickest I'd been in years for the last five days. I went home early on my second day! I'm back this week and my first task is to convert a Spark job from R to Scala so I'll be picking up both Spark and R this week! -- "Work: Mozilla’s upcoming password manager lockbox has an android app that needs security testing: https://github.com/mozilla-lockbox/lockbox-android Home: spring cleaning -- "i did the first ever (that im aware of) static libCurl build using Cygwin: https://github.com/cup/glade/tree/master/curl also I finally added post dates to my music website: https://cup.github.io/mauve/magenta -- "Desperately trying to get my head around implementing service-service auth for a REST API. Previous maintainers used an odd implementation of JWT, and then just RSA from the JWS. It _seems_ like JWT might be the right thing, although though there seems to be many conflicting views across the Internet, and most articles focus on user login flow rather than service-service. -- "Refining features on my fitness tracking website [PikaTrack](https://gitlab.com/pikatrack/pikatrack) before I start to work on an android app for it. Been a whole lot of work so far but I think I'm getting close to a decent service. -- "@WORK finishing the map editor to start rebuilding maps for the new engine I've been developing for some months. @PERSONAL continuing work on my anti-spam/attacker banning daemon thingy for OpenBSD & PF for my personal server. Yesterday I wrote my first ever man page. This will be my first public release in anything I've done apart from work related stuff and I'm quite excited. I'm fairly certain no-one will give a crap about it, but it will feel good anyway and a big accomplishment for me as I tend to never finish my personal projects. -- "Uhmh... in my spare time, I'm now trying to write an [assembler/linker targeting the Dalvik virtual machine](https://github.com/akavel/dali) (i.e., Android *.dex files, and *.apk long-term), that *would not require installing the whole JRE + Android Studio zoo*. Sounds like a super stupid idea, and an epitome of yak-shaving... but I really want to write some apps for my phone, and I desperately can't stand that this would force me to install such heavy dependencies... while the .dex format is quite well [documented](https://github.com/akavel/dali/blob/master/src/dali.nim#L8-L27), and [looks approachable](https://github.com/corkami/pics/blob/master/binary/README.md#executables)... so I finally got frustrated enough to pull the trigger and just try, and see how far I can get with this... -- "Finishing wireguard integration into the web interface of Freedombone on the buster branch. After that more testing on different SBCs. -- "HTML5 implementation of the Dasher input method. I'm using HTML canvas CSS and the nim language. The aim is to be able to have the same code to run on a low level API and to demo the same code on a webpage or even make some kind of online editor. Thought it'd be a one day project, but turns out the coordinate system isn't really Cartesian but rather hyperbolic. -- "What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "On Saturday I'm getting a delivery of plywood and dimensional lumber which I'll try to use to build a pair of simple sawhorses. My newbie woodworking workshop right now is just a room with a few hand tools and a windowsill where I can sort of clamp small things but not really—so I need to bootstrap a working surface. I'll also keep working on flattening the sole of my cheap bench plane with sandpaper. -- "Bootstrapping a shop is one of the hardest things to do in woodworking. It's definitely satisfying when you get there though. -- "I’ve been doing some small random silly things to learn some tool use and get my feet wet, and so far I’m enjoying finding hacky ways to get by without the proper equipment (using two heavy tree stumps from the neighbor for a kind of vice, etc) but also of course it’s beautiful to actually have the appropriate thing (today I was happy to have a rasp, though I realized I don’t know how to get sawdust out of it). I’m making a cat scratching post for our newly adopted cat, with the base being a rather fresh slice of birch log and then a pine plank with sisal rope around it. I thought I would try my first mortise and tenon, but then I started to worry because the log isn’t cured dry... but I googled and realized that “green mortise, dry tenon” is actually an old way to make a really tight joint since the mortise will contract as it dries! -- "A great first shop-tool is a [shave-brake or shave-horse](https://en.wikipedia.org/wiki/Shaving_horse), it's easy enough to make w/o plans and some `2x` material, and gives you some good workholding options for working with drawknife and spokeshave (which are _utterly indispensable_ tools IMO). Those tools make it easy to make shop stools, tool handles, and other stuff, all with wood from a firewood pile. Workholding is about 60% of woodworking (the next 39% is jigs, which are really just more workholding tools). Anyway, it's a really fun (if a bit pricey, sometimes) hobby for sure. -- "Interesting! That’s not a shop essential I’ve seen YouTubers mention, but it seems nice and I like the idea of shaping round things without a lathe. My mortise and tenon with the undried birch slice and the pine plank turned out quite fine—great feeling to have made an actual joint! -- "It isn't a particularly popular thing, but I've found the ones I've built invaluable, even for non-round work. Paring tenons is really nice on the brake because you can get up close to the work from a reasonably comfortable sustained position. It also limits the amount of leverage you have on the work so you don't overpare/gauge the work. Also natural to have a spokeshave handy for chamfering the corners of a tenon (which gives the glue some space to run, makes for a tighter joint overall). The other two that get a little more press (but not enough) are a couple of [bench hooks](https://en.wikipedia.org/wiki/Bench_hook) and the related [shooting board](https://en.wikipedia.org/wiki/Shooting_board). The former are really simple devices -- just a flat board with strip of wood at opposite ends on opposite sides, you butt one end on the edge of your workbench, and then can push your work into the other for doing hand cuts (useful especially for cutting tenons), or for planing small pieces. A shooting board is similar, but set up so you can also edge-plane boards dead square (or with judicious use of spacer blocks, at any angle you like) using a larger plane (I use a #7 Jointer I got off ebay and restored[1]). Benchhooks and shooting boards really provide a lot of extra precision at not a lot of added effort, and that's what woodworking is all about. [1] Protip, it doesn't take much to restore a plane, and they make good weekend projects. You can use them to fund the hobby, the #7 I got cost me 60$, rusted and with a badly checked blade. With about 3 days of work de-rusting and cleaning up the parts, I've got a very functional plane that'd probably run me 200$+; I've sold a few #4s at 3x what I paid for them. [Paul Sellers](https://www.youtube.com/watch?v=RYyV6IUpsYk) -- who is generally fantastic -- has a video on the basic process. **tl;dr** 80 grit sandpaper, something flat (plate of glass works well), and elbow grease. A bench grinder isn't necessary, but handy if the blade is real bad -- just be careful not to detemper it. -- "Thanks for the info! I love Paul Sellers a lot—just today I watched one of his vlog episodes which was quite touching: https://youtu.be/mk8H-ffzULs?t=576 On a whim I bought a cheap new bench plane with plastic handles and I’ve gotten started on servicing it by flattening the back, using sandpaper and a bathroom tile I glued to a plywood piece, my little base for flattening and sharpening. I don’t have any stones yet but tile and sandpaper are a nice start—I’m just learning about getting the burr, freehanding the bevel angle, stropping, and all that fun stuff—with a big thanks to Mr Sellers! -- "I have had a hard time trying to figure out some project for a number of spare old boards. I'm spending this weekend completing a BeagleboardXM-based project. While quite old, the XM can sustain *dump1090* ADS-B via RTL-SDR dongle plus occasional USB webcam streaming. I added in a serial port weather meter because it requires very little CPU time, and still have one free USB port (to be decided before sealing the waterproof plastic electrical box). I will install the box on the roof, where I already have a PoE cable ready. -- "After this week first foray into climbing I'm going back to the climbing gym on Saturday. I'm really loving it. The idea is to go 3-4 times a week from now on. I'm also working on some tooling to help me manage my OpenBSD server and keep it secure. Scanning logs to find intruding attempts, etc. I also now get login successes from unknown addresses and important notifications through Telegram, which has a lot more visibility to me than my email account (as I don't want to have my e-mail account in my phone for security reasons). I may post the tools here in some weeks when they have matured and proved useful. -- "I'm going to continue helping my mother tear out her old crap firewood shelter around the back of the house that the previous owner left there. I was astonished how easy it was to pull apart, it was held together with very little. Last week we pulled it apart and moved all the proper firewood to the new shelter, and now we just need to clear out all the treated timber offcuts sitting in the floor and dump them, then extend the new wood shelter. The plan is to replace the old one with a nice veggie garden, because the spot probably has the best sun of anywhere in the garden but is very sheltered from the wind. It's the first time in a long time I've done an outdoors/physical job and I expected to really hate it, but I've really enjoyed it. Doing something with your hands, even if it is pulling a corrugated iron roof off a crap wooden lean-to and nailing a few bits of wood together? It's pretty fun. I'm definitely going to find some new projects to do after this one. -- "I'm off to Hamburg with some friends to attend the concert with Florence + The Machine tomorrow evening. So we'll do a whole lotta nothing and something, I assume. -- "Berlin made International Women's Day [a public holiday](https://m.dw.com/en/berlin-set-to-make-international-womens-day-a-public-holiday/a-46446222), so I'll probably celebrate by reading some Margaret Atwood. Other than that I have a side project in Rust that I'd like to complete. It's nice to get back into \"stack and heap\" languages after writing Python for years. -- "I suggest watching [Angel Number 9](https://www.imdb.com/title/tt0072647/) by [Roberta Findlay](https://en.wikipedia.org/wiki/Roberta_Findlay) instead. It's fucking wild. -- "Beer, board games & metal music with friends. And maybe the lawn. -- "\\m/ -- "Probably actually working on $dayjob stuff, but thankfully that is totally of my own volition. After 4 years of thinking about something that I wanted to build and a year and a half of working at a company where it made sense to build it, I've got the execs convinced that what I want to build is the right thing for the company. So now I just need to deliver it. We're now to the point where parts actually look like they're working which is getting me excited to work on it more and it's nearly to the point where enough of the base level stuff is done that I can start getting more people working on it in parallel. -- "- Installing a set of 3 new pendant lights in the dining room (which will mean running new wiring, new switches in a completely different place, and mounting them to the concrete 'ceiling' - Installing a couple of window awnings over my office window so it doesn't become a blast furnace if I open the blinds after 10am. - If I get time, running some ethernet in my office (and if I *really* get time, out to the lounge room), because wifi in a concrete building sucks donkey balls, and I'm finally sick enough of the issues to do the work to fix it. -- "Writing a blog post on the \"Learn 2 Code\" bullshit that alt-righters have been pushing recently -- "Do you have a synopsis for your thoughts on this? Its a fascinating thing that I know little about (other than what Joe Rogan has brought up on his show). -- "That it's clearly a way to harass people and every programmer knows that you can't just pick up programming to solve the problems in your life, especially if you're under economical pressure and lack stability (like the people usually targeted by this sentence). Also I tried to argument on how this reinforce a narrative that is detrimental to programmers and so programmers should try to fight it. -- "Maybe I'm not familiar with the context of the saying, but there's almost no economic activity right now that is as high-paying, low-effort, and high-demand as some form of programming--especially web stuff. What advice would be better to give to those people? -- "The problem is that the average programmer has it way worse than top programmers and the mainstream media think. And if you learn late in your life there are good chances your skill will place you in positions way below the average. There are many other factors I consider in the article that explain why a random person cannot just learn to code and go to SV and earn money. It's not how it works, except in some libertarian wet dream. Better advice? The one I give them is to first understand all the cons of starting a programming career, then judge by themselves. My problem is not that people with economical difficulties start to code,, my problem is with people selling it as a solution for everybody, without context and without a honest explanation of the industry. -- "I agree with your advice, but even the average programmer has leagues better employment opportunity right now and payment than someone in, say, the service sector. As a coworker of mine pointed out, we get to have soft hands. Even getting paid a middle-of-the-road programmer salary (let's say, 50-60K), is still [50%](https://www.thebalancecareers.com/thmb/oPDRuNiCYSKe98HqjvmLPdv0Me8=/950x0/filters:format(webp)/average-salary-information-for-us-workers-2060808-v4-5b733d8446e0fb00501ae2f6.png) above the median salary for the US, not even factoring in that they're doing better by leaving a stratum of low-paying, expendable jobs. Jobs that, incidentally, we all are trying to remove with software. -- "I totally agree with this and I would still advice a lot of people to try if they can. The problem is that most people can't because the amount of time and energy necessary is not feasible if you have to work two jobs already or worse. And then it should be an informed decision: again, the cons of becoming a programmer are hugely under-exposed to university students and that's a problem. Presenting the option as a safe and healthy alternative is irresponsible. it comes at a price and the price should be clear upfront. Is it better than working at Walmart for the rest of your life? Probably it is for many, not for all. But what if you live far away from a tech hub, in a country where programmers earn not so good salaries? Is it worth to leave family and friends and try your luck in the big city? Again, for some it's reasonable, for others it's not. The trolls are taking away the chance to decide and that's a problem. They create a sense of guilt because you have an easy option in front of you and you're not taking it. Anyway thanks, this discussion is helping me a lot with the article. -- "So then the real problem is that they're trapped in a situation where they can't improve themselves because their economic situation is grinding them into the ground. Full stop, right? This isn't about learning to code, it's about having the leisure time necessary to grow and function as a healthy human being. -- "Obviously it is about that, but that's a premise that many advocates of the status quo would refuse. In the article this is central and I try to explain it sticking to the specific example because if this is true for basically any kind of specialized labour, it's doubly true for programming. -- "If it helps your thought process, another perspective on this: A lot of folks view that there is certainly an element of personal choice in it, though. Computers have only come down in cost in the last few decades, the documentation and support networks have grown exponentially from what was around even ten years ago. It's never been easier to get a website up or to start learning. While there are a lot of people who are kept too ground down working several jobs and supporting families to learn a new trade, the folks being told to learn to code are nominally refugees from the Gawker-now-Gizmodo media empire. It's kinda hard to accord them the same sympathy as, say, the cleaning lady or deliveryman or cop or whoever. They are, I'd wager, in fundamentally different situations and while it serves them to identify with that group they aren't of it. Further, given the amount that a lot of us have sacrificed to do programming, there is a natural lack of empathy for folks that don't seem to be trying to learn (at the easiest time to do so, historically). -- "Yeah, I think feoh has gotten to the root cause of what you were describing. I meet a lot of people like that. You can substitute programming for all sorts of things. They still can't do them due to the effects of the grind they're in. Then, there's others with less of a grind who can actually learn stuff on the side. Most of them don't since it's more fun to have fun in down time than learn a new skill. These could in fact learn easier forms of coding or IT to improve their circumstances. Then, repeat the process in new circumstances. They don't, though. They'll usually keep doing what's comfortable to them enjoying their downtime. I agree with your points that they should know the risks of the career. That they could get stuck in certain IT roles or laid off earlier are big ones. Laid off for outsourcing, in-sourcing, or ageism in particular. Those affect the most people. -- "The context is a 4chan campaign to harass laid off journalists. Hilariously, I've been on receiving end of it from some confused immature soul on Twitter. -- "Honestly, I wouldn't describe people who participate in harassment mobs as immature. They may be, but the fact that they repeat hateful messaging knowing it makes no sense isn't primarily due to immaturity, it's because it's a highly effective strategy for achieving all manner of agendas in today's world. -- "I'd love an explanation for how telling people to 'learn to code' is hateful, and if it is why is it not hateful for the media to have been writing articles like 'Are you an unemployed coal miner? Learn to code!'. -- "I don't recall expressing an opinion on that, as I'm not sufficiently informed about it. I was speaking in general. -- "The context is a 4chan campaign to harass laid off \"journalists\" that spent years telling rural working class people that they should 'just learn to code'. -- "say hi to /pol/ -- "I don't use it, but I have some friends that use it. Most of them claim to be using it 'ironically'. I'm not sure I believe them. -- "well yeah, that ridiculous narrative comes from journalists which is why people are using it against them and why it's funny -- ">you can’t just pick up programming to solve the problems in your life, >especially if you’re under economical pressure and lack stability (like >the people usually targeted by this sentence). The people usually targeted by this sentences (by Buzzfeed journalists) were the ones targeting it back at those Buzzfeed journalists when they got laid off... -- "I know, I addressed all the different sources of this narrative, including governmental initiatives -- "If you know that why do you call it BS? -- "I for one am looking forward to the blog post! -- "I decided not to publish it. It's too unstructured and I felt like talking about too many subjects and to too many audiences. After a couple of reviews I decided to kill it for now. -- "Fair enough. I hope you find the time and energy to revisit it later. Thanks for promoting some interesting discussions. -- "The whole narrative is BS, regardless of who is promoting it or why. I think there are many people pushing the same idea in good faith and that's a problem in itself, but turning it in a weapon against workers makes it even more dangerous, in my opinion. -- "A thanks for clearing that out! -- "I hope you know that the \"bullshit\" you are referring to is satire. I mean it is bullshit of course, but the reason it is a recent trending meme has its roots: It was originally used by journalists, who said laid off coal miners and other blue collar workers should just learn to code. When they were laid off as their opinion articles were not worth anymore for their employers they simply had the same stuff thrown at them by those who were victims of the bullshit earlier. You can decide if this is harassment, and if throwing this crap on the poorer physical workers who lost their works was. I simply find it ironic when bullshit strikes back. -- "Yes I know all the story but now it's been used unironically against worker by trolls whenever they want to make fun of workers, often together with \"free market delivers\" and other similar memes -- "Well, that is not nice. Harassment is never the solution. I have only heard reports of the initial slash-back against the Buzzfeed/Vice journalists, who in my opinion deserved some of it, though not continuous harassment, but a few days of reminder of the dark side of their previously published agenda. I tend to avoid twitter, and only occasionally browse 4chan, where this \"toxic\" behavior is the standard onsite. This is why I have not noticed that this stuff is still going on... -- "Yeah it spread to Facebook too -- "I've been having arguments with my wife about this. Did not know the whole thing about alt-righters pushing this. I've seen in pushed in mainstream outlets. Can you share some links with examples of alt-righters? I'm generally curious, because like I said I've seen it pushed in other places as well. -- "This is when it took traction: https://knowyourmeme.com/memes/learn-to-code Now it's used to troll on a regular basis. -- "I continue to be amazed by the hard work done by knowyourmeme.com and I've twice now found it a great resource to learn the basic timeline of different internet phenomena - first the origins of the \"PC Master Race\" meme, now this. -- "You know that that's just a joke, right? Buzzfeed fired a whole lot of their journalists, many of whom had written lots about how coal miners and other rural Americans should just 'learn to code' and stop complaining about their livelihoods being destroyed by the necessary changes that need to be made to how we use resources due to climate change with no support provided at all. Telling them that they should stop complaining about losing their jobs as journalists and should just 'learn to code' is not 'bullshit' and nobody is seriously pushing it or suggesting that they should. The point is to make them realise how it feels to be told to give up your career path and 'just learn to code lol'. -- "I would say that perhaps focusing on making other people feel bad is not a nice thing to be doing, regardless of how ironic it might be. -- "It's not 'ironic'. They weren't ironically making people feel bad. They were intentionally making very nasty, vindictive and arrogant people feel bad by showing them how they made other people feel. If you need to make someone feel bad to make them realise how they're making others feel, then maybe it's not nice, but neither is their behaviour that necessitated it. Like it or loathe it, if you can't understand the motivation behind the 'learn to code' meme then you lack empathy. -- "You misunderstand: petty revenge at journalists is not nice, regardless of what they may have said to others. The ones that Irene is referring to as using irony are the 4channers, not the journalists. Revenge is never justified. Eye-for-an-eye, even if it's just verbal, is the most disgusting form of justice, designed to appeal to my and your basest desires. -- "I didn't say it was about revenge. Please make sure to carefully read comments before responding to them in a condescending way. The point is not revenge, it is to make people understand how they have made others feel. -- "It's possible to convey that without being petty, \"how does that feel, huh, you like that punks, you got fired, huh, how does it feel, learn to code, losers!\" It's mean and mean-spirited. It does not help. It's petty verbal revenge. -- "If they'd just said that nobody would have listened to them and we wouldn't be discussing the issue right now. Saying it doesn't help is just wrong. -- "Producing a podcast with an indie-turned-pro wrestler from my city. Spending time with the lady. Easy peasy weekend. -- "My lab just got its first new computer in probably 10 years, so naturally the first thing I'm going to do is see if I can get our Windows applications running under Wine. I also have a selfish personal reason for doing this. This computer is significantly faster than any computer I own, and I it would be nice if I could SSH into it to do some tinkering on a fast computer :) -- "Writing a blog post/article about proper backup design and management. -- "Hoping to untanlge my Home Assistant install, which somehow degraded into a crashing mess. -- "Attending (not sure yet if participating) this year's [Stupid Shit No One Needs & Other Terrible Ideas Hackathon](http://www.stupidhackathon.com/). -- "I'd been using the Mercury Parser API for my personal bookmarking site, and it's being shut down in a little over a month, but has been open-sourced, and I need to figure out the best way to run it myself. -- "Trying out rocket.rs by writing a link sharing site that mixes the best of Lobsters and Discourse. -- "I tried using rocket but just didn’t like it. I was coming over from twisted and tornado in python though so I felt more at home with actix-web which is a bit more stripped down than rocket. -- "- Working on slides about KARL for the next BSD PL meetup - Potentially working on slides about tsearch in Postgresql - Gaming -- "Hacking on my libre server. I was able to replace the KGPE motherboard's proprietary BIOS with Coreboot, but Coreboot doesn't do fan control. Now the fans spin at 100% speed and make a racket. Raptor Engineering is working on [porting OpenBMC to the KGPE](https://www.raptorengineering.com/coreboot/kgpe-d16-bmc-port-status.php)'s board controller, which should be able to tell the fans to slow their roll. It looks like the next step is soldering a JTAG header onto the motherboard. -- "Smoking weed and reading [The Gulf War Did Not Take Place](https://en.wikipedia.org/wiki/The_Gulf_War_Did_Not_Take_Place). Otherwise, trying to learn to read Japanese and giving my blog some love. I also really need to write some Assembly. Gah -- been saying I'd try it out for months now. -- "Taking another attempt at learning Rust -- "It does takes time to feel comfortable in rust. But honestly once I got a handle on it I completely fell in love with writing it and as a weird byproduct it sort of built up my confidence in my ability to write code and made me better in other languages oddly. I still love python, C and C++ but getting a non-trivial app to compile and run in rust just feels really good... -- "Recovering from the week. Fuck working -- "My SPrint ends in a code freeze in one hour, and things are not ready, so I think there will be some weekend work happening over the VPN this weekend. -- "Trying to wrap my head around how to draw curved lines using [PICO-8](https://www.lexaloffle.com/pico-8.php) which I've been having an immense amount of fun with. -- "I'm going to try to go on a hike. It may rain, but if it's not heavy, I'll go anyways. Other than that, I'm going to catch up with my Dad, take care of some errands, paperwork, and do my writing class homework. -- "I've been learning Arabic for the past 8 months or so, and I'm finally at the point where I can start transcribing songs and translating them! -- "Cool do you have any useful tips that you might share -- "* Going to see [An Elephant Sitting Still](https://www.filmlinc.org/films/an-elephant-sitting-still/). * Continuing working on a simulator for studying political equilibrium -- "We had to go to the hospital for my youngest boy because of suspected pneumonia today. They where right so probably the weekend will be filled with taking care of him. I found a place to colo my nuc last weekend, I've been preparing it for a couple of days but quit when the little one got worse and demanded my attention. I hope to finish it this weekend so I can mail it on Monday. That's it, maybe play some games on my old PS3. -- "I feel you on the pneumonia front. We just got out of hospital a few weeks ago with my 4 year old daughter for the same... -- "Will have to work on Saturday but I plan to use my Sunday to retake my writing and write some blog posts for next week. -- "Trying to figure out the equations behind the hyperbolic space that constitutes the Dasher input method. Thought it'd be quick to spin together a demonstration in nim for an online js/HTML version but it's a bit more advanced than I thought. After digging some in the source code and finding the correct formula I tried to vectorize some drawings of a friend. Then my drifted and now it's X-files marathon until I go to sleep. -- "This was a particularly disappointing work week. I will spend this weekend raising my HackerRank score. -- "Well, I treated myself to a 4-day weekend by taking Friday and Monday off as vacation days (\"Use 'em or lose 'em!\"). Spent most of yesterday relaxing and fending off the tail end of this flu. Played Doom 2016 in the morning, hit the gym, played classic Doom upon my return, and then recorded and uploaded an episode for Hacker Public Radio. I'll be going out later tonight for dinner by the bay (supposed to be a nice night). Spent the morning interacting with family during breakfast and then hit the gym. As for the next few days, I plan to hit the beach on Monday for some ocean air and relaxation since everyone else will be working. After that, heading home to pick up my sons and then celebrate my niece's birthday altogether with a dinner out. Still not sure about Sunday. More than likely, more relaxing. After a rough two weeks, I need the lazy days. 😁 -- "Improving https://badges.debian.net/ , uploading https://github.com/babluboy/bookworm into Debian Experimental, fixing the Python MongoDB library in Debian -- "Wife’s out having a weekend with friends so just finished taking little son and daughter out for Italian and then a late night in a tent in our living room watching finding nemo and eating popcorn, which they are passed out asleep in now. Tomorrow going to take them to the local park, play video games, and generally avoid writing any code at all as well as catch up on some reading. Finishing a sand county almanac by Also Leopold and starting wind sand and stars by Antoine de saint-exupery. Was going to start Castile by him but the book turned up in French and I can only read a little French... need to remember to check amazon book details more carefully... -- "It’s that time of the week again. What are the great projects that Lobster’s are working on? -- "Going to finish up [Fortress](https://fortress.black.af/) then write a post explaining it with a demo (video - because I _know_ doing it will be too much work, lol). -- "This is super interesting, I'll be looking at this more in depht after work today. btw, in the set up section there are two \"2\"s in the numbered list. -- "Nice catch! And yeah, hopefully; I'll be done if I can cram this between work. -- "I've been looking for something like Fortress for a while, awesome. Also, love the artwork for the site! Did you create it yourself? -- "I didn't; the art's from [Icons8's Ouch! collection](https://icons8.com/ouch). I hope you'll find it useful when it's ready. -- "Just finishing up tasks at my current work and preparing for a new job, which includes k8s and Chef. -- "* After years of no exercise and to combat my fear of heights I've decided to start climbing (we'll see how it goes) * Work, lots of work * Programmable RTS game I'm working in my free time * Catching up with some friends I haven't seen in a while -- "I hope you enjoy the climbing! I've never been great with heights but picked up bouldering a couple of years back for unrelated reasons and love it. I do think it's helped: more importantly it's a great sport and a lot of fun. -- "Thanks man! I'm starting today after work and I'm super excited. Glad to hear it worked for you. -- "* Off to Bologna, Italy 🇮🇹 for the week. Working half of it, exploring the other half. * Hopefully tinkering further with my [SmartOS provider for terraform](https://github.com/caius/terraform-provider-smartos) whilst I'm there, as I ran out of time/brainpower this weekend to do anything with it -- "Researching /drafting a book that tries to tie in all the HashiCorp tools. Practicing pest.rs. Generally speaking, going all-in Rust for a while for all programming things. -- "Migrating ZooKeeper to another DC -- "I started my week by defeating Jon Irenicus (again), and playing through the first half of Throne of Bhaal. I'll save the rest for my return flight to Europe in one month. I'm working on social-networking type stuff in a Haskell/Yesod web-app. I'm a co-founder in the company and we have some funding so this is my full-time gig. I'm also starting to turn [NewBusinessMonitor](https://newbusinessmonitor.co.uk/) (also a Haskell/Yesod thing) into a white-label product to hopefully land some enterprise sales deals I have pending. -- "Because I spend a lot of time reading new codebases I am working on a code exploration tool to replace my current workflow, which consists of opening many files and jumping between them as I understand it better. It’s currently statically analysing the code, presenting it as a graph, and provides me with a debugger like call stack and the ability to step through the code execution. -- "$work: Paperwork continues, paperwork for days. Also a weird bug causing periodic stalls on our prod app's disk access. Very heisenbuggy. !$work: Jury duty this week, other than that, Croissant attempt this week went better than the week before. I've got the lamination parts down, just need to improve cross-layer adhesion. Pain au chocolat is really tasty, I'll tell you what. -- "Work: reviewing articles. Also, migrating some projects to our newly-released [rust2vec](https://crates.io/crates/rust2vec) 0.5. rust2vec used to be just a crate for reading/writing word2vec and GloVe embeddings in Rust. With this release, we have added a new format (finalfusion), that supports memory mapping, subword units, and quantized matrices. Our crate for training embeddings from Rust ([finalfrontier](https://github.com/danieldk/finalfrontier/)) will switch to this new format. I am also working on a Python module that is a wrapper around the rust2vec crate. Home: implemented a smart meter sensor reader (ESP8266). Have to convert this into a final version (with some sort of case). I also got some Blue Pills (STM32, but with the correct resistors) last week and an ST-Link programmer. I flashed Black Magic Probe on one of the Blue Pills. I want to use them to play a bit with Rust embedded. Blinking LED and using an OLED display (the 'hello world's of embedded) was easy. -- "New job! With friends! I'll miss funemployment but I welcome the return of a paycheck. -- "Dunno if I'd call it 'great' but my full time job has me at capacity much of the time so I've been building tiny graphics doodles in [PICO-8](https://www.lexaloffle.com/pico-8.php) like [this one](https://twitter.com/feoh/status/1101338180761075712) but limiting myself to extremely small chunks of time for each. It's been a lot of fun exploring basic concepts interactively and I'm kind of addicted to the old school 8 bit simplicity of it all :) -- "I've been taking it slower lately, my only project I'm actively working on is a personal image gallery (linear booru-style) with data importers from popular services. Major objective is to never touch the files on the disk and keep everything in a sqlite database for easy and fast deployment. I hope that the result can keep my images of both family and from the internet more organised. -- "A secret, hush hush. Does anyone know of a good example doing deep feature extraction by lopping off layers from a Tensorflow graph (or other framework)? Asking for a friend... -- "I'd like to understand [Differential Dataflow](https://github.com/TimelyDataflow/differential-dataflow) a bit better than what's just in the paper by playing with some actual programs. However, I'm not a \"Rustacean,\" so going through the online Rust book. Additionally, a few nights this week, I'll spend some time writing some C for a stack based programming language I've been throwing ideas around for. (And, yes, I _do_ see the irony here.) -- "\" I’ll spend some time writing some C for a stack based programming language I’ve been throwing ideas around for.\" I bet you a T-shirt it takes some inspiration from Forth. ;) -- "> I bet you a T-shirt it takes some inspiration from Forth. ;) More Joy! But obviously, Joy has influence from Forth. -- "I'm happy to lose T-shirt money at some point in future for more language innovation. Not a joyous occasion but OK. -- "No, [Joy](https://en.wikipedia.org/wiki/Joy_(programming_language)) -- "I know. It was a flat joke about it. \"joyous occasion.\" Bombed that. -- "I thought so, but it could have gone either way. ;) -- "It's all good. :) -- "$work: Just got pulled off of a multi-month project which looks like I might've rabbitholed on. It sucks, and I haven't felt this bad about a project in almost a decade. Really not a happy camper. So, for my encore, I'm going to be doing a bunch of test automation for common workflows--except that integration testing is annoying in Elixir, debugging is annoying in Elixir, and just sort of everything is making my life harder than I feel it should be. Also, getting back from a two week vacation to stave off burnout only to find everybody cheerful and bright-eyed and bushy-tailed really sucks--on the plus side, I'm getting to do a lot of pairing with my CTO this week, so that's nice. $not_work: Got to play with my Vive more, which was nice this weekend, but it fucked up my sleep schedule. I stood up a mattermost instance for a friend backchannel and have been dealing with legacy user migrations, petty bickering and drama, and basically just a lot of annoying flak. I've been doing one meal a day with a couple of cheat days, so the number of happy things in my life is down by 2/3. Oh, and Alita was shiny but not really that good. -- "Sorry to hear work is sucking for you. Hope that gets better. Far as this: \"except that integration testing is annoying in Elixir, debugging is annoying in Elixir\" I did save your comment about mismatches between Elixir and Erlang since that might help someone later. I figured they'd at least have the development basics in good shape. That's two key areas you say it sucks. Whereas, most things I see come off as fan articles. What else do you think needs improvement about it? \"Oh, and Alita was shiny but not really that good.\" I was worried that might be the case. I'll pass it on. Thanks for saving us the money. :) -- "The development basics are _mostly_ in good or even great shape...it's just that the community is mostly Rails refugees right now, and debugging with breakpoints is something most web development environments in the backend just don't seem to be really good at it. Further, at least right now, the native Erlang debugger (which is quite servicable!) seems to get confused and sulky and won't just always gracefully handle Elixir code and tests. Hell of it is, I figure this is probably 60-80% our codebase's fault and not the tooling per se. The docs suggest that this should be easy, my own experience suggests not. Blog post after next will be talking about rough edges in Elixir I guess. :-\\ Thanks for the kind words otherwise. :) -- "At work I'm still plodding along adding support for a new 3D terrain API in our mobile plugin app. I'm not making progress as fast as I'd like, but it's coming along. Outside of wor, I'm adding support for PR quadtrees to my [quadtree library](https://git.sr.ht/~jl2/quadtree/\"). Insert is working, and I can refactor the range-find method from point quadtrees to work on both, so that'll save me some work there. The remove algorithm is more straightforward for PR quadtrees, so I'm hoping to implement that this week also. And I'm going to add some kind of visualization, partly because I think they look neat, and partly to help debug visually. -- "I just started a new job after two months of funemployment, so there's a lot of ramping up and getting started at a new company; but I've been finding littles bits of time to work on a [PlatformIO library](https://platformio.org/lib/show/6168/featherlib/) for the [Adafruit Feathers](https://www.adafruit.com/feather). -- "$work: My main project is still Kubernetes, I've been building a server and plugin for token-based authentication and am now at the point of rolling out Kerberos-based SSO (via the token server) to our users. Outside work, I'm plugging away at *Programming Rust* and am looking into doing some QR code art for a side-project. So far that's involved reading the QR spec and trying to figure out just how much 'art' I can add before my QR becomes unreadable... -- "Today I'm closing my cycle at my current work. I bought some rubber toys as a present for my coworkers so they can use them a debuggers -- "What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "AFK: * Mulching the trimmed garden offcuts into the green bin from where I trimmed the hedge last weekend * Helping a friend butcher his hedge before bird nesting starts * Sorting out Sailing Club's Race Management System (read: Access Database) with the current season's racing calendar, ahead of racing starting on Sunday * Helping refurbish the lines on the Sailing Club's Laser 2000 fleet * De-winterising my boat (Flying Fifteen) for racing on Sunday, not a huge amount to do. Probably just re-rig the sails and give it a once over by eye. Need to do a spring service on it later in the year I suspect, there's a rather worrying fray in the main halyard sheathing for one. * Racing Sunday! * Assembling IKEA bookcases to replace our ageing/small sideboard in the dining room 💻: * Continue tinkering with my [SmartOS provider for terraform](https://github.com/caius/terraform-provider-smartos). I'd like it to be able to grab an image as a data source for the first pass. I think I'm going to spike it out as an alpha release by having a ruby script do the SSH work to call `imgadm` on the SmartOS hypervisor, save writing all that in the go wrapper. Then move it back into a go project once I've worked out what it needs to do. (Solve the actual problem, then solve it being in the wrong place in the program/architecture.) End goal being I would like the zones on my Microserver running SmartOS to be managed by terraform, but without having to run a [Triton](https://www.joyent.com) hypervisor locally to give me a terraform compatible API. I like SmartOS, but I also like having my infrastructure described as code. * Move some bits around, consolidate some hosting bills. * Take my mum's new NAS round and install it. Microserver running FreeNAS, as it does what she needs easily and is maintainable. -- "After work is complete this afternoon, I'm going to shut down my computers, walk into the living room and play Zelda: BotW until my eyes bleed. I'm not going to work on anything until Monday after the tightly-wound two weeks I've just had. [SERENITY NOW!](https://i.imgur.com/57KriYP.gif) -- "I just want you to know that I support you wholeheartedly in this endeavor. -- "I got a little bit further in BotW, and I am probably going to make a good fist at finishing at least the main story, because it is real good. But it's also probably too \"open world-y\" for my tastes; I prefer more linear game construction to the \"craft all the things!\" style -- I already *have* a challenging job that takes up most of my spare non-kid time, dammit. -- "Staying off the keyboard: 2 days of Kyudo training and an exam on Sunday. -- "For those who care: passed. You may now see me on international events :). -- "Evaluating Ubuntu or FreeBSD and maybe have enough time to install it on a Mac Mini (late 2012). It'd be my first time seriously going outside of Windows or MacOS, I'm still trying to determine all my use cases for the machine. -- "If you consider using Ubuntu, you might want to check out Linux Mint as well. I love it. -- "As someone who's been using Linux for years, I cannot recommend against Ubuntu enough. At work they asked me what operating system to preinstall on my machine, and to be able to work with everything else I chose Ubuntu, a huge mistake. I would recommend the upstream distribution, Debian. -- "Play around with [DevSecOps studio](https://github.com/teacheraio/DevSecOps-Studio) -- "Starting a journey to teach myself mathematics, beginning with what I didn't do at GCSE and working my way up. Always felt stupid for not being able to do some pretty obvious maths during my degree. -- "Nice! What sorts of resources are you planning on using? -- "The textbooks I didn't hand back in when I left school... And the textbooks my brother didn't return. (Don't tell my school) -- "A nice one I found in the HN threads was [Concepts of Modern Mathematics](https://www.betterworldbooks.com/product/detail/Concepts-of-Modern-Mathematics-9780486284248) by Ian Stewart. He first explains how math was taught wrongly for a long time along with its actual purpose. Then, he teaches a number of subjects with a combo of descriptions, pictures, and examples. It's really cheap used, too. -- "Highly recommend 3Blue1Brown YouTube channel, with series on Calculus and Linear Algebra. -- "Korean food and Karaoke tonight! Boardgames and wine tomorrow night! Moving my work laptop from Win10 with WSL to Xubuntu 18.04 (like the rest of my computers) on Sunday so I can finally feel sane while developing at work again! -- "Picking up a new telescope tomorrow and getting back into a hobby I haven't done in over 30 years. Taking a stab at astrophotography this time, too. -- "That's really cool, what type of telescope were you thinking of getting? -- "Not thinking about it, I've already got it. :) It's waiting for me at the store. I was just waiting for the mount to come in. I got a [Meade 115mm Series 6000 ED Triplet APO](https://www.meade.com/115mm-series-6000-ed-triplet-apo.html) with an [iOptron CEM25P](https://www.ioptron.com/product-p/7102p-hc.htm) mount. Picking it up in the morning. It will probably be a bit until I actually take a useful picture with it, though. -- "please publish photos, instaling and from sky -- "Hacknight Friday -> Saturday Board Games with friends Saturday and working on a personal project of mine (game) in my free time -- "I am tinkering with the [Curv](https://curv3d.org) programming language. It's a pure functional language. There is no shared mutable state, and no global ordering of side effects. It's not hard to automatically parallelize Curv programs. However, there is an assignment operator that lets you reassign local variables, and that's what I'm working on. The purpose of the assignment operator is to support conventional imperative programming style while writing programs, because that is a stumbling block for non-expert users of other pure functional languages. The semantics of the assignment operator are constrained so that it doesn't disrupt the pure functional semantics. The constraints are sufficiently subtle so they usually do not get in your way, and all of the most common imperative coding patterns just work. For example, there is a `while` statement, that works by modifying local variables on each iteration until the exit criterion is satisfied. This is tricky to design, and I haven't seen another language that works this way. The current design for the assignment operator is an obvious kludge, and I'm aiming for a new design that feels very simple and natural. -- "I'm going to work on my Mal (Make a Lisp) compiler. There is a bug where it cannot compile the Mal interpreter which is written in Mal itself and somewhere here my mind turns into one of those conspiracy theory boards with perp photos and strings and newspaper clippings. Anyway, it's a fun challenge! -- "I shall probably play some Apex Legends on the PS4 and then play around with some tweaks to the select syntax on my side project: https://github.com/zaphar/ucg -- "Apex Legends lobsta reportin' in mon. Don't forget to check out how Epic is continuing to destroy Fortnite too. Season 8 came out yesterday and holy it just keeps getting worse. Besides also playing Apex, I'll probably record another song on my guitar and contemplate how to do a minimal crypto-based store (right now any solution involves a honking php engine...not for me. C or Rust is only acceptable.), and learn r7rs-small scheme. Writing a r7rs bytecode compiler will be my final goal, probably not one to be met for years. The idea is to write the most portable vm in existence, and remain conceptually simple. Efficiency is not on the menu. If we want efficiency, we turn the vm into hardware. Another goal is to be future proof, so that's why it's important to be simple as hell, so that future generations can reverse engineer the bytecode and write their own. -- "Just got a T480, so will be setting it up and maybe go do some canopy outside. -- "It's time for some house work. Fighting moss on the lawn and pulling out raspberry in the garden, trim the hedge. Finish assembling the furniture in the laundry room. Hope to still have time left for chilling with a book. -- "I'm going to learn to stop worrying and enjoy watching the wheels fly off at work. Oooh! That one went far! -- "Relocated to Tokyo for the month, ending with asiabsdcon (if that one actually happens). Still a bit sick from travel, so coding from the futon. If that clears up, Sunday will likely be hitting up mi-ka-do arcade, a cigar bar and some more coding. -- "Installing solar panels on our house with [SunWork](http://www.sunwork.org)! -- "This is my last weekend before I return to full-time employment! I'm helping out with the [global diversity CFP day in Pittsburgh](https://www.globaldiversitycfpday.com/events/92) tomorrow and helping to finish testing a ticketing system we're building for [Abstractions conference](https://abstractions.io) after. Sunday, I'll put putting some finishing touches on my [time-tracking script](https://github.com/colindean/hejmo/blob/master/scripts/t) ahead of that new job. I've got a local copy that adds some charting with gnuplot so that I can see weekly, monthly, and yearly plots. I developed it as a part of a severance negotiation process and will use it heretofore as a way of collecting data in pursuit of never overworking myself into burnout ever again. -- "Working on a proposal for the reimplementation of Ponylang's range class Reading stuff about starting a tech worker cooperative -- "Throwing a few pounds of copper onto a decade-old motherboard. My desktop is still an old system from 2010 with a Westmere Xeon in it. I am finally going to overclock it to help catch up with a few years' worth of increased ~~bloat~~ performance needs in various applications. The northbridge (yes, it's so old that it still has a northbridge) runs dangerously hot. Not a huge deal normally because I'm not trying to overclock the memory, but the motherboard connects the (rather weak) heatsinks on the power delivery to the heatsink on the northbridge with a heatpipe. So overclocking it is going to add a lot of heat to the NB via that heatpipe, and as they are physically connected, I cannot upgrade the cooling of just one of them. Hence removing the cooling and throwing a few pounds of fresh copper onto it. Inviting a younger friend over who has only ever owned laptops, and going to narrate my teardown and rebuild, as he wanted to learn about building a desktop. -- "I think I'm going to _finally_ buy a stand mixer. I've always baked and I've been doing more and more baking these days and I'm limited in what I can do because of my laziness...I don't want to spend 20 minutes whipping up egg whites to stiff peaks anymore. Also I've killed off my little personal project that I used to manage my budget. It was a few weeks worth of work but I learned a lot from it. The past two weeks or so my friend and I have been outlining a technical design for a financial manager sort of thing. We're going to start hacking at it this weekend. The cool thing about it is that we're _not_ using a data provider for bank info (like Plaid, yodlee, or others). It will be a fun adventure :) -- "Congrats - I'm hopefully buying a mixer (old ankarsrum) this weekend after a year of making of pizza dough by hand / in a blender. Also, curious about your budget tool. For accounting I've been using beancount (plaintext accting, python) & fava (web interface for beancount) where many have been writing their own importers - currently slowly trying to add to fava's extension support. I remember bookmarking that financier's front-end code went open source last year: https://blog.financier.io/financier-is-now-open-source-bdfe98a5b9b6 -- "The initial idea was to put in goals like: “I want to be spending 30% of my income on rent” or “I want 5% of my income to be charity” and see progress in those categories. The end product was that I would create categories and allocate a certain dollar amount for each category. I use my debit card for most things, so I used plaid to fetch transaction data and every day I would open it and categorize new transactions that showed up. Then I had a page w graphs and stuff showing spending history and stuff like that. It was filled with weird bugs that I was fine with because it was just a hack really. Wasn’t supposed to be “good” code but I ended up using it for about two months. I’m now using [Actual](https://actualbudget.com/) and it’s pretty good. It was more awareness of my finances then strict dollar for dollar budgeting. -- "* Experiment with [Donkey Car](https://github.com/autorope/donkeycar) * Set up a new craft/hobby bench and shelves at home * Try and wrap up a round of updates on my sadly outdated ansible playbook for local dev tools * Hopefully use the results of the previous step to provision my desktop that just got its drives upgraded * Get outside and run a bit while it's sunny and dry -- "smoking a bowl -- "Flying to Kuala Lumpur for one night so we can renew our Thai on-arrival visas. Hacking on Haskell/Yesod stuff on the plane, as always. Hoping to visit the Forest Eco Park today. Looks very beautiful. Good to get out of Chiang Mai for the weekend too. I hate hippies, I hate typical South-East Asia backpacker tourist elephant pants, and I hate hearing people just talk about doing drugs all day. Grand Canyon [last weekend](https://instagram.com/p/BuS5Sl-A1Qe/) was an absolute triumph. -- "I've been looking at Java (and assorted JVM language) program protection, so here are a few of the things I plan on doing over this weekend (and probably for a lot longer): - I got a ClassLoader implementation working that uses WebSockets, so if any tampering is detected we can close the connection and the modified client is left without being able to receive any of the classes. - Working on a rewrite of my obfuscator, [Paramorphism](https://paramorphism.serenity.enterprises) - Writing a virtual machine that runs under the JVM, and then reimplementing the same VM in C. Once the bytecode format is finalized, I'll need to write an assembler library for it for both Kotlin and Python*. - Figuring out how to market my obfuscator once it's done In other news, I just finished a week of mock exams at school, which is nice, I get to relax now. Today I started working on a system that lets me render OpenGL at a fixed framerate and dump it into an mp4 file, so hopefully I can end up with something like [manim](https://github.com/3b1b/manim) but GPU-accelerated. I'm probably going to focus more on synchronizing effects to music rather than displaying mathematical notation, though. \\* (My new obfuscator is written in Kotlin and I can write an obfuscation pass to do JVM bytecode -> internal VM bytecode translation, and the WebSocketClassLoader server support is written in Python, and an internal VM is perfect for a challenge-response system to check client integrity.) -- "Going back to my parent's house since I don't have class for the rest of the week. Staying nervous waiting for the results on today's Algebra final exam; and catching up with my Computer Architecture class (I have about ten days until midterms and I have done absolutely no studying until now). -- "I halfway migrated off Hetzner to GCP. I'm going to finish that and get my stuff on Terraform. -- "I recommend taking a look at pulumi as well for managing your GCP setup. -- "Woah, very cool. I'm partly on TF already so I'll just finish up there but Pulumi looks pretty cool. It allows for the more complex ops you occasionally want to do on TF and are forced to use `count.index` and friends. -- "This week I got the key to a half-basement I started renting next to our apartment building, for my new woodworking hobby. The space is as minimal as my skill. But learning my way into a new field with the help of internet and books is so much fun. I've decided to primarily work with hand tools, because I don't really enjoy working with loud sharp machines, and because when we have children I think hand tool woodworking is a more accessible thing to do together—and because my grandfather was a hand tool woodworker. So my first project is to learn to sharpen a chisel iron and a plane blade. I glued a reasonably flat ceramic tile to a piece of birch plywood cutoff and got a bunch of waterproof sandpaper at different grits, and also glued a piece of faux leather to a block of wood for the final stropping. I didn't have spectacular success with the first attempt at the chisel iron, but then I tried fixing up a Japanese chef knife that had become dull and nicked, and after twenty minutes with sandpaper and a bit of stropping, it's really sharp again, so that gave me some confidence. Now that I can sharpen stuff I want to sharpen our other knives and scissors. I also saw a big pile of tree stumps outside a nearby house, and contacted the owner to see if I could buy a few just for fun, and he said I can just grab some, so I'll do that today. It turns out he's a woodworker making children's toys, and he might come around to check out my workshop too. -- "Learn logic programming by reading \"The Reasoned Schemer\" and then implement a version of it in Rust! -- "Last night I finally figured out how to get macOS [Yggdrasil](https://yggdrasil-network.github.io) nodes to peer automatically using AWDL, so that they can mesh with each other without even being on the same Wi-Fi network or connected to a Wi-Fi network at all. I'm planning to do some more testing with this and relax apart from that. -- "Writing emails to long distance friends. I have neglected them for too long. -- "A four person battle with norovirus. You know you're at peak parent when your toddler starts to barf and your first reaction is to reach out and catch two handfuls. It's simultaneously insane and totally unhelpful, because now I have to go wash my hands before I can help Peanut get undressed and into the bath. When I'm capable of moving independently again, I have to go pick up a spool of CAT 5 for the new house. That's about as much as we can reasonably be expected to do. -- "Rolling my own auth -- "Princeton Coursera Algorithms Part 1. Finishing the first homework and starting week 2. That first assignment caught me off guard. Sheesh. I thought I was good at this stuff, but now I'm not so sure. The second week looks more familiar though. I hope that goes a little smoother. -- "- Yesterday I did a bunch of garden work that's been building up. - Last night I finally got around to setting up an extra account and getting some stuff installed on the \"spare\" MBP15 I bought last year to replace my ageing 2011 MBP17 so my wife can use it if she wants; - This then allowed for swapping the factory SSD (128GB) in my 2011 MBP into the optical slot, and putting a brand new WD Green into the HDD slot; - This then allowed for reinstalling macOS - Unfortunately my ExpressCard SSD has got some errors because while it did boot to the macOS Installer volume on it, it had errors trying to start the install process, so I had to resort to internet recovery mode (I'd already wiped the previous install on the factory drive) - This then allowed to setup that machine as a 'home server' to do all the shit my workstation has been doing - iTunes for AppleTVs, printer/scanner, and eventually running a security camera setup. -- "I'm interested in learning more about the Linux kernel, and generally how operating systems work. I'm aware of a couple of books already: * Linux Kernel Development, Robert Love * The Linux Programming Interface, Michael Kerrisk * A Heavily Commented Linux Kernel Source Code, Zhao Jiong (posted here a few days ago) I've also read here and there that writing a toy kernel module is a good place to start. Some people will also recommend just diving into the code and trying to understand it. That seems a bit daunting given the size of the codebase. I suppose I could start with some system call and tug on that thread for a while if that's the route I end up taking. So, if you wanted to learn the ins and outs of the Linux kernel today, how would you go about it? -- "It's not about Linux per se, but it does relate to how operating systems work and a similar kernel: [The Design and Implementation of the 4.4BSD Operating System](https://www.freebsd.org/doc/en_US.ISO8859-1/books/design-44bsd/book.html). I bought it on the recommendation of John Carmack and the depth it goes into is great. Every chapter also has little quizzes without answers, so you can confirm to yourself you know how the described system components should work. -- "Great book. Multiple pluses on this one. -- "Thanks! -- "Thanks! I'll give that book a look. -- "Try these challenges: http://eudyptula-challenge.org Nvm, they are closed. Maybe there's an alternative? -- "I've heard of that before. It's a shame that the challenges aren't open for everyone to view. -- "I went through the path of going over bugs and just taking a stab at them. I also had mentors that didn't mind answering my questions. kernel panic -> there's a panic command generating that output so you can find the relevant code. Go look for it, go look around. In one of my favorite bugs I went over the boot process from the start symbol and seeing where it goes and figuring out what it is doing. I strongly recommend trying that out one time, but I don't know where it goes for linux :-) -- "Found you [something](https://lobste.rs/s/2xma0r/linux_kernel_boot_process). -- "As @WilhelmVonWeiner mentioned, I would invest in a copy of the (The Design and Implementation of the 4.4BSD Operating System)[https://www.freebsd.org/doc/en_US.ISO8859-1/books/design-44bsd/book.html] or (The Design and Implementation of the BSD Operating System)[https://www.amazon.com/Design-Implementation-FreeBSD-Operating-System-ebook/dp/B002L9MZ1K/ref=sr_1_6?keywords=The+Design+and+Implementation+of+the+BSD+Operating+System&qid=1551313504&s=gateway&sr=8-6]. And I'd suggest starting my writing your own simple operating system kernel. Personally, I moved from there to studying Minix (this was many years ago). Minix was (and I hear still is) great for learning from. It's different than Linux in that it is a microkernel architecture, that said you will learn a lot from it because it's easy to read through and understand. Between writing your own and Minix, you'll be off to a good start. I still find the source for the various BSDs easier to follow than Linux and would suggest making that your next big move; graduate to a BSD if you will and from there, you could leap to Linux. One other thing to consider. Picking a less used kernel to start hacking on when you feel comfortable might be a good idea if: you can find folks in that community to mentor you. In the end, the code base matters less than having people who are grateful for your assistance and want to help you learn. In my experience, smaller communities are more likely be ones you can find mentors in. That said, your mileage my vary greatly. -- "Thanks! Any idea why the source for BSDs is easier to follow? -- "I could take guesses based on number of people who are committers and the development process as to why that is the case, but in the end, it would be speculation. I know I'm not alone in this feeling, but I don't know if I'm in the majority or minority. -- "Not a BSD, but Minix 2 was written with readability as nearly the only goal -- "Any pros and cons of the [4.4 BSD Operating System](https://www.amazon.com/gp/product/0132317923) vs [FreeBSD Operating System](https://www.amazon.com/gp/product/0321968972) books? -- "I haven't read the 2nd edition of the book so I can't comment on that. Sorry. -- "I'm not a kernel dev, but I wrote a toy Linux kernel module and it definitely gave me a better understanding of how the kernel works. So if you haven't done that I would recommend it! For Unix in general, the code for xv6 is also easily buildable and runnable. I ran it in an emulator and did a little hacking on it: https://pdos.csail.mit.edu/6.828/2012/xv6.html I would try porting Brainfuck or tinypy to it inside the emulator and running Mandelbrot :) That is, it has a tiny shell and tiny user space. You should be able to compile a new program and boot the system with it. -- "For some background, I would also suggest [The Design of the UNIX Operating System](https://www.amazon.com/Design-UNIX-Operating-System/dp/0132017997) (1986), by Maurice Bach. -- "lovely book, I'd recommend starting with this and \"Unix Internals: The New Frontiers\" by Uresh Vahalia. -- "That’s a wonderful book, that I wish had been updated. -- "some modern linux exercises if you haven't narrowed down your own yet, and want to just jump into kernel hacking like you want to do anyway: * start with a small loadable kernel module that logs a message with pr_info that you can read from dmesg * have your kernel module create a procfs entry that can be modified from userspace to get information into the module * modify kernel/sched/core.c (formerly sched.c) to read a number from procfs and bias the scheduling algorithm to blacklist it from ever running. test by starting a userspace process that print in a loop, write its pid to procfs, see if it stops or not * introduce a subtle bug in the scheduler (if you were fortunate enough not to have in the last step) and use qemu + gdb to peer into it at runtime * implement a new syscall, call it from userspace * intentionally introduce a memory corruption bug and use kasan to catch it -- "Those projects seem like a nice entry point. Thanks for the advice regarding the soft-skills too. -- "I am *not* a Linux kernel hacker, but here is the route I would take, in addition to all the other great advice in this thread. * Read lwn/kernel mailing lists * Have some changes or bugs in mind that you would like addressed * Start writing linux kernel modules * Figure out how to debug, build and test your kernels. Inject bugs into a test kernel and then figure out how to find it. * Have a robust, stable, fast, repeatable dev environment. Don't hack main kernel on your laptop, get skilled at QEMU and GDB * https://www.kernel.org/doc/html/v4.11/dev-tools/gdb-kernel-debugging.html * http://sysprogs.com/VBoxGDB/tutorial/ * https://nickdesaulniers.github.io/blog/2018/10/24/booting-a-custom-linux-kernel-in-qemu-and-debugging-it-with-gdb/ Lastly, get good at statistics, charting and benchmarking. Lots of changes are very subtle, and do to solid engineering, testing and confirming the result is going to be the vast majority of the time spent. The nature of the domain isn't one of hammering out 1000 lines in a weekend. And even if it was, it will still requires weeks of analysis to confirm the result. -- "Thanks for the tips! It will definitely be a different mindset from my normal development mode. -- "There's also this pretty thorough description of many of the kernel elements. https://github.com/0xAX/linux-insides -- "That looks like an excellent resource, thanks! -- "I maintain a book on kernel modules, which can be a good place to start. The examples should all compile with the latest kernel. https://code.freedombone.net/bashrc/LKMPG -- "Thanks! -- "May want to start with a device driver to get your feet wet. Linux Device Drivers 3rd Edition is the gold standard for that. HTML version, easy to navigate: http://www.makelinux.net/ldd3/ PDF: https://bootlin.com/doc/books/ldd3.pdf -- "I used LDD3 a few years ago when going through the eudyptula challenge, and found that much of the advice/examples were outdated for >2.6 kernels. -- "The Linux kernel is massive, and learning how it all works is a pretty big undertaking. I learned far more by trying to add to the functionality than reading a book. If you want to learn how operating systems work, I'd recommend starting with something super simple, like a unikernel, RTOS, or the like. For example there's FreeRTOS. You can buy a compatible development board and a JTAG (hardware debugger) and step through the boot process to initialize hardware and watch it do things like interrupt handling and context switching. FreeRTOS typically runs on hardware with only a memory protection unit (IE no virtual memory) which is much more simple. Once you understand that I would move on to Linux or something else full featured. As for Linux proper, is there something in particular you want to learn about? There are device drivers, architecture specific code, the network stack, the block layer, the scheduler, etc... I took a class on device drivers and the book for that was very good: https://www.oreilly.com/openbook/linuxdrive3/book/ . It's ancient but the concepts are all still generally applicable. I think it was easier to start trying to add a device driver than anything else. The kernel has a built-in gdb stub called KGDB that typically works over a serial port, and it also has a simplified front-end called KDB. Stepping through code is sometimes more easy than just trying to read it. Some hardware specific IDEs are also capable of stepping through kernel source (TI's code composer is the only one that I know about, and the hobbyist SBC of choice for them is the beagleboard https://beagleboard.org/static/beaglebone/a3/Docs/ccs-jtag-simple.htm.) If at some point you just want to jump in and hack, check out https://kernelnewbies.org/KernelJanitors though I never did it myself. There's also an IRC room for kernelnewbies https://kernelnewbies.org/IRC -- "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. -- "My bachelor's thesis! I'm working with [Adam Shaw](http://people.cs.uchicago.edu/~adamshaw/) to add typeclass-supported iterative programming to SML. Also, finally going to make a new blog post on some fun type inference stuff I learned while working on said thesis. -- "Looking forward to the post! -- "We've launched out Magento 2 site and things have been going swimmingly. We have a few glaring holes we're working on fixing but other than that, I'm back to my normal pace of work again. Its weird to have no pressure anymore. In my personal life, I have time again to get out there and work on some stand up material and focus on producing my shows and podcasts. -- "We take possession of our new house tomorrow, so there's a lot of logistics involved in the move. Happily, we will be in Bell's gigabit fibre service area, so at least I'll get decent connectivity. At work, my role has been expanded, which yay? but at the same time I'll be spending less time with my original team, and trying to help my boss and peers with a team that has been badly served and needs a lot of hands-on assistance. So, good that they think I can do it; bummer that I'm going to miss some of the interesting stuff we've been doing (custom HTTP/Kafka endpoints, new network topology, Kafka topic mirroring). Ah well. -- "I last posted around Thanksgiving. Starting the new job and going to India for three weeks last month was pretty enormously distracting. I feel good about handling it, though - sure, my inbox is very far from the usual zero and all my personal projects got paused, but I was on time for work every day, the bills all got paid on time, etc. * Podcast: Started working with Mandy Moore, who assists with many tech podcasts. Contacting three guests, standing up the site, editing my one interview down to eps. (will probably need to redo my audio, too). * Lifting: I restarted two weeks ago and it feels great. Instead of 3d/w I'm now going 4 (wednesdays are code + coffee). I'm still rebuilding to my previous norms for the next week or two, but I'd love programming resources for an beginning/intermediate lifter. * Blog: finish 2018 media reviews, start 2019. Maybe draft one post, depending on social plans this week. * Work: learned my way around the codebase (that I need to touch regularly - this is several orders of magnitude larger than I've worked on before). This week is mostly helping with support tickets and paying down tech debt on a part of the codebase that deals with an annual reporting process. -- "I really like Jim Wendler's [5/3/1 for beginners](https://thefitness.wiki/routines/5-3-1-for-beginners/). It's one of the /r/fitness recommended routines. It's a great way to increase strength without working near your max. I always had aches and pains and exhaustion when I was running a linear program. 5/3/1 with the 5x5 at the end made me surprisingly strong in a relatively short amount of time without lifting heavy. 5/3/1 for beginners is 3 days a week but there is at least one 4-day variety of 5/3/1. Just one piece of anecdata :) -- "I've just started lifting again after a long hiatus, I forgot how big a difference it makes to my mental health. I'm doing SS LP and supplementing that with some KB swings and TGUs on off days. I've heard good things about [The Bridge](https://www.barbellmedicine.com/the-bridge/) as a good progression for people coming out of a beginner/LP program, so I'll give that a crack once I've stopped making progress on the LP program. -- "Out of curiosity what do SS, KB, LP and TGU stand for? -- "Sorry: - SS = [Starting Strength](https://startingstrength.com/) - LP = Linear Progression (where weight is increased in linear amounts over workouts as the trainee adapts to the increased weight) - KB = [Kettlebell](https://en.wikipedia.org/wiki/Kettlebell) - TGU = [Turkish Get-Up](https://youtu.be/0bWRPC49-KI) -- "I'm closing all my (quite a lot) pending work at my current job in preparation for my move to Europe next week :D -- "Back to string matching algorithms. I'm working through some of the material in Navarro and Raffinot on filtration based approaches for regular expressions. I've also pulled down the code to re2 to look at some details, but it's slow going because I don't read C++. If anyone has a crash course on reading C++, that would be helpful. -- "I'm working on a *new programming language* (Scroll). I have finished writing its lexer, and now I'm currently designing and writing a parser for it. It's not going to be object-oriented, but will have structures (like C). I'm basically planning to make it as simple but useful as possible, through providing varied pre-installed modules for different purposes. In other words, Its structure will be very basic, but its strength will lie on modules. Making the parser is really challenging, especially from scratch, but that will give me a very clear understanding on how my language works. I'm looking forward to finish Scroll and publish it! And I hope **no one steals its name** :). -- "Always upvotes for new programming languages. What are you implementing it in) -- "- comments (inline and multi-line) - data types - null - numbers (integers and floats) - strings - keys (key-value pairs) - data structures - lists (which can also be maps) - structures (or records) - operators - functions (and generators) - anonymous functions and structures - variables - local variables - global variables - pointers - control structures - if (and else) - while - repeat - for - modules (can be included or linked) - other statements - return - yield - break - continue -- "Good to know, but I was asking what language you were using for the compiler/interpreter. Or was trying to, before coffee. ^_^; -- "Oh. C++. I thought you said \"What are you implementing in it\", :p. -- "Out of curiosity, what's the elevator pitch for Scroll, and what kind of parser are you using? (and congrats for going down that path!) -- "Thanks! The general idea of Scroll is that it should be very simple but useful; I mean when you code in Scroll, you should be able to read and write code faster and easier, and get the most out of it. And about the parser, I'm writing my own one from scratch. -- "Looking forward to seeing some examples, keep us posted on Lobsters! -- "Got it :D! -- "I'm going to do a freak ton of laundry. Two weeks ago, my washing machine decided to urinate all over my basement floor. Being so old, I decided the best option would be to replace it rather than repair it. The replacement should come in later today. Two weeks of laundry to catch up on. :/ -- "$work: Paperwork. Lots of paperwork. We're moving DCs, we're doing diagrams, I'm overhauling all our training documentation, I'm so deep in paperwork I don't even feel the papercuts anymore. !$work: Made an attempt at homemade puff pastry and Pain Papillon yesterday. Experiment was a success, but the result was not. It was _bad_, but the puff pastry itself worked well, few things to work out and research more this week for next weekend's attempt. I've also started the Bread-baking formula/schedule management project, I don't think I'll get anywhere with it, I usually get bored with stuff after a couple weeks of hacking, but it'll be fun in the meantime. -- "I am moving from Oakland California back to the UK, leaving this Wednesday. A mostly ok process made fraught by the fact I'm bringing my small furry pal back with me, so it's vet's forms and visits to the USDA. -- "work - Fixing a horribly broken project with proper packaging personal - DNS based filtering (raspberry + dnsmasq + https://firebog.net/ + /bin/sh) -- "I'm updating my CV. Life at my current job has become insufferable due to internal politics and it looks like the interesting work is going to go to another team(s) in a different department. I'm tossing up whether to look for another regular job (small town so not many options) or start freelancing again (although now I have a mortgage and family the freelancing/consulting thing is a little less appealing.) -- "I've been working on a blog post about why I came to purchase a Neo Geo arcade cabinet. I keep editing paragraphs and sentences. I am resolved to complete Part I of my opus by the end of the week. How much of an opus it actually becomes remains to be seen. I've also been working a Flask site, which I'm describing as a Lobsters for my close non-tech friends. Basically a minimal site that my friends can share things on that isn't Facebook or Instagram. I'm hoping I can actually emulate some of the general feel I get from Lobsters, but with topics that are more personal. -- "Hacking go for Github Actions, and more work on my JS -> C compiler https://github.com/timruffles/js-to-c/. -- "- School: I've been working on a descriptive statistics assignment. - Personal projects: this Android chat app is using homegrown crypto to encrypt local backups, which I reverse engineered a while ago. I've been slowly cleaning up the tool I wrote to recover them. I'm really proud of it as it's my first project having users that aren't related to me :-) - Writing: my school is holding a short story writing contest. This year's theme is about how the sights and thoughts of others affect us, which is a great occasion to write about some personal issues. -- "Beside working on client projects, I'm spending a bit of time building an interactive environment for [Curv](http://www.curv3d.org/) and thinking about automatic parallelization of finite state machines for a compiler I'm working on. -- "Decided as of today that I'm gonna start learning Racket! Also waaaaaaaaaay behind on PTLA+ errata whoops -- "Yeeehaaaaaaa! -- "For work I've been working to integrate 3D terrain from Google Earth's \"[portable globe](http://www.opengee.org/geedocs/answer/3230777.html)\" files into a plugin that runs in another company's Android app. I wish the parent app's API were documented a little better, but it's coming along. My Emacs-based Android development setup is working out nicely, though, and I've been tweaking it as I go. Outside of work, I'm still working on my [quadtree library.](https://git.sr.ht/~jl2/quadtree) Point quadtrees are working well, but I've decided not to implement removal for now - the algorithm is tricky, and I don't think I'll need it. Next I'm going to implement the PR quadtree, and its removal algorithm is supposed to be a bit easier. An interesting thing I learned while doing this is that Jon Bentley, author of \"Programming Pearls,\" invented both kD-trees and quadtrees. -- "This week, we've got [3 new courses](https://44con.com/44con-training/) added to 44CON's June training schedule, and just launched the September conference [CFP](https://44con.com/2019/02/26/44con-2019-cfp-now-open/). Putting everything together for our 1-day [March 44CONnect event](https://44con.com/2019/02/07/44connect-a-1-day-invite-only-event-in-march-2019/) (if anyone here wants an invite drop me a message). That aside, I've got some client work going on this week, and am hoping to get the time to look into setting up a public non-logging DNS over TLS server. -- "Working on an AI project based on [this project](http://ai.berkeley.edu/search.html) from Berkeley for a class. -- "What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "I'm going to Belfast to visit the city, seems quite nice to do the black taxi tour. On Sunday I will have lunch with a colleague and respective partners and in the afternoon I think I'll continue to nerd about Linux Kernel and Linux API interface. -- "Ooh nice, Belfast is great for kicking round for a weekend. I recommend the [Crumlin Road Gaol][] tour if you've a free couple of hours. Also if you're after a good \"UK\" pub, [McHughs][] is a decent place that I enjoyed. [Crumlin Road Gaol]: https://www.crumlinroadgaol.com [McHughs]: http://www.mchughsbar.com -- "- Apartment tour - Getting ear impressions done at an audiologist for custom eartips for my IEMs (very excited!) - Grading & reviewing grading for the class I'm TAing for - Developing material for the class I'm TAing for in the spring quarter (there will be a blog post on this, it's super cool) -- "My {brother,sister}-in-law are moving to a new house soon. I think I'll either be helping pack or watching my neice. \"You know who your true friends are when you ask for help moving,\" a wise man once said. -- "I know this is unrelated but: When I mentally expand > My {brother,sister}-in-law are moving to a new house soon I get > My brother-in-law [and?] sister-in-law are moving to a new house soon which doesn't make a lot of sense? That sounds like you have a brother and sister, both of them are married and their partners are moving together... Which I assume isn't the case. -- "My sister-in-law and her husband (my brother-in-law) are moving. :) -- "From Wikipedia: **Sibling-in-law** *One's sibling-in-law is one's spouse's sibling, or one's sibling's spouse, or ones's spouse's sibling's spouse.* I find the latter part absolutely inane. -- "clearly we need a new algorithm for relative naming. -- "Swedish has \"svåger\" for husband of sibling, and \"svägerska\" for wife of sibling. Gender of sibling is irrelevant so it's easy to adjust for same-sex marriages ;) We also have specific words for the parents of parents depending on the parent's gender, so \"morfar\" is maternal grandfather, while \"farmor\" is paternal grandmother. -- "Heh I had the same thought and couldn't figure it out, I guess I'm glad I'm not the only one. -- "I'm working on a code analysis tool written in C that will analyze C programs to enumerate the various artifacts that it may produce at runtime. Useful for high-security systems where application-level filesystem accesses are tight. -- "Artifacts? Like what? -- "Artifacts meaning either of the following. Things that 1) the program creates, deletes, or modifies. For example, a program that creates a new file that didn't previously exist on the filesystem; that new file is an artifact of the program. 2) are created, deleted, modified as a consequence of the program running (but not necessarily created, deleted, or modified by the program itself). For example, if a program tries to do something for which it does not have permissions, that action may be logged by a system daemon; that new log entry created by the logging daemon is an artifact of the program. -- "Thanks. Information-flow control, symbolic analysis, and taint tracking might each offer you something here. I swear Ive seen research do what you described but can't remember the specifics. I might have not saved it given reference monitors negated need for it most use cases. Ill still do a search later tonight, though, cuz it sounds interesting. -- "Certainly interested to hear more, I'll check back on this thread later -- "The search for that led to a bunch of interesting stuff. I'll be submitting all week papers on the subjects below, mostly static analysis. Probably in the morning given I go in early in my new position at work. That's why I haven't been doing my 10-11am submissions. For now, I'll give you some summaries and examples of each thing I mentioned. [Reference monitors](https://en.wikipedia.org/wiki/Reference_monitor) via interpreters, interposition, dynamic analysis, inlining, etc. This is the classic approach of high-assurance security since it was only one we knew how to [mostly] secure. Most relevant to you might be inline, reference monitors (IRM's) that embed the analysis into application/compiler/interpreter/analyzer. The properties are converted into rules that check the inputs. In case of unsafe languages, they usually add some transformation to increase memory safety. Google's Native Client is a popular IRM. This [paper](https://lobste.rs/s/wlongd/survey_runtime_policy_enforcement) talks about some techniques. The sub-field is extremely active since it uses low-overhead techniques that try to cheat around full memory and info-flow safety to avoid their penalties. Often get hacked, though. [Language-based, Information-Flow Security](https://www.cs.cornell.edu/andru/papers/jsac/sm-jsac03.pdf). That was the original, huge survey of that field. They talk about all kinds of techniques and policies. A good example of productively using this is team behind [Jif](http://www.cs.cornell.edu/jif/), Swift, and Fabric. Original has links to rest. They used it in web and voting apps. What these type systems and analyses can find increases each year with more application to hardware, too. One team proved non-interference down to the gates IIRC. Once you know the flows, you know all the ways an input can reach an output (artifact). [Symbolic, Execution Techniques](https://arxiv.org/pdf/1610.00502.pdf). Link is a survey on that sub-field. I periodically submit stuff about this here given it's an effective strategy for finding software errors. So, you'd use a symbolic analysis of what a program might do to determine what paths hit the code that produces artifacts. [Dynamic, taint analysis](https://users.ece.cmu.edu/~aavgerin/papers/Oakland10.pdf). Linked to a paper illustrating it since I don't study it too much. There's been a lot of work on tools that find specific types of errors using taint analysis. I've even seen a secure processor (IIRC) that used it to get improved security while keeping tag size and CPU overhead tiny. So, there's you some fun reading. More on the way Monday through Friday since CompSci lovers people seem to be on most those days. -- "Adding the shoulder buttons to my [Clockwork Pi Gameshell](https://www.clockworkpi.com/). Can't say enough good things about this little sucker. Quality engineering all the way down. It comes in modular components that you assemble. What's impressive about that is that the skill level required is exactly zero. Each board has a little case/box it slides into, you slide the boxes into the handheld shell/case, and wire them together with beautifully labeled cables. The assembly instructions are very good and there's a companion Youtube video in case you need to actually see it being put together. The launcher is currently written in Python, but is being rewritten in Go, and it's all [open source](https://github.com/clockworkpi). I also plan to run through the [PICO-8](https://www.lexaloffle.com/pico-8.php) tutorials. I haven't had this much fun programming since the Atari 800 :) Everything - graphics, sprites, sounds et al is accessible from the interactive command prompt, and all the tools you need (sprite editor, sound effects editor, sequencer, map editor, code editor) come built in. It's like geek escapist heaven :) -- "I totally recommend checking out [TIC-80](https://tic.computer/) too if you like PICO-8. It is exciting to have a variety of fantasy consoles to play with. :) -- "tic-80 is awesome and also has the advantage of being 100% open source, but there are display problems on the clockwork pi and I’m kinda fixated on that as my target platform these days :) -- "Darn it, now I really want one of those.... -- "Yeah. Definitely having fun. Also just discovered that it runs VNC perfectly so I can use it paired with a tablet as an ultra mobile Linux dev platform with X applications support! -- "Cannnnnn it emulate a PlayStation 1 effectively? I am looking for an excuse to go back to Final Fantasy Tactics... -- "Runs PSX Rearmed like a champ -- "No fixed plans. I hope to remember to pick up a book or magazine whenever the Internet seems empty... -- "Me and my friend are reading to each other out loud. We hope its going to help keep us more honest about that kind of stuff. -- "This isn't the first time I've heard of this... sadly my wife is legally blind so it would be tough to do. But I wonder if listening to an audiobook while driving would be a good idea! -- "Heh my wife and I tried this, but unfortunately she has this thing where auditory processing either distracts her to all get out (no talk radio or podcasts for her :) or puts her to sleep. -- "I thought I was alone in this. I started a new medication around the same time I started trying to listen to books on my commute. Narrowly averted an accident, and so stopped the meds. Again, narrowly averted an accident and realized it was the books causing me to wander. I can do music most of the time. It somehow seems to occupy a different part of my brain... unless I start analyzing. That wasn't a problem until I started to learn to play an instrument. -- "You are *definitely* not alone in this! I don't drive, so I don't have this problem, but I can't listen to audio books when I'm at work for exactly this problem. I either stop paying attention to the book or stop paying attention to the code I'm writing :) One or the other. I even have to be careful about the kind of music I listen to -heavy lyrical content can totally distract me as well since I start parsing the lyrics. Same reason I can't fall asleep to TV like some people, my brain gets involved in the dialog no matter how AWFUL it may be! -- "Can she read Braille? -- "No. She has retinitis pigmentosa so it's a gradual degeneration. She can read by greatly magnifying text but it's tiring. -- "* Gardening, the big hedge needs trimming back before birds start nesting in it for the year * Looking at how to save data from a \"cloud service\" that may be going bankrupt soon for a family member * Hopefully doing some more miles on the bike, now it's _just about_ warm enough in the UK to get out in the afternoon, and my bike has been serviced. * Go somewhere with the kids, as it's the last weekend of half term (school holidays) -- "Probably some small bug fixes for [AppDoctor](https://appdoctor.io) and then continue to try and learn rust. -- "Making some Beef Daube, work on my family recipe book a bit -- I have a Blueberry Brioche bread recipe that is quite old[1] but has been severely harmed by surviving through my family in the 70s -- replacing everything with crappier ingredients. I'm doing a bit of culinary archaeology and also going through just _so_ much butter trying to build it back to something closer to the original[2]. Blueberries are still pretty out of season, but getting brioche dough right is a task unto itself, and I also have some work to do making Pain Papillon and Croissant so plenty of baking this weekend. Semi related I might finally break down and write a free clone of Breadstorm one of these weekends. It's crazy expensive but also unbelievably handy for keeping track of bread formulas, it's crazy how few apps of that type exist in the world. It's also missing a ton of features that I imagine'd be awesome for more professional bakers (inventory/resource management, bake schedule management, etc). There's probably a business in there somewhere. [1] We call it \"Blueberry Cochon\" in english, _Cochon Mytrille_ in french. I believe this is a weird french-german hybrid of \"Myrtille\" for blueberry and \"Kuchen\" for \"cake\", but the sound-alike \"Cochon\" (pig) got replaced as my family moved further from Alsace-Lorraine/the Benelux to Eastern France (Poitiers) and finally to Acadia and then to New England with the migration, this was, however, 500 years ago, so I can't be sure my theory is correct other than to say I'm definitely sure the thing we eat _should_ be called blueberry brioche (or \"Brioche Mytrille\"). [2] The most recent version of it uses baking powder instead of yeast, bisquick instead of actually making the dough by hand, margarine instead of real butter etc. I have a much older, partly legible version from my Great great grandfather (Grandeux Pepere) that shows these to be more recent innovations, as well as some oral history that a chunk of my family was _super_ into all the newfangled stuff in the 70's and changed it a bunch. -- "[Last weekend](https://lobste.rs/s/rigcfo/what_are_you_doing_this_weekend#c_hvrh3k), I installed a Unifi network at my parents' house. Installation was simplified by choosing some different AP locations than I originally planned but complicated by reuse of holes drilled by a Comcast tech a few years ago. The holes were drilled at angles that were very difficult for us to work with and caused a lot of frustration. What probably should have been a 6-hour job took about 8. The result is great: I've got a site-to-site VPN up and running and their WiFi-calling-enabled smartphones work anywhere in the house instead of only on the first floor. I'm still trying to figure out [a periodic connectivity issue](https://community.ubnt.com/t5/UniFi-Routing-Switching/USG-WAN-DHCP-problems/m-p/2689104#M134971), though: one I've seen now at two places with Comcast + Ubiquiti USG setups. I did choose one of the jobs I was offered and I'll be starting on March 4th, three months to the day since my previous employer and I parted ways. I was actively looking and interviewing for about a month of that time, taking nine interviews that resulted in two offers. I'm more relaxed now than I've been in years. My new opportunity has some former coworker who attest to the company's preservation of work-life balance so I'm eager to rebuild some practices for myself to reduce or prevent job-related burnout that's plagued me for nearly three years and manifested physically in the previous two. Stress really sucks, F-- would not recommend. **This weekend**, I've got some cleaning to do and I'll probably spend some time working on a time tracking system I've used for several years. During the process of separating from the said previous employer, I developed some one-off scripts to help analyze my time logs. I'm going to generalize them and build them into the system. A friend came to me with an idea for a system for improving the trustworthiness of videos so I'm going to be researching how to programmatically interact with video because I've never touched that before! -- "Wow that's good to hear but super disappointing. I have a couple of aging Apple Airport Extremes I'd been thinking of changing out for 3 Ubiquiti APs and a USG. Good to know they approved an RMA though, i guess worst case is I try it, doesn't work and I have to return it. Guess I'll need to research what router to use instead. Got totally spoiled by the falling off a log ease of configuration of the Airport Extreme. -- "I highly recommend Ubiquiti equipment. I use it at my own house and the nonprofit ~ISP I'm involved in uses their stuff for virtually every deployment now. It's great. This problem with Comcast seems to be a very isolated one but nobody's been able to really figure it out other than trying to do an RMA. I've experienced this problem with three different USGs manufactured at three different times so I'm disinclined to believe that it is a hardware defect unless it affects the entire line, which I find even harder to believe. That said, the USG at my parents house has had connectivity for almost 48 hours now after disabling periodic speed tests. -- "This thread claims they solved the issue: https://community.ubnt.com/t5/UniFi-Routing-Switching/USG-setup-with-a-Comcast-Business-Modem/td-p/1946427 I'd be using it with regular old Comcrap home service. I can't be bothered to pay a premium even if the throughput and reliability are vastly better. Already paying them like $250/mo for intertubes and cable :\\ -- "That looks like a different set of problems from mine. They're business with static IP where both of my problem sites are dynamic IP, one residential, one business. -- "More of my SDL engine I've been working on, but also a sudoku solver in Forth. Without doing any prior research. No spoilers. -- "Which Forth are you using? I got the impression modern Forth = Factor. -- "As far as I'm aware Factor is mostly stale and unused, I don't hear much about it though I wish I did. I don't like the added complexity the interpreter/compiler add, some of the syntax, and what I would call \"simple complexity\" or something like that, a simple-seeming concept that's actually overcomplicated and a bit weird. Factor isn't Forth - I think even a Factor-er will tell you that. I usually write a Forth derivative called [RetroForth](http://forthworks.com/retro/) because I like the changes to the core language. If writing regular Forth I use gforth on BSD and Linux because ciforth doesn't compile for OpenBSD (at least I can't get it working). -- "This is SO COOL! Thanks for the pointer. The fact that he also makes an IOS version is super handy. I sometimes bring my iPad along on vacations when I don't want to lug an actual laptop, and I'm rather fond of programming environments that run fully in that environment. -- "It can feel barebones and hard to get into, but it becomes satisfying to work in, even if you never write the next *Flappy Bird* with it. Join #Retro on Freenode if you need a hand with anything. crc (Charles Childers, the developer) is a very helpful, smart guy, and is often around. -- "Spending the weekend in Dresden for our 5 year anniversary. No computer related things planned. :) -- "I took a 4-day weekend for the first time in two years, and somehow still ended up on a 3 hour conference call on Friday afternoon. As soon as this call is over, I'm escaping to the garage to work on my Jeep. -- "Working on a Mobile Money package for Flutter ✌️ -- "Acting as mentor at this event: https://ingenuity19.co.uk/technology -- "Test driving Tesla 3 tomorrow after a run at the local library. 10m air pistol competition Sunday. -- "I'm doing the [Alakajam](https://alakajam.com). It's a spin-off of the Ludum Dare game jam, and this weekend the theme is spell casting -- "backgammon, ethics open course on the local university, and backgammon -- "Learning elisp. Looking for a good ergonomic keyboard. -- "Hah me too, sort of. TBH I'm mostly learning clisp (for a school assignment where they let us have our pick of languages) but learning clisp led to hearing about slime, which led to using portacle but being somewhat dissatisfied, to spending most of Wednesday customizing my init.el. So in theory now I'm back to clisp so I can finish the assignment. I also spent part of the last few days salvaging some [iris](https://keeb.io/collections/split-keyboard-parts/products/iris-keyboard-split-ergonomic-keyboard) PCBs that a coworker gave to me because he messed up and didn't feel like desoldering everything. So once a few more parts arrive I can give that one a try. -- "People can argue about Emacs as an editor, or as a text-orientated programming environment, or as a host for Tetris, but it is *unquestionably* the greatest medium for yak shaving that human ingenuity has yet to discover. -- "Rambling at !!con west. -- "I sprained my ankle, so although I'm currently working out of a surfing town (Santa Teresa, Costa Rica), I'll be getting down to some serious coding on my compiler project. https://github.com/timruffles/js-to-c/ -- "Well, we closed on the house, so now I need to talk to our contractor about pulling conduit into the (unused) chimney before we cap and seal it, so that I can run ethernet to all three floors, to power Ubiquiti APs. I'm also back at the gym after an unconscionably long layoff, so I'm moving slowly and my muscles are aching. -- "I started converting my site from Hugo to Gatsby as a side branch. I tried it once before and it seems quite nice. There's a pretty large ecosystem for plugins too. The whole GraphQL-at-compile-time thing will always feel strange to me but we'll see how it goes. I had always figured Gatsby was purely JS but it does render HTML content as well so you can still browse a Gatsby site using something like `w3m`. It's more of a novelty though. It is my playground after all that no one but myself actually reads ;) If anything, the actual content is a side effect of wanting to try out rewrites for fun haha -- "Had a tooth pulled Tuesday and have been compliant with doc’s instructions of no exercise and soft foods until comfortable chewing on one side of mouth. This weekend I’m eating good food slowly and going for an easy bike ride! -- "Drinking wine with friends -- "Passed my PPL ground test today which means I should now able to finally get my PPL license as early as next week. Maybe I'll do a dual flight this weekend if weather permits. My last one was the flight exam a few months ago so I should refresh. -- "I've been learning Go, so I'm writing **gols**, a simple ls command implementation in Go. Would love some feedback. Here's the repo: https://github.com/coltonhurst/gols I'll get the code up as soon as I finish a solid base version. Would especially love advice on the best way to \"serialize\" the command line flags passed, so when printing, it's not a bunch of messy if statements. I've also been working on a repo with C examples, just as a way to cement my C knowledge. It's far from being done, but if you want to help, check that out too. https://github.com/coltonhurst/c-examples -- "Uh, I'm afraid I don't understand what you mean about flags :/ There's the [flag pkg]( https://golang.org/pkg/flag/ ), but other than thay I can't make sense of your question, sorry :/ -- "I didn't realize there was a flag package, thanks! And I just mean I'm curious how to handle [command line flags](https://en.wikipedia.org/wiki/Command-line_interface) in the best way. I'll look into the flag package. What I wanted to avoid is having a bunch of if statements to deal with each case dependent on flags being there or not. -- "Pkg flag is the usual first choice; in case I felt I need some more fancy, I'd say [spf13's pflag]( https://godoc.org/github.com/spf13/pflag ) would be where I'd look next. By the way, I heartily recommend having at least a look at the stdlib's ToC at https://golang.org/pkg; it's very well organised and written, and surprisingly often you might not need much more than that! As to ifs, there's the switch statement, which is an idiomatic alternative in place of a list of \"else if\" blocks. But other than that, I'd say Go aims to be a straightforward language, so when I need an if, I usually just go and write the if without thinking much of it :D I believe it kinda helps keep stuff clear and easy to understand, and I like that very much. Notice also there's no .map()/.filter() in Go. Technically it's kinda because \"no generics\", but it's also a conscious choice by the language authors to keep the for loops explicit for what they are. -- "This is super helpful. Thanks a lot! -- "Continuing at attempting to teach myself Python. Still going through the [Python Crash Course](https://nostarch.com/pythoncrashcourse/) book, as well as starting the [Flask Mega-tutorial](https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world). -- "Assembling furniture! I'm starting a new remote job next week, and my home office has been badly in need of a refresh. This weekend will include a new desk, new floor lamp, and a couple of shelves... -- "This week flew by, so I'll probably relax and hang out at home on Saturday. I might head over to the coffee shop in the afternoon. I've been working on a quadtree library, and I'd like to finish up the point quadtree implementation and get started on the region quadtree. Might go for a run or bike ride in the afternoon. Sunday I'm going skiing. Probably at ABasin, but maybe Eldora if I don't feel like driving. -- "Help organize stuff at the local hackerspace, now that they have foolishly voted me in to the presidency of it. Hopefully code some on Rust game dev stuff and on some code quality analysis stuff. Sleep. Maybe do yoga. Pet some cats. -- "* Preparing to train a bunch of C# developers in Java next week in the Denver, CO area * Will be interesting to see how good they are -- it's a big Enterprise company, so wide range of skills * Creating \"lessons learned\" notes from my daily live code streams that I've been doing on Twitch * My main app is the \"Kid Money Manager\", which is just a few more hours away from being put into production * Been having a blast doing my \"Java Makeover\" stream, so writing up notes from that as well -- "I just came back from a 5 day work trip to Jakarta and my wife's visiting her parents, so I got the following planned (no particular order): * go through some Vue.js courses as part of [Vue Mastery's free weekend](https://www.vuemastery.com/free-weekend/) * watch some Netflix (Russian Doll and Suburra season 2) * go to the gym * either hack on some of my FOSS projects (Golang, Crystal, JS) or hack around on my [M5Stack](https://m5stack.com/) if I feel like writing C * read -- "Going to various play dates with my son, cleaning the house, maybe buying some books and a nice pot. Exciting times. -- "I'm in Barcelona working on the final touches to a product demo installation at a telecoms trade show. I've written an erlang app that talks to a bunch of animated hardware mechanisms, synchronizing them (well, their controllers) with web apps posing as native UIs on a range of devices positioned in a series of animated dioramas. So e.g. for one gadget that does things at different times of day, we have a lighting rig and a video screen showing the arc of a day, synced up really tightly with what's happening on the product's screen. Basically a series of state machine processes mediating & ensuring correct conversations between browsers and physical machinery via websockets, eventsource, UDP and serial-over-USB. Really nice project, hoping to wangle more of this kind of work with clients who'll let me use erlang. -- "its confidential ;D -- "Getting situated again, and trying to tackle my now-massive reading list without forgetting things because I'm reading too fast. Generally doing things more slowly has been wonderful advice recently. Also have some new blog posts to draft, and my life to declutter. Moving overseas as soon as USCIS wills it makes me look very differently at buying things I won't be able to move, and also makes me incredibly critical of the stuff I already have. I think I've tossed out about five rubbish bags so far, and it still feels like there is so much *stuff* everywhere. -- "Writing a little credential vault https://github.com/FedericoCeratto/minivault -- "Recording two songs with my band! We’ve been rehearsing these songs intensely for well over a month, ready to be done with them. -- "After debugging a job-related Windows tray applet, it's time for a \"I'm taking a break from development and going to try The Binding of Isaac. -- "Making my [macOS hud interface for zx2c4's pass](https://github.com/mnussbaum/PassHUD) work with password directories -- "What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "I'm writing a guide in Italian for majoring CS students and how to avoid exploitation in their first jobs. -- "Exploitation in what sense? -- "exploitation by the employers: low wages, crunching, attacks on workers' autonomy and so on. -- "Anyway the first version is done: https://write.as/chobeat/guida-anti-inculata-per-laureandi-in-informatica-ing-inf -- "* Getting the main car back in for MOT re-test, having fixed the failures (brakes and tyres. Not at all important! Oops.) * Visiting a friend, which will involve lots of fun & games, dog walking and probably some computer wrangling. -- "We're planning on doing some decluttering. Also inviting stepson + girlfriend for dinner. I might also finish this playthrough of Fallout 4 :D We will probably watch season 3 of this TV show: [Unforgotten](https://www.imdb.com/title/tt4192812/?ref_=fn_al_tt_1). It's classic UK TV - slow burn, intricately plotted, and with good characters and acting. -- "I bumped into a couple of fellow Haskell/Elm/Nix programmers here in Chiang Mai, and we _might_ be going camping up in the hills over the weekend. There's some real nice [waterfalls](https://www.instagram.com/p/Bfnn1gtHFOg/) up there that I'd love to visit again. Otherwise, enjoying the heat, keeping active, and writing Haskell every day. -- "I have to clean out the bunny poop out of the bunny cage, drive around my eldest daughter to her extracurricular activities (one of which leaves me stranded in a coffee shop for about an hour. Depending on my mood, this might birth a garbage article, some crappy code, or just be gametime. Not sure yet). There's also this festival we might be going to, occurs on a frozen river near my home. Fireworks, and traditional music, and stuff. Pretty fun. Some regular upkeep and chores too. Gaps in time shall be filled with reading. -- "Working on laarc. https://www.laarc.io/ Around 300 people show up each day now. [traffic graph for laarc.io at 1.5 months](https://media.discordapp.net/attachments/504688035183460364/542956973922975815/unknown.png) vs [traffic graph of Hacker News at 6 months](https://media.discordapp.net/attachments/504688035183460364/542957187278831647/unknown.png) There's an interesting discussion about two-way string matching: https://www.laarc.io/item?id=1197 You can view multiple tags at once now: https://www.laarc.io/l/essays|classics And you can search stories and comments: https://search.laarc.io Today I'm setting up json endpoints for our iOS app. -- "Ooh I like this! -- "Issue: - fix RSS thing. Expected: a few entries (say, the recent ones of the last 3 days) Found: 700+ links up to \"Test post please ignore\" dated 61 days ago Feature request: - add something more than a title/link (keywords? quick abstract? reason why the article was suggested?) Super feature request: - a \"category\", similar to a tag. Every submission will be tagged to a single category. There will be no more than a couple dozen categories. Every category will have a RSS feed. Use case: \"only bother me with videos, news, rants\". -- "> fix RSS thing. Expected: a few entries (say, the recent ones of the > last 3 days) Found: 700+ links up to “Test post please ignore” dated > 61 days ago That was actually my idea, which in hindsight might not be a great one. Is it a bad idea for the rss feed to show everything? I figured \"Why not\" since most RSS feeds do. But a news site is admittedly a different beast. > add something more than a title/link (keywords? quick abstract? reason > why the article was suggested?) You can. One diff vs HN is that you can submit text along with your URL. The trouble is that it's hard to notice. It doesn't show up as a comment, so people rarely check the actual story. I could show the text on the front page, but then the front page would be less information-dense at a glance. That has ill effects on stories lower down the page, since the top 10 stories end up becoming the de facto frontpage. > a “category”, similar to a tag. Every submission will be tagged to a > single category. There will be no more than a couple dozen categories. > Every category will have a RSS feed. Use case: “only bother me with > videos, news, rants”. There are actually two feature requests embedded in this excellent suggestion: an RSS feed for tags, which I have always intended to do and can re-prioritize now that it's come up again. And categories, which were recently introduced via tag combining operators: https://www.laarc.io/l/!programming&!dev&!news ^ that's laarc without programming, dev, or news. https://www.laarc.io/l/essays|classics essays+classics. It feels much more freeform than categories, and users can configure them how they like. The idea is that you should be able to add `/.rss` to the end of a link like https://www.laarc.io/l/essays%7Cclassics and get an RSS feed, similar to reddit. Would that work for your suggestion? (Tag-combining operators weren't exactly what you asked for, and categories might be worth considering.) -- "I added RSS feeds for tags: https://www.laarc.io/l.rss/!programming&!dev&!news https://www.laarc.io/l.rss/ask|show It's experimental; let me know if it works how you expect. -- "Absolutely nothing and my brain needs this I think. -- "I do this as often as I can on weekends. Burnout is real and it hurts. -- "Jumping ship [from (newbie) Rust][rust] [to (newbie) Nim][nim] with my WIP [Nixme (\"Nix minimal effector\")][nim] hobby project. Reasons: dumping Rust mainly because of too slow (for me & in this case) development speed; and picking Nim over Go mainly because I want the result to have small binaries, for use on e.g. Raspberry Pi, while still good cross-platform support (incl. Windows), and good readability (Python-like). However, still interested in maybe splitting some parts between Rust and Nim in future, esp. for potential compatibility with [rnix](https://gitlab.com/jD91mZM2/rnix). [rust]: https://github.com/akavel/nixme/tree/ec3f93e70efd1904395e7fd94e85fc099412e756 [nim]: https://github.com/akavel/nixme/tree/nim -- "What's slow about it? If it's borrow checker, have you just tried reference counting? Nim uses a low-latency GC. Switching to ref-counted Rust might let you hit its development pace with at least your dependencies borrow-checked Rust. -- "> What's slow about it? Compilation, I assume: > because of too slow… **development speed** -- "Slow development speed might refer to the high mental friction of stuff like the borrow checker (especially if you have a lot of C experience making your default coding practices go counter to Rust idioms) -- "Hmmm, naah; actually, I don't really think it's the borrow checker, *per se*. Hm; I find it unfortunately somewhat hard to describe it now, what's the gist of my problem. It feels a bit too vague in my mind yet, for me to able to put it in words well. I'm trying to glance over my codebase, to find some areas that make me especially tired. So, trying to collect the examples: - It's that I had to define [this macro](https://github.com/akavel/nixme/blob/master/src/err.rs#L5-L10) to be able to [reasonably easily throw errors](https://github.com/akavel/nixme/blob/master/src/local_tree.rs#L37), without having to repeat [the same braindead incantation](https://github.com/akavel/nixme/blob/master/src/err.rs#L8) every time by hand. - [Here, I just want to read uint64, or return success in case of EOF, or error for other errors](https://github.com/akavel/nixme/blob/master/src/lib.rs#L38-L50); I couldn't find a way to make it simpler, and as it is, it feels like much too much incidental complexity and weirdness. - [This, this is the most recent clusterfuck](https://github.com/akavel/nixme/blob/master/src/lib.rs#L58); I tried to ask for help on the Rust discord (which, by the way, has generally very positive and helpful people), but they weren't able to help me with anything simpler than the `&mut paths.iter().map(|s| &**s)`. All the alternatives were similarly bad in one way or another; I don't recall well now, but at the time I decided this one is still the least bad of them... This is just to be able to pass an iterator of strings; in Rust a string can be either `&str` or `String`, and in combination with some other limitations, it requires me to inflict the `.map(|s| &**s)` on a user of the API here. And by the way, I'd never guess this incantation myself, without help from the Rust discord channel, so I already pity any user who'd have to call this (future me included). Again, a particularly horrible case of incidental complexity, a worst kind of one because inflicted on the user of an API. - Another one, small, but I have to endure it through all the functions I write, so it's a repeated frustration, and repeated incidental complexity: that [this function cannot be a one-liner](https://github.com/akavel/nixme/blob/master/src/local_tree.rs#L15-L18), that I have to explicitly write the `Ok(())` stupidity at the end; cannot just have the error from `create_dir` automagically converted to error from my func if I write it without `?`. But if I *do* write it with `?`, it *does* automagically convert, but then I *have to* write `;` and the `Ok(())` on new line. On a related note, somehow, defining own errors is still not well wrapped in Rust; there's a crate named `failure`, which is hard to use, and deemed not perfect, but still least bad among what's out there. The story is being worked on, there's some issue, things will hopefully slowly improve. - Ah, again, some [noisy mess](https://github.com/akavel/nixme/blob/master/src/local_tree.rs#L165), a.k.a. [incidental complexity](https://github.com/akavel/nixme/blob/master/src/local_tree.rs#L167). `.unwrap().to_str().unwrap().to_owned()`. I don't even remember what this means, but I apparently had to do this. WTF, rly? - Right, here we have some [rust fmt](https://github.com/akavel/nixme/blob/master/src/stream.rs#L148-L151) stupidity. Much too often I find that `rust fmt` does something exactly opposite from what I'd like and see as readable. I mean, there are also good things. But you wanted to know what makes me slow and frustrated. It's actually not even so much the fighting with the actual borrow checker per se, I think - as when doing this, it's somewhat easier to at least tell myself that there's a reason and value, and wisdom in the pain. It's more of this kind of things as I listed above. I assume they probably may have some deep reasons, in soundness of the type system, some deep dependencies and stuff. But to me, they feel just unfair and undeserved. And, unfortunately, it feels to me like the actual logic of what I'm trying to do drowns and is clouded by a lot of incidental complexity, of mess like that, that the language just won't let me tidy up. That kind of incidental complexity, clouding the gist of the logic, is also not so good for safety and robustness of the product, as far as I understand. Sorry for making it so long; I just don't understand my answer well enough to be able to write it shorter; even now I'm not sure if I really managed to actually nail my feelings and troubles, or is it only a part of them. -- "\"Sorry for making it so long;\" Oh no. It's a really, interesting, experience report. I too thought the syntax looked unwieldly and hard to read in a lot of code I saw. I just didn't see a lot of people griping about it. So, I rarely brought it up. One of Ada's drawbacks was verbosity. Rust seems to require about as much syntax for some things but in a weird-looking way. What Ada did looked like regular code with English commands and some annotations/types. These issues are definitely worth thinking about when either trying to improve Ada/Rust or design a better language that plugs into one of them. That's right: I don't see Rust as the end. It's a step toward something better. The next step might have Rust's benefits without the problems you describe. On that note, I'm eagerly, but skeptically, awaiting the [coming write-up](https://news.ycombinator.com/item?id=19086712) on the language code-named V. -- "Ok, cool that you liked it then, thanks! Riiight, that's mostly my general impression too; I actually already mused recently repeating the known adage that [*\"I have a feeling there might be a smaller, simpler language in there, trying to escape\"*][smaller]. In this other post I also let myself dwell more on some of the positive aspects of Rust, in case you'd be interested in a somewhat more balanced view (though I haven't supported them with links to code snippets, but it would be also much harder, I'd have to sketch examples of what I'd do without Rust). Please disregard the \"fighting borrow checker\" complaints, I now think my reply to you is more accurate. [smaller]: https://lobste.rs/s/tzkmn6/everything_you_never_wanted_know_about#c_cvgkdq By the way, curious if you have any thoughts/opinions on Nim? The V thing may be interesting indeed, though for now it gives me a bit of an air of a potential vaporware/hype-ware stunt (really hope it's not). While Nim is already there, and interestingly it has some of the stated features of V (though not all, esp. and most importantly no \"Rust like\" semantics; but here I'm also the most sceptical about V's claims, will it live to expectations or just try to sneak a fake ticket on the hype train). After initial porting, I do find it faster and tidier, though I do already miss some strictness and linear typing (a.k.a. borrow checker) of Rust. There's also the Carp Lisp, but I failed to understand it well; and there's Pony, but again I failed to internalize its concepts. -- "Yeah, V might be vaporware. That's why my hopes aren't up too much. Far as Nim, I like its Python-style look/feel, high performance, macros, and outputs to multiple compilers. Looking at comments, many people were complaining about the compiler breaking their apps. Not enough QA in it or something. Another you should check out is D. Might be easier to use than Rust. More mature. Compiles super-fast. Has a BetterC mode for low-level programming. Most people really like it. The only complaint I get from folks considering move from C to D is that, while D can do unsafe stuff, the standard library is designed around the GC-d uses. They have to write more stuff from scratch or something. I think most of those algorithms could probably be ported straight-forward from C, though. Having unsafe, ref-counting, and GC versions of standard library does seem like an area of improvement for them. If you can use a GC, though, then you'll probably not run into that problem. -- "I'm in a similar wagon. I'm still pondering whether the big projects in my company will be in Rust or Go and the cost of development is an important factor for sure (the small and critical projects will very certainly be in Rust). I can't fail to notice how much time it takes to add features and it's not really clear whether the increased quality of the software is worth the cost. Hiring or forming coders will also probably stay much harder when the codebase is in Rust, compared to Go. -- "Another thing to consider is Go is designed to be easy to pickup and projects easy to modify. It's aimed at bringing in massive numbers of developers. So, you might get more contributions with it than Rust [1]. [1] Warning: untested hypothesis. -- "My $DAY_JOB is in Go, and I appreciate it. It's the first language where I really feel I can mainly focus on the actual business logic, and the language doesn't distract me, while the static typing helps to keep things mostly robust. But our system also did already reach a level of complexity where some stuff is hard to do, because the business logic is getting really complex and messy. That said, I'm also aware of some shortcomings of the language: the `if err != nil` every other line; I long for macros and generics sometimes; trying to do C interop kills a lot of benefits such as easy cross-compilation, and opens you to C-unsafety again; there's race detector, but it's a cure not prevention, you can still get races if you're not careful; etc, etc. But still, when I sometimes compare with other languages, I usually come back glad I'm working in Go. Also, you can still absolutely write really crappy and messy code in Go, but at least if you take care and some effort, I feel it's usually possible to clean it up really surprisingly nice, even after the fact. That said, I only finally tried learning Rust recently, so I don't mean this as a comparison with Rust, as I definitively have too little experience in it. Just wanted to express some general appreciation of Go on my side. -- "I'm in Bali ... Nice change of pace. -- "Working on MongoDB - GraphQL integration for data extracted from a web scraping tryout project. -- "Resting, it's been a rough week. -- "I'm getting back home from Barcelona tonight after a week of intense openshift training so nothing productive I guess. Some Gameboy advance parts I ordered arrived today so probably I'm going to do some work on that one. I also have a birthday party to go to on Saturday evening, so my full weekend will hopefully be filled with nothing computer related at all. -- "When somebody posted here a link to [broot](https://github.com/Canop/broot) just before last weekend, I got a bunch of unexpected stars... and PR and issues. So I'll still be doing what must be done, more especially working on [this issue](https://github.com/Canop/broot/issues/13) to ensure having broot fully installed is as smooth as possible for everybody. -- "It was a really, neat project. I like the concept of showing pieces of each directory. That alone is worth further exploration in UI design. -- "It's my second daughter's 8th birthday. We are hopefully going to be 3d printing some pokemon (she loves pokemon), playing some Pokemon Go and Let's Go, and we might start building a PC together; I have a bunch of leftover parts, and it's a fun little project. If the arduino stuff I ordered comes in today, then we'll build that instead. Otherwise, that might be another weekend. -- "I'm not sure if it'll be this weekend, and technically I'm not doing it, but I'm getting another baby! -- "The Physics dept I studied in has an alumni morning, so I'm spending Saturday morning failing to understand biophysics (I took a paper in it, and got the worst result of any of my papers, 15 years ago). I have just acquired a Raspberry Pi (thanks @srbaker!) and it needs CentOS because Reasons, so step one is buying an SD card. -- "Probably stuck inside, hopefully with power. We'll see how much snow actually falls today! -- "I was supposed to go to see my folks, but I fell down the stairs a week ago and my foot is still too sore to wear shoes, so I can't go and see them as it's a 2 hour drive. Instead, I'm going to migrate some of my static sites over to my new [openbsd.amsterdam vps](https://openbsd.amsterdam/) to free up an old server. I'll probably write something for the [blog hosting platform](https://chargen.one/read) I've set up if I get the time. If I feel up to it, I'm going to go through the SSD1351 OLED display datasheet and look at building a library for the ESP32. I like the screen, but I'm having trouble with the libraries I'm using. I'd like to have something to use sprites with. -- "I am snowbound this weekend. I plan to complete a few Pluralsight courses and read some books. -- "* Take the stray cat I adopted today to the vet for a checkup. * Somehow declutter my home office; we just moved and stuff is everywhere. * Check out a nearby cheap space I'm looking to rent. It's kind of a garage, which I want to use to start learning woodworking and maybe welding. * Plan some simple woodworking projects. I need to make a piano stand, a kitchen work bench, and a platform bed... * Go to a nice punk sauna on Sunday... -- "Man, you seem like a guy I'd have a beer with -- "Cheers, ping me if you find yourself in Riga! -- "> Go to a nice punk sauna on Sunday… What exactly is a punk sauna? -- "It's just a wood-burned sauna run by a friendly local anarchist couple. There's a bit of a Fallout vibe. It's named after an infamous nuclear power plant. You can swim in the river, but it's kind of downstream from an illegally polluting industrial site. In the warmer months they have a sound system outdoors and the yard has a lot of funky constructions, like a tree house stage. -- "Very cool. Love a good sauna! Wish there were more out here in the Bay Area, community-run even better -- "Poking around at the Prag Studio [elixir](https://pragmaticstudio.com/courses/elixir) and [phoenix/vue/elm](https://pragmaticstudio.com/unpacked-multi-player-bingo-with-elixir-phoenix-vue-elm) courses work bought me. Coming from ruby & rails the jump in performance and having some form of type checking is exciting. And offline I'll be continuing my distance cycling training, albeit indoors. My goal is to do a century ride at a decent pace (and without my legs falling off afterwards) by mid-spring. -- "maybe messing with neo geo assembly guide; getting mixed up in vaporwave -- "I will be moving into my new house, which will be exhausting. Then, I would like to either continue work on one of my two slow-moving projects: 1) a distributed mesh messaging network 2) a website for my personal library, so that others may see what books I have and borrow books from me. Ideally this will turn into a thing that anybody can load their libraries into. -- "Continuing work on my experiment in config management: https://ucg.marzhillstudios.com/ Mostly writing documentation and prioritizing ergonomics improvements. -- "Could you (or do you already somewhere) try to do some comparison with other projects trying to fit a similar domain? Esp. Dhall, Nix, and then the usual suspects like Ansible/SaltStack/Chef/Puppet/... I'm interested in the domain, but the introduction you linked doesn't give me much in terms of a first, high level look at the goals and differentiating factors, so that I could calibrate my interest level, fitness to my needs... -- "It's on my list to do some comparison and such. I've been so busy iterating on the project that a summary and comparison hasn't made sense until just recently. -- "Prepping for my Monday lecture to ~80 students. First time in front of a class that big, so I’m definitely nervous :p -- "Driving to New Orleans to see the [Adventure Zone](https://www.maximumfun.org/shows/adventure-zone) [Live!](http://orpheumnola.com/calendar/the-adventure-zone/) -- "Moving! Starting a new job in SF (first full time job!) so I’m moving out to Oakland with a friend. It’s going to be a long weekend, but I’m looking forward to my first day on Monday. I’m also working on a personal budgeting app. I was originally developing an iOS app until I found out about Progressice Web Apps. My background is mostly in web so this was much easier than iOS (less library stuff to learn and I wanted this done fast). It’s “done” but I keep finding new things to add. At this point it’s just a little project that I can have fun with and I use day to day. A dumping ground for different things I’ve learned. -- "Visiting a sausage-making festival in a village near Lake Balaton. Chilling. -- "Got a backlog of some posts on state machines and Alloy I plan to start drafting. Some of this stuff is very useful but gets very little airtime. -- "I've been re-reading the [SRE Book](https://landing.google.com/sre/sre-book/toc/index.html) and starting to read the [SRE Workbook](https://landing.google.com/sre/workbook/toc/), and making notes from both on how my organisation can improve how we do things. Protip: Renaming an Ops team to \"SRE\" doesn't make you SRE. -- "What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "I'm visiting the Grand Canyon in Chiang Mai tomorrow. I visited last year and broke my wrist in the first 20 minutes. So this time, the goal is to return with no broken bones. Still, it made for some good [photos](https://www.instagram.com/p/Bgah30qhGvU/) and [videos](https://www.instagram.com/p/Bh92qpVFcC1/). On Sunday, we're going up the hills again on the bike around the Samoeng Loop. There are some real nice waterfalls for swimming in along the way. I _would_ be working, but I'm at a point in one of my projects where I'm basically done (for now), and I'm exhausted. ``` ------------------------------------------------------------------------------- Language files blank comment code ------------------------------------------------------------------------------- Elm 44 480 5 5280 Haskell 25 378 208 2387 CSS 11 277 38 1701 JavaScript 3 588 356 1542 Sass 1 37 0 188 HTML 2 0 0 28 ------------------------------------------------------------------------------- SUM: 86 1760 607 11126 ------------------------------------------------------------------------------- ``` -- "Is that the result of running sloccount on your project? Looks like fun! -- "Yes. I'm using [cloc][0], but I'm guessing they're roughly equivalent. [This project][1] has been fun, and a good challenge. Despite having worked in typed languages for some years now, I'm still surprised at how much these type systems help me. Last week I made a change touching over 1,200 lines of code by hand in the space of two days— with no tests — without introducing a single regression or runtime failure. There is zero chance I would have achieved the same in a dynamic language. There's still more to do, but most of the work for the near future is business development stuff which my business partner will take care of. [0]: https://github.com/AlDanial/cloc [1]: https://moneygains.co.uk/ -- "This will be a weekend at the library: - more time using Isabelle and working the Concrete Semantics book - more type theory - I made a scanner & lexer and now it is time to transform everything to a scanner & lexer generator - maybe a short trip to Germany if I earn it -- "Its winter cottage season! I'm going to hang out with my girlfriend, her mom, and a bunch of other eastern Europeans all weekend in Gravenhurst. -- "Shopping for some stuff for the new flat (a broomstick, shower curtain, etc). Dealing with some bookkeeping. Reading the London Review of Books with my cat in the armchair. Planning some furniture building. -- "Looking for a place to live in Belo Horizonte, Brazil, because I got accepted in the Bioinformatics postgrad program of the UFMG (Minas Gerais Federal University). :) -- "I'm hoping to get this spoken programming language from a 2013 PhD thesis to compile. ( https://github.com/shapr/spc-compiler and https://github.com/shapr/spc-plugin ) so I can try to make my own. Status: Java codebase from 2013 is not easy to build. (The actual PhD thesis for this can be found at https://scholar.google.com/scholar?cluster=16613165667372987171&hl=en&as_sdt=0,11&scioq=%22benjamin+m+gordon%22+speech ) -- "Working on laarc. https://www.laarc.io Traffic exploded since last week. We're up to >200 accounts, and the graphs are funny. https://imgur.com/a/4CMFcaT Laarc got some exposure on HN before the mods whisked the comment to the bottom of the thread. https://news.ycombinator.com/item?id=19126833 https://www.laarc.io/place is filled up, and I'm not sure what to do with it next. I can't make it bigger without killing performance. (It's already unusable on mobile safari.) And it's probably time to start thinking about the next thing. Any ideas for a random project like that? The origin of /place was basically \"I think I'll recreate /r/place today.\" Laarc also had the dubious distinction of having the first downvoted comment today. It'll be interesting to see how the community dynamics play out. Some people are asking to get rid of downvoting entirely, but I'm not sure whether that would be best. -- "Can you explain the vision for laarc? I joined in January at the suggestion of nickpsecurity, but I can't yet tell what's special about the site. Looks just like HN, with a large overlap in submissions. Is it the quirky addons like /place, or associated realtime chat rooms that are building a tighter-knit community? -- "Spending time with the family, as well as clearing out the shed/garage ahead of renovations. (Gotta move all the stuff to refit the place to put the stuff back in the place. Whoop whoop!) Off to Nuremberg, Germany 🇩🇪 on Sunday for a few days with the other half. Not been to that area before, looking forward to exploring and having a few days without a computer. -- "Germany is cool! What kind of sights are you going to go see? -- "Working on a Flask site. Working on a blog post. -- "That's neat. How do you like Flask? And what's your blog? -- "Writing documentation for Nix and NixOS, planning out a roll out of Salt Stack interfaced with Jenkins CI for work, and adding some features to my compiler this weekend. -- "Investigate writing SHA1 in lambda calculus. -- "Going for a concert this evening, a good friends 30th birthday tomorrow and a day of doing nothing on Sunday at my brand spanking new couch :-) -- "Gonna expand up my NAS. I've got a fancy new rack case (First rack case I own) and about half of the drive bays are wired up at this point. And the previous NAS needs to be emptied out. Otherwise working on various projects, mostly a personal image board (linear booru style) and on my Kernel. I think that's a pretty relaxed weekend plan. -- "Niiiiice. What drives are you going to use? I'm about full on my Synology ;( -- "It's a mix of everything, most of them are drives from the previous NAS that I recycled a few times by now. Though I have two helium drives in it too that provide the bulk of the capacity, they're very nice to hold in your hands. The new drives are all WD Reds, the Helium ones are HGST and the oldest are Samsung HD204's. -- "A lot. Finishing up contractual work for a very simple tool that's gonna enable my client to not change his workflow at all, all the while accelerating their work and reducing their error rate by automating a rote boring repetitive task. I'm pretty proud of this one. Also, it's my eldest daughter's birthday, so it's everybody to their battlestations. Asides from that, it's a \"regular weekend\", meaning lotsa upkeep and chores, extracurricular activities, and maybe I squeeze in a few hours of gaming. Maybe. -- "Hosting a dinner party yo. Estimated five guests, so the smallest I've done in a very, very long time -- "Board game night with friends. -- "Work continues still on plant startup. I've got a web server running that shows some mock data right now and I just got a package full of electrical bits in the mail today. I'll probably try to get some readings going for that but I think I'm going to try out nerves for the first time, we'll see how far I actually get. Also planning a vacation in July, bought tickets to the Estonian song festival in Tallinn but I'll probably be going to places other than Tallinn. Let me know if anyone has suggestions for things to do in Estonia or surrounding countries. -- "If you like beer, go try some brews by Pöhjala and Pühaste. The latter’s old ale is my favorite beer! -- "Attending the funeral of my grandma :( Otherwise some cycling, reading and setting up biwarden_rs on a raspberry pi. -- "Condolences Mr Andrei. -- "Running load tests against ECS instances in AWS to determine what tweaks are needed to get the most resilience under load from our code. -- "And baking a cake. -- "Uhm... I have a lot of tasks in my to-do list, so... I'm trying to migrate my server, to learn something new (for example, I'm developing a couple of projects with Flask, so I learn something I didn't know before)... Also, I'd like to play some videogames, I've been a long time since I played the last one, and I have so many to play... Anyway, it's only a weekend, so whatever I can acomplish it's going to be alright for me :) -- "Refreshing some old posts on pulumi and bootstrapping consul clusters. Gian-Carlo Rota was right about writing the same thing multiple times. Refining an idea takes several iterations and writing/rewriting posts is a good way to go about it. -- "Going through hard Data structure and algorithmic problems on several coding websites like leetcode. I have got to invert that binary tree othewise my CS degree is as good as the paper. -- "Gonna try out installing a personal Matrix + Riot server again. I gave Matrix a shot last year, and found it unusably slow and cumbersome, but I like what the project is doing and I hear they've made a lot of performance improvements since that time. -- "I'm deploying a Ubiquiti Unifi network at my parents' house in about 12 hours. I picked up some used hardware and I'm doing it for about $300 total equipment expense plus cabling I already have. Oh, and I've got a few job offers to choose from so I'll be looking over them and probably choosing my next employer this weekend! -- "> Keep in mind it’s OK to do nothing at all, too. I'm legitimately thankful for this reminder. It's been a long week and I think I'm going to spend the weekend doing whatever I feel like doing. -- "Sitting in Kenya at the moment trying to get to South Sudan to dome training. Tired from travelling and lots of delayed and missed flights, ready to go home... -- "Not a lot I can talk about here, but I did feel enough of a combination of bored and energetic to finish up a tiny little side project. I usually like to listen to music while I code, especially at work. I mostly listen through various websites, lately SoundCloud. The only thing I don't like about it is there's no flexibly for controlling music websites from somewhere other than the website - if you want to stop it, you've got to click over to your web browser, find the right window and tab for the player, and then click the teeny button. I finally came up with a way to change that. And that's just if it's on the same computer, it's even more inconvenient if it's on another computer across the room. My idea was to create a little server program that runs a WebSockets server and a conventional server, and then create a UserScript for the website that would connect to the WebSocket server and listen. I could then make HTTP requests from any computer on my network to the HTTP server, and the server would push them back down through the WebSocket connection to the browser UserScript. That could then do a button click for me to do anything on the interface. I finally spent enough time fiddling with this to get it up and running. So yay it works, and is their anything more silly and nerdy than controlling my music through this hacky system by using httpie to send a web request to a computer across the room? Now that I think about it some, I wonder if anyone would pay for something like this as a web service? I'm thinking, have a simple webpage with signup stuff, then you install a browser plugin that does the site control and WebSockets stuff, and create a few ways to trigger commands, like desktop apps or phone apps, etc. Going to need some auth and all that, but maybe someone non-technical would want that too. -- "What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "Baking pancakes at a restaurant, writing Haskell (and compiling it to VHDL and synthesizing this VHDL, using [Clash](https://clash-lang.org/) ), writing CPP (and compiling it to VHDL and synthesizing that VHDL as well, using Vivado HLS) -- "Clash looks really cool! I assume you’re working on some kind of FPGA? -- "Yes, the cpp->vhdl one should run on a [PYNQ Z1](https://www.xilinx.com/products/boards-and-kits/1-hydd4z.html) and the other one is a [Cyclone V](https://www.intel.com/content/www/us/en/products/programmable/fpga/cyclone-v.html) -- "Always good to see more hardware people on here. Since I'm a software guy, I like to bounce open tools off of experienced, hardware people to assess the current state. If you have time, what do you think of [Synflow's Cx](https://www.synflow.com/) for hardware prototyping? Or letting non-hardware people get started on hardware optimization before handing it off to actual, hardware people? It's one of the last attempts at HLS that I didn't see reviews of. Edit: Given your profile, you might also find [G]alois Inc](https://galois.com/) interesting given their work combines all that. They [open source](https://github.com/galoisinc) a lot of stuff, too. Have fun with that. :) -- "Thanks! This looks awesome. The Cx for HW prototyping looks interesting, however I've recently come to believe that using imperative languages for hardware design is a mistake. An FPGA is a \"logic machine\", as opposed to a CPU which handles instructions in a sequential way. That's why C is the \"ideal\" language for CPU's (in terms of being able to control exactly what is executing), because C is so close to assembly. For an FPGA, functional programming more closely resembles what the FPGA is doing, and the change in mindset forces you to think more in terms of what the FPGA needs to do / can do. This is roughly paraphrased from what one of the Clash developers once said, I've forgotten where/when. Galois sounds awesome! I'll take a closer look when I have more time. -- "Yeah, the hardware people tell me it's inherently parallel. So, parallel languages fit. You said inherently functional. The intro I read said there were stateless circuits (functionalish) and stateful circuits with internal memory. The stateful ones sound a bit more like imperative programming. I don't do functional programming, though. So, what's your take on the sequential circuits being functional? Or you make exception for those? -- "Cool! İs clash output reasonably efficient? -- "It's quite fast at generating VHDL code, so that's awesome. As far as I can tell, it's efficient, but that does require understanding of exactly what the hardware is doing (which I don't completely have at the moment). It's also easy to generate hardware that you looks very different when changing small things -- "My wife's firm retreat is this weekend, so I'm solo parenting the girls, which, weather permitting, will involve a very great deal of tobogganing. I'm also going to pack for our trip to Hawai'i (we leave on Wednesday). Finally, when we're moving, I'm going to downsize my computer setup to one server, and part out the big desktop machine. So, I'll start doing that when I get back, and I'm trying to decide if I want to replace the desktop with a Windows or a Mac laptop. -- "Going through _Parallel and Concurrent Programming in Haskell_. -- "Is that good? I've been afraid that it might already be dated. -- "It still is [reportedly](https://www.reddit.com/r/haskell/comments/84r5e7/is_the_concurrent_haskell_book_still_the/) relevant. -- "IronGremlin's [comment](https://www.reddit.com/r/haskell/comments/84r5e7/is_the_concurrent_haskell_book_still_the/dvrs1lv/) reminds me of a problem I was looking into of tools from books and CompSci papers breaking or being unsupported over time. I think it would be useful to maintain an older toolchain or even just VM for works with established value. In this example, a Haskeller looking for a helpful project might find whatever compiler and libraries were necessary for these examples, package them up somehow for modern OS's, and send links to folks sharing the book or places where it would be seen. A combo of paper authors and/or community support does this for various works, esp educational, with long-term value. If you all are thinking that sounds a bit much, remember that it seems hard to find people that can turn hard ideas or exotic tech into educational resources lots of people pick up easily. I say we establish wide distribution and long-term support (ie. maintaining tools) for at least one, great guide on every tech topic. Then, readers rapidly learn the fundamentals and some realistic uses followed by reading some links to update themselves on current state of the field. A great start will make the update easier, too. -- "There's always the Knuth approach, spend a couple chapters defining a fixed system that you can use in the rest of your writing. This at least gets the relevant life span of your writing to 40 years or so. :3 -- "[Making another bootie!](https://mathstodon.xyz/@stickjan/101475156625066078) I have to hurry, 'cause the baby shower is on Monday. -- "cat :3 -- "I have applied for a job as an embedded programmer: I hope that will fit my background better. I'm also hoping to get another offer where I can work on a compiler, which seems exciting. Things are not terrible at my current job, but not great either, and I don't feel like I'm experiencing much growth (both financially and personally). I'm digging up some C code to share with a potential new employer, and maybe I'll write some new code. I was thinking about an interface/implementation to solve (either perfectly or heuristically) simple turn-based games. I also trying to learn a bit more about I/O in Haskell (writing raw bytes to a file). Further: catching up with old friends, getting my bike fixed, starting to use a new/secondhand phone, and the regular chores. -- "Self Improvements: more fiddling with Kubernetes; my shop is making some changes to our infrastructure, and it seems like this will help with a lot of our issues. Side Projects: working on my home management app and probably updating the home server. Also, trying out some dual-extrusion 3D printing hopefully. It's also my oldest child's birthday and I now have a teenager at home (and there's going to be a slumber party on Saturday night). Home Improvements: Bunch of home electrical work to do - I have a few new light fixtures and a few new outlets to install at various places in the house. -- "I have a coop shift, so I’ll be shelving produce and cans of food. Outside that I’ll do a bit more of the Little Schemer for my lisp study group and probably head to the plant center to pick up some things for some starts I brought back from TX. -- "I think I am now bannished from the coop, but I guess it doesn’t matter since I no longer live on that side of the country. Please send my love to the produce coolers and the belt—I miss those things. -- " I will say hello to the coolers and the belt! -- "I just moved, so I’ll be unpacking and making a giant “donate this to Goodwill” pile as I go. Moving frequently is a great way to be remind yourself how much useless crap you accumulate. Maybe I’ll get back to working on my polarization simulations. There’s one, last show-stopper bug keeping me from making an announcement about it, and moving on with life, but walking away from it for a while hasn’t given me any new insights. -- "Planning to learn/practice [davinci resolve](https://www.blackmagicdesign.com/products/davinciresolve/) -- "It's still the case that [the Labrary](https://labrary.online) is a business in want of some customers, so I need to fix that. I'm still struggling to work out how to make the website valuable, but what I think I really need is rampant networking so I'm going to fill my meetup calendar. Particularly with Silicon Canal and other local events. -- "Resident Evil 2 remake, reading, and deciding what tech and tech books I want to spend time on in my free time. -- "Volunteering at the [compileHer hackathon](http://compileher.com/)! -- "Studying like a mania for an entry-level job that wants me to know C, Python, Lua, Java, and Ruby according to the job description. I'm going to brush up on my C and data structures, hopefully I don't even get tested though, I haven't been warned about one. -- "That's a lot to expect an applicant to know for an entry level job... -- "Earlier this month I finished the game I've been working on for a bit over a year (which is already available on itch & will have its steam release in mid-February). I was planning to wait until I got ~100 sales (to guarantee I'd make back the money I spent on assets & on the steam application token) before starting on a sequel, but I've been bursting with ideas for mechanics today so I will probably start planning the sequel more concretely this weekend -- perhaps even starting on character designs & plot. I'm also continuing to go through research materials for my next book. I got a copy of Raskin's *The Humane Interface* recently, and I've been reading that recent history of PLATO, *The Friendly Orange Glow*. I'm not planning to cover PLATO in the book since I don't think there's an emulator around for it, but I expect reading about it will spark some ideas. -- "Earlier this month I finished the game I've been working on for a bit over a year (which is already available on itch & will have its steam release in mid-February). I was planning to wait until I got ~100 sales (to guarantee I'd make back the money I spent on assets & on the steam application token) before starting on a sequel, but I've been bursting with ideas for mechanics today so I will probably start planning the sequel more concretely this weekend -- perhaps even starting on character designs & plot. I'm also continuing to go through research materials for my next book. I got a copy of Raskin's *The Humane Interface* recently, and I've been reading that recent history of PLATO, *The Friendly Orange Glow*. I'm not planning to cover PLATO in the book since I don't think there's an emulator around for it, but I expect reading about it will spark some ideas. -- "Any details about the game? Links to more info? Genre? Linux? Multiplayer? Don't quite have the time for games that I used to, but if it's a puzzle/coop 2d/adventure that runs on Linux I might not be able to help myself... -- "Sorry to disappoint, but it's a VN (a kind of narrative-focused variation on the 2d adventure game popular in Japan). It *does* run on Linux. -- "DDLC 2? :-) -- "I started this before DDLC came out, & was a little concerned because they both played with the player / player character divide & with meta (specifically, both incorporate things VN players normally do outside of the game as part of the game's mechanics). But, they're different enough to not be really comparable. There's more overlap with another thing that came out shortly after I started, the movie Happy Death Day. Luckily, the tone is very different, & the only overlap is within the pitch (which really acts as a frame story in MfoM). -- "So, what's the games namem I'd love to try it out. Especially since it's from a fellow lobster. :-) Pretty please. -- "It's called 'Manna for our Malices'. The sequel, if I end up making it, will be called 'The Book of the Damned', to continue the Charles Fort theme. -- "Link to the game please! -- "It's on [itch](https://enkiv2.itch.io/manna-for-our-malices), [steam](https://store.steampowered.com/app/1013580/Manna_for_our_Malices/), and [the source is on github](https://github.com/enkiv2/mannaforourmalices). -- "Work continues on plant startup. We've got round one of meatspace testing going with a boatload of seeds in pots, good so far. Working on getting some simple watering reminders set up now. Still happy to send people kits (everything you need to grow plants from seed, including the seeds and clear instructions) for free, just PM me. No green thumb required, should be going out in a month or so. Otherwise I've got coworkers from the other side of the world coming into the city for my day job. Excited to spend some time with them as well :~). -- "Tell me more? I've recently been contracting for panacea.ag, which is a very young startup building systems for monitoring greenhouses plants and equipment. So I'm interested in other people working in this space. -- "Hey, sure. Panacea looks cool! We're more of a consumer company, much lower tech than what I imagine y'all are doing just from glancing at the website. Think Blue Apron but for house plants with some smart-enough care reminders. The hope is that since we are maximizing for just keeping plants alive and reasonably healthy, rather than maximizing growth or yields, we can achieve our goal with minimal hardware. We haven't started playing with that side of things yet, but when we do I'm happy to have a more in-depth conversation about our findings if you like! -- "Hah, that honest sounds like something I'd be interested in, at least come spring. I like gardening, at least for the first three weeks or so, and having a system to poke me time to time and remind me to help take care of stuff sounds nice... Especially if it teaches me stuff in the process, which wouldn't be hard. Panacea is honestly lower tech than it looks, basically everything is off-the-shelf. But in this era of cell phones and arduinos, you can do a *lot* with off the shelf parts. The maker movement and their tendancy to dig into random topics and then blog about it is also wonderful. \"Oh, you need a filter for a near-IR camera? We tested a bunch of things and found a theatre light filter that works great, you can get them anywhere for $2. Here's what the transmission spectrum looks like...\" -- "Writing some emails to clients, planning out the work for February, taking care of Business Stuff. Lifewise there's a couple of monthly dances in Chicago: every month I hope to go to both, settle for going to one, and end up going to neither. Let's see if I can break that this month! -- "Working on an optimization for the [Curv](https://github.com/curv3d/curv) GPU compiler: common subexpression elimination. This will reduce the size of the shader programs that I generate, and make them run faster, because I'm running into limitations with some of my 3D models. First, I have to pick a good data structure. I have something in mind, but I'm going to read up on the SSA, CPS and ANF compiler intermediate representations. Plus, spend some time away from the computer. Make blueberry pancakes, get some exercise, do something social. -- "That sounds pretty cool! Do submit it when done if you have time to write-up a description. -- "Getting over being sick as a dog and watching lots of Youtube. For anyone interested in infosec-theater as I am, this one is pure gold :) [I'll Let Myself In: Tactics of Physical Pen Testers](https://www.youtube.com/watch?v=rnmcRTnTNC8) -- "I will be: 1. Creating and sending tax documents for 2018 HardenedBSD donors 1. Attempting a BIOS downgrade on a couple APU4 devices, so I can install OPNsense 19.1-RC1 on them 1. Going over February's budget with the missus 1. Learning more about Rustlang -- "I'm finishing my office move (working from home starting February 1). My home office looks more like a warehouse than an office right now. I built a second standing desk in one of the closets to act as a \"business center\" (copy/print/scan/file), and I'm planning to build bookshelves in the other closet to house what used to be the company library. I'm a little stressed out but I'm making progress. -- "Good luck, home offices are hard. -- "Working on laarc: https://www.laarc.io We're trying to recapture some of the early spirit of HN circa 2007. It took a lot of work to upgrade pg's old arc3.1 codebase, but it's been decisive. It's growing quickly, but not because of anyone in particular. The site is all thanks to the early community, who have been some of the nicest and most capable people I've ever seen. Everyone seems to be pitching in to push it along. HN seems... worried. Someone posted laarc to HN (surprising to me!) and it turns out that HN had preemptively banned laarc: https://news.ycombinator.com/from?site=laarc.io (If you don't see anything on that page, it's because you have to log in and enable showdead. The direct link is [here](https://news.ycombinator.com/item?id=18992522) but also won't work without showdead.) I don't want to do a Show HN. It would grow the site much too quickly. But there have been other ways forward, and HN users are starting to notice some differences in the quality of laarc's front page: https://news.ycombinator.com/item?id=18982208 > nostrademons: It's interesting, I just checked it out (I'd never heard of it > before) and a number of the usernames seem familiar, and are not who I'd think > of as more political-oriented people. The topics are actually more technical > and arguably interesting than what shows up on HN these days. > > I think it may just be that beyond a certain size, online communities break, > and you get crap. And laarc is effectively a splinter off HN of users who got > fed up with the content here. They're also starting to get *real* fed up with Dan's ... \"moderation.\" > untog: you might notice it happening now. This story has slipped down to 23rd > on the front page, despite having far more upvotes in a shorter space of time > than the stories that surround it. Soon it won't be on the front page any > more. I used to hear a lot of this talk on HN, and I'm sad to say I dismissed it. HN seemed good to me, and whatever Dan was doing seemed to be working. And for the most part, it does. But that's little comfort to those who find themselves personally blacklisted and excluded for asking questions. I am incredibly grateful that lobsters exists. It seems strange that anyone would feel threatened by a new community popping up. We enhance one another! One doesn't come at the expense of the other. It was so inspiring to hear that pushcx forged out on his own and made it work, since it shows that people will always flock to quality. Either way, the site is rapidly shaping up. We have an iOS app available for testing, and users seem eager to try it: https://www.laarc.io/item?id=650 I'll be rolling out search soon, roughly equivalent to HN search. https://hn.algolia.com/ We decided to wait several hours before posting this so that everyone else had time to share their stories. I was hesitant to post at all, but a long-time lobsters user said not to worry about it. If updates like these get annoying, please promise to smack me on the nose with a rolled-up newspaper. :) -- "It's always fascinating and weird to hear the various stories of people building hunam communities and the tools that enable them, and how other communities react. I regret nothing about taking HN off my usual \"check every day\" bookmarks rotation, and replacing it with lobste.rs. May the community you build hopefully be as neato. Maybe I'll check it out from time to time. Are you using the lobste.rs codebase, or something else? -- "It's actually Arc: https://github.com/laarc/laarc http://paulgraham.com/road.html isn't about Lisp specifically, but Arc is the embodiment of those ideals. It's effective. People in feature requests thread keep saying \"Wow, that was fast\" when they ask for concrete features. https://www.laarc.io/item?id=230 https://twitter.com/theshawwn/status/1088293907543265280 Lobsters has an excellent codebase. I used it as a reference for the \"suggest title\" feature, and it's how I came to know about diffbot. The very first thing I wanted to know was \"How the heck does Lobsters turn a URL into a readable email?\" Hmm... One of the annoying things about doing a deal with a company like that is that you can't talk about them anymore without sounding like you're shilling for them. :) But I'm not. They're just that good. It seemed like one of lobsters' main superpowers was turning URLs into readable emails, and I never would have figured out how without lobsters and the community here. I'm excited for Arc. There is still a small but intensely interested community at http://arclanguage.org/forum and some exciting upgrades to the language may be coming soon. I ported Arc to JS also, so you can use npm libraries with Arc and such. https://docs.ycombinator.lol (Those docs are about Lumen, but most of Arc's standard library (like `whenlet`) works with the in-browser repl there.) -- "Goodness, Arc is still a thing? Frankly I've heard less about it the last few years than newer minor languages like Kitten and Pony. Good on you for actually making it do something useful. 😊 -- "Yeah, it's been a fun site so far. Like I told Doreen, I've enjoyed a lot of the non-technical stuff more than the technical. Much like HN's diversity of content without its noise and fast pace. Complements Lobsters nicely. Look forward to seeing what happens. Especially with the double-edged sword of growth. Still watching HN since its community is huge with occasional, good submissions and comments worth the noise. I repost the better stuff to Lobsters and Laarc for folks that don't want to deal with the cost of following it all. Far as the HN moderation, I will note that the user has [weird, failed, submission history](https://news.ycombinator.com/submitted?id=rijoja). A 2012 submission, followed by three in 2017 (one dead on politics), a scattering from 5-6 months ago, three on typing from a month ago. and dead post on laarc yesterday. The articles are mostly 1-2 points total on a massive site with Huffman Tree's getting 4. This account is, in eyes of HN community and/or moderation, failing constantly to be worth their readers' time. They might already be targeted by moderation for what I'm seeing, something in comments, and/or along with whatever they emailed them about in response. I still figure Laarc might be on Dan's shitlist given he really doesn't like you for whatever reasons, you're in showdead there, and he sees familiar names on Laarc's homepage. \"That's the sound of inevitability, Mr. Anderson.\" It's not stopping Laarc, though. The show will go on. :) -- "Going to finally finish my personal website and just get *something* out there, even if I haven't written too many posts on it. If I can finish it, then probably begin adding in a dashboard feature for a security focused startup I recently undertook with colleagues. Besides that, I need to catch up on reading the Three Body Problem by Liu Cixin for a book club discussion with friends next week! Just finished Homegoing by Yaa Gyasi, as well as Educated by Tara Westover, and both were phenomenal reads. -- "Finishing touches on updating NetBSD to mesa 18. This was hard because things in base effectively have their build system rewritten, and mesa is huge. This is going to be a lot of compiling, but fortunately my computer is doing the heavy lifting on that. Writing a lecture about pkgsrc for a local FOSS meetup. -- "Procrastinating working on ggez, a 2D game framework for Rust. I should get some bugfixes in, so I can publish a new release candidate... There have been some wonderful API improvements from interested contributors, but most of these bug fixes are either on touchy areas or on areas needing judgement calls, so it's harder for drive-by contributors to help. Instead of doing that I've been working on a review article of Rust web frameworks, slowly. And angsting about starting a new job next week. It's a very nice job working on interesting stuff, doing devops for a company building drone autonomy software. But they look an awful lot like a startup that has no concept of work-life balance, which is usually bad for my mental health. We will see. -- "I'm thinking about buying some yarn and a hook and trying to learn crocheting. I'd like to make myself a nice winter hat, we've got some really cold weather coming and I lost my last nice one. -- "I’m leaving Russia and returning to Poland for one week, before I travel to Thailand. I just about finished my first energy supplier integration for Comparestack/Moneygains, so that codebase is now around 10K lines of mostly Haskell and Elm. Now I need to switch focus and work on my other two projects. -- "Taking a friend to [Bletchley Park](https://bletchleypark.org.uk/) and [The National Museum of Computing](http://www.tnmoc.org/) as he's never been :-) If you're in or are going to the UK and haven't been to these I highly recommend them, especially if you're into cryptography or old computers. -- "I volunteer at TNMoC! Sadly I can't be there this weekend. -- "Oh, cool! If I lived closer I'd love to work there :-) -- "* BTS (K-pop)concert via theater Fathom Events. * hiking * Watch local youth philharmonic talent show Sunday. -- "Visiting a friend, which will likely involve wine, board games, a run or two to the tip, yorkshire pudding wraps and much merriment. -- "Previous Discussion: https://lobste.rs/s/yxswhm/what_are_you_self_hosting -- "Just [a basic PHP app that replicates some web pages](http://freedoom.party) I liked from [the Terabyte from the Kilobyte Age blog](http://oneterabyteofkilobyteage.tumblr.com/). And a ZNC bouncer. -- "* Email (usual Postfix+Dovecot+some additional tools combo) * XMPP (ejabberd) * My own website (Nginx with static HTML) * Git repositories -- "[My blog](http://jordi.inversethought.com/) and [my Mercurial repos](http://inversethought.com/hg/). Pretty low-maintenance. -- "At this moment just an IRC bouncer. -- "Just my static web sites. -- "A [simple web app](https://slownews.srid.ca) running on my beefy laptop (Thinkpad P71) at home, connected to the frontend proxy ($5 DigitalOcean VM) via Wireguard. -- "This is what I posted to a [similar topic](https://old.reddit.com/r/selfhosted/comments/a9r5ux/share_your_self_hosted_setup_2019_edition/) over on reddit r/selfhosted recently: **Data Center** Dedicated FreeBSD 11 server on a ZFS mirror, from OVH. The host is very slim and really just runs ezjail, and unbound as a local resolver. All the action happens inside jails. - MySQL jail - provides database in a \"container\" for the other jails - PowerDNS jail - Authoritative DNS server, backed by MySQL - LAMP stack jail - a place to host web pages with apache and PHP, for the most part. Using PHP-FPM with per-vhost chroots and UIDs. Containers within containers! Very happy with this setup. Notably hosts: - Ampache - which the whole family uses for mobile-friendly music streaming. - Chevereto - image hosting - NSEdit - Web app for managing our DNS server. - WP Ultimate Recipe - recipe database built on wordpress - Wallabag - read-it-later article saver like Pocket - Lots of WordPress sites for friends and family and assorted custom scratch-built things and experiments - NextCloud jail - NextCloud on nginx + php-fpm. In it's own jail to keep it completely separated. The whole family uses it for files, calendars and contacts. - Minecraft server jail - Email jail - Custom email hosting setup built on Postfix, Courier-IMAP, Maildrop, MySQL, Apache, PHP. I've been hosting my own email since the 90s. - Legacy jail - Really just the old server, that went P2V two or three server moves ago - so easy to do when everything lives in ZFS jails. This is deprecated and I have been moving things off it (very slowly). **Home Network** PoS old FreeBSD 11 server with a ragtag collection of hard drives on ZFS. It's mainly our home NAS, storing our media, but also hosts: - Nagios jail - Network monitoring and notification - Asterisk jail - Home and office VoIP - Assorted experiments and goofs Raspberry Pi 3A - Kodi in the livingroom, playing media from the NAS Raspberry Pi 2A - Custom dashboard app showing server/network status and weather and stuff. Raspberry Pi 1A - Running sprinklers_pi to control our lawn sprinklers. **Remaining Pain Points** Still getting a decent KeePass workflow established Need to setup a VPN at home Still don't have Ampache sharing working. It should be easy for me to tell a friend to, \"listen to this song\" or \"this album\". Need to get a good beets workflow going to clean things up. Need to pick a wiki for a family knowledge base. Asterisk is crusty and no one is developing personal-scale VoIP managers, because everyone just uses cell phones these days. Need more hard drives. -- "How's your experience with Kodi? My annual Plex sub has just renewed so I've got plenty of time to look up a replacement, but they're adding a bunch of crap I don't want, and don't seem to be fixing things that annoy me so I'd like this to be my last year at that particular teat. -- "Kodi, like Plex, has garbage UI full of extremely frustrating UX quirks. But, in my house, it’s still my main way of consuming my library (with an nvidia shield as the client). But they also serve different audiences: Kodi is hard to serve externally and is mostly just a client, while Plex is good at remote, shared access and solving the server side. -- "I've looked into plex alternatives as well. Emby was kind of interesting, but they recently closed some of the source, and then there was a fork of it by some members of the community. Going to wait and see how that shakes out. Universal media server (UMS) paired with Infuse (appletv/ios) is kind of interesting -- the main drawback is how large the local storage usage in infuse gets, and how slowly it builds the first time. If only it pulled more metadata from the server at runtime. I tried pairing infuse with plex (recent supportly configuration), and it had the same issue with local storage size and slow initial build time. It's unfortunate, because otherwise I found it fairly decent (UI/UX). -- "It works well. It's not a great UI. The family is comfortable with the Roku UI even though it is terrible and they complain about it. If there's something on both, they'll play the one on the Roku first every time. Searching is meh. Playlist building is straight-up user-surly. Indexing is hit-or-miss and needs a lot of interventions. Actual video playing is great. Playing music through it is not fun. -- "What kind of KeePass workflow are you looking for? I have personal and shared key databases in KeePassXC, and share the shared ones with SyncThing -- I assume NextCloud could do that level of file sharing for you. I'm very happy with it so far, but it's also so trivial I suspect you're looking for something beyond that, no? -- "So, I have KeyWeb on OSX, and pair it with ChromelPass in Chrome. I save my DB inside a NextCloud folder so that it is available on my other devices/platforms. I like it generally, but it always seems to be locked when I want to add something to it, so I have to type in a high-entropy password and select the key file, and by that time ChromelPass has forgotten that I was trying to save a password and given up. So like I log out and back in, and save the password, \"now that I'm ready\". It's not as *integrated* or smooth in chrome as the built-in password db, so it's easy to forget it, and I always have a sense of, \"but do I really have it saved?\" on new additions. I don't actually have an Android app yet. What do people use there? -- "Nice list. Have you considered to run a database in each jail instead of having a dedicated MySQL jail? I have been looking for a discussion of the pros and cons of both approaches. -- "Yes. I mean, 15 years ago I had one server with no jails/containers/etc and everything was just stacked in one big messy pile, and we all know what happens with that over time and upgrades. I moved that whole thing into its own jail, just to draw a line around the mess, and started a new server layout, with pieces in separate jails. I love having stuff compartmentalized into its own container so that upgrades are never an issue. I never have to, \"upgrade PHP because upgrading MySQL upgraded gettext which now conflicts with, bah! no!\" If anything, I am moving (carefully) towards further containerization right now. For instance, I'd like to have PHP in it's own jail separate from the web server, so that I can run several versions and just pick which socket to connect a site to in the config. But as you guessed, it is a balance. I never want to get into installing simple docker web apps that each install a web server and a db server and duplicate each other in stupid and wasteful ways. On the other hand, for somethings, it is nice to have a self-contained \"package\", where if something got busy enough to need it's own server, I could just move it to bigger hardware in one shot. -- "Would you be willing to move off KeePass to Bitwarden? Did it myself a while back using [bitwarden_rs](https://github.com/dani-garcia/bitwarden_rs). Super easy to host and everything Just Works™. Also would allow groups for shared passwords between the family. -- "> Asterisk Yep, personal-scale VOIP doesn't quite make sense when most folks having unlimited call and internet calls. I've only seen personal VIOP on my friend family. He has parents living abroad and it's easier to deploy VOIP rather than teaching them how to use APPs. -- "What's your experience been like with Chevereto? I'm in the market for something very much like it, and I see it mentioned a fair bit, but I don't run any other PHP/MySQL things so I'm a bit wary. -- "Minimal, honestly. I set it up and it runs nicely, but I haven't really used it heavily. -- "[Bitwarden](https://sgoel.org/posts/switching-from-keepassxc-to-bitwarden/) at the moment. Considering hosting a few Git repositories as well in the next few weeks. -- "1. Photography website - https://photos.yakamo.org 2. Yggdrasil Public Node 3. API for Yggdrasil network stats -- "* ProxMox for VM and Container (LXC) management * Gitea for private and somewhat public repositories * A healthcheck service for all my services (on a shared hoster for reliability, can't healthcheck yourself if you're dead) * A custom made analytics tool to monitor site access (it's privacy conscious) * Mastodon instance (fandom related) * Multiple attempts at creating a private web.archive.org (at Reminiscence) * Link shortener (yourls under `u.rls.moe`) * AUR build service (building AUR packages like linux-bcachefs-git takes a long while, having a build service reduces this to only having to download the package and having more reliable builds as well as being able to report issues better. The entire build service is scripted in bash and uses lighttpd for serving) * Nextcloud for my personal data * Ininja for invoicing clients * Shaarli (bookmarking websites) * Blog (Grav, it's PHP based) * Airsonic (for music I've obtained legally, spotify for everything else) I've used to host an email client and a small mail server but I've outsourced this to Protonmail and mailgun respectively (MG has a EU instance which makes me feel safer). My homenetwork runs an Octopi and an unraid NAS with some media center applications, though largely shut off from the internet. Atm I'm looking for a safe deposit option for my keepass database; I want it easily accessible in case I loose all data as the KP database contains almost all vital credentials. I also need to improve monitoring and setup FDE on the dedicated server I run most of my heavy stuff on. -- "How do you like Ininja? I've been looking for an invoicing tool I could self-host. -- "My initial experience has been a bit meh since the database migration at some point blew up and left me with a half working instance. I've since reinstalled and it seems to be fine now and I'll be more careful with upgrades. In terms of features it's a very pleasant experience though it's definitely geared for american users and doesn't offer much integration for EU banks/institutions. -- "My own very cool bookmark manager. I’ve used it for years now and it continues to be handy. Anyone can sign up as well! http://slushies.redpine.software Also my blog: http://blog.88mph.io And my IRC bouncer And this off beat startup idea that I keep putting off but really hope to execute in the next year or so: https://sweat.club -- "I wonder if we could remove the `linux` tag, since the question can be answered by more than those who run Linux. :) On my various HardenedBSD servers, I host: * gitea * bitlbee * kanboard * NFS Each service is in its own jail just to keep things organized. Some services have a Tor v3 Onion Service associated with them. -- "I only applied the 'linux' tag since it wouldn't allow me to only supply 'ask'. (and the previous post did the same) -- "Ah, gotcha. I didn't know specifying a secondary tag was required. Thanks for the clarification! -- "These days, just git (for code and `pass`) and a custom static site. -- "Everything. Which is: **VMs on Hyper-V:** * About 12 websites, sitting on Debian + Apache + PHP * Local Microsoft Exchange Server for Email * Internet Facing SMTP gateway that does anti-spam stuff Exchange should be able to but can't. * Local Active Directory for Logons and Security * SQL Server holding various databases. **Physical Boxes:** * My _other_ Hyper-V Lab host, currently running about 12 VMs for Work/Research * File Server (Windows 2012 R2) with a few RAID 1 arrays * Various Raspberry Pis doing things such as KODI, Weather Analysis (from my Weather Station) etc. * Web based Network Music Player connected to the File Server * A Friends NAS - he rsyncs his data over a VPN as an 'offsite backup' * My own 'offsite' backup in a NAS in my workshop down the end of the garden. -- "My [website](https://wozniak.ca) and [gopher](gopher://wozniak.ca) server. -- "As much as possible, at the moment this includes: * A dedicated host on online.net running Debian, with qemu/kvm hosts (debian and opebsd) provisioned via [Terraform](https://www.terraform.io), managed using ansible and [debops](https://debops.org). These host: * XMPP (prosody) * Static websites (nginx on Debian, httpd on openbsd) * Wordpress installations for family (via docker) * Nextcloud * Stagit (static git web viewer) * Synapse (matrix.org reference implementation) * Prometheus and Grafana * Buildbot and Jenkins (will most likely deprecate buildbot soon) * Etherpad * DNS (powerdns) * An old Asus eee-pc 1000H at home running x86 openbsd: * Weechat client * Archiving bot * VM from a VPS provider: * email (dovecot + postfix) * DNS (bind) Some of the above can be found [here](https://github.com/erethon/ansible-debops-infrastructure), but not everything is pushed/public yet. -- "What's your experience with online.net network? I've used OVH dedicated servers (at BHS) and their network is great, but I'm thinking of using online.net for my next project. By the way, curious fact, they recently rebranded to \"online.net by Scaleway\". -- "> What's your experience with online.net network? I've got a dedi with them since early 2016 and I only recall one time where there was an issue with the network and the host wasn't reachable. Having said that, this host doesn't get that much traffic each month, so I'm not aware if they're throttling them after a point. > I've used OVH dedicated servers (at BHS) and their network is great, but I'm > thinking of using online.net for my next project. Up until two months ago I used to pay 15 euros for their `start-2-m-ssd` (C2750, 16GB RAM, Samsung MZ7LN256HCHP SSD), but they've upped it to 25 per month now. One of the big caveats is that their 2016 version didn't support IPMI and they only gave a \"serial console\" over [gotty](https://github.com/yudai/gotty), not sure if this is still the case. > By the way, curious fact, they recently rebranded to \"online.net by Scaleway\". I always thought that Scaleway was a sub-brand of online.net, but seems like it's the other way around nowadays. -- "I begrudgingly gave up SMTP a few years ago when it became too time-consuming to keep up with the email cartel's tech requirements. That leaves me with: * IRC (Ratbox), private network * HTTP/S (bunch of static and Rails sites) * shells (ssh/mosh) * Monit -- both for my personal sites and work hosts, as you never know when your work env and your monitoring service are both going to be Thoroughly Hosed -- "Almost everything these days, particularly email, gopher and Web. The server is in the room next door. External DNS I delegated, though. There is an off-site email exchanger for if the house line is down. Cloud services are local. I've also got a GPS time server, so I don't even have to use that externally. -- "I host in a [Vultr $2.50/mo](https://www.vultr.com/?ref=7169399) instance. FreeBSD. Websites: - https://nhl94hockey.com - an old PHP website I made back in 2013 to extract and track stats from NHL94 games. Database is MariaDB - my personal sites not worth linking (Apache vhosts), various languages, but mostly Node or static. Slack commands: - Bible API that returns a chapter:verse in multiple translations. I have this in Python, iirc. The database is sqlite3. - Quran API that does the same thing, but for the Quran. Ruby/sqlite3 - Entry point API that then calls one of the others based on the command sent in. Node - Time cube API which.. Is pointless but it was my first slack command I tested out. Node. Also hosts my mumble server. And usually where I put my assignments from interviews to share. -- "A static website, plus a wiki, some mercurial repos, shell access, and an Etherpad. All with a few users among my friends, but nothing huge. No actual gitlab or such, despite srs investigation; it's just not worth the hassle. Now if I could host my own email without constantly worrying \"what if it breaks?\" that would be something and I could ditch Gmail without regrets. Alas, as it is I constantly worry \"what if it breaks?\" even though it hasn't in the last three years. -- "Already self-hosted: - A ZFS storage array for network storage, pc backup, VM storage, digital packratting, etc. Hosted on OmniOS VM, exposed as NFS and smb shares to the rest of the network. - Plex for movies and music (Kodi when internal) - Minecraft servers for playing with friends (Docker on Ubuntu) - Some scratch Windows VMs for messing - DNS server, network analytics, and other goodies in pfSense My self-hosting todo list: - VPN server - Star Trek GIF repository - Apache Guacamole for an easy-to-access farm of VMs for testing and development purposes - Dockerizing my Plex server - Personal document storage - Dropbox-like storage for my friends (Seafile?) - Mercurial code repos - My static websites -- "Quite a bit! I have the following bits of software running on a [decent VPS at DigitalOcean][1]: * [Wallabag](http://wallabag.org/) to hold all of the stuff I'd like to read later without all of the extra fluff on a Webpage. * [Nextcloud](http://nextcloud.com/) with a few apps added like: * [AppOrder](https://apps.nextcloud.com/apps/apporder) for sanity * [Checksum](https://apps.nextcloud.com/apps/checksum) * [Circles](https://apps.nextcloud.com/apps/circles) * pilot testing [Collabora](https://apps.nextcloud.com/apps/richdocuments) * [Files from Mail](https://apps.nextcloud.com/apps/files_frommail) - super handy for me so I don't have to download attachments; emulating Google's (creepy!) auto-sync-to-Drive option. * [Full text search](https://apps.nextcloud.com/apps/fulltextsearch) - I lose everything * [Mail](https://apps.nextcloud.com/apps/mail) - I use this to login to other IMAP accounts I have that aren't Google * [Metadata](https://apps.nextcloud.com/apps/metadata) * [Music](https://apps.nextcloud.com/apps/music) * [News](https://apps.nextcloud.com/apps/news) - serves as my primary RSS/ATOM/Podcast feed reader and subscription tool. * [Notes](https://apps.nextcloud.com/apps/notes) - if it's not in my Org files, it's in here. * [Notification for Calendar changes](https://apps.nextcloud.com/apps/event_update_notification) - handy email updates for calendar changes. * [OwnBackup](https://apps.nextcloud.com/apps/ownbackup) - I use this once a month during my system backup flow. * [Phone Sync](https://apps.nextcloud.com/apps/ocsms) - Syncs my text messages to NextCloud. * [Phone Tracker](https://apps.nextcloud.com/apps/phonetrack) - Serves as a geocaching solution for my mobile devices. Somethng like Google Maps Timeline but self-hosted and personable. * [Preview Generator](https://apps.nextcloud.com/apps/previewgenerator) - A preview pre-generator (lol). * [Share Renamer](https://apps.nextcloud.com/apps/sharerenamer) - Oddly enough, I wanted this to personalize share links I sent to people. More handy then expected. * [Tasks](https://apps.nextcloud.com/apps/tasks) - General purposes CalDav-backed task system. * [Telephone Link Provider](https://apps.nextcloud.com/apps/telephoneprovider) - This plus [KDE Connect](https://community.kde.org/KDEConnect) makes for a super simple way to click-to-call. * [TOTP 2FA](https://apps.nextcloud.com/apps/twofactor_totp) - Because _yes_ * [Videos](https://github.com/owncloud/files_videoplayer) - I have videos! * [File Automated Tagging](https://apps.nextcloud.com/apps/files_automatedtagging) - Organization rules everything around me. * An instance of [Drone CI](http://drone.io/) for personal/private project builds. * [Matomo](http://matomo.org/) for all of my analytics. * My own [Minetest](http://minetest.net/) server - e-mail / DM me for an invite to play! * [Isso](https://posativ.org/isso/) for self-hosted comments to my website. * A [ZNC](https://store.docker.com/images/znc) bouncer; so many servers! * [Gitea](https://gitea.io) for all of my projects. I host here first then mirror elsewhere. * [Minio](https://docs.minio.io) for self-hosted object storage; largely for testing my software. * My own instance of [PeerTube](https://joinpeertube.org/) so I can sync and share videos. I should make this into a dedicated page at https://jacky.wtf, lol; I get asked this often enough for me to do so. [1]: https://m.do.co/c/0d64aebbf668 -- "What size/spec Droplet(s) do you use over at DO for all of this? -- "The exact \"tag\" is `s-2vcpu-2gb`; the one with flexible storage. I've also attached a 100GB volume to the image as well. -- "60GB image with 2GB of RAM hanging out in SFO2 -- "$5/month VPS, running OpenBSD: - Mail server (OpenSMTPD/Dovecot, spamd for spam filtering) - XMPP server (prosody) - Personal website (OpenBSD's httpd) - DNS hidden master for my domain, with DNSSEC (NSD) - Tiny Tiny RSS - Matrix Homeserver - IRC Bouncer (ZNC) I'm using relayd as a TLS reverse proxy for all my services, de-muxing via the HTTP \"Host\" header. I use acme-client for letsencrypt renewals via cron. I have ansible roles for each component [here](https://github.com/cullum/dank-selfhosted). Todo: git, vpn -- "I was. I need to again. Anyway, when I was it was on a Pi (just static blog stuff) via nginx, haproxy (I used haproxy to route traffic based on domain...which makes little sense now considering, but I was learning then!), Jekyll, and some sweet git hooks. I also had openvpn or some such setup on another Pi. Also had some DB (mysql?) on a Pi...I think. I've been wanting to host my own stuff again, but just haven't gotten around to it. -- "* Remote * $5 Vultr VM (FreeBSD) * ikev2 vpn * a few static websites * Home * multicore xeon with lots of HDD (FreeBSD) * zfs storage server (a couple of pools) * FreeBSD pkg builds (poudriere) * various bhyve VMs for work/development (linux, freebsd) * various bhyve VMs for home network (pihole/dns server, IKEv2 vpn vpn, unifi controller, etc) * i5 intel skylake nuc (linux) * plex media server (hardware-transcoding) -- "__At home on a FreeBSD server:__ * Gitolite (for my private repositories) * ZFS storage to keep my 15+ Years of Photography safe and sound plus some other important personal data * Samba (exposing ZFS volumes to my Windows clients with ZFS snapshots exposed as “previous versions”) __Small FreeBSD Server at my parents:__ * ZFS replication storage for my home server for offsite backups (on the other side of the country) __On a KVM VPS running FreeBSD:__ * Nextcloud (in a Jail) * my personal blog (static website) * travel blog (static website) __Hetzner Cloud instance for ~2.5€/month:__ * VPN via [streisand](https://github.com/StreisandEffect/streisand) for the times I do not trust a wifi or some sites are blocked in the country I am in -- "Static blog. A janky Bitcoin price tracker. Shell access for IRC etc. -- "Everything plus a dehydrator to make use of the excess heat generated by the equipment. Everything means: Current hardware, in the process of being replaced: 2 * Intel SS4200 (Pentium E2220, 2GB) plus a 5-slot esata-expander with ~16TB between them, spread over a mixture of 1/2/4TB drives (some of which have over 80.000 hours on them). SS4200 #1 sits in front of the other and hosts: - web (ngnix) - mail (exim, dovecot, greylistd, spamassassin, managesieve) - 'cloud' (Nexctcloud) - media (mpd) - p2p (transmission-daemon) - print (cups) - file (nfsv4) SS4200 #2 hosts: - database (Postgresql) - assorted web services (uwsgi, proxied through nginx on SS4200 #1) - more media (Airsonic) - video (Peertube) - search (Searx, also searching local content using recoll (plusing, PR submitted but not yet merged)) - cache (redis) - scm (gitea) - xmpp (ejabberd) - file (nfsv4) SS4200 #1 is a 32-bit Debian (sid) install, #2 is 64-bit, also Debian (sid). I run build services on both. Both run backup services (rsnapshot) targeting drives on the other system. SS4200 #2 boots off a SSD connected to the internal PATA-slot (which normally is not visible after boot, it runs a patched kernel to circumvent this limitation). The hardware is nearing the end of its life so I'm in the process of replacing it with: 1 * DL380 G7 (2 * Xeon X5675, 128GB) with 8 * 146GB 10K SAS - proxmox to herd VMs and containers - pfSense in a VM to serve as router/firewall/vpn-host for the rest of the net - a mixture of VMs and containers to implement the services mentioned above - more VMs and containers to be used as build servers I'm currently looking for some (jbod) storage for the thing, possibly a Netapp DS4243 or similar, will use the esata expander until I have found something usable. The SS4200's live 'under the stairs' here at the farm, the DL380 sits in a purpose-build 19\" cabinet which doubles as a dehydrator to make use of the heat generated by the equipment. From top to bottom this cabinet contains: - an air filter (meant for a Renault Trafic (commercial vehicle), big and cheap and easily available in case I need to replace it) - a 24-port managed switch (Dlink DGS3324) - the DL380 - more shelves for either a storage cabinet or SS4200 #2 with the esata expander until I find such. - an airflow divider which makes sure all air goes to the back of the cabinet - 8 * 19\" drying racks - a 2-speed (23W/34W) fan built into the bottom of the cabinet, these things are normally used to create forced draft in modern air-tight homes and as such are designed for continuous operation and low power consumption. There are some Raspberry Pi's spread around the place doing different things, some old Android devices which have been repurposed as Linux devices in use as media players, camera servers etc. -- "My static websites ([usesthis.com](https://usesthis.com/), [waferbaby.com](https://waferbaby.com/)) served with nginx, and [my own Mastodon instance](https://social.waferbaby.com), all on DigitalOcean. -- "I'm not sure that my home server counts as self hosting. But it is a nice playground and opportunity to learn. I am currently running 6 jails: - OpenLDAP server - Email with Postfix and Dovecot - A letsencrypt.org-powered HTTP reverse proxy - NextCloud - Gitea - Some static web sites My next steps will be to come up with a better storage setup and some strategy for backing up all important data. -- "1) Some twitter bots, including @nytfirstsaid, which is basically an hourly cron job to run a python script which scrapes some web pages, records some state in redis, and hits some external APIs. Because there are so many moving pieces and unstructured strings sourced from external sources, It's pretty frequent that I need to log into the server to inspect the data running through the system and make small tweaks. 2) a service which pings spotify's \"currently playing\" endpoint every 30 seconds in order to automatically skip certain songs and artists which get suggested to me by the service that I don't want to hear. -- "Since two days ago, my [single-user Mastodon instance](https://toot.diego.codes)! -- "What a nice question, thanks for asking. # VPS - Hetzner Cloud, cheap, with SSD - NixOS -- "No home automation here (no Google/Amazon/Android/IOS sniffing). \"Home\" mini-server, local services only: - http for multimedia files (lighttpd), mostly needed because Windows RT - NAS (sshfs mounts) and backups (rsync to work server) - arduino-powered led matrix clock/alerts - data collecting/blogging/tweeting: weather station, airplane traffic (dump1090), APRS traffic, car GPS/OBD logging - also serving hourly screenshots from an old ethernet IP cam watching my car \"Work\" server, internet-facing, static IP address, \"software RAID-1\" disks: - two virtualbox WinXP instances, because customers - mysql server, because a lazy customer is not yet ready to switch to postgres - lighttpd for a few diagnostics scripts on https - rsync for backup from home - mosquitto, ssh, wireguard Also saving night webradio streams (mplayer -dumpaudio -dumpfile $RANDOM.mp3 http://webradio...) and podcasts/videos (youtube-dl) before early morning backup/rsync of my cellphone, so that I get them before commuting. Also having a twitter account used as a \"public log file\" (oysttyer) so that I get twitter notifications about diskspace/network/database activity. Also automatically blogging gnuplots/pics/statistics (\"email to blog\" using Ruby and smtp-tls.rb). Not yet done / future projects: - git hosting (personal projects only); - car traffic monitoring (openalpr); - running a Mastodon instance without the crappy nodejs; - ad-blocking DNS server; - switching from XP to ReactOS; - hosting my own email server (dovecot) but only accepting/sending encrypted. -- "A few Vultr VPSs running OpenBSD hosting my mail, web, and VPN needs. -- "* A handful of static websites for various projects ([tapestry.cloud](https://www.tapestry.cloud), [photogabble.co.uk](https://www.photogabble.co.uk), etc) * Gitea * A Write Freely instance: [wordsmith.social](https://wordsmith.social/) -- "Some static websites and IRC. -- "Funny timing, I just finished rearranging the hosts that I manage last weekend. Minor part was pulling the plug on a service I tried to start (based on Lobsters codebase incidentally) to host a discussion forum for a local community. Turned out that people would rather use other solutions, mostly Discord. Had never actually wound something down before. Did it a bit gradually - stop the helper services, read-only essentially, stop the backup service, preserve the latest backups and delete the older copies, then stop all services and kill the server, and delete all related accounts in third-party services, including email, logging, AWS keys, stop auto-renew on DNS name, etc. More work was doing a big upgrade on my pile-of-random-stuff personal server. Had been running Ubuntu 14.04 LTS for way too long, about time to upgrade to the latest LTS and bump a bunch of stuff to the latest version. This turned out to include: * Upgrading several rather hacky old init scripts to SystemD - much simpler and works much better * Latest nginx and TLS 1.3 * Latest Ruby and Python, which of course some of my particularly rusty codebases don't work with * Latest postgresql, don't notice anything different but probably good to upgrade * Latest postgrest, it seems to have gotten a few changes to make running on a server a bit easier since the last time I updated it * Latest Acme for LetsEncrypt, seems to be a little better at setting up Nginx and Apache configs nowadays -- "- Slackware Linux [GPU Compute Cluster](https://lobste.rs/s/za9uax/what_are_you_doing_this_weekend#c_e7phje) (PXE, NFS, yp). - A private [mirror of GenBank](https://lobste.rs/s/jqkqwb/what_are_you_doing_this_weekend#c_y1dazs). - A [continuous integration system](https://lobste.rs/s/mc85ko/what_s_your_release_process_like#c_bpsx5k) (Subversion, Artifactory, Jenkins). - PiAware ADS-B and MLAT ground station (I'm within the holding pattern for the local airport) -- "My website (static, Hakyll), and my git site (gogs) (and its associated postgresql database, local access only, occasionally used for exploratory dev). I have plans to get some indieweb stuff up and running, but those plans haven't actually happened in all the years I've had them. I'm setting up a FreeNAS within the next two months (probably just buying a FreeNAS mini), and will be hosting a media server there (probably Plex, since it will work with my Roku). That won't be externally accessible, but it's still a thing. I hosted my own email for well over a decade, but holy cow, that's a pain in the ass. Moving to runbox was absolutely worth it. -- "VPS: * static website * hound for code search, works better then Github code search * irc * taskwarrior server * git server * wireguard / dnsmasq * couple of cronjobs for automation Homeserver: * monitoring for VPS with prometheus * backups * grafana for IoT / monitoring * mosquitto for IoT -- "Plex on my NAS. A Streissand VPN on an EC2 instance, and various random experiments on another. Until a couple months back I hosted my own Mastodon instance as well but it hosed itself beyond repair so I gave up when several core devs looked at it, pronounced \"Yup it's a back end problem\" and shook their heads :) -- "Nothing other than a few sinatra sites on digital ocean VMs. The maintenance overhead of most systems favors centralization and the efficiencies that result from colocating. -- "- Website - https://SoloBSD.org - Static Website - https://Blog.SoloBSD.org - Gopher server - gopher://gopher.solobsd.org:70 - Email -- "**At Home** - ESPRESSObin: Marvell Armada 3700LP (88F3720) dual core ARM Cortex A53 This SBC has 3x1Gig ports, have it running OpenWRT as Home Router to Comcast, firewall, nat, adblocker and forwarding ports to internal services. I've this SBC as dedicate device to serve the internet, and it's pretty stable so far. - Amd 5350: Quad Core/Gig Nic/4 SATA/APU This is the main server at home, it's running Ubuntu 18.04. - KVM - Windows 7: when I need a windows environment, I will power this on - Ubuntu 16.04: main dev, testing, crontab and playground. Mostly for dev some side project and hosting pre-production stuff. This machine also exports 80 and 22, and cgi-bin from userdir for some interweb toys. - OpenWRT: I have another copy of OpenWRT running as VM, it works as a backup when the ESPRESSObin need maintaince. - Docker, yep, I run docker and KVM on the same host - bunch of torrenting containers, hosted on bare-metal for faster IO access - mysql container: mysql database hosting kodi db and nextcloud db - nextcould container: providing a user friendly interface for accessing files at home - nginx: vhost reverse proxy with let's encrypt cert, act as secure entry point for browser access - postgresql, redis: slave instances mirroring the DC servers. - Kodi, yep, I run Kodi along with KVM and Docker on the same host - This machine is also connected to my receiver over HDMI and the APU is capable for 1080p H264 contents, and CPU is OK to decode some low bitrate 1080p@h265 contents. - ZFS, all VM and Docker images are hosted on a ZFS (RaidZ1), which is also the boot/root filesystem of this system. - Bunch of RPI - Kodi: I have another Kodi to playback 1080p contents to an old TV, sharing the same mysql database from the container. - Home Assistant: this RPi has GPIO connects to - a small OLED displaying status - 315mhz transmitter for remote control - DHT11 for temperature and humidity sensor I am exploring home automation and IoT stuff with this device. - Bunch of ESP8266 ESP-01 acting as Smart Wifi Switches and connected to the Home Assistant **At DC** - GCP - a small single user pleroma to explore fedverse and learning elixir and activitypub - Azure - a medium instance hosting postgresql, mongodb, redis and graphite under docker. This is the main/primary database server for various projects. Yep, I am using mongodb for quick POCs then move to postgresql once the mongodb turns to be slow or using to much ram. Graphite is the database for monitoring all systems. I've installed telegraf on all systems and having alarms on some metrics such as uptime. - Various small VPS from small hosting companies - VPN and BGP for the DN42 hobby project, mostly for fun and learning - plex to share media to my non-techy friends - shadowsocks proxies servers to help friends bypass the GFW - nginx hosting my personal static website and domains -- "At the moment I'm hosting my IRC client, but the plans are hosting a VPN, some websites and bitwarden as starting point. Been considering Chef to manage configurations -- "## at home - small media server (lenovo thinkcentre purchased open-box) - plex - transmission-daemon - pi - [pi-hole](https://pi-hole.net/) ## vps (from [ssdnodes](https://ssdnodes.com)) - email (postfix, dovecot, rspamd) - nextcloud - url shortener (running [polr](https://polrproject.org/)) - irc stuff - ircd node for [tilde.chat](https://tilde.chat) - always-on weechat with relay proxied through nginx ## dedi (from hetzner) - [tilde.team](https://tilde.team) - tons of [stuff](https://tilde.team/wiki/?page=services) (including [tilde.news](https://tilde.news), a lobste.rs sister site) for tilde.team and the [tildeverse](https://tildeverse.org) -- "I've seen stuff about tilde club posted around here before - how active is it these days? -- "i can't speak for tilde.club, but tilde.team sure is! tilde.town is also quite active as well. there's also a relatively new effort to collaborate between the 'tildes' which mostly includes an irc network and a handful of self-hosted services. -- "I generate static HTML pages for my websites with [ssg](https://www.romanzolotarev.com/ssg.html) and then host them with [httpd](https://www.romanzolotarev.com/openbsd/httpd.html). I also host my name servers with [nsd](https://www.romanzolotarev.com/openbsd/nsd.html). VMs provided by [OpenBSD.Amsterdam](https://www.romanzolotarev.com/openbsd/oams.html) and [Vultr](https://www.romanzolotarev.com/openbsd/vultr.html). -- "* Email: two MXs running `smtpd`, Dovecot sitting on primary; * DNS: two `nsd` instances, reverse zones only; * RSS reader: Miniflux; * IRC bouncer: ZNC; * some small static sites; and * a Gitea instance. These are distributed among 4 VMs running OpenBSD -current in 4 different VPS hosts, on 4 different continents. -- "Nextcloud and Gitea in jails on a FreeBSD server. A small private wiki. A couple of bits and bobs on a gopher server. Looking to dump my old WP freelance site and replace it with a much simpler static site created in either Roman Zolotarev's ssg4 or in Zola. Minidlna across my LAN for podcasts etc. -- "I have a few machines (physical and VPSes) in various locations: Datacenter at work: - Physical machine (Debian 9) wiht Nextcloud server for me and my family and friends. - Virtual server (Ubuntu 18.04) for my (and friends+their companies) email, calendar and contact sync (compatible with Microsoft Exchange. Webhotel at work: - https://linux.pizza - various personal websites My friends datacenter: - Storagebox (Debian 9) for backups My friends home: - 3rd place for my backups My homelab server (Proxmox): - Various services such as: - Matrix (synapse server) for family - Searx - Pleroma instance - Databases (postgresql and mariadb) - IPFS node - TURN/STUN server (I am thinking of scrapping this one because it has been more pain than fun) - Minecraft server for me and my son Other: - Virtual server for the temporary email service for linux.pizza - Tor relays (exit nodes and relay) -- "What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "- I requested an ansible tower trial license a couple of days ago, if I receive it I'll play a bit with that - I'm going to another redhat training and need 2 more prerequisites, so I'll probably do at least one of them - we're visiting my parents, it's been a while and the kids always look forward to it - take it a bit easier and relax a bit after another though week at work. I got some nice beers for Christmas and I think some will get emptied this weekend! -- "My kid just got the flu, so mostly that I guess. Maybe see my sister if the kid isn’t too bad on Sunday. -- "Working on https://www.laarc.io/ It's been interesting to grow a community. I should probably write about the highlights, since there have been so many. People keep showing up seemingly out of nowhere each day. And they tend to be some of the best hackers I've met. JungleCat's \"scent map\" pathfinding technique is particularly impressive: https://www.laarc.io/item?id=285 There are a bunch of easter eggs scattered throughout the site, which users seem to like. And setting up a discord server turned out to be super important in countless ways. https://discord.gg/qaqkc9z We're gearing up for an actual Show Lobsters post. [Emily](https://github.com/sheminusminus) has been one of our secret weapons; she's like an assassin that targets items on a todo list. It's scary watching her work. We have an iPhone app coming soon, powered by our firebase API (e.g. https://laarrc.firebaseio.com/v0/item/1.json?print=pretty) [screenshot](https://cdn.discordapp.com/attachments/524300344201576486/535902599770275840/unknown.png) The API is nearly identical to HN's. https://github.com/HackerNews/API But we'll be adding support for tags, which is one of N hundred things to do this weekend. -- "Very cool! What do you see as some notable differences between laarc and Lobste.rs? -- "I think the communities will always compliment one another. The main difference can be illustrated by example: https://www.laarc.io/l/obscure https://www.laarc.io/l/chess https://www.laarc.io/l/startups https://www.laarc.io/l/happiness https://www.laarc.io/l/hn https://www.laarc.io/l/templeos And personally, I find it motivating to deliver a high-quality production-grade site written in modern Arc: https://github.com/laarc/laarc The world is starting to notice that writing webapps in React or Vue can end up being an order of magnitude more work. Elixir is doing some pretty wonderful work with realtime serverside re-rendering. Arc has had this since the very beginning. And you get some amazing features like thread-local variables. You know how in Express you have to pass around `req` and `res` everywhere? In Arc you can just write `(the-req*)` to get the current request. Many functions have been rewritten to take advantage of this. For example, the authentication code is one of the simplest you'll see anywhere: if you call `(get-user)` with no arguments and it returns nil, the user isn't logged in. If `(get-auth)` returns nil, that means the user visited a link like `/logout` but it didn't have the proper `/logout?auth=` code, so therefore the server should ignore the logout attempt. And so on. But really, the most exciting part of laarc is the people. Everyone has so many neat personal projects, and everyone is so nice. It's a spirit I'll be embedding into the site's soul. -- "Looks really cool. I've somehow gotten the idea that HN is inflated by people who are doing social media campaigning to get to the front page for advertisement. In more or less honest way. That's what I like about lobsters it simply feels more authentic somehow. -- "Looks interesting, though I wish it would use larger default font sizes, 10 pt is pretty hard to read for the titles and have to zoom in to 125% to make it easier to read. -- "I'm digging into OpenGL and Rust, trying to develop a simple engine and test things out. It's quite annoying since even with RenderDoc, OGL sometimes does rather insane things. -- "Kind of interesting to me how many graphics oriented projects there are for Rust. Would be great if one of them could really get some broad based community support and become super featureful and mature. -- "My biggest problem was gfx, a crate that was recommended to me for this. Gfx really doesn't like being put into structs so I can wrap it into my own functions. Atm I use glium so it's very barebones compared to gfx (and no webgl compatibility as far as I can tell). -- "My sister-in-law is having a baby shower, so I think the whole family is going to that. After that, board games with my kids and wife. Personal Projects: I'm turning my Creality CR-10S into a dual extrusion printer... soon. Just have to print a couple more pieces first and then I'm set. I hope to have the last 2 pieces printed, and then go through my plans again. I may actually start putting the print head together this weekend. I'll continue working on a few personal projects around home automation, and probably keep reading up on Kubernetes which is more for professional development, but has been a pretty good time thus far. -- "Nice! I just got the parts to add a glass bed and a PEI sheet, i'm finally doing that this weekend! Also updating my firmware to the latest Marlin so that my printer doesn't have the sometimes-catches-on-fire problem of i3 clones. -- "Glass bed and a build sheet are both great additions. I've been using a BuildTak sheet for a while and have quite enjoyed that. Making your printer not light on fire is also a key part of letting things print overnight. How do you like your i3 clone? -- "I love it so far! So far I feel like I've just printed mod parts for the actual printer instead of printing other things but it's been a blast! So far I've done the external mosfet mod, added an octoprint raspberry pi, a camera, spool holders, and planning on building a lack enclosure next. -- "> So far I feel like I’ve just printed mod parts for the actual printer > instead of printing other things This is how I can tell that you're a real 3d Printer Enthusiast; I think about half the stuff we all print is for the printer. I've also gotten into printing board game pieces; I plan on giving my siblings some custom made board games for their birthdays (in the summer), and DnD minis, but a significant amount of printing has been for the printer itself - the pi mount, spool holders, supports, better knobs for levelling, and some pegboard things for various tools. -- "Replacing the frame for some outdoor steps that lead to my front door. The existing ones have rusted out. Otherwise, probably building some sledding hills in the backyard for the kids, and checking if the pond is frozen enough to skate on. -- "I'm attending my grandfather's funeral. -- "Condolences. Very sorry for your loss. -- "Sorry to hear it man. Hope you and your family gets through it with as little pain as possible. -- "My condolences. Hope your family is doing okay. -- "Very likely putting together a PR for [Kitty](https://sw.kovidgoyal.net/kitty/) to make it observe MacOS X keyboard shortcut conventions by default. I chatted with the author in E-mail and the change shouldn't be too hard at all. And maybe if I have time getting back to my C++ exercism problems, although my wife's aunt is in town and we may end up spending a chunk of the weekend watching movies :) -- "I'm going through Beej's network programming guide as a way to learn about the networking stack and learn C. We're supposed to get a ton of snow this weekend, so I won't want to go outside anyway. -- "$doggo: Acquire pats, demand walks, nap like total queen. $human_learning: Chipping away at the deep learning specialisation on Coursera. Building an Anki deck in the process and coming up with meaningful flash cards is an interesting process. Plenty of just standard drills, but I need a balance of questions that force me to think about the meaning of things. \"That's correct, but _why_?\" shouldn't be a sticking point, mostly. $human_mental_health: Avoiding the all too common trap of belittling my own abilities when I see my coworkers do seriously cool things. Seriously, so cool. -- "On Saturday, I'm going to attend my wife's work's winter holiday party. I'll probably leave early due to social anxiety. That, and I want to love, pamper, and play with our new puppy. On Sunday, I'm going to update HardenedBSD's primary web server. It's gonna be upgraded from HardenedBSD 11-STABLE to 12-STABLE and switch to PHP 7.2 from PHP 5.6. -- "Saturday I will be drafting my next post for my blog http://kanoki.org and Sunday after my regular chores are completed i may publish the blog after review and corrections...sounds good..all set for weekend guys!!! Have fun.. -- "Participating in a robot fighting competition! It's the backyard wrestling of robotics. A friend and I made a little <5lb (\"beatle weight\" I think), < 15x15x15 robot, and learned a bunch about physical materials, RC systems, servos, 3D printing, raspberry pi, and even firebase and twitch.tv lol. All coming together Sunday evening here in Chicago at Emporium Wicker Park (Robot Riot) -- "First off, that sounds dope as hell. We need to assert our superiority for as long as possible before the robots over throw us. (Possibly for having set up robot fighting pits in the first place.) Second, what kind of resources did you use to learn about making fighting robots? Did you program them to feel? -- "Haha, yep. We ended up doing lots of explorations and iterations, and white boarding and brainstorming. What got us going was seeing lots of videos of past competitions, and going through the rules in a lot of detail. Also Googling everything, and checking out some Instructables DIY projects. Then, just buying some crap and trying to make it work, and failing a lot lol. We scoped out Arduino and after some discussion also decided to scope out doing any servo control with raspberry pi, which is the simplest of the small computers you can possible use (it's just Debian!). Instead, RC controllers meant for DIY drones = great basic control mechanism for servos! Beyond that, for physical stuff, it was a lot of exploration, trying designs out, cardboard and duct tape prototypes, accidentally frying electronics -- fun stuff! -- "Painting my upstairs hallway. Had a landing installed for upstairs laundry around a year and a half ago and never got around to painting the new walls. Apart from that, just hunkering down for the winter weather headed my way (midwest). -- "**Presentation**: Working on a 2.0 version of my \"Human Learning\" talk that I gave 3 times in 2018 (two of which were recorded: https://www.youtube.com/playlist?list=PLBHctPrH7Z2-BcpRWJ0uFanCbTHqdJ_1T). Have been submitting it to conferences for 2019, so we'll see if any take me up on it. Also have plans to expand it to an online video course. **Live Coding**: Going to some live coding [on Twitch](http://twitch.tv/jitterted) now that I have the basics working. Haven't figured out my regular schedule yet, likely weekend mornings. Going to do it in stealth while I work the kinks out -- finding good, recent information on doing this well on a MacBook Pro has not been easy. Have an in-progress blog post about it. **Kid-Bank**: Continuing to work on a money tracking project that tells my son how much he has, since we didn't want to bother opening up a \"youth\" bank account (the ones I found don't pay interest, as if kids are 2nd class citizens or something). This is what I'll be coding live (see above) and is perhaps a bit overkill using Spring Boot, Microsoft Azure, et al, but is also fodder for upcoming training courses that I'm delivering. -- "Working a livecoding set for a show in Japan. - Demo: https://www.youtube.com/watch?v=hQXa6TkSeH0 - Sources: http://github.com/hundredrabbits/Orca -- "Refactoring. A nasty. WordPress web. Site -- "Business or pleasure? -- "Torture the artist -- "Creating local mirrors of NCBI databases so I can keep my company's services running in case the federal shutdown lasts longer than the nih.gov SSL certificate. -- "Moving a bunch of stuff to our new flat. Using a hand truck and no motorized vehicles at all. It’s only 650 meters away but the old flat is six floors up with no elevator. -- "Reading about Rails after three years of not using it. Using docker to get my personal projects up and running. Cataloguing all my books so that my wife and I have a reason to use SQL at home. -- "Will be working towards properly releasing binaries for [ffsend (GitHub)](https://github.com/timvisee/ffsend) this weekend, for different platforms and package managers. -- "Updating and backporting the Nim and Netdata Debian packages. Deploying wireguard. Contributing to Nim. -- "1. Sorting through over 6k of photos from my trip to Tokyo 2. updating code for a project 3. working -- "Working on how to remote control a computer over http and websocket. Meant as an interface between custom proptypes built in HTML5 and js to cut down on development time. Got really sidetracked by starting to do my own libjpeg to nim bindings but it's been an enjoyable day as everything started to work just now. -- "I learned how to derive the formulae for time dilation and length contraction from Einsteins postulates with a though experiment involvong light clocks. I am now looking for a way to derive the Lorentz transformation from these principles and/or a thought experiment. I plan to write some blog posts about it. Booked a ticket to see my girlfriend in March. She's doing an internship abroad. Had a show with my company band, which went well. -- "I'm applying to some more jobs while working on [a getquote implementation](httpsithub.com/colindean/ledger-getquote-blocktap) that uses [Blocktap's GraphQL API](https://blocktap.io). -- "What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "I'm on call again this week so I should have some time to work on some things: - continue with reading & doing more things in Go - I want to test out consul and traefik, I know they exist for some time but never took a look at them. I want to use it to automatically route traffic to lxd containers without dedicated ip - spend some more time with my eldest, he's having a harder time at school lately and I can see he needs some attention - I got a slow cooker during the holidays and I'm planning on making a traditional beef stew in it -- "Getting married :) -- "Congrats! -- "* Continue rewriting one of my pet projects in literate programming style with org-mode. Was really sceptical about both for a long while, but it seems the chemistry's working in this project! Never had this kind of feel from writing extensive comments or docstrings within the code. There's something to having narrative guide the code. * Taking part in local club's Nordic field pistol shooting competition in 3 classes on Sunday. Military, large caliber and revolver. Took a €50 bet with my wife I'll make it into top 5… hubris is an expensive sin! -- "- spending my first weekend as a recurser! - picking up groceries for the RC food events - hoping to hack on some weekend code to relearn state management and networking in Elm. - preparing myself to host an Elm workshop in the next week or two. I'm following [rtfeldman's elm workshop](https://github.com/rtfeldman/elm-0.19-workshop) -- "Shooting out some [work](https://black.af) proposals and then doubling down for some weekend hacking and baking! Going to work on perfecting my oatmeal raisin cookies in bulk as well as [my home country's signature dish](http://haitiancooking.com/recipe/black-mushroom-rice-diri-ak-djon-djon/). Super excited :) -- "Donating time to my local library as a part time sysadmin. Going to be looking into using [Project FOG](https://fogproject.org/) to save us sometime in restoring PC's. We are already using [Deep Freeze](https://www.faronics.com/products/deep-freeze/standard) to keep the computers fresh. Sadly nothing is full proof and here and there we gotta restore a computer, and this will save us a bunch of time, and should make it easy enough so anyone can hit a few keys and make it happen. -- "Thanks for the links. They keep mentioning patented. There was a company that did this at the HD level in OS-agnostic way. Sadly withdrawn from market due to low sales. -- "Working on notes for a lisp study group, climbing, going to a dinner party, doing a coop shift, etc. -- "working on https://github.com/jonschoning/espial my open-source, web-based bookmarking server. -- "Looks interesting. Is it effectively aiming to be an open-source clone of pinboard.in? -- "When you have over 67,000 bookmarks, as i do, I feel open-source/self-hosted becomes a higher priority due to for data ownership and performance reasons. By moving to self-hosted, i was able to bring down my \"cold-start\"/\"non-cached\" wait time on tag filters from 30s to ~1s. AFAICT most folks don't have more than a couple thousand at the high end, so they probably don't run into these perf issues — although it was my motivation, it's probably not relevant to them. My use case involves creating marks as part of browsing for things i want to return to later in the day, and also for long-term recall or aggregation when researching a topic, with as low/minimal-effort as possible (which is why I've accumulated so many) -- "Ah, I see—That's a huge amount! I'm around ~14,000 bookmarks with ~1,400 tags, and so far performance is fine. I slowly moving as much reliance off third-parties as well, so I'll keep espial in mind. I've definitely felt some latency with Pinboard sometimes too. -- "Finished the Coursera course for Machine Learning, and now diving straight into the deep learning specialisation! Also going on the odd cleaning rampage, with the balcony and kitchen nations being the first to fall. *evil laugh* -- "Get further in the book *The Tyranny of Experts*, start reading the Hennessey and Patterson book, tinker with my site generation code to make sure the [Atom feed](https://wozniak.ca/blog/atom.xml) I added recently is okay, and add some content to my [gopher server](gopher://wozniak.ca). -- "Test-driving [Angora Fuzzer](https://angorafuzzer.github.io/) from ByteDance. -- "A server at the University for our open source project is moving, so I'll be backing up things and make sure I can relaunch it on DigitalOcean or Vultr if I have to, I might do some work on my python/QT mpv front-end, but most likely I'll be feeding my Spiderman (PS4) addiction. -- "Slides for an upcoming PostgreSQL meetup (dtracing postgresql fast update pending list rebuilds, dtracing postgresql internals in general), I do the PostgreSQL part @oshogbo does the dtrace part. Updating laptops at home & probably updating some of my ports, perhaps wrapping a new one that I just did for work - pglast which is a python binding to lib pg_query which links to PostgreSQL parser internals to parse SQL into AST. Tons better than doing regexes or rolling your own parser :) Most likely a bit of gaming, reading and for sure having fun with the dog. -- "Working on my company. -- "I’m finally getting started digging into Event Sourcing. I’ve understood how it works in principle for years, but never actually put it in practice myself. I want to build a projection (or read model?) of a collection of models that I can then search/filter through. Where this current state exists is still not clear to me; do I hold it in application memory? In Redis? In Postgres? I understand the events themselves can be in Postgres. How often do I rebuild the collection from scratch? Any time anything changes? I have lots of questions like this, and probably I will gain far more intuition for this once I put my head down and start doing it. I’ll be using the [Eventful](https://github.com/jdreaver/eventful) Haskell library. -- "I think just building the state from scratch into memory data structures on boot is a fine and underrated architecture. Then you just apply events as they happen. Anything else like snapshotting to disk is an optimization that you probably won’t need until your log becomes really huge. And it’s in the nature of event sourcing that you can postpone such optimizations because the log data isn’t going anywhere. So don’t worry about it now! -- "That's a good, reassuring tip. Thanks! -- "Going to spend some time to investigate switching stacks in Rust (I'm trying to get task switching to work in my kernel but Rust doesn't seem to like the stack being torn out from under it's feet). I've ported ralloc to userspace already (with some difficulties because I'm sure I found some compiler bug in rust there; A None gets initialized to garbage data) I'm also looking into making a small solar MPPT charger (there is an IC for it and it only needs to be wired up but I want to integrate an ATtiny for smarter monitoring and controlling). I've also dug up some posts on WebGL with Rust in WebAssembly and I want to experiment with that. Lastly, I'm going to configure and further test the backup of my NAS (rclone to B2 with crypt backend, the --backup-dir function looks promising but it's poorly documented). About 2TB of data need to be moved into the cloud. And another 2 TB need to be sorted out and then also uploaded. -- "I've been making a pair of trousers, and it's time to finish that project. -- "Getting the other leeg finished? -- "* Moving a couple of VMs from one provider to another (to save £) * Continuing with my sailing Race Management App for my sailing club -- "Backporting Netdata to Debian Stretch, fixing the [Nim Planet](http://planet.nim-lang.org/) and setting up a [Mastodon Nim bot](https://mastodon.social/@nimbot) Attending the [FreedomBox progress call](https://wiki.debian.org/FreedomBox/ProgressCalls). Everybody is welcome to join. -- "Getting the final touches up on https://oxidizeconf.com for date release, CFP and full ticket sales next week. As RustFest is on a break, I obviously need to run another conference. :D -- "Integrating an online payment system with our account database. I'm thinking about going with Square, their Java API looks really clean and well-documented. -- "Going to pet wolves in a wolf sanctuary somewhere in Washington state -- "Playing more guitar, having started again last year after a ten year absence. Also trying not to get convinced that I _have_ to buy more gear for it. -- "My wife and I bought a new dog, a black golden doodle aptly named [Vader](https://photos.app.goo.gl/NB52tSXjVjaWfzh86). We'll be cuddling with him and sipping hot cocoa as a snow storm hits us. I'm trying to get two HardenedBSD servers alive. Our binary update build server decided that its boot loader is too old. Our Cavium ThunderX2 server has buggy firmware. I'm making an eerily naive attempt at installing experimental firmware, shipped directly from Cavium. Let's hope I don't end up with a $15,000 paperweight this weekend. -- "Changing my office chair to something a bit more comfortable, reading more on aquaponics and hydroponics (maybe the friendlyhaus will be tilting more biopunk in its a e s t h e t i c) and watching _Vice_ with some friends. Should be fun. -- "Reading a literary magazine I bought a few weeks ago, and maybe start reading a new book. Also, planning to start reading at least one book per week, fiction or non-~. Also, joining Lobste.rs and making my first comment here! -- "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. -- "I'm in a final two-week push to deliver Magento 2 to the company so I'll be a big ball of stress trying to hammer out some features. -- "Good luck, you got this! -- "Thank you! -- "I'm delivering a 5-day TLA+ workshop next week and in the process of radically restructuring everything to better teach the mental models. As part of this process I'm writing a lot of beamer and tikz slides, which means hitting all sorts of weird beamer and tikz quirks, which means shaving many, many yaks. Unrelatedly, writing _Practical TLA+_ errata. For personal stuff I'm starting to feel the pain of not having a good exobrain, so more work on that. Probably set up a research notebook system. -- "Let us know what you land on for that exobrain :) -- "I've been using Zotero for a while now to store citations and their attached documents (PDFs, full webpages, etc. all get stored in a Zotero SQLite DB). With the browser plugin, it's usually one click to import a citation and its attached document. Zotero also supports fully-searchable tags and notes. In retrospect I should have probably set up the online syncing sooner. For more unstructured notes I use the Mac OS Notes app. My complaint with both apps is their default notes font is too small. -- "Zotero looks great! I've been feeling overwhelmed at the amount I reading I plan to do this year. This should greatly help in keeping it structured. Just installed it. -- "I ended up, after too much thinking about research notebooks, with a template text file. [The app that wasn't](https://www.sicpers.info/2019/01/the-app-that-wasnt-yet/) -- "where is that TLA+ workshop being delivered? That sounds interesting to me... -- "[Chicago](http://www.dabeaz.com/tla.html)! David Beazley's been a great mentor to me. -- "For $DAYJOB: I'm working on a malicious hypervisor for our malware lab. For HardenedBSD: I'm researching Cross-DSO CFI, SafeStack on arm64, and attempting to get HardenedBSD on our Cavium ThunderX2 server. -- "> working on a malicious hypervisor What's the purpose of that? -- "Bug hunting, exploit dev, malware dev, ability to emulate malicious implants, etc. -- "I mean, are you specifically trying to make the hypervisor be the exploit/malware payload? Or does a \"malicious\" hypervisor help you developing other components? I was just trying to grok how it would be useful past testing reliability of components in presence of malice or detection/mitigation techniques aiming at malicious hypervisors. -- "A healthy mixture of both. If configured a certain way, it'll be able to perform tasking similar to [syzkaller](https://github.com/google/syzkaller). If configured another way, it'll add a custom implant somewhere along the chain. -- "Oh neat. That makes sense. Thanks. -- "I've been working on my [journal](http://idea.junglecoder.com:9090/Gills) software a lot over the holiday, and have been using it to track various things, like diet and reciepts. I've also been using it to track my creative ideas. In the past week, I've been refining the facilities exposed to the lua scripting that I integrated into this software the week before. This week, I plan on building some basic web-based tools with it, like a small shopping list page, and an agenda mode that allows me to see what I've marked as TODOs for each given day in a week, so I know if I need to move things around. I have also started working on tracking and classifying my expenses better, in an attempt to work on better saving my money. So far, that's a work in progress python script over a CSV of financial activity from my bank. There are other ideas I have in mind for this week, but those are the main 2 that I know I'll be working on for sure. And, since I've following [this set of emails](http://jessicaabel.com/ja/creative-compass-day-1/), I've started to try to embrace making the decisions to embrace working on only a few things, rather than spending my time dreaming of all the things I could do. -- "Ooh, those Creative Compass essays go well with Jon Acuff's \"Finish\" (that I just started reading). Perfectionism is such a huge issue for me. -- "I'd be interested to see what you think when you finish that book (no pun intended). The one thing about Growing Gills that's been a bit of a difficult thing for me, at least without someone else to go through it with, is that it's more of a workbook than a \"read this and just get ideas\" book. That being said, the emails that I've been signing up for along-side it have been good, and I think once I get to a certain place (I'm currently addressing other issues in my life outside of creative output), it may be a valuable tool. -- "Trying to organize my thoughts on why social media is better disconnected/limited, centralized, and fail-unsafe. -- "For work I'm trying to land a large C++ refactor that exposed all kinds of surprising behavior. For fun I'm continuing to hack on an audio synthesizer in FPGA. -- "Work: I'm developing a language server extension for CWL. I need to understand how VS Code extensions are written since my test bed for the server will be VS Code. **Advice needed:** If anyone has experience how to integrate a lang server with VS Code or has written an extension for VS Code I would much appreciate pointers. I'm going through the example code, but I'm a bit lost. Thanks! -- "For work I'm working on finishing off an MVP for a potential new product. It's a Ruby GraphQL backend and a React frontend with Apollo which has been a nice combination and has reminded me how much I like Ruby after not working with it for quite a while. For personal stuff, I started building a mobile app with Flutter over the weekend to see what that's like. It's pretty cool and was easy to get up and running very quickly which was nice. It's very much in the early stages so far but hopefully I can get it to a stage where I can release it in an app store later this year. -- "For work: working on an eventual-consistency deduplication system that can store partial results, so that as we do processing, partial results are stored, any processor can restart where the last one left off, and once things are done, they don't need to be done again anywhere. For play: I got a copy of *APL: An Interactive Approach* (third edition, 1984) and I'm working my way through that. I wrote a little utility for a console input method, so that I can pipe into anybody's stdin and type using something approaching Dyalog's RIDE keyboard layout. This let's me play with GNU APL at the same time. (Yes I know I could use xkb or XCompose, etc, but that's more of a pain in the butt than I want to deal with given that I already have things set up differently on that front.) Also for play: I just finished *House of Leaves* last night and I'm still figuring that out... -- "I was supposed to be doing a ton of stuff but am full of a cold. Instead, I'm fighting a cold, ditching Shopify on the Raw Hex site and switching it over to being self hosted and setting up the marketing for the next 3 months for 44CON training this March. I've got a small supplier review gig to work through some docs on too, and put into some form of coherent structure, so I'll do some of that too, but I need to get better first for that. -- "Personal: I'm adding to my bytecode interpreter blog post -- virtual frames, name resolution, etc. Work: Adding some more features to the runtime at work so we have feature parity with upstream. -- "A python library to make fried memes. It was born as a telegram bot but now we are moving it to a dedicated library with a decent API and we will add more features. Also I'm trying to write a gaussian random number generator in Pony but it's taking me forever. -- "Is the bot publicly available? -- "yes. Both the library and the bot are in a veeeery early stage but they work. https://github.com/CapacitorSet/personal-bot https://github.com/chobeat/memefryer -- "For work I'm fixing/refactoring some Jenkins jobs. I volunteered to do it, so I've only myself to blame. Outside of work, I found a CL library that can read/write from ALSA, so I'm playing with that. For now I'm implementing a real-time FFT visualization of incoming sound. I also realized the other day that I never finished the book scanning project I was working on a couple months ago, so I should probably do that. The difficult bits of code were all working, I just need to tie up some loose ends and take a bunch of barcode pictures. -- "> I found a CL library that can read/write from ALSA, so I’m playing > with that. Cool! I happen to be an [author of one](https://github.com/varjagg/also-alsa). If it's the same, let me know how it worked. -- "Yep, that's the one! So far it's been great, but I did run into two problems. First, I had to add 32-bit types to support my sound card. Next, and this might be an SBCL or CFFI problem, the ref and (setf ref) functions seem to cons a lot. I spent a little while trying to figure out why, but wasn't seeing it. To solve my immediate problem I added a few functions to work on entire buffers. I'll open a pull request for the 32-bit types later tonight, but want to look at the buffer issue more before I submit that. -- "I've got an ESP8266 microcontroller board that is notable for costing US$3 but still having onboard wifi. There's an existing firmware which runs a trimmed down version of Lua. I've been trying to load the Fennel compiler into it (https://fennel-lang.org) which is written in Lua, but it's been a challenge since the board is limited to 80kb of memory. I recently found a new feature which allows you to compile bytecode ahead of time and load it into the onboard flash storage and run it from there instead of loading it into RAM: https://nodemcu.readthedocs.io/en/master/en/lfs/ I'm hoping that this will allow the Fennel compiler to fit. My fallback plan is to run the Fennel compiler on a PC and stream the Lua code directly to the device; my end goal is to have a networked microcontroller which supports interactive lisp development. -- "I'm also planning for Fennel Conf 2019 which is coming up in a couple months: https://conf.fennel-lang.org/2019 It's a very small 1-day conference, but I'm putting together a schedule and figuring out logistics. -- "We finally deployed a 'feature' that's been in progress since June (replacing the entire Model layer of a PHP app with new Models based on a newer framework/library) over the weekend, so this week will be about picking off a number of small-ish tasks/improvements that were either waiting for the new Models as a prerequisite, or were simply lower priority and thus not touched before now. -- "Are you able to speak to the model layers moved from and to at your work? I'm always interested in new PHP technology. -- "The old ones are something based on ZF1. I'm honestly not sure if they could be considered \"normal\" for ZF1 though. Effectively everything is instance based, and methods might mutate/inspect the instance itself, or might run a query which updates the instance with the found record OR might return an array of data or whatever. Frankly it was a mess (hence replacing it). The new ones build on [Bamboo 5](https://bitbucket.org/koalephant/bamboo-framework/branch/5.x) follow IMO a cleaner concept based generally on ActiveRecord, so that static methods (with the help of a query builder class) return single/sets of instances of the class. The project itself is for a client, Bamboo is a framework I started writing about 10 years ago which is now owned by my company, Koalephant. -- "Oh wow that first model implementation sure does sound like a mess. I've never looked into Bamboo but it looks like its worth a look. Thanks! -- "Making a semi-production k8s deployment. If it goes well, we may move to it. Else, I think Nomad is our way -- "Still trying to [find customers](https://labrary.online)! I've got a meeting that should be useful midweek and I'm giving a talk on Java by Contract at a local tech meetup, so that's something. I'm starting to think I may never work again, though :-/ -- "As predicted by [the last time I commented on this weekly thread](https://lobste.rs/s/hniheo/what_are_you_working_on_this_week#c_nr92wn), I'm moving from actively resting to actively searching for a new job. I'm anywhere from \"application sent\" to \"interview scheduled\" with 11 companies with another 9 in my \"investigate\" column on a Trello board. I've got an interview in 10 minutes, so I should probably do a tech check instead of writing more here! I'm heading to [Codemash](https://www.codemash.org) this week in Sandusky, Ohio, near Cleveland. Maybe I'll see some of you there! -- "I'm working on [Synacor's challenge](https://challenge.synacor.com/). The idea there is that they give you the spec for a fictitious machine and a binary to be executed. There are hidden secrets in the binary that you gotta uncover to progress through the challenge. So far I've only managed to get the first secret and now I'm stuck with the program just printing some output with missing pieces and asking for the user's input. Not sure how to proceed now. What I'll try to do is write a disassembler so I can read the program properly and figure it out from there. What I might also do is write visual emulator/debugger so I can step through the instructions manually and see what is the VM's memory state. May be totally overkill, but it sounds fun! -- "Just a second ago, I deployed a new version of my personal [website], now generated using POSIX sh. I'm pretty happy with the results so far, and I'm going to work to make it better in the coming week. I'm also working on a [collection of utilities for the Unix shell][collection] written in sh and C (at which I'm a beginner). I'm just writing small programs whenever I need a piece of functionality for which there doesn't seem to be a simple command. Also, this weekend, I replaced my mouse with a trackball (Logitech MX Ergo), which I'm currently getting used to. So far, it feels good! [website]: https://john.ankarstrom.se/ [collection]: https://github.com/jocap/shell-utilities -- "I really like your barebones approach .... and that Kill Javascript post is so fresh .... keep up :))) -- "Thanks, that means a lot :-) -- "Doing a first pass through Coq'Art and probably also starting Adam Chlipala's book on certified programming in Coq. -- "He has a [new book](http://adam.chlipala.net/frap/) published as a free draft. Just in case you want to try it out. -- "Still on my language [tinySelf](https://github.com/Bystroushaak/tinySelf). Since last time I've posted here I've implemented tail call optimization and all kind of stuff, so it is possible to run basic scripts. It is still kind of fragile and impractical, but I am slowly getting there. Yesterday, I've measured the speed and it is [really slow](https://www.notion.so/Simple-while-benchmark-2019-01-06-eabfc27015a24d5c82eff232f8b4b698), but that is probably ok, since there is no optimizations yet. I've done a lot of work around, like created a series of article in Czech language about the interpreter, which should be fun, because there is not really anything like that on the Czech net. I've also written small series of articles about Self and it should be finished soon, so that was fun too. -- "I am working on integrating a new life into our family workflow. We’ve already finished some tests, and are now trying to figure out our daily sprints. -- "Very cute. 🥰 -- "Expect your velocity to go *way* down. -- "I've been working on a small clone of the annotate models Ruby gem in my spare time for about a month now. I'm pretty happy with it so far! I hope to get it to a place where I can give it a bit of a \"stress\" test on some of the Rails apps we have at work, hopefully later this week or early the next. Completely unrelated but my brother lent me Breath of the Wild this past weekend, and I've been liking it a lot. It's definitely gonna distract me from my aforementioned goal :) -- "I just moved my sprites into a new spritesheet manager for my videogame. This week I will finish up the generic base behaviour for the NPCs. -- "Working on my first startup with a close friend. Parts should arrive this Wednesday for us to do some experiments with in meatspace. I'll be working on v0.00001 of our tech over the weekend. If anyone wants to grow some houseplants (with a (little) tech help) let me know. Happy to send some beta boxes out for free in a few weeks in exchange for feedback. Just DM me! -- "Personal: fuzzing around with a BuckleScript binding to the Web API, https://github.com/yawaramin/bs-webapi , and a ReasonML/BuckleScript binding to Hyperapp (which is a 1KB JavaScript UI library), https://github.com/yawaramin/re-hyperapp . The attraction for me is trying to come up with minimalistic bindings that get optimized away, yet as type-safe as possible. I'll probably write up a blog post about it at some point. -- "I'm trying to combine pgp and torrenting into a cludge of madness. I'm not sure if this is a good idea. -- "Work isn't too publicly noteworthy, but in personal project land this week, I plan to finish up some gnarly bugs (some are showstoppers) in my Python-based mechanical keyboard firmware and start preparing it for release to the world. The project has been in kinda up-and-down development since September (usually a few weeks of grind, a few weeks of zero progress due to burnout, repeat with ever-fewer weeks or days per cycle), so it's awesome to see that (1) in dogfooding this recently, MOST things are so stable I forget I'm running firmware I wrote myself, and (2) that there's only a short, manageable list of v1 release-blockers to get through. There's a release-shaped light at the end of a previously-undefined tunnel, and that's an awesome feeling. Beyond that, I've been getting more into streaming games lately as a hobby to pass time when I don't have energy for code or music projects, so realistically I'll be doing a bit of that, as well. -- "Writing code for esp8266 to do periodical measurements on [sds011](http://www.inovafitness.com/en/a/chanpinzhongxin/95.html) sensor, which measures concentration of solid particles in air (PM2.5 and PM10). Going to query the sensor each few hours and log results to server. At first I tried to use the [port of Arduino](https://github.com/esp8266/Arduino) as an OS, but it doesn't have any concurrency/multitasking/scheduling, so I decided to try [Simba OS](https://simba-os.readthedocs.io/en/latest/) which is a simplistic RTOS similar to [FreeRTOS](https://www.freertos.org/). It's somewhat *beta*, compared to more mature FreeRTOS, but has much nicer API aesthetics (FreeRTOS has hungarian notation and mix of camel case and snake case), nicer docs and in-tree hardware drivers. I had to make [client library/driver to interface with sds011](https://github.com/kolen/libsds011); debugging it now and adding [cmocka](https://cmocka.org/) tests. Almost not touched C for many years, now it feels weird, having fun with it, but I'd probably choose Rust if it (its llvm backend) supported Xtensa ISA. -- "Work: I am writing a C# program to mirror workspaces in my employer’s [document management system](https://en.m.wikipedia.org/wiki/Document_management_system). You can think of a DMS as a primitive version control system targeted at end users. -- "Working on my program for creating videos for [my new Reddit quote YouTube channel](https://www.youtube.com/channel/UCoS1kE3IjCWhYhj7vCGyzJw). -- "Working on a Small CI system in Go. Started off single server based, working on developing into a Master Worker based architecture currently. -- "I'm working on a thesis about synthetic neural network training data for school. I spent the fall thinking about the theories and use cases of my project, and I'm planning on doing some actual synthetic vs. real training data comparisons in the spring. That means in the winter I get to figure out as much of TensorFlow as fits into my use case: this is proving to be tricker than anticipated. I have lots of time this week to learn, so I'll be hunkered down studying. I'm also writing a Markdown to HTML transpiler in Swift (a language with complicated string behavior and limited regular expression abilities). I fixed some issues with my rules engine last week, and this week I want to knock out a few more individual rules. -- "I'm going to try to get task switching to work in my kernel, it's been a long while since I did work on it but after New Year I picked up pace and wrote a lot of code and had to work around a number of compiler bugs in Rust or LLVM. Additionally I'm somewhat lazily working on a \"as small as possible\" Solar MPPT charger/UPS for 12V devices, though I still need to verify that the charger chip I used is correctly wired up. -- "For work, our team is doing polishing/tech debt work on our product which measures SLOs for the various teams (ie from their own New Relic queries) to build an overall picture of the company. You can then drill down to a particular product, or even the components that make up said product for example. That's the idea anyway. Ah, I should mention I'm a Site Reliability Engineer for context --- Personally, I started building a Django app w/ Celery/Rabbit in the background. It scrapes comments from the New Zealand news site https://stuff.co.nz. They're somewhat notorious for being like YouTube comments is a way to describe them. From that data set, I actually do 2 things at the moment: 1) I render the latest articles Hacker News style. That is, I literally reskinned HN but the content is all replaced with Stuff articles and comments. It's actually a way nicer UI to consume NZ news that I thought, so much so that I actually use it on my laptop locally. What I /actually/ did all this for was that I wanted to use markov chaining to generate new Stuff comments out of old comments. Thanks to Django, I actually just made an extra route where you visit an article and the comments are all randomly generated. It's so bad, you almost can't tell the difference ;) Ultimately, I'd make a Twitter bot that tweets said comments too. Maybe it mixes real and fake comments, in order to add an element of mystery haha --- So yeah, good ol' over engineered nonsense really. I hope this was interesting? I've been meaning to post in one of these threads for a while now :) -- "> What I *actually* did all this for was that I wanted to use markov > chaining to generate new Stuff comments out of old comments. Thanks to > Django, I actually just made an extra route where you visit an article > and the comments are all randomly generated. It’s so bad, you almost > can’t tell the difference Love it. I did the same for Slashdot back in the paleolithic era. It almost worked, too. -- "After I found this [great computer store e-commerce template](https://github.com/chekromul/uikit-ecommerce-template), I spent few days porting it to Sass (originally it uses Less). I'm planning to use this theme on [my website](http://www.baito.rs) along some more improvements at the backend. Theme is free and awesome at the same time, so check it out, maybe you too can find it useful: - [Sass version](https://github.com/chekromul/uikit-ecommerce-template) - [Less version](https://github.com/vkovic/uikit-computer-store-template) -- "I quit my day job last month, so now I just have my own projects to work on. I launched a staging server for [Moneygains](https://moneygains.co.uk) so we can test things live before deploying to production. Luckily with NixOps this was really easy. I’m overall _very_ happy with NixOps. We have a deal in the works with a big multinational corporation that will put our product in front of 100k+ consumers (of course I must be vague now). For [NewBusinessMonitor](https://newbusinessmonitor.co.uk) I hired a company to create a 90 second explainer video. They’ve finished that now, so I will add this video to the site and include it in some startup competition pitches. I also need to work on general maintenance stuff, most importantly, automatically pulling invoices from Stripe and GoCardless when they become available. I happen to be in Russia right now, which is cold, and also it’s made my life difficult because _some_ AWS IPs are blocked here. To solve the blocking, I’ve had to shuffle my application servers around to different regions just to get SSH access. To solve the cold, I’ve booked tickets to Thailand for two months. Leaving early February. -- "I've become complacent with my emacs set up with regards to code navigation.... I think it should be possible to do better.... but C/C++ is horrid because the preprocessor makes a horrible syntax horribler and Ruby is happy to invoke methods on anything.... -- "Alternating between building a house, building a server rack/dehydrator combination (equipment in the top section, warmed air from equipment used in dehydrator in the bottom section -> efficient use of power and space) and teaching a well-known media server some new tricks, if only to become re-acquired with the reasons for not doing more Java development than I have to. -- "What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "* Putting the under tray back on the big car (S-Max), now the leaking fuel pipe has been replaced * Oil change on the small car (Mini) * Time depending, bleed the convertible (328i) and attempt to check if the water pump is fucked * Visiting friend for 24h, I suspect lots of sitting in a hot tub talking shit about life * Continue moving personal server(s) under puppet management -- "Spending it walking around Tokyo, and avoiding Akihabara after getting stuck for 7 hours wondering around all the stores :) -- "Akihabara is a place high-up on my bucket list of travel destinations. I hardly play video games anymore but it sounded like such a magical place reading about it as a kid in the midwest. I hope to see it one day, just to take it in. -- "It is not quite as techie as it used to be (the maid cafe business is just too profitable), but it is a great experience and still has a lot of that magic thanks to hardcore shops like [kadenken](https://twitter.com/kadenken). -- "I'm just now reading about maid cafes and, yeah, that does sound really creepy (and sadly profitable). I'm glad to hear there are still tech / gaming shops there, though. -- "I hope you get to see it in the near future, it is incredible and hard to escape once you enter. -- "* family in town! * running electric in the house -- "Finally, nothing :) I might think about how to promote myself, where, and if I should even bother about it. In rest, really nothing. -- "Working on [Patchfox](http://github.com/soapdog/patchfox) which is a [Secure Scuttlebutt](https://scuttlebutt.nz) client made as an add-on for Firefox. I've made a recent little post about it on [this blog post about Firefox and P2P](http://andregarzia.com/2018/12/playing-with-p2p-protocols-and-firefox.html). -- "That's exciting! One of the things that's kept me from looking into Scuttlebutt more seriously is that it seems to require fairly open and unrestricted access to a bunch of ports. Not likely in a corporate environment. -- "Well, scuttlebutt is offline first, it uses those ports just for gossiping. If you gossip while outside the corporate environment, you'll have all the content available for you when you're into that kind of space. You can browse, interact, view all the content that is stored local. Scuttlebutt clicked for me once I was traveling from Brazil to Portugal and I could see and interact with all posts from the network while I was flying over the Atlantic because they were all stored on my machine already. So, if you close those ports on your machine while in that corporate space, it will be OK, your client will feel lonely without the ability to gossip but all the previous synchronized content will be available and after your interactions, you can sync later. -- "Preparing for OSCP with HackTheBox. -- "- Replacing the screen on my Kindle DX, ordering a new battery - creating a frankenkindle from my two broken kindle keyboard - setting up a OPDS server and see if it works on android -- "Ah that venerable old hardware! I gave up and got rid of mine last year, but I loved that thing until it died :) -- "Heading down to the coast to visit my family. -- "I think I'll be starting my buckle-down grind on [dashwood](https://git.timetoplatypus.com/timetoplatypus/dashwood/src/branch/dev), which will be a HTTP API written in Go; the goal is to compile geographic locations of public cameras in Washington DC. Once I have a solid amount of data, I'll release it all for free. -- "Playing with Alex and happy after getting tired of going through hoops with parsec -- "I am scoping a research asset management platform. My research lab is in need of a better way to manage our research assets but we were not able to find a product that would fit our needs. So, I signed up to scope a simple LAMP app to manage the research assets. -- "Project-wise, I'd like to try to design a drivetrain for this silly robotic bar cart idea I've cooked up, and maybe play around some more with deepspeech. Chore-wise, I need to put away and prep the motorcycle for winter, and get ready for some upcoming travel next week. -- "Recovering from a bit of work induced burn out. Today has been a super struggle, very glad I have a week's vacation starting tomorrow :) -- "So, i realize this was a small thread in an ephemeral post, but I've gotta say - My wife and I had the entire week between Xmas and new years off and I barely went near a computer, aside from playing games a couple of times :) And it did me a *world* of good. It's like a brain suffering from burn out is a RAID array running at severely reduced capacity. I mean, it works, and you can still get data in and out, but it's a sad facsimile of its usual self. (Apropos of nothing I played \"Pony Island\" which has some fun 'hacking' themes. In typical partially blind guy fashion I got to a certain point where the twitch factor became too great and I had to give up, but it's a great game and I'm pleased to have been able to dip a toe in at least :) -- "I'm considering writing a bunch of essays & scheduling for them to all pop up on new year's day. If I go through with that, I'll probably write them this weekend. Otherwise, I'll be in bed reading. -- "Same as last week, working through \"Software Foundations: Vol. 1\". -- "> Software Foundations: Vol. 1 I never heard about this book, thanks for mentioning it! -- "No worries. It's my third go at it. I think I'm gonna finish it this time. I also recommend \"Type Theory and Formal Proof\" as a companion. It was instrumental in helping me put the pieces of the type theory puzzle together. Coq tactics and propositions-as-types makes a lot more sense now thanks to that book. -- "I mentioned it with some others [here](https://lobste.rs/s/n7v658/your_thoughts_on_this_advice_those) in a post warning people how heavy the stuff can be. I cant recall your familiarity with proof. If high, it's a good book. If new to it, I recommended playing with a lighter merhod like TLA+ to see if it's your thing at all. With hwayne's book of course! ;) -- "FWIW Coq is taught in every CS university course in France, along with OCaml. I went to engineering school so I didn't do any, but I definitely wish I had! -- "That probably explains why I see so much of it. A good chunk anyway. -- "I started reading Software Foundations, but didn't really like Coq. I found it a bit awkward to use tactics. I liked Idris a lot better, where proving feels more like a feature already 'hidden' in the language (in contrast to Coq, where it feels like you program in one language and prove stuff in another). Further, Idris is a lot like Haskell, which may make it easier to pick up, and 'Type-driven development with Idris' is a very good book, which nicely illustrates how to use dependent types to prove stuff (although this is not the main subject of the book). -- "Reading \"Adopting Elixir\". I'm a team of one at this point, but there seems to be a lot of good beat practices in this book. -- "Refactoring a Java library written by a former employee, and realizing just how badly I failed to teach best practices. -- "I consider many best practices subjective. In the project I work on, most coworkers consider comments a code smell (although they just recently learned the term 'code smell'). -- "Until a few years ago, I would have agreed with that sentiment. However, after integrating Checkstyle, FindBugs and Cobertura into our [continuous integration system](https://lobste.rs/s/mc85ko/what_s_your_release_process_like#c_bpsx5k), we have automated reports that point out violations of best practices during each integration build. It provides reasoning and references behind each recommendation, and it made me a better Java developer overnight by eliminating a lot bad habits from years of basically winging it. Unfortunately, it is one of those \"can lead a horse to water but can't make him drink\" topics. In retrospect, I should have made it company policy to eliminate Checkstyle and FindBugs issues. -- "I'm curious: What are the biggest 'lessons learned' from using Checkstyle and FindBugs? -- "I remember the very first one that enlightened me was that there is only one correct way to create singleton classes in Java, and over a dozen wrong ways. See [Double-Checked Locking is Broken](http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html). Here are some of the \"severe\" warnings still being issued in the library I'm currently cleaning up: - Checks for equality among unrelated types [GC_UNRELATED_TYPES](http://findbugs.sourceforge.net/bugDescriptions.html#GC_UNRELATED_TYPES). - Possible null pointer dereference [NP_NULL_ON_SOME_PATH](http://findbugs.sourceforge.net/bugDescriptions.html#NP_NULL_ON_SOME_PATH) As well as a lot of warnings about public variables, utility classes that have public constructors, unused imports, redundant null checks, ignored return values, classes, methods and parameters that should be final, etc. The list goes on, but the complete list of checks can be found [here](http://findbugs.sourceforge.net/bugDescriptions.html). Cleaning up the issues found by FindBugs and Checkstyle tends to reduce the number of branch points in code, making it easier (possible) to get complete branch coverage with unit tests. These days, I use `final` for everything I can, which makes debugging far easier. At a former job, my team used to identify many of these problems with code walk-throughs, which took a lot of time and would miss many of the subtler issues. -- "Programming, moving my room around a little and games! -- "Mostly taking it easy and recovering after an intense couple of weeks of near-end-of-semester grad school fun. Also hoping to do some Haskell hacking and getting back into [Lean](https://leanprover.github.io). -- "Pair-programming more [Advent of Code](https://adventofcode.com) puzzles with my girlfriend! -- "Working through Practical TLA+ of @hwayne. I've been working in a multithreaded Rust application for work and I would like to gain confidence in the model. -- "Going around to various local Christmas markets, drinking mulled wine, petting cats, watching films (maybe Roma tonight), preparing stuff to bring to the Christmas table, pondering the future while having a bath, visiting friends, ... -- "I finally have some time off, although I have a lot of social obligations as well. I have been working on a list of small, practical programming exercises to practice a bunch of languages (it can be found on github.com/benoncoffee/exercises). I am still revising the list, but also started working through them in Haskell (github.com/benoncoffee/haskell-exercises). I still have to decide if I want to do Go, Python, or F# next. For the rest, I want to read some chapters from computer science from the bottom up (https://www.bottomupcs.com), and read a bunch of articles (I recently re-discovered Eli Bendersky's blog at eli.thegreenspace.net and it is pretty awesome: well-written blog posts about interesting topics at exactly the right technical level). -- "Updating comments doesn't work in qutebrowser and min for me, for some reason... -- "Recovering from the holiday craziness; working out; getting ready for our trip to Hawai'i in a couple three weeks. Taking two toddlers on two 6+ hour flights each direction is going to be an adventure. The older will be fine, but the baby is exactly at the squirmy and cannot be kept busy for longer than 10 minutes stage so. I am going to try and spend some time poking around with `org-mode` and `god-mode` in Emacs; retraining my fingers to no longer head to `esc` all the time is going to be a challenge, but I like what of `god-mode` I've played with so far. -- "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. -- "This week we're working a custom theme & various plugins for Moodle for a client. I'm fairly stoked, honestly. Moodle in and of itself isn't terrible exciting. But, working with PHP in a more advanced way I'm looking forward too. After this we're maneuvering over to a project that will use a Laravel API, which is why I'm stoked for the current project as I imagine it's going to get my skill level up and above where it currently is. In addition to that I'm working with Rust some more this week, trying to make that my most fluent language by the end of 2019 -- "Nothing! Apart from some studying, blogging, and experimentation, I'm done for the year. -- "Yep, nothing at all. -- "The new PCB design has been signed off, so now it's software bits. Porting a few packages and applications from the old platform and packaging them as Yocto recipes, making patch deltas to some already existing ones. The core application was ported within a few days, however there's an issue with sound. The software has lineage back to Linux 2.4 days, and then relied on OSS. Afterwards on 2.6/3.x, ALSA's OSS API layer was used and worked just fine. Now on 4.9 however, for whatever mysterious reason /dev/dsp is silent no matter what you throw at it - with the same compatibility layer. Hoping to crack it in the few remaining days before xmas, or else would finally have to port the thing to ALSA. -- "* eye exam today * Security test for campus staff * Maybe work on json ingestion script ... -- "A friend and I rode our bikes around the White Rim Trail in Canyonlands National Park this past weekend, and I have a few hundred pictures to go through, so I'm going to spend a few hours doing that. I'd also like to get back to work on some of my Lisp projects. At work I'm helping to do the manual QA for an upcoming release. I'm new, so it's going slow, but I'm learning a bunch. -- "Leaning what I can of React while working on the UI of a Bluetooth tracking system in between semesters. -- "Same here ... I mean React :) It’s pretty exciting like WordPress ten years ago or Jekyll. And very very productive. Storybook, Gatsby ... http://metamn.io/react -- "My obsession for the last three years have been trying to reinvent text input. Somewhat a crazy task but I'm in the process of tying it up. Obviously you'll perform much better with the keyboard that you've practiced with for ten years, but to make users up to speed I'm making the learning process into a game. The reason for all this is VR. Running around with a keyboard doesn't sound to realistic having chorded keyboards is nice and all but good luck learning all users 60 chords just to start typing. The idea is to use gamification to get a lot of testing and statistical feedback as well as to see how well users can be thought a couple of different layouts with a few configuration options. https://www.youtube.com/watch?v=QlrzNmeh650&feature=youtu.be Typing the illiad in game using 6 keys here you're typing with only one hand, leaving the mouse for something else. https://youtu.be/qLRXs55MpOA Another setup. -- "Hearing back from a job interview in 15 minutes... should dictate how the rest of the week will go. -- "fingers crossed -- "Keep trying, interviews are a stochastic process. -- "Keep at it, bud. -- "At work, we explore if we want to go towards the Monorepo approach. We are testing how well git/Bitbucket/Jenkins scale. How we have to adapt our build system. Planning how long a real transition would take for us. I'm really happy that we got two weeks of exploration before the decision is due. This certainly is a hard decision and many uncertainty will still be open on friday. -- "Is Mercurial also a consideration for monorepos? It's had a lot of monorepo work from Google, Facebook, and Mozilla. -- "Not for now. Retraining hundreds of developers for Mercurial does not sound sexy. However, I assume we will consider that in one or two years. We are nearly at 100k commits now and git is already noticable slower after the switch. -- "> Retraining hundreds of developers for Mercurial does not sound sexy. Facebook does more or less exactly that, but they do have lots of resources to do so. I think this might help: https://bitbucket.org/facebook/hg-experimental/src/05ed5d06b353aca69551f3773f56a99994a1a6bf/hgext3rd/githelp.py -- "This may be specific to your organisation, and you certainly don't owe me an explanation. But I'm curious as to what is pushing you to consider the monorepo approach? I can see it has some benefits, but I've never quite understood what specifically drives people to choose it, especially given the apparent implementation complexity. -- "The goal is to integrate other projects faster and iterate more. The biggest opportunity I can see is that we prevent accidental interface breaks. Technically you don't need a monorepo but it makes interface changes atomic and simple. -- "Trying to send emails from my local environment at work (WSL using Ubuntu 18.04). I have to develop the transactional emails for Magento 2 and I can't seem to _send anything_ from WSL. Does anybody have any experience with it? -- "Last day at work today for the year! Going on vacation with the family and while doing that putting some finishing touches on [Yori](http://www.malsmith.net/yori) for v1.0. As much as it pains me to be writing native Windows \"df\" and \"du\", I know I need them and will use them for many years, so may as well hammer them out. Also still straightening out kinks in the \"monolithic\" version where all tools are linked into a single binary like busybox/cmd; I don't like it architecturally, but it is kind of convenient to be able to copy a single binary onto a system and go. -- "Hey, looks really nice. I'm not a windows guy in that sense but looks like your onto something nice. -- "I'm doing a solo sorcerer run through Baldur's Gate II. Sorry. No Haskell today. -- "Different kinds of sorcery -- "* Experiments with different word embeddings and how they influence the accuracy of bi-directional RNN taggers. This mostly as an example to encourage students to write their own hypotheses how different types of embeddings and hyperparameters influence their chosen task and test them. (Some folklore from the field surprisingly does not seem to hold up: e.g. shorter contexts and lower dimensionality, since this is a syntax-oriented task.) * Reading up some papers on vector quantization. I have started implementing some approaches in Rust, so that I can use them later in my [crate](http://github.com/danieldk/finalfrontier) to experiment with compressed embeddings. * Porting my approximate randomization tests package from Haskell to Rust. I haven't done Haskell in years, and when trying to compile it with up-to-date dependencies usually requires a lot of work. So I am taking the lazy approach and redo it in Rust. * Finishing up a paper with some colleagues. Must be done before the holidays. * Baking Christmas cookies with our daughter. We made the dough together today and we are baking tomorrow. We also have to prepare a starter for their Christmas dinner at school. * Getting and wrapping the last presents for Xmas. -- "Continued work on [Koype](https://indieweb.org/Koype). Working on some prototypes for clients and then maybe rewatching the Rocky series so I can go watch Creed 2 with all of that knowledge fresh in my head! -- "Understanding how version control is being used is as many scenarios as possible. Doing some research too on how merge tools are compared and how is a better merge machine perceived. -- "I have some extra vacation days to use up, so I'm planning on doing the following: - Sewing bags to give Christmas presents in instead of wrapping them in wrapping paper. - Reading more of \"[Why Nations Fail](https://www.goodreads.com/book/show/12158480-why-nations-fail)\", which attempts to explain why some nations are more prosperous than others. So far, it's been a great book and has really helped me see a more nuanced view on many political topics. - Reading \"[Technology and the Virtues](https://www.goodreads.com/book/show/29568959-technology-and-the-virtues)\", which is an ethics book aimed at technologists. I think as a software engineer, it's important to have thought long and hard about the ethical implications that the software I build could have. Sometimes it seems too easy to ignore or underestimate the (sometimes unintended) impact of a software engineers' work. - Packing to go to my parents place to visit my family over Christmas :) -- "> Sewing bags to give Christmas presents in instead of wrapping them in > wrapping paper. Great idea! We have a couple bags that we reuse for core family stuff. We also are going retro this year to brown wrapping paper (which in contrast to glossy/waxed paper is recycleable), decorated by my 7-year old son. -- "Awesome :D -- "My last opportunity went south fast. I've parted ways with the company and am giving myself some sorely needed R&R for a few weeks. I'm patiently and deliberately looking for the next big thing on which I want to spend my time while revisiting some aspects of my life that I'd put on hold (e.g., video games) because of how hectic my old job became toward the end. In the meantime, I'm doing a hard press for sponsorship for a software conference I'm running called [Abstractions](https://abstractions.io/). It's in Pittsburgh in August 2019 and will have 2,000+ attendees. We had [some big names headlining 2016](https://web.archive.org/web/20161126103237/http://abstractions.io/) and we're shooting for the same caliber of talent this time around. Contact me if you're interested in learning more! -- "This week, as part of my [personal-k8s](https://github.com/mattjmcnaughton/personal-k8s) cluster project, I'm going to deploy NextCloud to my cluster. Long term I'm hoping to use it for Calendar, Documents, Trello-type boards, and Todo lists. But for now, I'm just starting with getting and running and migrating some of my less important todo lists. Should be fun! I've deployed my static blog to my Kubernetes cluster, and some monitoring tooling (i.e. Prometheus), but this will be the most complex application I've deployed so far! I'll be blogging any lessons I pick up on [mattjmcnaughton.com](http://mattjmcnaughton.com). -- "I got new glasses the last week, unfortunately I've been kind of depressed this week for a variety of reasons, so I've been sleeping a lot. This week I want to start re-reading [Applied Analysis](https://www.math.ucdavis.edu/~hunter/book/). Around maybe two or three years ago a colleague of mine recommended it to me, we were going to read through it. Unfortunately we didn't get far, and I've been meaning to get back to it. I'm also going to try and find some time to set aside to read A Concise History of Economics. In addition I'm hoping someone will gift me a copy of Russell's A History of Philosophy, because a few of the books I picked up a while back are more academic than I realised, so I need more of an understanding of philosophy to read them. I re-read some essays in In Praise of Idleness today, I forgot how good a writer Bertrand Russell was. It's so easy to read, but it isn't simple english. He clearly wrote for both purpose and aesthetic pleasure. -- "Wasting way too much time on adventofcode.com but having fun in Elixir and Clojure. -- "Battling seasonal depression by playing with the small people; battling a series of respiratory and inner ear infections that come from playing with the small people. Work is quiet; we’re finishing off the year with a hackathon this week, so I’m using my time away from the quotidian to ... write reviews of my people. Oh well. A manager’s work is never really done. -- "What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "I have to work on Saturday but I still have some things planned for this weekend: - I bought a kobo clara HD and started to read my first book on it, it's about golang. I would like to just get an 'hello world', something that will write to a file and something that will fetch the json of a url and 'parse' it. To be completely honest I have no idea if this is highly optimistic or not, but we'll see. - I went to Redhat's Ansible Automates tour and decided I should stop maintaining my own playbooks. I did multiple tests during evenings this week and I like what I see. I also discovered a bug in ansible 2.5 or 2.6 was fixed and that allows me to dynamically include roles from a yaml I include on the fly. Still need to finetune more but it's looking ok - buying Christmas presents is also high on my list for this weekend, I hope to really finish that one. -- "Go is not a great language for processing JSON. I have been banging my head against it for years. It might not be a great starting place. -- "hmm, i was under the impression that Go is pretty good for processing JSON. Can you provide some examples? I haven't used Go in production yet but was going to use it for my next project, this might change things. -- "Go has standard library support for JSON, do I'm not sure how it's lacking. Dealing with optional keys or variable structures is a bit cludge-y, but that's a problem in most typed languages. -- "> I’m not sure how it’s lacking exactly. I generally use points for optional fields which are nil & use json.RawMessage for data that is structured like a tagged union. -- "Have you tried implementing [json.Unmarshaler](https://golang.org/pkg/encoding/json/#Unmarshaler) for the tagged union fields? I'd expect it's one of the use cases where it should be useful? -- "I use [this](https://play.golang.org/p/xO9CqqqLp_2) pattern generally. I haven't used Unmarshaler before but if I understand correctly, it would be helpful when there is only one 'output' struct. -- "My idea, applied to your example, was something more or less like this: https://play.golang.org/p/MKCosTwXa6N -- "ah, thanks! this would have been perfect if we had sum types. type Error = NotFound | Denied -- "I found Go's JSON support to be great but potentially confusing for beginners due to Go's weird mix of high and low level abstractions. It's not as simple as, say for example, Python's JSON support where you load the file and it spits back a Python Dict you can use. -- "To be honest I was kind of hoping it would be more python-like, but it is what it is. I want to give go a try at least and the use case I'm having in mind seemed perfect for it. Unfortunately it will require json that's highly dynamic so I'm not sure how to tackle this but I'll give it a a try. -- "Yeah it's absolutely NOT python-like, and its adherents see this as very much a feature, not a bug. Not every programming language is for everyone, and it's not exactly clear that Go is for me, at least for a lot of the work I do most of the time. -- "I'm employed as a Go programmer and I'm also not sure what specifically the critique is about. I don't remember ever having problems handling JSON, seems to just work for me. -- "Here's some production example I have which is parsing Prometheus metrics return: ``` metricsMap := make(map[string]interface{}) if err := json.Unmarshal(body, &metricsMap); err != nil { return nil, err } retMap := []map[string]interface{}{} metrics := metri csMap[\"data\"].(map[string]interface{})[\"result\"].([]interface{}) if len(metrics) == 0 { return &retMap, nil } for _, m := range metrics { metric := m.(ma p[string]interface{})[\"metric\"].(map[string]interface{}) retMap = append(retMap, metric) } return &retMap, nil ``` It works, it's all stdlib, but cludge-y sounds right. -- "Yeah, i tried implementing it using the struct pattern(?) and am not sure if it looks any better https://play.golang.org/p/hQFozwUjn7V -- "You can remove the `json:\"...\"` annotations when fields are named the same (capital leter at front is matched when parsing), and in this case also inline more structs, and then you get: https://play.golang.org/p/9xWMnrjc9Hw. The structs is how it's generally intended to be used. Anyway, static typing requires the types to be written at some point, so there's no avoiding this, if you want to keep the advantage of a typed language. You can look at the types list as a \"schema\" for the JSON. In the end, I don't really understand what's \"not looking any better\" here. -- "I found this helpful for quickly generating golang structs from example json: https://mholt.github.io/json-to-go/ -- "You might enjoy this post: http://eagain.net/articles/go-dynamic-json/ -- "I don't understand the bit about Ansible playbooks - what does it mean you're not going to maintain them yourself? then who's gonna do it for you? -- "Ansible Galaxy is basically a place where you can publish roles and other people can download them. There are a lot more talented people maintaining playbooks and it always costs me time when a major new version comes out. After talking to some people at the event I just figured I'd at least try using one or 2 roles to see where I got, and I ended up migrating 70% of everything in an hour or 2. The geerlingguy's roles are what I'm using. -- "Regarding parsing JSON with Go, I agree that it can be difficult, but you can make your life much easier by using the [GoJSON tool](https://github.com/ChimeraCoder/gojson). It automatically generates struct definitions from the JSON that you provide for it. Hope you find this useful! -- "A list of things I want to in my free time: - organize content for first episode of a podcast I'd like to start in 2019 - contact people to encourage them to attend or speak at the conference I'm excitedly attending next summer - write some code which communicates to programmers some different forms of logic - read some of the several math/logic/philosophy books I got in the last 1-2 months - add timings/bookmarks to a meetup video I uploaded months ago - plan a virtual conference event for a prog lang for the 2019 year - plan an organized effort for documenting a prog lang Ah, it's nice to be relatively healthy again. -- "What's the podcast going to be about? I'd love to do one again but my day job leaves too little personal time and I really need to focus like hell on upping more core development skills. -- "PureScript, but will likely be about FP in general with a bias towards Pure FP, type theory, algebra, logic, and maybe some other related things. -- "Is there a mailing list I can join to be notified if/when the first episode is released? -- "No, I was planning on just posting to social media, like Twitter and Reddit and their Discourse for that lang. Is there anywhere else I should post? Or do you feel an email list is different enough that I should adopt one? I've never done an email list before. -- "I'd love to be notified somehow, and I'm apt to miss it in the channels you mentioned unless I'm already following you there. At a minimum, setting up a Twitter account specifically for the show would be a start; but you can set up a free 'subscribe to get info when I launch' kind of email list page on the domain you'll have for it, too, and that'd be grand. -- "Basically I just want to be notified when it’s available, otherwise I’ll forget to listen. I don’t want to follow on Twitter because I closed my account months ago. It’s too toxic a platform. -- "https://www.pure-pandemonium.club/ I can't figure out how to get an email list, but I might do that if you can recommend an easy way to do it. -- "I can't give step-by-step instructions (because I don't remember, and you'll figure it out I think), but you could set up Feedburner. You'll need a `feed.xml` file. I don't remember whether or not you'll need a `sitemap.xml` file, but you ought to have one anyway for SEO. Feedburner seems to have an \"I am a podcaster\" option, but I don't know what it does. I remember it being easy to set up. Any time I write a blog post on my own site, my subscribers get an email with the content of that post, and a link to view the original page. -- "Here's an RSS feed for the blog posts: https://www.pure-pandemonium.club/index.xml I'll set up a separate RSS feed for the audio files. As far as email notifications, it looks like ifttt.com makes it super easy to get an email notification for new RSS feed items. And mailchimp.com has an RSS-to-email thing, too: https://mailchimp.com/features/rss-to-email/ I'll take a look at that and other options then post here the solution I find. Looks like Hugo gave me a sitemap.xml file, too, FWIW: https://www.pure-pandemonium.club/sitemap.xml It would be really nice to have RSS feed subscriber analytics, but I don't know how to do that. I don't want to use Feedburner for various reasons, so perhaps I can just set up something like https://github.com/portable-cto/rss-to-email on a FaaS... -- "In the meantime, send an email to mgmt @ pure-pandemonium.club from the email you want to be notified at, then I'll add it to the notification list when I've found one. -- "I purchased a used Pixel 2 XL for my spouse and I shall back up her old phone and restore it to the new one. I will gain whatever administrative roles are required to remove the pre-installed carrier stuff (I bought the wrong used phone...). Then I will replace the motherboard/CPU/ram/GPU/PSU (\"A\") in my main rig and put the my old parts in my son's rig and his old parts into some case I probably have laying around for my spouse. (My son and I both like our current cases.) Then I will put another motherboard/CPU/ram/GPU (happens to be identical to \"A\" except for the PSU) in a case my brother-in-law has laying around and give it to my father-in-law for Christmas. I feel like Oprah... :) \"You! get a device, and you! get a device and you! get a device!\" -- "If the postman delivers, I'll be playing around some with the keyboard.io keyboard and firmware for LED<->Desktop Integration. Otherwise, I recently got a pair of BLE Vr Gloves that's bin in the 'closed source nonsense' box. They deserve some reverse engineering. -- "Debian packages for [Netdata](https://github.com/netdata/netdata), Domoticz https://www.domoticz.com/ and work on FreedomBox https://freedombox.org/ -- "Hooray for packagers! Thanks! -- "I'm hoping to be doing some Rust learning, by writing a small new project: > [NixME (Nix Minimal Effector)](https://github.com/akavel/nixme) aims to be a > minimal binary, that can receive precompiled Nix derivations from `nix copy > --to ssh://$MACHINE`, and unpack them to `/nix/store/...` as appropriate. I'd like to be able to use it in future as a \"DevOps\" agent, for NixOps or something custom, for remotely controlling a Linux box via SSH (ideally as an Ansible/Salt replacement). -- "- Continue improving my scroll-highlighting addon https://github.com/huytd/scrollreading - Take my son to the museum :D - Purchased an oscilloscope, trying to fix the bouncing issue with my 40% keyboard https://i.redd.it/sbjlox4wufp01.jpg -- "Busy weekend! * We're getting our Christmas tree on Saturday from a lot. * I'm going to see Atmosphere on Saturday * I'm helping a friend move on Sunday! If I have any downtime I plan on flipping through *Subliminal: How Your Unconscious Mind Rules Your Behavior* by Leonard Mlodinow. -- "Still working my [Exercism](https://exercism.io/) problem. My mentor on there crafted a positively gorgeous hint response that laid out the thought process behind solving the problem, including the use of truth tables and peeling apart the problem and solution with abstract logic. I look forward to digging in and applying that to my wetware in hopes of not just solving the problem, but growing the necessary machinery to get better at solving such problems in the future which is my goal. -- "> including the use of truth tables and peeling apart the problem and > solution with abstract logic. That sounds very satisfying! What's the problem in question? -- "You're gonna be totally disappointed :) It's a leap year calculator. Yes I am very much a slow learner for this crowd :) I'd implemented my solution in the naive way using 3 conditionals, and my mentor wants me to implement it as a single conditional using nothing but boolean logic. I'm having trouble figuring out how to do that, so he picked the problem apart and expressed it in non syntactical terms using logic, with a supporting truth table. -- "> I’d implemented my solution in the naive way using 3 conditionals, and > my mentor wants me to implement it as a single conditional using > nothing but boolean logic. Yeah, this a thing I've been trying to give more and more notice to in my own code. I had the fortune of studying formal logic before really getting into programming. It's nice to be able to fall back on those skills, esp. when refactoring complex conditionals, but sometimes it's easy to just crank out the first thing that works. -- "Doing another entry of my Zelda Starring Zelda screenshot-based Let's Play: https://elekk.xyz/@ZeldaStarringZelda And working on polishing my FFVI fan screenplays. I found someone on Reddit who seems might collaborate with me! I am going to send him what I have so far and I hope he'll help out. I think we've already found common ground on where we want the story to go. -- "Packing up my apartment to move to the USA next week (from the UK). My furniture isn't really fancy enough to be worth shipping transatlantically so this involves a bunch of selling stuff on Gumtree and Facebook Marketplace. Mildly stressful, but not too bad so far. -- "Out of the frying pan into the fire :) Good luck! Where in the US will you land? -- "Washington, DC, for a job as assistant professor [in CS](https://www.american.edu/cas/cs/) at American University. And thanks! Will definitely be a change of scenery, pros and cons but hopefully good overall. Right now I live in a 20,000-person [seaside town](https://en.wikipedia.org/wiki/Falmouth,_Cornwall) that's 5 hours from London, while in a few weeks I'll be living right in the Imperial Capital! -- "Congratulations! DC is a fun town! If you drink beer the bar scene is rather lively (I'm a beer fan and so am rather fond of the [U Street Saloon](http://www.dcbeer.com/venue/saloon) . Lots of great culture happening there. -- "Studying for the last of my final exams, preparing for a phone interview, and getting ready to move out of my dorm. I'll be in a new room with a new roommate next semester :) -- "Learning to curl. Not the HTTP kind! I can't say it has ever been on my \"must do\" list, but I think I have an OK chance of not being terrible at it. -- "Going to do some editing of my [last livestream of code](https://www.twitch.tv/events/LkfxnnRNTPerE4LuM0BcZw) into a serialized video for playback. Planning to put it up at [my video server](https://video.jacky.wtf) then syndicate. Going to also do some hunting for clients [for the agency](https://black.af) then work on some side projects. Very busy! -- "I started watching [Handmade Hero](https://handmadehero.org/faq)! It's a total blast, Casey's incredibly fun as a host and the info is dense. Gonna keep watching some episodes and working on a game this weekend. Also, playing Smash Bros. :D -- "I'll be putting the finishing touches on a standing desk that I've been building for the past two weeks. Someone here requested the design (there was no design, I was totally winging it), so I'm going to try to get a slideshow uploaded to imgur and posted here on Sunday. -- "Polishing off the blog. After writing nothing in almost two years, it's nice to start [writing again](https://jezenthomas.com/silence-at-last/). Otherwise, I'll be hacking away at my backlog of project tasks, which is almost 100% writing Haskell. -- "Work on a VM for a zero-operand CPU written in Haskell Also, learn the basic syntactic structure of Haskell, potentially a prerequisite to my initial goal -- "Finding the courage to backup all my data, wipe my HD and install the new FreeBSD. -- "My wife flew out to Utah to visit family for Christmas, so I'm left a bachelor until I fly out later this month. To celebrate the start of my alone time, I plan to hack on a few things this weekend: 1. Take care of a few Pull Requests and bug tickets/feature requests in HardenedBSD. 1. Compile and install Firefox on my Pinebook, which is running HardenedBSD as of today. 1. Attempt to make more progress on porting SafeStack to HardenedBSD 13-CURRENT/arm64. 1. Tack some LED strip lights in a dark hallway in my home. -- "* Studying for my Statistics exam next Wednesday, the outcome looks bleak but I'll try my luck. * Keep working on my C++/SFML game I started a couple of days ago, I'm forcing myself to work at least an hour or two in the game every day, I hope I can keep being this productive and arrive at something. * My usual procastination -- "FunctionalConf in Bengaluru! -- "I will try to clean and organise all my stuff. -- "ok now that advent of code day 15 question has dropped, i guess i will spend all my time trying to solve it instead. -- "Just started the Andrew Ng Machine Learning course this week on Coursera, my second attempt. But I'm going to stick with it this time. -- "My kid has chicken pox, so... that. -- "A while ago I made a toy project: what's the minimum amount of code I can deploy and still have a working blog? I ended up using Vue.js and AirTable. I think I'm going to pull my hard-coded Vue component out of the html and into a pluggable module system. I may be able to get the entire thing down to 100 or so lines of html/javascript. Fun stuff to play around with while binging on X-Files. -- "- going to church as usual tomorrow - reading _The Fifth Season_ - sleeping - working to be kind to my kids and my wife even though I feel slightly miserable. On that last note: [burnout is bad](https://www.chriskrycho.com/burnout/), and [recovering from it is hard](https://www.chriskrycho.com/2018/stewarding-my-reserves.html). 😭 -- "I've been able to spend some of my free time on writing/recording music at home. I run Ubuntu, so I've been learning more about the audio ecosystem there. I've been learning how to create drum beats with Hydrogen (http://hydrogen-music.org/). I've found it intuitive so far. Nice pattern-based UI lets you visualize the structure of the song. A lot of fun to use. I've been trying to wrap my head around Ardour (https://ardour.org/) for recording. I find DAWs pretty intimidating in terms of sheer number of options/modes. This one's no different in that regard. But there are good docs and there's an activity user community, so that's a boon. -- "Studying for final exams :') -- "Been working through \"Software Foundations\" and \"Type Theory and Formal Proof\". Both are a lot of fun. Recommending them to anyone interested in the more theoretical aspects of CS and the connections to logic. -- "What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "* Working on some stuff for a client to try to wrap things up before I leave for a 3 week winter holiday. * My wife and I are taking daughter to a birthday party, but it is very hot here (35C today). * Reading up on some alternative ideas to what a browser is (like Project Atlantis from Mickens while at MSR). * Doing an experiment with epoxy resin and fiber optics to conduct light into a thin film of resin to see if I can get the result that I want. * Having guests over on Sunday to make some home made Christmas cards with my wife and daughter. * Submitting more of my backlog of changes to the Zircon kernel from Fuchsia. This is mostly typo corrections, but also working on some changes to what permissions are checked at what times. * Working on more Z3 changes to upstream to clean some stuff up in terms of platform support. * Extending my Rust Z3 bindings. * Reading some fiction. And probably some other things here and there ... -- "* Recovering from the work Xmas party * Finishing the refit of the front room & dining room by putting up more shelves * Fixing a leak in the main car's fuel line enough to drive it to the garage without pissing diesel everywhere * Last sailing race meet of the year, need to dress the crew and the boat up. Should be fun, if a little cold. Hopefully the rain will hold off and we get enough wind. -- "We may be closing the office at the end of the year, so in anticipation of working from home for the foreseeable future, I'm building a standing desk and server rack to get my home office cleaned up. It's 4 levels high and adds about 80 square feet of surface space to the room, in a corner where no furniture would fit before. I've been working on it since last weekend, and I think it will be finished by Sunday night. -- "I've been weighing out whether to build or buy a standing desk. Would you be willing to share either a picture or a link to plans for your design? Best wishes for a productive weekend! -- "You bet. I've been taking photos of the whole process. I'll see if I can get them uploaded somewhere before Monday. -- "I'm continuing the work on my painting and graphics application. My objective with this application is to perform the tasks that all the other applications can do, with the same performance (speed) and consuming significantly less RAM, to allow to work with large images even on computers with not much RAM space available. - For same performance as the other applications, [this week I finally got multi-threading rasterization working!](https://i.imgur.com/XckEoJ8.png). The buffer where the plots are rasterized consists of multiple pieces (tiles) on which each thread work on. Each piece has a 128 bytes before and after, unused, just to avoid false sharing. - The approach that uses less RAM is still secret-ish. I will detail it the day I release the application (as open-source). This weekend I will work on implementing cache to store the pre-rasterized plots first, instead of generating the plots on the fly on the buffer. -- "I've been working on a CLI tool for simulating the polarization of a laser beam as it passes through various optical elements (the theory behind it is called [Jones calculus](https://en.wikipedia.org/wiki/Jones_calculus)). It's mostly plumbing around multiplying 2x2 matrices together, and I have most of that plumbing worked out. The issue at the moment is that the simulation results are completely and utterly wrong, so I'll be diagnosing that. If I have time I'll be writing some lab software that talks to all the equipment in my experiment. Nothing too fancy there i.e. \"hey you, turn on\", \"hey you, move to that position\", or \"hey you, what's your reading right now\". This will make it easy to manage remotely. For instance, I have a laser that takes about 3hrs to warm up and settle, so I'd like to get that process started before I get to the lab in the morning. I'll also be driving >1hr away to visit an Apple Store since my laptop has been randomly shutting itself off or failing to wake from sleep. I've exhausted my troubleshooting abilities there, so hopefully they can access some system information that's not available to a lowly peasant like me and tell me what's going on. -- "A 12-hour pistol safety course with some range practice and a test. -- "Finals are over for the semester so it's back to working on the Advent. -- "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. -- "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. -- "Effective C++ by Scott Meyers is a must-read after you are done with the basic introductions ;): http://shop.oreilly.com/product/0636920033707.do -- "Thanks! Will add that to the reading list, -- "Also subscribe and listen to CppCast from Rob Irving! -- "Thank you - I did not know about these! Apparently there is both a [podcast](http://cppcast.com/) and [YouTube channel](https://www.youtube.com/channel/UCuCjADS4u3uJDTqUaG0H9dA). -- "I believe the YT channel is no longer maintained. -- "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. -- "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 :) -- "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 -- "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. -- "Finishing up my talk for [BSides Lisbon](https://bsideslisbon.org/) 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. -- "Today is the first day that I'm full-time on [The Labrary](https://labrary.online), 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. -- "Be sure to check out [Barnacl.es](https://barnacl.es) if you haven't yet for more ideas on generating leads. -- "Thanks! I'm already signed up over there, although at the moment that DNS name doesn't seem to be resolving. -- "Very interested to see what Labrary turns into. Had a read of the site this weekend and will be pointing people at you. -- "Thank you Matt! -- "$home: I've started working on (and [streaming](https://www.twitch.tv/popabogdanp) -- [past recordings here](https://www.youtube.com/playlist?list=PLNLLd8yFpp6WRxwIegCTS74IduCfCbVSr)) 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)). -- "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. -- "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. -- "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 -- "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](https://github.com/kubernetes/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](http://mattjmcnaughton.com/post/reducing-the-cost-of-running-a-personal-k8s-cluster-part-0/) detailing my work to decrease costs. -- "`$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 -- "Any more info on the historical CTF? That sounds really interesting. -- "so I've written a historical CTF once before: Gopher, a modified RSH, and MUSH running atop [Inferno](https://en.wikipedia.org/wiki/Inferno_(operating_system)), 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). -- "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 :) -- "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. -- "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. -- "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. -- "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. -- "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. -- "Right, but leetcode style problem solving *does* map pretty well onto the sorts of nonsense problems one encounters in white-board interviews. -- "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](https://www.nytimes.com/roomfordebate/2011/12/04/why-should-sats-matter/the-sat-is-a-good-intelligence-test) rather than simply the ability to take a SAT test divorced from other desirable uses of brainpower. -- "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. -- "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? -- "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. -- "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. -- "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. -- "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. -- "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. -- "What material are you learning with if you don't mind my asking? And what tools are you using? Have you looked at [Mu](https://codewith.mu/) ? -- "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. -- "Normal is overrated :) I'm blind in one eye, low vision in the other. Good luck! -- "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.) -- "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. -- "Thanks. I'll look it over. -- "Teaching myself C++ with Stroustrup's [A Tour of C++](http://www.stroustrup.com/Tour.html) and the exercises from [exercism.io](https://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. -- "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++. -- "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](https://www.kytrinyx.com/) 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](https://github.com/exercism) 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. -- "> @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 :) -- "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. -- "That's a D GUI library, right? What OS are you targetting? -- "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. -- "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. -- "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? -- "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). -- "Having not touched Elm (or heard much about it) - any thoughts as to why I should/might take a look at it? :) -- "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](https://korban.net/posts/elm/2019-11-17-elm-ui-introduction). 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. -- "Getting a remote engineering management role in a public-facing software company. -- "$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](https://wiki.openstreetmap.org/wiki/Nominatim) * 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) -- "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). -- "What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "I'm participating in [SpawnFest](https://spawnfest.github.io/). -- "Same here! -- "Nothing! Nothing at all. -- "Time you enjoy wasting is not wasted time -- "Yes. I would push back against the entire idea of \"wasted time\", actually. Being the dad of two toddlers means that weekends with no plans are the very best weekends of all. I get to spend time with my daughters doing what they like to do. -- "Recharge is also important. -- "I'm working on a yaml to Django REST API project, just needs finish up some default fields and work on how to do a M2M relationship -- "I'll be continuing my work on https://beta.discoverdev.io Been running https://discoverdev.io for over an year now, with my own homegrown \"static site generator\". As I wanted more features, found out that implementing them for scratch was a pain and affected my iteration speed. So moved it to GatsbyJS. On the down side this has caused me to move from pure HTML/CSS to a ReactJS based frontend, but even then it has turned out to be faster IMHO (thanks to code splitting and pre-fetching from gatsby). Fun note: Over the last year or so I've managed to curate about 3500+ links and get over 5000 subscribers :) Wonder if there is some way to automate the link curation though ;) -- "I'm continuing to port my Java bioinformatics code over to C++ and adding multithreading support. So far, so good. In the past week, I've become a fan of C++11 and MinGW 8.1.0 - I never thought cross-platform multithreaded code could be this easy! Other than that, I'm doing a bit of pre-winter maintenance on the Jeep and watching MSU (hopefully) win the Las Vegas Invitational. -- "For what reason are you porting to C++? (Not bashing, just curious) -- "It is the latest sub-project of a bright idea I had back in May to build a [CPU/GPU compute cluster](https://lobste.rs/s/za9uax/what_are_you_doing_this_weekend#c_e7phje) from a bunch of used cash registers (16 Dell Optiplex XE boxes that were used as point-of-sale systems). After determining a minimal Slackware Linux install that would work over PXE+NFS (the compute nodes are diskless), I found three major issues with using Java for this project: (1) pushing a Java runtime over NFS was too large to be practical (i.e., the framework was competing with my data for network bandwidth and memory); (2) although jCUDA works pretty well, it was just too many layers to go through (e.g., compiling on the fly with nvcc in Java); (3) garbage collection pauses were occurring way too often with the 4GB+ data sets I'm working with. I finally decided to jettison Java for this project and re-learn C++ (I learned C++ with [gcc 2.7.2.3](https://gcc.gnu.org/releases.html) (prior to standardization); it had a lot of rough edges that were later fixed by C++11). After a few traumatic weeks of pointer/reference, stack/heap and STL vs. standard library confusion, I have several multi-threaded command-line programs that do some of the basic analysis tasks and implement much of my core Java library. I'll admit it, I was afraid of going back to C++, but the idle cluster sitting in my home office provided some motivation. -- "Organizing [spawnfest](http://spawnfest.github.io) !!! -- "Nothing tech related (kinda!), I will be spending most of my time trying to get better at Valve's new game Artifact (https://playartifact.com/). I bought a beta key some months ago and I've been playing some hours after work this week but I will do a proper marathon this weekend. I've been recording every game I've played this week + every deck I've played against and I will be analyzing the games and playing new ones. As for the techy part, from time to time I'll stop and continue building a little tool I'm writing to help me gather statistics of my runs, some kind of game tracker with video play, deck tracker, some lifetime statistics and maybe if I get the time some data analysis on decks and winrate (cards played more/less, winrate against cards, etc etc). -- "Tinkering with a little side project: I want to make a little registry service a bit like crates.io... I’ve started it using now.sh and am continually amazed by how slick this platform is, you can really feel how much care and attention went into it! Currently using typescript, planning to use S3 for storage, still wondering what to use for auth. -- "Preparing for the yearly relaunch of https://24pullrequests.com on 1st December -- "Trying to learn the basics of Clojure so that I can face the Advent of Code this year to use it! So far so good, one of the smoothest languages I have ever dived in. -- "Nice! I’ll be doing AoC in Clojure this year as well. I’m pretty comfortably with it since we’ve been using it as one of our main application languages for the past 5 years or so. Newer members of the team don’t have that much experience with it yet, so I’m encouraging as many of them as I can to play along with me. -- "Me too! We use [Riemann](http://riemann.io) at work and I rarely touch it, but whenever I do I come away thinking I need to get to know Clojure better. -- "Combination of [TUCTF](https://tuctf.com) and building a ZFS-based NAS. -- "Working on my making my OpenBSD tilde server. So far I have SSH, Gopher, HTTP and Git figured out. I still need some more services, a good skel and it should be good to go. -- "Packing for trip to Thailand beginning monday. -- "Try to diagnose a heisenbug in [bors-ng](https://bors.tech) that causes [a job to crash](https://github.com/bors-ng/bors-ng/issues/432). -- "I'm back from 6days in Sweden for work so probably I'm going to enjoy the sun most this weekend! And unpacking, doing laundry, ... I had a couple of ideas while traveling, I'll probably also do some analyzing and have a look at feasibility, maybe also a little PoC. It would be kind of cool because one of the ideas heavily involves my wife who creates amazing illustrations. -- "Sleeping off øredev. That was the second conference I did in just three weeks and I am DONE traveling for a while. My reward to myself is a bunch of domestic errands. I haven't cooked in way too long! And I gotta insulate my apartment against the Chicago winter... -- "Hanging out at RustFest Rome, eating lots of good food and hacking on [sled](https://github.com/spacejam/sled)! In the last day I added support for reverse iterators, durable monotonic ID generation, and am slowly giving the documentation a facelift. Depending on how things go, sled might have MVCC and some basic transaction support by the end of the weekend :) -- "I'm visiting my brother in Argentina this week, didn't take my laptop. Reading introductions to number theory and dependent types/univalent foundations in the evenings. Also: \"Hello there!\". This is my first post :) -- "Via: https://newworldeconomics.com/what-a-real-train-system-looks-like/ What A Real Train System Looks Like December 27, 2009 For most Americans, the only image they have of passenger rail systems, and subways in particular, are Amtrak, the New York Metro, the San Francisco BART, and maybe some of that sorry crap in Chicago. Not a very inspiring bunch. However, most of the rest of the developed world has quite wonderful subways and trains. They are clean, efficient, cheap, run on time, have as many as 20 or even 25 trains an hour (one every three minutes) during peak periods, and everybody from all income levels uses them. This is not a utopian fantasy, it is normal life for most people — which they take for granted along with other modern conveniences like clean running water and working sewage systems. If you haven’t used a real subway, that runs at least ten trains an hour all day, on time, then you probably don’t know what it’s like. It is like electricity. It’s just there, and it works. At ten trains an hour, there is a train every six minutes. You don’t have to look at a schedule, you just show up and, within an average of three minutes, you get on the train. Here are some shots of nicer subway stations from around the world: T-Centralen Station, Stockholm. Westfriedhof Station, Stockholm. Candidplatz Station, Munich. Georg-Brauchle Ring Station, Munich. Bilbao Metro. Iidabashi Station, Tokyo. Komsomolskaya Station, Moscow. Komsomolskaya Station, Moscow. Museum Station, Toronto. Drassanes Station, Barcelona. I like Komsomolskaya Station best, followed by Iidabashi Station. However, subways are not really something to fetishize about. It should just work, like the plumbing. It is not necessary to be so decorative. Just clean and functional is fine — unlike New York Metro subways, which are dirty and dysfunctional, and about as much fun as dirty and dysfunctional plumbing. The real advantage of good subways is not that we can oooh and ahhh about the station decor, but rather that it gets us to Point B efficiently, and enables us to live in a Traditional City without a car. In other words, a subway allows us to have a really fabulous destination, and a fabulous lifestyle in many ways. Trains and Traditional Cities go together. You can’t have one without the other. You can try, but you will fail. A train system in Suburban Hell is almost useless, because you have to drive to and from the train station. A Traditional City without a train is impossible, because you will need lots and lots of parking. (Exceptions can be made for small towns near a train station, where you can literally walk everywhere in town, and which could be served by a bus that goes to the station.) Bicycles, electric cars, scooters, Segways, whatever: not gonna work. You can have these things in addition to a good train system, but not as an alternative. What you’ll find out is that, if the train system is good, you don’t need all this other stuff anyway. These days, it’s easy to make subway systems because we have amazing tunneling machines, which will bore a train-sized hole like a giant rock-eating worm. So, no excuses. Now, let’s add some high-speed rail. This is the way to get from one subway/city train system to another, within about a 500 mile radius. The original 1960s “bullet train” (the Japanese name is the “New Trunk Line” or shinkansen). Things have moved on a bit since then. Pretty much all the major cities outside of Hokkaido are covered. There is of course a regular normal-speed train system as well, which covers the smaller cities and towns. The French TGVs are not quite so sexy, but still do the trick. This is the map of France’s TGV system. You can get about anywhere you want to go at 200+ kph. This train map of France includes the regular-speed trains as well. This is a map of train lines in the JR East system, which covers the eastern half of Japan. The shinkansen (high speed) trains are the green-and-white lines. The small grey lines are not roads, they are regular intercity train lines, each with many, many stations which could not all fit in this map. This train system is all electric. You can run it on nuclear, hydropower, solar, wind, coal, natural gas, biomass or whatever. This area is extremely mountainous. The large blank areas represent mountain ranges. This is a map of all the trains in the greater Tokyo area. I’ve shown it before. Click on it for the full-size image. When a new window opens, you will have to click again to see it at 100% size. Since this map was made, a few more train lines have been added. Also, this is a “schematic” map. Where there are a bunch of train stations that are “close together,” that doesn’t mean they are physically close together. It was something they did to fit it all in one map. As you can see, you can get to and from about anywhere via the train. One reason for this is that — naturally — all the important stuff is near the train station. If you are a business or store, you want to be where it is easy for your workers and customers to get to. Residences too are better off when they are within a 15 minute walk of the station. Sometimes you run into discussions on the Internet and elsewhere about how wonderful the Washington DC subway is, and how this should be a model for the future. These people also like to talk about Portland, Oregon a lot. This is so pathetic I don’t know what to say. It is like watching people bang on pots with spoons and talk about what great music they are making. If you run into these people, please ignore them completely. Not only are they utterly lost, they also seem to have no capacity for learning. If you have read this far, you already know more than they do. This is the train map for Washington DC. As you can see, it is an irrelevant little fart of a train system. It is much better than nothing at all. But, it is hardly a good representation of what is possible. Getting excited about this is like getting excited about someone who stops pooping in their own pants and learns how to use a toilet. Which is fine for a three-year-old, but not so much for someone with a graduate degree in Urban Studies, which most of these people have. I should mention also the normal-speed, above-ground train lines that are the bread and butter of a real train system, once you get out of the central urban area which is served by a subway. The familiar orange cars of the Chuo Line, Tokyo. One of Japan’s oldest train lines, along with the Tokaido Line. Not very sexy, but it is clean, on time, runs a zillion trains a day, and works great. Like your plumbing system. It does exactly what it is supposed to with no problems whatsoever. Nice train with nice people. Platform of a typical station. So, now we have all the elements of a proper train system — the kind of system that you can ride all over the country, and never once wish you had a car instead. Once you have a system like this, cars become completely unnecessary. The next element in our train system is the proper integration of the train within the city. This is another point at which the typical U.S. solution is a total disaster. The typical U.S. solution is to surround the train station with acres and acres of free parking. This is Westport Station on the New Haven line, east of New York City. My old train station. This photo is about 800 meters across. See the free parking everywhere? (In this case, it’s not actually free.) Even if you did work up the courage to cross that burning plain of asphalt, there isn’t anything to walk to. Obviously, you need a car. This is the Vienna/Fairfax-GMU station, part of the Washington DC train system. This photo is 800 meters across. It is a perfect example of WHAT NOT TO DO. The train station is in the middle of the interstate, and surrounded by square miles of parking and Green Space and mega-roadways. There is no Place to go to. The first thing you think when you step off the train is: “Damn, I need a car!” There are 157 acres of land in this photo. When you step off the train, you have immediate walking access to 157 acres of nothing. There’s no There there! The better solution — assuming that we are aiming to create Traditional Cities, where we can live without owning a car, or at the very least, have only one car which is used every other weekend — is to surround the station with all the highest-value property. A common Japanese solution is to put the supermarket right inside the train station. That way, you can do your shopping right after work, with no fuss whatsover. All the best offices, stores and restaurants are as close to the train station as possible, so we can walk there from the station, and where there is the most pedestrian traffic. Plus, you also try to put as many apartment buildings there as you can, so you can easily walk to the station in less than ten minutes. So, in front of the station, there might be a little bus stop, dropoff point and taxi stand, and perhaps a little bike parking lot, but little or no automobile parking. The larger train stations often have full-size department stores also right inside the station. This is Gakugei Daigaku Station, on the Toyoko Line, which runs southwest out of Tokyo and ends up in Yokohama (thus “To-Yoko”). I used to live near here. This photo is about 400 meters across, or about a 200m radius from the station. What you see here is all within about a three minute walk from the station. This is a really nice neighborhood, with an immense amount of fun stuff going on. First, notice that there is no parking. There is some bike parking, and also some bus stops. Look at the enormous amount of stuff that is within a three-minute walk of the station! It is, as a Traditional City should be, 100% Places. This is the Vienna/Fairfax station again, near Washington DC. This is the same scale, about 400 meters across. You can see that there is absolutely nothing you can walk to in this area, except your car. (The buildings you see are parking garages.) This is Gakugei Daigaku station again (the “A” mark), but we have pulled back a bit. The photo is now about 1500 meters across, or about a 750 meter (about half a mile) radius from the station. You could walk from the station to anywhere in this photo in ten minutes. We can see that there is now an utterly colossal amount of stuff that we can access with only a ten-minute walk. This photo covers about one square mile, or 640 acres. Looks like grey mush, like a Traditional City should! Generally speaking, the more grey-mushy it is, the better it is. Admittedly, I am cheating a bit here to make a point. Gakugei Daigaku is not a distant exurb like Westport, it is more comparable to a Brooklyn neighborhood like Park Slope. However, the difference with New York is that in this example, you arrive in a fabulous Traditional City, while Brooklyn is a dysfunctional 19th Century Hypertrophic City. That is a different point to make, and I’ll get to it eventually. Nevertheless, the original point stands: if you want people to be able to live without automobiles, you have to make it easy to get from the train station to wherever you want to go on foot. This means you put all the good stuff right up against the train station — even build it into the train station itself if possible. When you step out of the train station, you want to land right in a wonderful pedestrian Traditional City environment, not a parking lot wasteland. In short, you want to pair your train system with Traditional City design. They go together like peanut butter and jelly. The view when you step out of Gakugei Daigaku station. Doesn’t that look like more fun than 157 acres of asphalt and Green Space? It is! If the Gakugei Daigaku area looks like too much of a hugger-mugger for you, maybe a more sedate European example is more your thing. Hey, it’s up to you to design the pedestrian Traditional City of your dreams. You be the big boss! This street from Vienna certainly looks more dignified, but the Gakugei Daigaku area is more fun (trust me). Actually, when you get out of the commercial area near the train station, there are lots of stately houses and apartments on quiet streets in the Gakugei Daigaku area too. So you can have it both ways; you can live on a quiet little street, and then walk three minutes to the hubbub around the station. If you go to a Japanese automobile exurb, you will also find that there are some parking lots around the train station, and it is not so easy to walk. The result is much the same as Westport, though typically not nearly so bad. This serves merely as another example of how not to do it. There are Japanese automobile suburbs too, and they stink in pretty much the same way as automobile suburbs anywhere else. However, in the Japanese case, there is an alternative: you could live in a place like the Gakugei Daigaku area. That’s why vehicle sales have plummeted over the past few years: from a peak of 7.1 million units in 1996, they have declined steadily to 4.25 million estimated for 2009. That’s a hefty 40% drop in only twelve years. Wouldn’t it be wonderful if they continued to fall, to perhaps 2.0 million or less? Giving up cars voluntarily! That’s about all you need to know about trains and Traditional Cities. As you can see, it is really quite easy to solve the problem of car dependency, and all of the other catastrophes of Suburban Hell, if you know what you are doing. Plus, we also solved our oil dependency, and reduced our energy and resource use by probably 80%, without even thinking about it. It costs less — because we aren’t supporting an enormous amount of automobile infrastructure — and we’re having way more fun too. This stuff is a cinch. April 19, 2009: Let’s Kick Around the “Sustainability” Types Other comments in this series: December 13, 2009: Life Without Cars: 2009 Edition November 22, 2009: What Comes After Heroic Materialism? November 15, 2009: Let’s Kick Around Carfree.com November 8, 2009: The Future Stinks October 18, 2009: Let’s Take Another Trip to Venice October 10, 2009: Place and Non-Place September 28, 2009: Let’s Take a Trip to Barcelona September 20, 2009: The Problem of Scarcity 2: It’s All In Your Head September 13, 2009: The Problem of Scarcity July 26, 2009: Let’s Take a Trip to an American Village 3: How the Suburbs Came to Be July 19, 2009: Let’s Take a Trip to an American Village 2: Downtown July 12, 2009: Let’s Take a Trip to an American Village May 3, 2009: A Bazillion Windmills April 19, 2009: Let’s Kick Around the “Sustainability” Types March 3, 2009: Let’s Visit Some More Villages February 15, 2009: Let’s Take a Trip to the French Village February 1, 2009: Let’s Take a Trip to the English Village January 25, 2009: How to Buy Gold on the Comex (scroll down) January 4, 2009: Currency Management for Little Countries (scroll down) December 28, 2008: Currencies are Causes, not Effects (scroll down) December 21, 2008: Life Without Cars August 10, 2008: Visions of Future Cities July 20, 2008: The Traditional City vs. the “Radiant City” December 2, 2007: Let’s Take a Trip to Tokyo October 7, 2007: Let’s Take a Trip to Venice June 17, 2007: Recipe for Florence July 9, 2007: No Growth Economics March 26, 2006: The Eco-Metropolis -- "What are you doing this weekend? Feel free to share! Keep in mind it’s OK to do nothing at all, too. -- "I plan to start running a PeerTube instance, like I've been meaning to do for a while. I also want to finish reading Ian M. Banks' *The Player of Games*, which I'm about 2/3 of the way through. -- "I'm working on a platform for Dungeon Masters with GraphQL and React. I'm pretty stoked. -- "Care to elaborate? -- "It's just a platform that will encourage writing about your DnD adventures. Think a blogging platform (like medium), but feature's are driven at DnD Players -- "I'll be continuing my reading of *Programming in Ada 2012*. I intend to use Ada to write a simpler reimplementation of a [tool](https://lobste.rs/s/uhsyzg/meta_machine_code_mmc_tool) of mine. I may start working on this version of the tool this weekend, as well, starting with the simpler components, as a nice way of getting acquainted with the language through experience. -- "It's nice to see people using Ada, and I'm curious to see how it turns out! I used Ada 95 for almost all of my projects in college, and it's a great language. Only bad thing I can say about it is that it's maybe a little too verbose. Otherwise, the type safety and concurrency primitives were great to work with. -- "I plan on doing the following: 1. Watch/listen to some of the USENIX LISA presentations that were uploaded to YouTube 1. Work on my fork of FreeBSD's hypervisor, bhyve, for a special malware lab 1. Work on automating builds of HardenedBSD for the various arm64 SoC dev boards (RPI3, Pine64-LTS, etc.) -- "Today's the last day at my job, so my plan for the weekend is to relax and probably go skiing. I have two weeks before I start the new gig, and I'm hoping to get some reading done, finish up a few of my Lisp projects, and rearrange my apartment in preparation for working from home. -- "I'm resting with my cell phone in \"Do not Disturb\" so the only possible disturbance is a phone call from my parents. I had a pretty rough week and need to disconnect. Have a nice weekend, fellow lobsters! -- "I'm going to make be cooking for a potluck and seeing a good friend who is visiting while interviewing in the area. -- "Weekly library run with my son, swimming, repairing a gas range igniter, and hopefully get out to do some photography. -- "Writing the trampoline for the POWER9 Firefox JIT. I finished most of the stack frame work this morning. -- "Contributing to https://freedombox.org/ -- "I will try to fork and reinvigorate sile (http://sile-typesetter.org/). I would love a working modern update to TeX. The \"gimmick\" of sile is that is have frames (like indesign) to arrange content as well as being able to change the typesetter as it is typesetting (this allows, for example, two columns of different languages to become lined up). -- "Flying to Sweden for øredev, rehearsing my talk for Monday morning. -- "If it's OK to post non-programming stuff... Tonight I'll be singing and playing keyboard as part of a live band performance in Seattle. I'll be spending part of today practicing for that. Then tomorrow I fly back home to Kansas to be with my family (parents and siblings) for a week. -- "> If it’s OK to post non-programming stuff… Yes! The point is to share things you do that may or may not be tech related to get to know fellow lobsters. -- "I am watching Immo Landwerth's [Minsk](https://github.com/terrajobst/minsk) screencasts. He is writing a compiler and IDE in C#. -- "Prepping for a trip to Turkey for a week near the Syrian border to provide some training to humanitarian staff working in Syria on disease and health monitoring and outbreak management. Never been to Turkey but have friends from there, super excited to go but don’t know a lot about turkey from a cultural standpoint. Need to ask friends for some help. Trying to get the Congo set up in our disease management system as well in between playing with the kids and prepping training materials as well. -- "Sincerely, bravo. You're a hero. -- "Really interesting. What do you train people do do? -- "I'm the sole developer for a fairly large data collection and analysis system focused on disease surveillance and outbreak management. It's funded as a consultancy to a part of the U.N. I've been at it for about five years now (before that I built systems for health management in refugee camps, situations, etc...). We're set up in emergencies and as long-term surveillance in about 12 countries at the moment, mostly centered around Africa but some in the Pacific, Middle-East, etc... I usually travel a few times a year, but haven't in the last year as i've been waiting for my permanent residence application to get finalized. But normally I go out to the field with an epidemiologist and do field training for field staff, IT staff, etc... and it's just a good opportunity to sit down and get a better understanding of what limitations people are hitting with the system and how I can improve things, and people like to put a face to the name as well when they hear that it's just this one dude that's going to be underpinning an entire sub-section of their operation. These people are usually pretty busy so if something doesn't work for them, they'll abandon it pretty quickly and go back to excel or paper-based reporting... we're on the cusp of releasing a locally installable version of our system as rust binaries and the Syrian conflict is going to be one of the first to get it and have it installed locally so need to sort of assess what they have for infrastructure, etc... The whole thing is completely free though, doesn't cost countries/orgs a dime unless they want a \"kit\" (basically a bunch of pre-configured phones, couple laptops and a local relay server). It's a funded project though (and all the merciless stress that comes with that) I actually paid for the application servers for some of the largest outbreaks in the last 3 years out of my own pockets because of lack of funding, not a great feeling being in the position of deciding whether to shut off an entire countries disease outbreak alert system or feed your kids that month... but that's all gotten better in the last year as I went begging to a few doors outside the org I work for. Most of the time I just keep my head down in the back room of a little rented farmhouse in the countryside, support our countries 24/7 365 days a year, write code furiouslyday in day out and slink around in the shadows on lobste.rs. -- "Wow. Very impressive. Maybe you should post a link for donations. -- "I don’t think I’m allowed to do stuff like that. Its sort of any funding I get has to probably be approved by the org. We’re hopefully going to open source the whole system sometime in the new year so closer to that I might write up an article to see if there’s any interest in contributing or helping with funding. If I took donations I’d have to pay tax and all that on them I think and that would probably be a nightmare come tax time... I also feel bad that people give money and a chunk of that is immediately lost to taxes... -- "Probably a way to give to the UN. -- "Yeah I’d need to do some digging on how it would work. You could give to the Org and stipulate that the funds have to go to the project but you’d have to be giving a not inconsiderable amount I think to have that stipulation and even then it would go to the department I think and probably not make it down to the actual project itself and as soon as it passed to me it would still taxed still as income. The thing i would ultimately jump for joy for would just be 1-2 more devs more than just me and maybe an admin person. At least then I could go to bed at a reasonable hour, and I wouldn’t be so alone on the project all the time. I get paid well when I get paid so I can’t complain on that front but if I had a commitment of money for an extended period of time I could use for some additional staff I’d probably bawl my eyes out for a week straight out of sheer joy. -- "How much are those app servers running you? -- "During really busy months it can run just shy of 1000USD/mo. We’re hopefully going to get that down quite a bit in the next year as we’re releasing a desktop app that offloads some of the hard work to the users machine as well as deploying portions of the code written in rust compared to our currrent python heavy deployments. -- "That's incredible. You *are* a hero. -- "Not at all. I just write code for the most part and answer a lot questions and write scripts to load/export data. The people that have to be out in the field, in the clinics, doing contact tracing for Ebola and stuff. Those people are just amazing. Stronger people do not exist considering the things they see and experience on a daily basis. -- "I'm back in Poland for a couple nights, driving my [tiny car](https://www.instagram.com/p/BqSLp2pAXyD/), and just generally having an amazing time. I plan to finish reading Jeremy Clarkson's new book, and then I'll try reading the Type-Level Programming in Haskell book by Sandy Maguire. -- "That, is a tiny car. Also, props to the Polish in the UK, every Polish transplant i've ever met here has been super nice and super hard-working. -- "I just bought [Shenzhen I/O](https://www.gog.com/game/shenzhen_io), and the SO is out all weekend, so time to binge on logic puzzles! -- "Have you played Exapunks? I love Zachtronics games, and am playing them oldest-to-newest. Almost done with Infinifactory! -- "I have not. I was a big fan of TIS-100, that was the only other Zachtronics game I have played. Just read about Exapunks and Infinifactory.. there goes any 'spare time' productivity for at least a month.. -- "Sorry about your spare time :) -- "I found [defective wiring harnesses](https://www.dell.com/community/Optiplex-Desktops/Optiplex-XE-980-power-supply-wires-lost-insulation/td-p/6218213) in the power supplies of 3 of my Dell Optiplex boxes, so I'm pulling apart the other 17 nodes today to double-check their power supplies as well. I thought I was finally done with the hardware part of my CPU/GPU compute project, but there is always one more thing. I'm also about finished writing my first multi-node application for the cluster. As a Java developer, re-learning C++ has been a humbling experience, but I'm finally getting back into the right mindset for it. It is interesting to see how the language has evolved since I last used it, and how other parts are just as traumatic as I remembered. I've put together an outline for a in-depth write-up on this project (and all of the associated mini-projects). No actual writing yet, but its a start. I'll probably be working on this a bit during the Michigan State - Tennessee Tech basketball game this evening (finally, BigTen Network without a cable/satellite subscription!). -- "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. -- "I'll be starting my second week on my new team. I'm excited to have joined! We're building a runtime. Can't wait to learn more about that. As far as technical specifics go, I'll be adding some metaprogramming builtin functions and some new types. -- "I hope to find some time at work this week to figure out a nasty timezone issue in Postgres and write up a blog post about it. More likely I'll do it next week, as I'm currently working on the remaining features which are long overdue for a large truck management & transportation system. On Friday the [CHICKEN meetup](https://wiki.call-cc.org/event/t-dose-2018) for T-DOSE will start. The T-DOSE event itself is canceled/moved to May next year, but that we won't let that stop us! If anyone would like to join us in the weekend, feel free to let me know! We're probably going to work on some documentation, perhaps look into alternative C libraries to OpenSSL (the OpenSSL egg is a total mess, but a lot relies on it) and some CHICKEN 5.1 work. -- "I'm working on a text based gopher client in Lua, just because. Parsing the index file is trivial; displaying and navigating said file is proving to be a nice challenge. -- "I handed in my notice at my day job today. So in a month's time, I'll hopefully never have to touch Rails or Clojure ever again. That just leaves my own three projects, which are all written in Haskell and Elm. One of them is now being funded, so that'll be my primary focus. This week I'll be working through transitional-period stuff, I suppose. What a liberating feeling. -- "* Spent last week in San Francisco training at the new job, which is off to a very good start, though the city was pretty bleak because of the wildfire smoke. My intuition for code/infrastructure has been shaped by a 20-year career solo or on small teams, so seeing what a team of hundreds can build has left me in a constant state of awe. I'm a hick visiting the big city and it's pretty great. The way we're drawing the line between them and my outside projects (Lobsters, podcast, etc.) is that we're not going to talk about each other in public. This week is more training and getting used to macOS, which I last used in 1992 on an LC II pizza box. (Spoiler: Infinitely frustrating.) * Scheduling interviews for the first couple podcast eps. * Thanksgiving! I'm on desserts, so probably going to make ice cream and maybe a pie. -- "> This week is more training and getting used to macOS, which I last > used in 1992 on an LC II pizza box. (Spoiler: Infinitely frustrating.) I miss classic Mac OS, too. -- "Were you located in Chicago previously? (maybe you still are) Do you consider SF \"bigger\" than Chicago? Just curious as I've only been to Chicago. -- "I have almost always been in Chicago. SF feels like it's the density of Milwaukee with the prices of Manhattan. (So: significantly smaller.) I've enjoyed my two visits and hope to get more time to play tourist, but it would take incredible incentives to prompt me to relocate. -- "I had to get used to macOS again too for the job I started in August. It's... weird. And infinitely frustrating is a good description. -- "Black Friday is the busiest day of the year for my group, but we've spent the last three weeks doing performance and load testing, and for the first time (which beggars belief) the company is pretty secure in our infrastructure. My team is excellent, and I'm lucky to have them. I broke down and ordered an Eventide harmonizer from Reverb, so I'll be playing with that whenever I can. Also started learning Olympic lifts, which are fun but miserably difficult. I'm trying to figure out what language I should use for Advent of Code this year. Playing with the kids as much as possible. -- "Mostly going to be doing Thanksgiving things this week. Last night I got another chunk of porting done on my F# port of the Erlang wiki behind [idea.junglecoder.com](https://idea.junglecoder.com). I've noticed that A) The F# compiler is making it easier for things to be basically correct (though some of the errors are a bit strange at times) and B) I don't have to roll my own versions of things nearly as much in F# as I was in Erlang. I'm hoping that the overall effect of that will help reduce the activation energy to add some features (like a means of managing lists, or being able to have a better markdown parser). -- "I've got a strange week: I'm in the process of moving to a new team, and I'm out for most of December, so my time the next couple of weeks is _mostly_ \"support others as and where required\" with the occasional \"work on a small ticket.\" During my downtime I'm going to be watching some MIT OCW lectures I think, either [6.890 Algorithmic Lower Bounds](https://www.youtube.com/watch?v=7d73E1DiH0w&list=PLUl4u3cNGP63d33STUUBfZUpzFCVR5-PV) or [6.851 Advanced Data Structures](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-851-advanced-data-structures-spring-2012/lecture-videos/). -- "No job until December 3rd, so in a minute I'm heading up to Arapahoe Basin for an afternoon of skiing, then to a friend's house for the night and back country skiing tomorrow. Might ski again on Wednesday, and then Thursday I'm off to Colorado Springs to see my parents for Thanksgiving. I've just about got my book scanner project working and I signed up for isbndb.com yesterday, and verified book lookup works. Now I just need to scan two giant cases of books... I'm also looking at Common Lisp GUI libraries for future projects. CommonQT and QTools were my goto choice for a while, but they still don't support Qt5, and that's getting to be a big inconvenience, and makes it hard to use modern OpenGL. McClim is neat but kind of clunky and slow, and doesn't, to my knowledge, support OpenGL. LTK is okay, but also clunky and slow and no OpenGL. The GLFW3 binding works well, but it's only bare OpenGL. -- "Have you seen [cepl](https://github.com/cbaggers/cepl)? It aims to provide OpenGL in a more CL idiomatic way (see also [varjo](https://github.com/cbaggers/varjo) from the same author for writing shaders in lisp). -- "My family is all from Aurora and Golden, and I realized I should have gone there for Thanksgiving if for no other reason than to escape the smoke. I do miss good old A-basin, though. -- "Taking a break from some of the serious stuff after finishing this article: ( https://arcan-fe.com/2018/11/16/the-x-network-transparency-myth/ ). Have some really fun experiments going on with Eye Trackers (power-save and reducing mouse use), Advancing debugging tools and my eyes have recovered enough for more VR work so hopefully will get some of that done and maybe some DRM reversing because old habits die hard. Finally managed to score some CCC tickets so planning my trip to Leipzig too. -- "Since I wrapped up my five part series on implementing my blog's SLO (i.e. adding instrumentation, monitoring, and alerting via Prometheus, Grafana, and Alertmanager... more details can be found on [my blog](http://mattjmcnaughton.com/post/slo-implementation-part-0/)) last week, I'm deciding on a new project for my [personal Kubernetes cluster](https://github.com/mattjmcnaughton/personal-k8s). I think I'll focus on reducing how much I'm spending per month to host the cluster on AWS. Specifically, when initially deploying the cluster, I used [kops](https://github.com/kubernetes/kops) recommended resource allocation, and I'm not sure if that's too many or too few resources for my use case. Additionally, since EC2 instances are my main cost, I want to investigate using spot instances and reserved instances instead of the on-demand instances I'm currently utilizing. -- "At home, I've been playing with [Fuchsia](https://fuchsia.googlesource.com), working on porting a toy [Haskell web service](https://github.com/kisom/whereami) to [Rust](https://github.com/kisom/wherewasi), and trying to work through two Udacity courses on self-driving cars and neural networks. -- "The name of your web service interested me. What all does it currently do? -- "The web service itself operates on (presumably WGS84) [coordinates](https://github.com/kisom/whereami/blob/master/src/Location/Core.hs#L26) stored in SQLite. It accepts new coordinates via a POST interface and retrieves the latest coordinate from the database. The web UI uses the HTML5 geolocation API to post your current location. There's a couple of [TODO](https://github.com/kisom/whereami/blob/master/TODO.md) items, too. -- "Ah cool! So are you planning to use it to track/update your location to show \"where you are\"? -- "I'm sort of building out my own Google assistant sort of thing, so it's mostly to be able to correlate location with other things in a first-party sort of service. As of now, it's single user. In the future I might expand it out to share single waypoints or a range of points. It's probably the first web service I (with a systems engineering background) have really been interested in building, so it's also as much a chance to play with something useful and take it in a bunch of different directions. -- "Pretty awesome! -- "The Fuchsia part interests me (I do not currently have time to do something more practical with it but have read a lot on the design and code), do care to elaborate on some of your experiences? Is it on real hardware or in a VM? -- "I spent a while trying to get it on a T440s from about 2014, and I couldn't get the EFI to map the memory correctly. I haven't had a whole lot of time to dig into it, but I've been really tempted to put it on my pixelbook. I do have it running in qemu, too, but I so much prefer to have real hardware. -- "I joined Lobsters today. I was given an invitation by someone who would like to remotely collaborate with me on a project. I guess my most current project is trying to figure out Lobsters. -- "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. -- "I want to use [Vega-Lite](https://vega.github.io/vega-lite/) from Rust, so I took the JSON schema and used QuickType to generate [some Rust code](https://github.com/vizirs/vega-lite.rs). It ends up that this has a lot of issues, but it is a good start, so I'm now working on cleaning this up some. I also have generated code for Vega in a sibling repository. Any help on my [vega-lite.rs](https://github.com/vizirs/vega-lite.rs) repo or the [vega.rs](https://github.com/vizirs/vega.rs) would be greatly appreciated. I've been playing with Zircon, the microkernel at the heart of Fuchsia some. I've been submitting a lot of typo fixes for comments and documentation as I browse through things. I'm thinking about picking up a Khadas VIM2 board to run it on actual hardware ... perhaps after Christmas. (And by then, perhaps a Khadas Edge will be viable?) My daughter spent some time this last weekend with some Japanese families to play, and while I talked with some of the mothers, the idea of laser cut nori came up. This too will probably become a project for after Christmas though. -- "I'd love to hear more about your adventures in Fuchsia! It's something that fascinates me but I have zero confidence in my ability to make it build and run from git. -- "A few things then: * I mainly build and run Zircon rather than full Fuchsia. I'm more interested in what can be built on a lightweight kernel at the moment. * I have looked at the Garnet layer some which adds more stuff but isn't yet full Fuchsia. * Fuchsia requires Vulkan to do graphics, so that currently means no graphics under things like qemu and the like. * I'd have to buy a board like the Khadas VIM2 to get supported graphics hardware to play with that part of Fuchsia, which I haven't done yet. But let it be said that Zircon (and previously Fuchsia when I built it) are the easiest OSes that I've run into to build from scratch on macOS. SeL4 is a pain (and has no real path towards hardware graphics support). I'm excited to keep playing ... and figure that it'll be something that I do over the next year. -- "`$work`: * reaping the joy of automating a bunch of infrastructure by bringing up a few new instances of our app in various geolocations for local use there. Super satisfying seeing the work we put in ahead of time pay off. (We knew a few months ago we'd absolutely have to do this, so it was just a case of when not if.) `!$work`: * Monthly pub quiz with family * Finally got the spare Microserver booting reliably from the SSD (… by making it boot from USB which then loads everything from the SSD. Three cheers for grub.) which means I need to invest some time into making everything run on the server now. * Flying to Madrid on Friday for a long weekend visit. First time visiting Spain 🇪🇸, really looking forward to it. (Not taking a laptop 🙃) -- "I like this format, gonna steal it :) -- "Hah, more than welcome to. Fairly sure I'm just regurgitating prior art from other people on these threads previously. 😁 -- "This week I'm preparing to launch [Octobox](https://octobox.io) on the GitHub Marketplace and start building a sustainable business around the project. -- "Just wanted to say that - Octobox is fantastic! -- "Very exciting! Good luck :) -- "And it's live! https://github.com/marketplace/octobox -- "`$work`: - finishing a symbolic execution engine for a client's custom programming language; need to add more primitives, and add my computation traces to an actual SMT. - assessment work - writing some templates for our findings, some sales engineering and client meetings - Talk on blockchain security `!$work`: - **finally** finishing pattern matching in [carML](https://github.com/lojikil/carML) - adding some more threat hunting items to [wolf-lord](https://github.com/lojikil/wolf-lord) -- "How did your client end up with a custom programming language? -- "believe it or not, it's surprisingly common in the blockchain space, esp wrt validator languages for proof of authority, as well as for \"novel\" smart contract languages. -- "More zine work this week, this time both writing and recruiting. I also finished up my Hackers pager guide last week, but want to make an edit to include a PDF or two to make things easier for the reader to print out decals. A bit less technical, but I also want to get my remaining stereo equipment set up and vinyl added to my shelves. I probably have nearly 2000 records in the shelves already with 1000 to go. I only have the turntable, reciever, and cassette deck set up right now. Minimally I also want to connect up the minidisc and maybe a reel-to-reel if I can figure out which one of these giant bastards works. -- "Damn, thats a wild vinyl collection! enjoy :) -- "Thanks! I've been collecting for about 12 years but haven't bought very many in the last 4. It's taken a long time to just get this many in the same room at one time. -- "Wow that's impressive! Nothing beats the fat organic sound of clean vinyl on a good record player! Way too space intensive for my blood though, I've pretty much standardized on lossless CD rips :) -- "Interestingly enough, I have quite a few albums that don't seem to be on CD or anywhere else! Finally organizing everything really puts the quality into perspective. One bad scratch and it feels like the whole album is worthless. Luckily I still have some deduplication to do, but I've already found that none of the 3 copies of Rumors I have are playable. -- "Oh I hear you! It's striking how quickly music falls out of print and becomes otherwise unavailable. I've been ripping my entire media collection to lossless of late, and I had more than one acquaintance tell me to let go and just use Spotify et al. Except that you don't have to look very far *at all* to find whole genres of music that Spotify doesn't provide. Heck there's even a bunch of stuff from when I did college radio in the 90s that's just about un-findable. -- "A curated reading list for programmers on the topics that lie at the intersection of tech, politics, ethics and society. I'm currently writing down what I consider mandatory readings to get up to speed with the current discourse but soon I will be done and I hope to crowd-source more content from the communities if the ball starts rolling. -- "I'll probably continue to play with optimal compression of various formats. After releasing the new version of BriefLZ (compression library) with an optimal compression level, I used that in an example of the same for LZ4 (see [discussion](https://encode.ru/threads/3033-blz4-and-bcrush) over at Encode's Forum if interested). I made one for CRUSH and Snappy as well, but they are all dreadfully slow, so mostly of theoretical interest. -- "Going to deploy the next iteration of my personal wiki (https://lobste.rs/s/ord0rg/does_anyone_else_keep_their_own_knowledge#c_cxecdn). I think everything is ready, but I have to generate migration scripts (I let Yesod do automatic migrations on my home machine, so I now have to reconstruct them somehow). I've also been poking at my regex to bytecode compiler (https://lobste.rs/s/amaftk/what_are_you_working_on_this_week#c_tvpswu). There's a lot of features a real library needs that I don't have yet: `{0,4}` style repetition, shorthand character classes, the ability to handle non-ascii text... -- "This week I'm hopefully wrapping up my series of blog posts on monitoring/alerting using [Prometheus](https://prometheus.io/), [Grafana](https://grafana.com/), and [Alertmanager](https://prometheus.io/docs/alerting/alertmanager/) on Kubernetes. I've got all the code deployed, I just need to write the final blog post in the [series](http://mattjmcnaughton.com/post/slo-implementation-part-0/). I've learned a lot and had a lot of fun working on this series, but I'll be glad when its done and I can move onto some other [personal-k8s](https://github.com/mattjmcnaughton/personal-k8s/projects/1) projects :) Also, a question for the community that I'll be researching a bit more this week :) Currently I'm running Ubuntu on my MacBook Air, but I'm thinking of investing in a laptop with hardware more built for running Linux (i.e. Thinkpad, System76, Dell XPS, etc.). Any recommendations for a laptop? Priorities are 1st class Linux support, lightweight, good battery life, and powerful enough to run a VM (although it doesn't have to be super powerful... I have a desktop for when I need to do more heavyweight stuff). Thanks for any tips!! -- "You likely already know this but choose a laptop with either Intel or AMD graphics chipsets. Much better choice of window environments and easier configuration under Linux. -- "* Final edits to a podcast that should be released tomorrow (I think). * Sprint #2 (of 4) for our big \"migrate from magento 1 to magento 2\" project * Get over this head cold * Edit my first draft for a pilot of a radio show I wrote and want to produce in the new year -- "Which podcast? Always looking to add podcasts from fellow lobsters to my feed :) -- "This one is called [Mr. Rewatch](https://mrrewatch.com). Its a recap show about Mr. Robot (and Mr. Robot related stuff). -- "My computer completely died last week so I'm setting up my backup for the interim. It was already bad five years ago, so can't do much besides answer emails, but it'll tide me over until Black Friday. Also need to update a talk on it. That will be challenging. -- "Writing Web Portals to manage user identities for a very large organisation in the UK. Writing web stuff 100% *not* my 'day job' but needs to be done, and there's no-one else to do it... -- "I'm working on the promotion cases for two of my people, one of whom to take my current position, as I am to be promoted upwards, myself. We're also rebuilding the airliner in flight, as it were, as a catastrophic miss in communication from the business side of the house to engineering has us working on our capacity testing for our busiest time of the year as the busiest time of the year has already commenced. Thankfully, my team is excellent, and we work well together, and we're surviving, but hopefully my increased scope of responsibility will allow me to prevent these sorts of fuckups in the future. Otherwise, I'll be editing some practice recordings in Logic and trying to write some new parts. Old Man Band may be booking time in a recording studio next month and I'm not happy with the state of my contributions. -- "installing [Kubuntu](https://kubuntu.org/) on 5 \"throw away\" laptops to be given out to some folks for whom a low end laptop will be *amazing*. Also continuing to work through Lippman's _C++ Primer_. I don't know if I'm loving the order in which he's presenting things. Feels like he's still teaching \"old world\" C++ but I'm hoping he'll cover RAII and other modern features later in the book. If anyone has any recommendations on a good *from scratch* book on Modern C++ I'd love to hear them. _Modern Effective C++_ seems awesome but I needed more of a reminder of how the basics worked to start since it's easily been 15+ years since I've used anything other than Python/Ruby or the like. -- "I personally also tried to start with C++ Primer, but eventually went to \"A Tour of C++\" which was much better for starting out and covers modern C++. -- "Thanks for the recommendation this seems *MUCH* more what I was looking for! -- "This week we're attempting to finish a web application for a local Real Estate company. After that we're maneuvering into a modification of the Moodle application/rebuilding a wordpress theme. Wordpress theming isn't always fun, but it brings in the beans. And it definitely feels good to get all the plugins this client was using out. -- "Working on data services for an app prototype using [postgREST](http://postgrest.org/en/v5.1/) and [react-admin](https://marmelab.com/react-admin/) via the excellent [subzero postgrest starter kit](https://github.com/subzerocloud/postgrest-starter-kit). postgREST really is an amazing piece of software, and the starter kit not only cuts out a lot of setup boilerplate but also provides a lot of really useful structure, plugging in [openresty](https://openresty.org/) so you can pre- and post-process API requests & responses. Having to do a bit of plumbing getting the postgREST adaptor working 100% with the latest react-admin version, but it's well worth it - in about 3 days I've done what would have taken weeks not that long ago. Sure, within a decade or so I could have churned out a Rails or Django admin backend mostly automatically, but doing it this way means you have a super-flexible, rock-solid API to use in the actual app pretty much for free, and can then do most of the admin system declaratively using react-admin, which seems a lot more easily configurable than the straight-HTML admin tools. Pretty great. -- "Continuing my work on my rust MT940 parser implementation using pest. For anyone wondering, I tested nom, combine and pest and so far, pest is by far the most usable out of all of those. And yes, this is a spare time project. I parse bad banking formats in my spare time. What am I doing. -- "I’m trying to figure out how to get our developers (and anyone else who can write code) interested in Advent of Code. For the past couple of years I’ve attempted to get people enthusiastic about it but so far it’s only really been me and one other colleague who have participated, out of perhaps 200 possible. Competition isn’t really something anyone is interested in, which is fine, but it’s great fun and excellent for learning, IMHO. Any ideas appreciated! -- "I'd be interested in this too. I haven't been able to finish in time yet, but having a few more people doing it with me would be really motivating. -- "I'm currently reading through [The Rust Programming Language (2018 ed.)](https://doc.rust-lang.org/book/2018-edition/foreword.html). It's a beautifully designed language. I'm excited to get to try it out once I finish the book. I'm a bit rusty with development as I haven't used any languages in a few years. I want to get back into it. -- "Friday is my last day at my current job, so I'm tying up loose ends and getting all of my work transitioned to my coworkers. Fortunately I've been on the bug triage team for a couple months, and it's pretty easy to hand off those cases. New job starts December 3rd, and I'm really excited about it. 100% remote, and I'll be working in GIS, which is 100x more interesting than my current job. Outside of work I started working on a [library](https://github.com/jl2/tlife/) for experimenting with variants of Conway's Game of Life. I want to implement the toroidal variant I mentioned in Friday's \"what are you doing this weekend\" thread. -- "I got the itch to write some Haskell again, so I wrote a [tiny webservice](https://github.com/kisom/whereami); the focus was all on the Haskell part but this week I might try to learn some front end stuff to make the UI a bit shinier. I'm also working through two Udacity courses that are getting me back to learning linear algebra and differential calculus, which I find fun and refreshing. It's nice to have problems to apply maths to rather than learning them in isolation. -- "Continuing to hack on the newly released JSON lib for Haskell: Waargonaut (https://github.com/qfpl/waargonaut). Have to clean up the error messages a bit, and add some extra sauce to the API. It's coming together nicely, but I need more users to help me really streamline the API. Working through the Coursera course on Machine Learning. It is a spectacular course so far and I'm learning heaps. It's all a bit of an uphill battle given my near total lack of mathematical ability. But hey, that's what I'm there for. ^_^ -- "I've recently been working on a fun little project, a stub server written in Elixir and Phoenix: https://github.com/yawaramin/stubbex I think it's pretty cool, but as I've been finding out talking to various people, stubbing is a _very_ contentious topic and there's a lot of disagreement whether it's a good way to write reliable tests. All that said, it's been fun and educational for me ... so I'll keep hacking on it. -- "* Another contribution to an OSS project on behalf of work was accepted, but this time, a release is _months_ away instead of _days_ away. So, we're scoping out the effort necessary to maintain an internal fork with a faster release cadence. * [Abstractions conference](https://abstractions.io) planning is really ramping up - we got our first sponsor last week and should hear from a few more this week before commencing a big push to get on 2019 budgets. * I'm investigating build a CLI conference sponsorship contract generation tool because I've really come to dislike Google Docs for contract writing. I'd welcome any pointers to tools that exist that could facilitate this. I'll probably bang out something with Ruby + ERB & LaTeX + Pandoc in an evening… -- "Still working on https://therunbooks.com/doku.php -- "What are you doing this weekend? Feel free to share! Keep in mind it's OK to do nothing at all, too. -- "Next weekend I'm off to Sweden for a week of training so I'm looking at things to do. We're near Stockholm and a lot of things seem to go on there... I might also have a look at the weather and go shopping if they predict lots of snow. We had a discussion about innovation at work and got some time. I'm going to try looking at brainstorming tips and ways to create a PoC in short time -- "I'm BOOOKED - I've got some WordCamp videos to edit, NaNoGenMo text generators to write, bugfixes/tweaks on my twitter bot (for some reason the cron module isn't working), plus a family dinner & a Star Wars: Age of Empire game! -- "I just [finished my NaNoGenMo](http://boston.conman.org/2018/11/09.2) (thanks to the Internet being down at home) so now I have the whole weekend to do ... I don't know. -- "My younger son's birthday party is happening, and we have family in town for that and they're staying through Monday to visit. We've also got a new release dropping at work on Tuesday, so I'm sure I'll be checking in on that some too. Some day I'll actually have free time to work on my personal projects again. Some day. -- "Spending some quality time with the girlfriend, its a short visit because we both have plans on Sunday (that's a lie, _she_ has plans, I am going to sleep). Hopefully on the bus ride I can edit and revise my first draft of a radio play I want to produce/direct early next year. -- "Preparing to finalise my transition out of tech. On Wednesday I travel south into England for a bit for some tests for my new job, and as long as I pass these mostly formalities, I'll be starting in my new industry in January - leaving me free to pursue foss work on my own terms, rather than spent my brains development budget on what my employer wants. -- "May I ask what you're moving into? If it's intentional that you didn't mention it, that's fine, but I'm curious. -- "I'll hopefully be starting as a trainee air traffic controller - it's not really that I didn't mention it intentionally as felt it was unimportant. What matters is that when I do work on software in the future, I can instead focus on doing software stuff I enjoy rather than what I'm told to do. -- "congrats on your new found freedom! -- "Is it the work itself you don't enjoy doing? Or all the externalities and silly walks introduced by the business aspects of our industry? Said another way, will you still hack on things for fun after you transition? I love my job, but even so look forward to retiring someday, so I can spend large blocks of time playing with whatever I want whenever I want, and also taking care of myself even better than I do today. -- "I found that working in tech wasn't as much fun as I'd hoped. I think a fair chunk of it is that nothing is ever as fun when you're doing it for someone else as yourself. I'll still continue to hack on stuff on my own terms for sure. The flip side is that my new role will be doing things that are completely orthogonal to software, so it would be the case that no employer or task in this industry is really comparable - the benefits and tradeoffs are all different. -- "Well, I'm sorry to hear it didn't work out but I hope your new career is everything you think it will be and more! I sometimes wonder if having come into the industry SO early as I did gives me a different perspective. There's still a big part of me that secretly thinks \"Seriously? You're willing to PAY me for this? HONEST?\" :) -- "I will write one or two sections for the book I am writing currently. During the day it's family time and on Saturday we visit friends. -- "working mostly, and in my spare time writing a new article about the SKS PGP keyservers. -- "quite with offline life but I hope to get a few hours to invest in my new hobby project; After getting inspired by [Ultimate Writer](https://lobste.rs/s/rzhxfu/ultimate_writer_open_digital_typewriter) I've ordered a [9in7 e-ink display](https://www.waveshare.com/9.7inch-e-paper-hat.htm) only to find out that it uses a completely different controller than the smaller models and software support seems to be almost non-existent so far. So I started hacking and can now do pretty much anything with it in custom code and try to implement a fbdev driver in the Linux kernel for it. My C is quite rusty and its my first endeavor in Linux kernel space, so we'll see how it goes. Has been fun so far :) -- "Wow, what a cool project. I would love a laptop with a good keyboard and e-ink display for running vim + other cli tools. I hope you plan to post about your experiences working with this particular panel + controller, since I'm interested in using something that size now that I know they exist :) -- "I'm gonna try to finish up a mergesort algorithm written in MIPS assembly for a class project. -- "My ideal plan includes homework and the midterm for the class \"Linux System Performance in the Cloud and Data Center.\" This is mostly about getting myself to sit down and learn more about tools like perf, systemtap, and ebpf. In reality, probably the same time constraints that kept me from doing that before will continue to do so. -- "Skiing Saturday. I haven't been up since opening weekend a few weeks back, but it's been snowing a lot recently, and they're opening several more runs. Not sure how far I'll get on this, but I'm going to reuse some old code and implement a new (to me) version of Conway's Game of Life. The idea is to revolve the regular 2D grid around an axis in time, keeping a history of the previous grid state trailing behind the current grid, in the shape of a toroid. After one revolution it will start to interact (or just replace) the grid elements that it created previously. And I need to catalog my library using the book database/scanner I've been working on. I think everything's in place as far as the software and code goes, I just need to sign up for an isbndb.com account and start scanning my book's ISBN barcodes. -- "Assuming a toroid is the same as a torus, and assuming you don't mind individual cells being \"smaller\" along the inside of it than the outside... it would seem that you could make a \"finite but boundless\" field for your GoL cells to play on. So, a glider would loop around and around on the torus forever (well, until it interacts with some other cells!). With that idea in mind, I'm not perceiving your history of grid state idea. Help? -- "I made [this animation](https://vimeo.com/56307994) a while back that demonstrates what I mean. In this version of life 2D square cells are replaced by 3D cubes, and instead of replacing the grid state each iteration, the new grid state is translated along the Z axis into a new empty grid. The old state remains in its old position. In the new version I have in mind, instead of growing forever along the Z axis, the 3D grid will bend back into itself in a torus-like shape, eventually getting back to its starting place and interacting with the old states. Some ideas I'd like to explore include rotating the grid 90, 180, 270 degrees over time. For the initial implementation I'll use something like a 20x20x200 3D grid and treat it like a circular buffer for computing each iteration of the GOL. Then for the rendering I'll map that grid into a torus. -- "ohhhhh, your XY plane of cells is a cross section of the torrid, rather than being painted onto the surface of it. Got it! Neat animation. -- "Trying to get a “new” OPENSTEP box running at home — bought a $30 PC from eBay. -- "I will write one or two sections for the book I am writing currently. During the day it's family time and on Saturday we visit friend -- "Taking a fucking break after having a relapsed episode of depression. -- "Oh man, that sounds rough. Hope you're feeling better soon. -- "* watching game 2 of world chess championship. * Getting ready for Thailand 2 week trip Nov 26-Dec 10. * Cleaning house * Watching friends dogs at my.place while goes shopping. Gonna spoil them! -- "Working through more of the, thus far, excellent Machine Learning course on Coursera. The moon shot is to be playing with things that learn how to play games. :D It's so NEAT. -- "Some of my family is coming for a visit and we're going to go axe throwing. Looking forward to it. Reading [The Legacy](https://www.goodreads.com/book/show/33988040-the-legacy), by Yrsa Sigurðardóttir. -- "We have the LA Civil court system coming online Tuesday, so I'll be working on that. I'll take my birthday is off, but otherwise it making sure we are ready to go out the door. -- "Learning GraphQL, and writing an application that uses it in some capacity. -- "Time to get myself a little less rusty by learning me some Rust. -- "My company is finally (about 3 months overdue now) going to celebrate our launch with a small party for family and friends. It's funny how quickly time flies when you're try to get a business off the ground. -- "Learning TLA+. -- "That's the correctness prover, right? What do you plan to use it for if you don't mind my asking? -- "It's just a spec language that lets you do model-checking (easier/automated) or proof stuff (hard/manual) with different levels of confidence. Most push it for model-checking so you can quickly find flaws in prototype designs. Just wanted to mention that distinction since provers require lot more expertise and time commitment. Model-checkers have better cost-benefit analysis, esp if protocols or concurrency related. -- "Teaching myself C++ and playing around with [Pygame Zero](https://pygame-zero.readthedocs.io/en/stable/) - really enjoying how simple it is to create sprites and move them around the screen! -- "Watching Magnus and fabi play chess. -- "I'm porting the compute-intensive parts of my genome analysis code from Java to C++ to run on my [CPU/GPU compute cluster](https://lobste.rs/s/za9uax/what_are_you_doing_this_weekend#c_e7phje). Except for some CUDA code, the last time I wrote anything in C++ was prior to standardization. I spent two traumatic evenings re-learning the syntax and discovering the differences between the standards. I am surprised at the number of changes to C++ over the years - I like the new language features and additions to the STL, but it also made it difficult to dive back in - too many ways to do things. I've finally got a single-threaded command line program. Next steps are adding multi-threading support and adding my CUDA kernels. Then on to testing and benchmarking. -- "I picked up a \"but it's a good deal...\" [old analog oscilloscope](http://w140.com/tekwiki/wiki/R7903) last weekend, and spent the week ordering way more money's worth of kit to do some testing and characterization on it. So going to spend a chunk of this weekend fiddling with new bits of test equipment and hopefully getting an idea of what works and what doesn't in the scope. Also will likely check out the second day of [SeaGL](https://seagl.org/). -- "I'm back in Munich again after quite a lot of travelling recently, so the first thing I want to do is to clean and tidy my apartment. I'll be meeting friends today (Saturday) for lunch and then a drink in the evening (with perhaps a little shopping in-between). On Sunday, I'll do some work for [Munchner Tafel](https://www.muenchner-tafel.de/); I'm helping them to integrate with Salesforce so that they have an easier time doing all the HR things they need to do. -- "I suppose I will be diving into react and responsive layouts because my understanding is about 3 years behind. I also might be re-writing a discord bot because it's a dumb bot as of right now and it's a good way to learn for me. -- "Taking some well-needed R&R by visiting home - cooking with parents, watching my brother's basketball games, and maybe doing a crackme or two. Currently amid exams at uni and nearly all of my time this past week has been spent studying. The two I'm taking this coming week are for my easier classes, though, so I think I can get by with just an hour or two of studying daily. -- "Attempting to install Ubuntu 18.10 on a 2010 iMac which has become unbearably slow -- "Have any plans for the weekend? Feel free to share! -- "Having ripped some of the kitchen out to fit a ginormous fridge/freezer in, I now need to buy some more cupboards/drawers that fit around the behemoth. This will involve a trip to IKEA. Made bearable by the fact I can eat meatballs for lunch whilst there. Also need to get my second microserver reliably booting from an SSD in the ODD bay, currently it needs a RAID array of one device recreating by hand on every boot to get it to use the SSD as a boot drive which is … tiresome. Highly tempted to just swap the SATA connections for HDD slot 1 & the ODD bay over. It'll happily boot from HDD slot 1 without the RAID trickery. -- "Local 2600 meeting is tonight, so I hope to play around with some licensed packet radio. Otherwise, more writing for me :) -- "Have you tried out a HackRF? It was pretty amazing to play with. -- "I have not, I can't begin to justify the cost to buy one, and don't know anyone with one. I know the author of Chattervox, as he has been coming to the 2600 meetIngs. We've been getting a little network working every first Friday :) https://github.com/brannondorsey/chattervox -- "Progress report: got my [MPD client](https://git.janouch.name/p/nncmpp/) where I wanted to, currently teaching my [bash/zsh directory navigator](https://git.janouch.name/p/sdn/) to save and restore runtime configuration. It'll be useful soon. By the way, C++ STL streams really suck with how you can't get at the fileno. I think I'll be either toying around with Borland Turbo Vision (yes) for work or writing a basic terminal vi-like text editor in Go. Just to test a few things---I haven't written a text editor from scratch before, and I'll need a text editing component for a GUI framework later. Qt Creator 4.8 will be great enough for me to not care about true IDEs for a while. The LSP integration is a big thing: hello Go, hello Vala! No life for me yet. Life has been postponed until about next year. -- "Interestingly, sdn exposes a bug in LLVM's libc++ std::basic_string that I've reported: ``` #include struct big { int bloat[4]; }; using big_string = std::basic_string; int main () { big_string a; for (int i = 0; i < 100; i++) a += big {}; return 0; } ``` ``` $ clang++ -stdlib=libc++ reproducer.cpp $ valgrind ./a.out ``` -- "So after some trouble with Amazon delivery my Ender 3 will be coming this weekend This has given me some time to mess with blender and create a few simple projects to try printing out I would like to eventually recreate some of the classic Counter-strike maps I created 10+ years ago :-) -- "Home: I am finishing up refinishing my wood floors. I did most of the sanding last weekend. I have some small spots left around the edges in some rooms plus the staircase. Work: I am trying to edit some papers that I have been writing for some time. Hopefully I get enough time to sit down and work on them. -- "* families belated birthday dinner for me :) * rest! -- "Working on an article on what happened to network transparency in X, and hopefully also getting [Arcan network transparency](https://github.com/letoram/arcan/wiki/Networking) usable at about the same time. -- "I'm planning on spending some time learning how to build websites in F#/.NET, as a means of trying something other than Go that seems to be deployable across a decent number of platforms (not as many as Go, ARM support seems to still be WIP), but so that I when I'm working on my personal wiki software, I'll be able to use my software both on my personal linux server and on my Windows work laptop. Other than that, going to enjoy some downtime and catching up around the house. -- "Going out with friends tonight (It's the release of the Christmas brew today... I intend on being one of the few sober people in the bar) Tomorrow it's the yearly Christmas dinner with my old friends from school Sunday it's boardgames with my friends from Uni. And some relaxing in between =) -- "I'm flying to Chicago to see a friend's band play on Sunday night. I intend to eat all of the things, perhaps just walk around all day, perhaps a visit to the auld stompin' grounds. This is my second weekend in a row of solo travel (Montreal last weekend), so I owe my wife a couple of weekends to herself without the kids, but that's OK. -- "[Support for loops](https://github.com/Bystroushaak/tinySelf/issues/64) in my toy programming language [tinySelf](https://github.com/Bystroushaak/tinySelf). I am kind of stuck on this one, because it is \"bytecode and stack\" programming language, and cycles are just messages to block (anonymous \"lambda\" object closure) repeated as long as the block is true or false. ``` [a = b] whileTrue: [do something] ``` \"Primitive\" methods (implemented in \"native code\") can't get result of the block evaluation, and there is no support for jumps in bytecode (also I consider this quite inelegant). And implementation with recursion will eat up all stack without tail call optimization, which is something I want to avoid right now. So, I am not sure how to implement it. I am kind of inclined to use forth-like instruction stack, which will have precedence over bytecode-crunching-loop, so primitive would be able to put there instructions like \"get result of the evaluation of this block, evaluate block with body and then call again this primitive\", but I did not yet decided whether this is what I want. So, my weekend plans are to think about this, maybe draw few diagrams, or try few approaches and decide what suits me best. Other than that, I would also like to do some writing, I have some stories and blogs which I would like to finish. -- "Oh, interesting puzzle. Would it be hard to implement TCO? It seems like the right answer. -- "After three months in Odessa (wonderful) and a weekend in Tbilisi (wonderful), I am returning to London (sigh) today for a month. I’d like to continue working through the TLA+ book, but I am currently stuck on the knapsack problem in the third chapter. Would be cool if there were some study group for the book, or some more incremental exercises so I can learn by doing more. If anyone can help with this I’d appreciate it. -- "Going to a Wayne's World scripting party, where we spend some time getting drunk trying to remember all the dialogue from the film, then watch the film to see how close we were(n't). -- "Damn. Sounds fun. Where do people that do this sort of thing live? -- "Toronto. It was the first one I went to and it was a blast, I'm probably going to host my own soon. -- "Me and my wife and kids are meeting my sister and her husband and son at the Ren Faire for the weekend. If the weather holds out, it'll be a lovely time for all. -- "I'm working on memes for a new social news site built in Arc. (Yes, that [Arc](http://paulgraham.com/arc.html).) I've reluctantly concluded that memes are a form of advertising, and that every successful endeavor naturally generates them. And while it seems somewhat lame to try to generate your own, they at least amuse me: https://imgur.com/cDQyhln More seriously, it's been interesting to consider how to displace Hacker News. I think it's time. For example, [this](https://lobste.rs/s/nhrcwg/let_s_pretend_this_never_happened) is on lobsters' front page, but mysteriously absent from HN's. I was pretty shocked about that, and I'm speaking as someone who used to sift through hundreds of HN stories for gems. The current plan is not to fight HN directly, but to transcend them. There are two facts: 1. Reddit's moderation tools suck compared to HN's, and 2. no one has made something better available to the masses. So that's what I'm doing. On Lambda News, you'll be able to make your own lambda. (lambda : LN :: subreddit : Reddit.) Why would you do this? Because you'll be able to do the same things that the HN mods do: move stories up and down as you see fit; curate your own front page; change titles of stories to whatever you feel is a better fit; re-rank people's comments regardless of upvotes; ban them, slowban them, or muzzle them by restricting them to two comments every 3 hours. And if you're a business who wants to establish a brand presence, that's fine. From a user's perspective, you'll get the benefits that HN affords you: You can make a profile for yourself (which is strangely absent on Reddit). You can compete in the arena of words, and climb to the top of the rankings with nothing but your charm and wit. And, since I intend to be the first person making lambdas, most shit commentary will be ruthlessly purged. I expect /l/memes will spring up pretty quickly, though. From a technical perspective, it's been interesting bootstrapping the endeavor by riding off of pg's old arc 3.1 codebase. I've [ported it to JS](https://news.ycombinator.com/item?id=18347609) and it's held up quite nicely. React is a first-class feature of Arc now. You can write `( href: \"https://lobste.rs\" \"Lobsters\")` to make a link to Lobsters. That compiles to `React.createElement(\"a\", {href: \"https://lobste.rs\"}, \"Lobsters\")`, which of course becomes the good old `Lobsters` that we know and love, thanks to `ReactDom.renderToStaticMarkup()`. Speaking of massively long names, it's so nice to write `(print:html ( href: \"https://lobste.rs\" \"Lobsters\"))` instead of `ReactDom.renderToStaticMarkup((Lobsters));`. Macros also make it possible to use React without having to make a class for every single component, which is at least 2x less code. (I wouldn't be shocked if it ends up being 10x less.) It's also just as maintainable. The WIP screenshot is pretty unassuming: https://imgur.com/0Ba0NZN I don't expect most people to care about it until it goes live. But if you happen to want to chill with me in Discord and chat about Lisp or life or [your favorite book](http://libgen.io/book/index.php?md5=0E3B83EAA138E24A3FB691AE1FFFC523), I set up a Discord server for LN: https://discord.gg/qaqkc9z -- "The strength of HN is its large community, esp key people in projects or historical work. You have to get most or all of them to even match HN much less transcend it. Many good designs and stuff have been posted on HN itself inviting folks to alternatives. They didn't work. I doubt you'll hit Reddit or HN level. However, you might be able to attract your own community defining a new style like what happened with Lobsters. We co-exist nicely with them at this point with each site being complementary. Yours might be the next one on our list. -- "First half marathon on Sunday. I'm nervous and excited. -- "I'm going to a \"surrealist soirée\" with my rented black-tie tuxedo and some kind of strange hat or head makeup that I'll figure out tomorrow... -- "No plans in particular. I've been really busy the last few weeks, and everything's finally settling down, so mainly just relaxing. I'm going to read a few more chapters of [\"How to Lie With Maps\"](https://www.amazon.com/How-Lie-Maps-Mark-Monmonier/dp/0226534219) Arapahoe Basin opened a couple weeks back, so I may go up Sunday afternoon and get some runs in. And I'd like to get back to work on my book scanning project. There are a few loose ends I need to tie up with the code, and then I just need to take pictures of all of my books... -- "Now that Flickr is reverting to a shutterbug site, instead of ad funded cameraphone backup service, my [Rustwell](https://github.com/ocschwar/rustwell) project is more relevant to my life and other people's so I'm going to give it more love this weekend. -- "I'm picking up my election day materials. I'm probably one of the few Crustaceans that's in elected office: Judge of Elections for my district! It's a start on learning more about how elections are conducted. The election on Tuesday will be my second in my position. TL;DR VOTE TUESDAY NOVEMBER 6 and you'll see me if you live within ~500 yards of me, haha. -- "I'm doing a few things, all of which I'm fairly stoked for: - Helping a friend learn React - Learning more Go for myself (I'm building a web api and bot with it at the moment) - Starting a game with Phaser for [Github's Game Off](https://blog.github.com/2018-11-01-game-off-2018-theme-announcement/) -- "I'm trying to come up with an idea for [National Novel Generation Month](http://boston.conman.org/2018/11/01.1). It will be hard to top [my 2015 entry](https://github.com/spc476/NaNoGenMo-2015) wherein I wrote a partial MS-DOS emulator to [run Racter against Eliza](http://boston.conman.org/2015/11/17.1). -- "Reading up on LLVM-IR with the goal of being able to link multiple files and eventually add support for inline ASM to a programming language. -- "I'm writing a broadcaster for the rss feed of my blog. Currently Twitter is targeted. Previously I used Microsoft Flow, because I wanted to try the paradigm (dataflow blocks based, like IFTT). However nice and handy Flow could be, it is incredibly buggy, I even failed to connect Microsoft services with it. I connected support, but it takes more effort than to write what I need in real code. I have checked the possible ways to solve it, and I've chose C# + Azure Functions (recurring) + Azure Table Storage to store already processed items. I've checked AWS, and Azure as well, but this is the cheapest way to solve it. (BTW: AWS Lambda supports dotnet core nowadays. Nice!) The Twitter API access activation is full meme. Last night I almost finished it, and have found some nice libraries and lots of ... not so nice ones. :) Not strictly technical: Then I'm helping an elderly friend of the family who is in hospital now by getting a tablet with internet for him. Hopefully the mechanic finishes the repairs on my car today so I can take it to him. -- "I'll be getting a brand new HVAC installed along with sleeping this week's stress away. -- "I am repainting the interior of the hard top for my Jeep and adding some sound-deadening headliners to make driving a bit more comfortable this winter. I'm apparently also providing intermittent integration support for a metagenomic analysis pipeline - tying together two broken third-party applications with shell scripts to make one big (working?) application. Every time I think I have a weekend off...you know the rest. -- "I'll start going through the nightly version of the Rust Book. My Rust has gotten a bit rusty, so I figured I'll review it -- plus I never read the 2nd edition from cover to cover. November is \"marraskuu\" in my native language, so I declared this month \"marrustkuu\". Yes, I know how bad that was. -- "Contributing to some Nim libraries and tools. -- "Have any plans for the weekend? Feel free to share! -- "I'm going away for the weekend, we planned a trip to Holland with a couple of friends. I don't thing much productive things will happen, at least not in the classical sense. But I feel I really need this. Lately I get the impression my mind is always busy, and I need some time to relax and recharge my emotional batteries. The one thing I took with my is my trusty Kobo mini with 'Writing An Interpreter In Go' by Thorsten Ball. But I'm not completely sure I'll get to it. -- "Don't try. Take the time for yourself! -- "When I'm in Holland I love to go biking around in the polder landscapes. For example in Amsterdam the path that goes from Amstelpark south through Ouderkerk aan de Amstel and then something like [this route](https://www.landschapnoordholland.nl/files/2018-07/Fietsen%20rond%20De%20Ronde%20Hoep.pdf) (or whatever, it's all good). It's so quick to get out into beautiful surroundings. Mm, I miss Holland... -- "I'm all the way down in Limburg, it's very nice and quiet here. Lots of places to discover and while it's cold at night, the weather is perfect for a walk during the day. I only went to Amsterdam twice, it's definitely on my list to visit again! -- "Expanding my [silly take](https://github.com/varjagg/demon-second-kind) on [Lem's Demon of the Second Kind](https://everything2.com/title/Demon+of+the+Second+Kind), to handle special case of monkey typewriting Shakespeare. BTW if anyone has an old tape teleprinter they want to get rid of, do let me know. -- "I'm working on a Phone-to-Pnut app using Twilio as glue. SMS is working, but I'm adding calling in to the social network. The idea is just to be able to record a short message and post that as MP3. -- "Friends are coming over to play board games. I'm making chili. Sunday will be spent reading and trying to get MVS working in the Hercules emulator. -- "I’m holding a playtesting session for a game I’m working on with some friends (as part of a course at UofT). Looking forward to getting some thoughts on it as this is our first “official” session. Should be interesting. Also I _might_ make banana bread :) -- "What kind of game is it? A physical game? -- "It’s a VR game. -- "Setting up NixOs with xmonad on my new t570. I haven't had any extensive luck with ricing xmonad in the past but i'm pretty determined to give my xmobar a polished look -- "I use XMobar for work and Taffybar for my personal laptop. Both are very good! -- "Would you, perchance, have any interesting configs you’d be willing to share ? -- "XMobar: ``` Config { font = \"xft:Bitstream Vera Sans Mono:size=10:bold:antialias=true\" , commands = [ Run UnsafeStdinReader , Run Weather \"YMLT\" [\"-t\", \"C\"] 36000 , Run Network \"tun0\" [\"-t\", \"(VPN KB)\"] 20 , Run Network \"wlp6s0\" [\"-t\", \" KB|KB\"] 20 , Run Memory [\"-t\", \"Mem: %\"] 20 , Run Cpu [] 20 , Run Com \"sh\" [\"-c\", \"iwgetid -r || echo no connection\"] \"iwgetid\" 10 , Run Date \"%a %-d %H:%M\" \"date\" 10 , Run CoreTemp [\"--template\" , \"C\"] 50 ] , template = \"%UnsafeStdinReader%} {%tun0%%wlp6s0% | %cpu% %coretemp% | %memory% | %YMLT% | %date%\" } ``` Taffybar: ```haskell import System.Taffybar import System.Taffybar.Information.CPU import System.Taffybar.Information.Memory import System.Taffybar.SimpleConfig import System.Taffybar.Widget import System.Taffybar.Widget.SNITray import System.Taffybar.Widget.Generic.PollingGraph memCallback = do mi <- parseMeminfo return [memoryUsedRatio mi] cpuCallback = do (userLoad, systemLoad, totalLoad) <- cpuLoad return [totalLoad, systemLoad] color c s = \"\" ++ s ++ \"\" main = do let memCfg = defaultGraphConfig { graphDataColors = [(1, 0, 0, 1)] , graphLabel = Just $ color \"009aee\" \"mem\" } cpuCfg = defaultGraphConfig { graphDataColors = [ (0, 1, 0, 1) , (1, 0, 1, 0.5) ] , graphLabel = Just $ color \"9a00ee\" \"cpu\" } let clock = textClockNew Nothing (color \"ee9a00\" \"%a %b %_d %H:%M\") 1 workspaces = workspacesNew defaultWorkspacesConfig note = notifyAreaNew defaultNotificationConfig mpris = mpris2New net = networkMonitorNew (color \"ee009a\" \"▼ $inAuto$ ▲ $outAuto$\") $ Just [\"wlp3s0\"] mem = pollingGraphNew memCfg 5 memCallback cpu = pollingGraphNew cpuCfg 5 cpuCallback bat = textBatteryNew \"$percentage$%\" tray = sniTrayThatStartsWatcherEvenThoughThisIsABadWayToDoIt simpleTaffybar defaultSimpleTaffyConfig { startWidgets = [ workspaces, note ] , endWidgets = [ tray, clock, bat, mem, cpu, net, mpris ] , barHeight = 50 , widgetSpacing = 20 } ``` -- "Ha. I use a pretty similar xmobar config myself but your inclusion of the web calendar is a real smart piece of work here. I’m totally stealing that. Thanks man -- "Nice. Here's [my NixOS config](https://github.com/srid/mynixos/blob/master/configuration-thinkpad.nix) for P71 if you are interested. -- "Small world.. I already used your config last night to resolve the challenges I had with the graphic drivers ( kept declaring only nvidia.) Do you have any interesting rice you’d be willing to share ? -- "Continuing work on [Koype](https://indieweb.org/Koype) this weekend and planning to write up a blog post about what features I hashed out. -- "Nothing. And with any luck it will be glorious. -- "Michael Bolton: You were supposed to come in Saturday. What were you doing? Peter Gibbons: Michael, I did nothing. I did absolutely nothing, and it was everything I thought it could be. -- "It seems there are 4 kinds of responses one can expect to posts like this: 1. Programming projects 2. Personal projects 3. Personal projects, and a rebellious desire against the culture of doing just programming projects 4. Doing nothing in particular, and enjoying it. Only 3 out of 4 seem felicitous. -- "HKG to SFO via TPE for next week's onboarding with Square Cash! ✈️ I've readied several books for the ~13 hour leg of the flight. -- "Digging into Xwayland support in [Arcan](https://arcan-fe.com). Previously I've only had wayland support as a 'protocol service' where X comes as a self-contained window where you still run a normal window manager and so on inside that window. Xwayland itself could be run via the wayland protocol service in its 'non-rootless' mode, but their implementation of that has a bunch of sharp corners as nobody really uses it like that. To support the rootless mode, you have to do some really insane stuff. Since wayland never cared about solving the basic stuff like authentication and so on inside the protocol (fantastic), you can't really have their 'extensions' modelling different levels of privilege. Thus the restriction of arbitrary positioning windows in the way X clients require to function properly isn't solved on a protocol level but through a hack wherein the compositor implements an X window manager that uses special atoms to pair wayland primitives with X ones. So wayland mapped 'rootless' X clients abuses parts of the wayland core protocols and then you have a hidden window manager inside the compositor that connects to the proxy X server and patches things up. -- "I fell into the rabbit hole of updating my [custom syslog daemon](https://github.com/spc476/syslogintr) from Lua 5.1 to Lua 5.3. I recently made the decision to use Lua 5.3 [1] and the code in my syslog daemons is ... rather old (10 years old primarily---I wrote it to both learn Lua and how `syslog()` works). I actively use this program, but it really hasn't been updated in 10 years (it does what I want for the most part). The neatest thing about this is I have my system set up so I can monitor `syslog()` in real time---the logs from all my systems at home are directed to a single host, which then broadcasts the information via a multicast IP address. I then set up a version to listen to this multicast address and display the logs in real time (color coded---\"error\" is red, \"warning\" is yellow, \"notice\" is green, \"debug\" is blue, etc.) and on my two main systems I have a dedicated terminal window displaying this information (which I use as a kind of screen saver). Mac OS-X is *very* chatty I've found. [1] Even though it came out a few years ago. I started out in Lua 5.1. Lua 5.2 wasn't compelling enough to change (it was a breaking change). Lua 5.3 *is* compelling enough, but it took me awhile to get around to it. -- "As someone perpetually stuck at 5.1+extensions -- what changes compelled you to do the conversion and lose LuaJIT etc.? -- "The code still works for Lua 5.1 (since we use that work [1]) and Lua 5.3 has been out for a few years. I've updated most of my Lua code to work from 5.1 to 5.3, but not everything yet. The changes aren't much and are things I *should* have done from the beginning but didn't (it was one of my first projects I wrote to learn Lua). The changes to the C code were very minimal---fix a call to a non-existent function (which was obsolete in Lua 5.1 anyway) and two calls to a function that exists only in Lua 5.1 (`luaL_register()` to return a function---a gross hack now that I know more). The most changes are to the Lua code to work around differences in modules between Lua 5.1 and Lua 5.2 (Lua 5.3 modules work the same as Lua 5.2) which is mainly, modules no longer set global variables. Nothing terribly drastic (given how the code was written) just annoying. [1] Initially because that was the version of Lua current when I started there. LuaJIT is not a concern because we are still using SPARC [2] and LuaJIT does not support it. Lua 5.2 didn't have any compelling reasons to change (a new module that was backported to Lua 5.1 and a complete change to the module system that Mike Pall [3] did *not* agree with) so we remained. Lua 5.3 *is* compelling enough to use [4] but it takes time to do the conversion and retest everything. [2] Regulatory requirements for hardware that SPARC is certified for. If we could find PC hardware that meets said specs, we would change, but we haven't yet. [3] Author of LuaJIT. [4] 64-bit integers, binary operators (and, or, xor, not), binary packing/unpacking functions and a UTF-8 module. The 64-bit integers and binary operators are nice for a few things I do, but it's the binary packing/unpacking that is a major win for me, allowing me to replace a ton of C code (which exists to pack and unpack data from network packets). -- "I will probably go on the internet and try to convince people that government intervention in the lives of people is a net negative on society and should be resisted. -- "Good to see you're trying new things. :) -- "* today was my bday * Hiking tomorrow 9am. * A friend who is a piano teacher is having a school recital at 530pm which includes her students. Going to watch. * Play some lichess vs comp. * Sunday visit parents -- "Happy birthday! I'm visiting family this weekend as well :] -- "Thanks so much! -- "This weekend I'm continuing my studies of fundamental tech. Trying to go back to basics and understand each piece deeply rather than continuing to slap things together. Just finished reading \"Managing projects with make\" by Andrew Oram. This was very interesting, I used to think you had to explicitly name each target and build command, but I learned there are suffix rules that can automate many common cases. This weekend I'll continue doing exercises from K&R 2nd Edition to get a thorough understanding of ANSI C. Then on to \"The Standard Library\" by P. J. Plauger, who helped design the standard library. He walks you though basically writing it yourself, with commentary about design choices. If anyone is interested in discussing these kind of things or doing remote pair programming then check out this group: http://frostbyte.cc I started it with people in my area and we do in-person meetups. But we have a shared OpenBSD server and you could jump in with us. -- "I'm at another debating tournament, this time in Cologne :) There's a good chance that I'll get knocked out of the tournament today and won't compete tomorrow, if that's the case, then I'll explore the city tomorrow. If not, then I guess I'll try and win the tournament! -- "Learning type theory. -- "Which book? -- "Benjamin Pierce's Types and programming languages, and The Little Prover -- "I've just started on this one (geared towards Haskell programmers): https://www.reddit.com/r/haskell/comments/8x0gen/gauging_interest_in_a_typelevel_programming_book/ -- "Working on a Google codejam problem. Algorithms/Data Structures are something I know well enough, but it's always been a sticky point that I'm not super confident when a new problem comes my way. Aiming to slowly build up those skills. -- "Contributing to an [open source project](https://github.com/libarchive/libarchive/pull/1061) ;). Testers for the RAR v5 unpacker are welcome! -- "So what is RAR v5? I found [this](https://www.rarlab.com/technote.htm), but I'm not sure how it compares to older versions. -- "The pull request I've linked in my previous comment contains some info about the V5 format. The main difference between V4 and V5 is that they're binary incompatible; unpackers for V4 can't process V5. There are other functional differences, but mostly in an area that is not related to the decompression of files which are stored in the archive, so the unpacker can ignore most of the new features of V5. -- "I'm getting increasingly fascinated with the Nix ecosystem, so I'm finishing the [Nix pills](https://nixos.org/nixos/nix-pills/index.html) articles, doing the exercises. -- "I'm dreaming and speculating a bit about a new software system, combining - the distributed message passing process hierarchies of Erlang/OTP; - the cryptographic event history of Secure Scuttlebutt; - and the simple portable VM style of Lua. I'm also meditating on the various ways of doing flexible control flow—like Common Lisp restartable conditions, Scheme-style delimited continuations, Haskell-style free/operational monads, Koka-style algebraic effects, and the wonderful [Frank](https://arxiv.org/abs/1611.09259)-style suspended command types, and so on... -- "I'll be on Mozfest, feel free to contact me if you are, too. -- "I will be updating my resume and LinkedIn profile. -- "Good luck! -- "Playing with [Racket](http://racket-lang.org), and porting Git's [bash completion script](https://github.com/git/git/blob/master/contrib/completion/git-completion.bash) to [Elvish](https://elv.sh). -- "How is Elvish different to fish? -- "It's quite different. Fish has a clean non-POSIX syntax and sensible UI defaults, but in terms of programming capacity you are basically constrained to manipulating strings and (to some degree) arrays, which is roughly the same as bash. Elvish has lexical scoping, namespaced modules, first-class function values (closures), nestable lists and maps, exceptions, etc. You may want to check out the page on its [philosophy](https://elv.sh/ref/philosophy.html) and maybe the [language reference](https://elv.sh/ref/language.html). Elvish is also slightly more portable than Fish. It can run on Windows as a purely native executable, without Cygwin or msys2, although this support is still quite experimental at this moment. -- "Just played with _Elvish_. It crashed[1]; that's what you get for using `Go` instead of something (with algebraic types) like `Rust`. :-P [1] `runtime error: invalid memory address or nil pointer dereference` -- "Can you file a bug on [b.elv.sh](https://b.elv.sh) about how to reproduce the crash? Thanks! -- "Done: https://github.com/elves/elvish/issues/772 -- "I'm gonna try and continue working on https://github.com/amitizle/twitter-lists-manager and maybe https://github.com/amitizle/telegram-bot-cli. -- "was working Saturday, but have Sunday off and i plan to watch movies and do some programming. -- "Meant to clear up leaves around the house, but instead have spent the day sleeping in, playing Minecraft, making popcorn & watching a film with my wife & son. I hope for more of the same tomorrow. (And maybe clearing some leaves too, why not. If the weather allows.) -- "I'm working on just a couple things this weekend: 1. Writing a blog article on how to jail bhyve, now that FreeBSD is in the release engineering cycle for 12.0. 1. Still working on investigating a regression in i386 support on HardenedBSD, as I help OPNsense make the switch to HardenedBSD as its OS upstream instead of FreeBSD. -- "My only plans are having fun with my family and work on the new single of my Synthwave project. I’m on-call this weekend, so I’ll just hangout at home and my neighborhood. -- "Adding a stage to our monorepo's Jenkins pipeline to generate test coverage reports (cobertura XML) for our go tests. It's a simple script that invokes bazel coverage on $(bazel query 'kind(go_dedault_test, //platform/...))' and subsequently cats the resultant dat files into gocov and pipes those results into gocov-xml -- "Weekend is over so it's time to share your plans for this week! -- "I'm still kind of in holiday mode, I took a couple of days off extra. This weekend I did nothing productive, and I think I'll do that for another day or 2. I do have some things planned: - really start reading some books - check if I can view some components for presence detection with battery powered esp32 - have a look if I can wire up a camera at the front of our house -- "Hooray for taking a good break :) -- "I have a new audio design with bizarrely high level of noise on the output. It uses an external amplification stage with moderate gain after headphone output of the system's codec. The codec (WL8731L) in turn has two gain stages, on the DAC and on the headphone out. The latter, however has no ALSA controls provided in the kernel driver. That's what I'll be adding to see if reducing the gain there will help. -- "@varjag this is probably not your issue, but when I designed an amplifier I had a problem with a large amplitude oscillatory signal suddenly appearing and strangling the circuit until I restarted it. From advice of my advisor I used \"by-pass capacitors\" - small tantalum capacitors with very short leads, in the picofarad range- between the integrated op-amp power pins and the ground. This solved the problem. The by-pass capacitors short any high frequency noise on the power bus to ground, preventing the noise from adversely affecting the operation of the chip. The by-pass capacitors are placed as close as possible to the power pins of the IC. -- "Thanks, but yes it's something different here. No oscillation or line hum, just broad white noise: and it's not there when we cut the input. -- "In my crusade to eliminate half-finished projects I've (essentially) completed a [PulseAudio sink/port switcher](https://git.janouch.name/p/desktop-tools/src/branch/master/paswitch.c) which _also_ moves all playing applications over, which are completely separate actions for sinks. I've also learnt that when I disable Auto-Mute in alsamixer, I can switch between headphones and speakers in software. Otherwise, in the realm of personal projects, at the top of my laundry list is fixing some misbehaviour in my MPD client so that I can do a point nine release, and further pursuing the vision of a custom directory navigator for bash/zsh. At work... who knows. I should negotiate for some nice things to do tomorrow. -- "I'm working on bulk sales letter mailing for [NewBusinessMonitor](https://newbusinessmonitor.co.uk/). I redesigned the dashboard over the weekend so it's much slicker now, and soon you'll be able to just click once to send a personalised sales letter to multiple companies. Once that's done, I'll create fully automated mailing campaigns. So you just fill your account up with money, prepare your sales letter template, and personalised sales letters will be printed, enveloped, and sent in the post automatically every day to your target market. I'd also like to generally refactor and clean things up, which since it's Haskell is super easy. Specifically, when I started the project I used a curl library for network requests, but I've found the wreq library to be a bit nicer, so I'll move all network requests to wreq and remove the curl dependency. -- "So you're not actually working for a Clojure/ClojureScript shop then. -- "…What on Earth? I’m not sure how to respond to this. I have a day job consulting at a Clojure/ClojureScript company which incidentally also runs some Haskell and a load of Ruby, and I also have a couple of successful side projects running only Haskell and some Elm. What is your problem? -- "Pretty much every interaction I've had with you has been you jumping into a thread about Clojure to pitch Haskell/Elm as a superior alternative. You've made some pretty odd statements regarding Clojure development based on your experience. I'm just trying to understand what your actual experience with Clojure is because it appears to be wildly different from my own or anybody else I know working with Clojure. -- "Likewise, I think your affinity for Clojure verges on religious fervour and I find it quite odd. I'm not going to start harassing you about it in unrelated threads though. If you _really_ want to understand my actual experience with Clojure, I'll share it: Clojure does almost nothing to move the needle on my productivity as a developer relative to _e.g._ Ruby. It's certainly better, favouring FP and immutable data structures, but this incremental improvement is dwarfed by the monumental productivity improvement provided me by typed FP. I see neither Haskell nor Elm as a panacea, which is what you appear to think Clojure is. I just see my two preferred languages as decent enough implementations of this \"Big Hammer\" that is typed FP. My perspective is that the more Big Hammers I have at my disposable, the better. Other Big Hammers include version control, TDD, garbage collection, logic programming, and _probably_ dependent types and formal specifications — though I'm yet to learn the last two. If there are techniques provided me _exclusively_ by Clojure that would be a boon to productivity, please share them. If you're going to say \"macros\", I'd say code generation is already covered (at least in the case of Haskell), and that [macros don't come free anyway](http://neilmitchell.blogspot.com/2007/01/does-haskell-need-macros.html). Genuinely, I am open to all approaches if they allow me to write more robust software at a lower cost. You have previously claimed that because of types, I am not able to maintain state in a program while mutating its behaviour. This is simply not true at least in the case of Elm — I use HMR in my Elm projects. Furthermore, it's not as though there isn't at least _some_ benefit to types, even from the perspective of many Clojurists. Otherwise there wouldn't be Typed Clojure. -- ">Likewise, I think your affinity for Clojure verges on religious fervour >and I find it quite odd. You seem to be a fan of using ad hominem and straw argument techniques because you constantly put words in my mouth and try to paint me as some sort of a zealot instead of engaging in an honest discussion. >I’m not going to start harassing you about it in unrelated threads >though. You literally do that in every Clojure story I post. >I see neither Haskell nor Elm as a panacea, which is what you appear to >think Clojure is. I really don't think it's any kind of panacea either. I enjoy using it, and I find that it's effective. I have been crystal clear on that point in many discussions. I've also stated quite clearly that it's my preference based on my anecdotal experience. I'm not trying to convert people who prefer Haskell or Elm to use Clojure, I'm just saying that some people prefer the cost of dynamic typing to the cost of static typing. I think there's room for both, and I find it bizarre that you keep attacking Clojure every chance you get instead of focusing on building and promoting things using your preferred stack. >If there are techniques provided me exclusively by Clojure that would >be a boon to productivity, please share them. I have shared them in the last discussion we had. You made claims that you can do the same thing in Haskell GHCI which is demonstrably false. While it might be possible to create a REPL driven workflow for a language like Haskell, it simply doesn't exist today. Again, you seem incapable of saying that there are any trade offs in your preferred stack. Inability to admit that the trade offs exist, and you're choosing them consciously is zealotry. >Furthermore, it’s not as though there isn’t at least some benefit to >types, even from the perspective of many Clojurists. Otherwise there >wouldn’t be Typed Clojure. You're arguing against a straw man here because nowhere do I say that I'm somehow against types. What I said is that there's no evidence that types are anything more than personal preference. Furthermore, I've been quite clear that I think both approaches are worth pursuing unless one is shown to be strictly superior empirically. Types address a number of pain points with dynamic typing, but also introduce pain points of their own. It's a trade off, and each approach appeals to different people. Static typing is a tool, and I think projects like Typed Clojure are great because I do want to have an option to use type driven development in Clojure. -- "Obviously up super late but I'm aiming to reboot my workout routine and work on updating my home office setup. That and maybe landing some patches into some Fediverse projects I use. -- "Just a few things this week. * I made a replica/prop pager that looks like the one in the movie Hackers (1995) over the last week. I'd like to do a full writeup on how I did it before I start messing with it again to look into POCSAG. Some pictures of it are here: https://mastodon.sdf.org/@Famicoman/100952892701301619 * I'm working on some ideas for an upcoming zine that should come out next year. I'm in the early part of my contributions where I outline what I'm going to write about, but I'll probably dive right in! -- "Have an Ender 3 coming at some point, kind of in the dark about how this stuff works but I hope it will be [interesting fun and challenging] figuring out what to do with this thing :-) -- "I recently wrapped up a [blog post](http://mattjmcnaughton.com/post/slo-implementation-part-2/) on Kubernetes CustomResourceDefinitions and Operators, and how they can be used to deploy Prometheus to a Kubernetes cluster. With the writing done, I'm back to coding, and will be working on deploying Grafana to my k8s cluster. Specifically excited to play along with Grafana's [provisioning](http://docs.grafana.org/administration/provisioning/) feature, so I can specify all aspects of my Grafana config in source control. Anyone who is interested can see the source code on my [personal-k8s](https://github.com/mattjmcnaughton/personal-k8s). I'm also hoping to make it to the Kubernetes NYC Meetup before heading out west at the end of the week. -- "Working on my RSS feed reader, Hydrogen. Currently working on adding hotkeys (soon to be customisable), keyboard navigation, writing tests, and looking into improving accessibility. If anyone has any good resources on making web apps more accessible I'd love to take a look. -- "I find the \"What are you working on this week?\" threads depressing. Sometimes I do, sometimes I don't work on things that might be interesting, but seeing the thread gives me a bit of anxiety that there is an expectation that people should be working on something every week. (Just to add something that I'm working on: migrating the last few dozen accounts that I have on various sites over to my unified password manager (1password), so that it uses a centrally managed list of service-unique and strongly random passwords.) -- "Don't sweat it too much. I don't participate every week. This week, for instance, I'm probably not going to do much tech work outside of my day job. I've been letting a lot of household things linger, and I need to spend a little while catching up. At work, I'm basically doing what I did the week before, with the wrinkle that I'm team lead for a new team, and it's a lot more work than my old team (at least for now). -- "+1! There are plenty of weeks where I have nothing to say or feel like saying nothing, too. Depending on what I'm up to, it's even been like that for months at a time. Those times, it's hard not to feel left behind compared to the selection you'll find here -- which frequently comprises things people are really excited to share, and not so much the quotidian \"spoon against the wall\" effort that's also part of most any work. I guess my consolation is feeling happy seeing other people up to so much, even if I'm just shoveling metaphysical snow. So, I'm not sure if I'm up to much or not! This week is 80% Airflow operationalization for some research-on-research work at the office (Wellcome Trust Data Labs), and 20% back on a `dlnm` powered time series analysis associating civil unrest with rate of healthcare visits per person. The latter finally started making sense this weekend. A real relief there. -- "Sometimes I use it to talk about what I'm doing at work. Sometimes I'm doing interesting things in my free time. Sometimes I like to browse what others are doing and use it for project discovery. I think for the most part the community recognizes that not everyone will be doing \"interesting\" stuff on their own time all the time. -- "I can appreciate that, but the way I see these posts is more \"Hey who's doing something interesting?\". It's an opportunity for people to offer help, encouragement, and experience they might have and for the community to appreciate all the amazing things people here build. People are human, even the most prolific coders aren't producing gems for the ages every single week :) -- "Going to make progress on a few things: * long-delayed Android update for [Write.as](https://write.as) * help documentation * changing the Pro subscription price * [open-sourcing](https://github.com/writeas/writefreely/tree/develop) the Write.as backend * standalone accounts for [Snap.as](https://snap.as) -- "I just released the initial version of my new library [havoc](https://github.com/ankhers/havoc). It is chaos monkey style testing for the BEAM. It can randomly kill processes as well as TCP and UDP connections anywhere in your cluster, you select which nodes you want the killing to happen on. I am hoping to add some new features this week. In no particular order, some of them are: * Be able to target which application(s) you want to test * Add support for killing other types of ports * Give some sort of feedback about orphaned processes -- "Managed to get most of my project finished, now i need to clean up the code and put it into testing and see what i did wrong. -- "We released [binaries](https://github.com/meritlabs/merit/releases/tag/m0.7.0) for Merit Core which has the new Proof-of-Growth version 3 algorithm. This week it gets enabled. But another thing I'm working on this week is changing the difficulty adjustment algorithm because some group of miners do not like the new PoG3 and are oscillating the difficulty. Can't win them all. -- "Getting the Halloween costumes ready; working on some emacs configuration nonsense. At work, trying to schedule work for next year; helping some of my underlings get promotions. I also need to get back on the horse lifting weights, I've been slacking. -- "Our [research group](http://metamakersinstitute.com/metamakers/the-team/) is going \"on the road\" to work in a public space as scientists-in-residence at the [Eden Project](https://www.edenproject.com/) this week. They have a new thing where there is an art space and a science lab, with rotating groups there each week. Should be interesting, even though as computing researchers we don't have the kind of impressive looking \"science equipment\" to bring along that people like chemists have. We're bringing along a 3d printer and some small robots though so it isn't just a few researchers coding on laptops, even though that would be a more authentic representation of what our lab usually looks like. -- "Those are some beautiful images! -- "Solidifying my [i3wm](https://i3wm.org/) config and then probably putting something together with [Pygame Zero](https://pygame-zero.readthedocs.io/en/stable/) as an excuse to keep coding on the regular now that my Linux laptop configuration has finally stabilized ;) -- "Mostly focus on the synthesizer. Probably a little programming on the underlying UI toolkit (which I am planning to rebrand from xi-win-ui to a catchier name, current leading candidate \"druid\"). And also setting up a new Zulip instance for open source community around xi-editor. -- "Been working on this for a while but finally got my landing page up and running :) It's a platform to inspire and teach men how to style the clothes they already own. It does this my considering looks from human stylists and uses some machine learning to personalise the recommendations 👉 [Unstitched.xyz](https://www.unstitched.xyz/) -- "I'm completing my move from a OVH-based server to a Hetzner Box (Upgrading from 4 core/32gb to 6cores/128GB for no additional cost), some core services need to be migrated and reconfigured, my two haproxy instances need to be merged, my mail service needs to be decomissioned and existing apps migrated to mailgun (who finally seem to accept prepaid credit cards *and* have a EU region!). The most difficult will be the PHP and NFS VMs, their config is fairly complex and probably contains one too many hardcoded IPs which I'll have to change to a hostname. I can likely complete most of that on thursday and if everything goes right I can migrate my mastodon instance and the sql box to the new hoster and shut down the old. I'm also investigating into borgbackup and borgbase.com as a hosted backup provider, I talked to the owner on the /r/datahoarder subreddit a bit and they made some good pricing promises on the storage space. It looks good and solid so far and the owner seems to have a good track record. I upgraded my NAS to 21TB capacity, 3TB still pending an erase cycle, though the heat from the harddrives is getting out of control. I'm going to have to 3dprint a few harddrive caddies and hope the PCBs I ordered for a DIY fan controller arrive sooner rather than later. -- "Working on my overengineered parallel fizzbuzz in Pony. Currently stuck because I have no clue on how to use arrays and there's no documentation. Stackoverflow doesn't help: https://stackoverflow.com/questions/53030511/how-to-use-an-array-in-pony I think I will have to engage the mailing list at some point. -- "A web-based mail reader based on my [earlier prototype on Codepen](https://codepen.io/huytd/pen/pxGqOK). Featuring a lightweight UI, mutt-like keybinding. - React + Tailwind CSS for the frontend. - Offlineimap for fetching emails in Maildir format - Rust for the backend thanks to [this awesome crate](https://crates.io/crates/maildir) No plan for multi-user for now as it gonna be a lot of securities stuff needs to be done. -- "Are you going support HTML emails? -- "That's the main reason I go with a web-based client. I subscribed a lot of newsletters and most of them are unreadable with mu4e/mutt :D -- "Well I'd love to have a look when you release it. I've considered writing my own client and server so many times. I've given up on the server, SMTP and IMAP servers are just pure horror. Clients aren't much better but the maildir thing seems like a good way around dealing with IMAP. -- "I wrote a [hilariously task-specific command line utility](https://crates.io/crates/randical) for spitting out random floating values to stdout, and I'm going to use it to learn to use Tokio by making it multithreaded and using the evented IO model for printing. -- "My clang patch was finally committed so I'm stepping back from that. This week I'll be working on more PL stuff at work as I try out a different team. -- "* Wrapping job interviews. I got to visit San Francisco for the first time as part of an interview and play tourist for an evening, which was fun but wrecked my week. This week I'm deciding between three offers and not sure how to do so because I like them for different reasons - one is consulting on a 6-18m project, so a very familiar environment I know I can deliver on; one is a growing product company which I like for their work in connecting the global economy and it'd be the only >20 dev company I've worked in; one is a small product team fighting political censorship and is a very comfortable-sounding small team. Consulting is local; the other two would be remote. I'm leaning away from the consulting because I don't want to be searching again after 6-18m, but I like the other two for really different reasons and don't know how to decide between them - both look like interesting daily work with good people that supports my big-picture values. Good problem to have, but I could use advice if anyone has thoughts. (PM/emails very welcome.) * Podcast stuff was bumped. I'm emailing podcast interview guests; deploying the site. * I put up my motorcycle for the winter and cried a solitary tear. But now it's dinner party and board game season. :) -- "It’s Friday again; as always feel free to post your plans or projects for the weekend. -- "Sleep and potentially get shitfaced in a tapas pubcrawl. -- "I'm on-call again, so not a lot of things probably/hopefully. Going to try and do a clean install of my laptop, re-purpose a nuc in a Linux desktop and maybe fully automate a gitea install. -- "Going to see the Hamilton broadway musical with my wife, and also chasing down a fix for https://gitlab.gnome.org/GNOME/gdm/issues/432 provided I can cram enough understanding of Gtk and Gdm into my feeble brain :) -- "> Going to see the Hamilton broadway musical with my wife Nice! Have you seen / heard it yet, or will this be a first? -- "First. We're super psyched :) Been purposefully avoiding the soundtrack etc :) -- "It was amazing. Kind of surprised me in that a story for which I KNEW the ending / inevitable outcome could move me that much. Alternately funny, witty, culturally relevant and SUPER poignant. Even if you think you don't like musicals you should consider going to see Hamilton. -- "I might actually get around to setting up a [Matrix Voice](https://www.matrix.one/products/voice) Pi-hat that I've had for a few months now. I'd like to have a voice assistant that is more customizable than Google Home! I've had a Blue Yeti microphone that needs its USB port replaced. I got some USB ports in from China a couple of weeks ago and might try my hand at desoldering and resoldering for the first time in a long time. I'm probably going to harvest the rest of my garden before it gets frosty next week. I've also got a gaming rig that was hit by a Windows update that broke its USB ports. I got some PS/2 equipment and just need to allow the time to fire it all up. -- "If I understand it correctly, Matrix Voice is essentially the hardware for an Amazon Echo like device. You still depend on the Amazon cloud for the voice recognition? Could you use some Open Source non-cloud software, e.g. snips.ai? -- "Yes. There are some articles on hackster for setting up Matrix Voice or Matrix creator with Amazon Alexa, Google assistant, or Snips.AI. I also found that the Mycroft project has something called Picroft that maybe adaptable. I followed the Google Assistant tutorial last night. it went pretty smoothly and works fairly well, although I realize that I don't have an unpowered speaker in my possession right now! Today, I'm going to set up something that can be chromecasting receiver. where I plan on putting this device, that is the Holy Grail thing that I really want because I have this couple hundred dollars worth of Raspberry Pi, niche microphone board, accessories, and a 5.1 audio system from 2005 connected to a Bluetooth receiver that I almost never use… all to avoid paying $35 for a Chromecast audio or $50 for a Google home Mini. I'm basically building my own Google home Max but with a speaker system that can shake my house. -- "I'm visiting my Brother in Sheffield which should be good (depending on the sanitary condition of his student house...). -- "first weekend off from new job, gonna go out and take some [photos](https://photos.yakamo.org) and see if i can find something interesting. Then get some time to make some improvements to a little project for collecting network data. -- "Cool photos! What do you normally shoot with? -- "thanks, canon ixus 285 HS, and a canon eos 100d -- "if your interested i have a telegram group just about showing off your photos -- "Are you in Berlin? This looks like Berlin. -- "Yeah im in Berlin. -- "Been thinking about learning Clojure and ClojureScript. As I am tired of all the abstractions in JS/TS and web land in general. I want something simpler and with better tooling like Clojure REPL. Will see how it goes. I know lobsters has quite a few people who are into clojure so it’s gotta worth trying it out. -- "Also checkout FRP, particularly Reflex-DOM or Miso (or Elm if you prefer not to step into the awesome world of Haskell). -- "I started reading [Clojure for the Brave](https://www.braveclojure.com/) which was actually an excellent resource for learning Clojure. -- "Watching films in the local film festival... Working on my bot that scrapes local apartment listings and notifies you by messenger... Drinking tea... Baking some bread... -- "i got half way through writing a bot to do that in Berlin, its so hard to find apartments here and takes so much time, a bot is a good way to solve that. Will you be adding in an option to auto apply for apartments as well? -- "It's the second version of my bot, I already used the first version last year to find my current flat, and a friend used it to find his as well, now another friend wanted to use it so I rewrote it and improved it, and it got me thinking about moving too. No auto-apply for now—around here you basically have to make a phone call right away. Getting a push notification within two minutes of the ad appearing helps! -- "That is awesome! Gives you a good advantage! -- "I'll be working on HardenedBSD. Now that FreeBSD has created their stable/12 branch, we need to follow suit: https://github.com/HardenedBSD/hardenedBSD/issues/353 -- "460 unread emails, taxes, and the paperwork to start an Amateur Radio club at Cardiff University. -- "Nice. Do you have the manpower to give license exams? -- "I think so, but still figuring out exactly the order of operations needed. Getting a club call sign, becoming RSGB affiliated, and becoming a University society all have very different requirements. But all three are in motion now. The local clubs and RSGB regional representative are all very supportive. -- "Awesome. Bit of a late reply, but I think a big part of getting people initially interested in ham radio is advertising it like a license to hack on RF stuff. And showing them Contact (1997), which has the best treatment of amateur radio in any movie. :-) -- "9 unread left, some of the other two done. I think I need to change some behaviors and situations to not have so many weekends spent on life administration. I'd be surprised if this isn't a fairly common thought. -- "Hopefully: * Hiking * Lunch with parents sunday * Pay bills * Exercise * Relax .... I have 2 deadlines monday. So hopefully no working. -- "I just finished my first week at a new job for which we moved acros the country. Tomorrow is full of exploratory dog walks, followed by some OpenBSD hacking. I'm expecting some new furniture on Sunday so will spent most of the day putting it all together. This is also my first real free weekend after 4 years working at a startup... I'm not sure what to do with so much free time O_O -- "Probably working some more on the latest pet project, it's nearing \"showability\". It's a limited file-sharing utility where the server is merely a proxy to an ephemerally-connected client. Content is streamed over from the client through the server through ssh (uses pubkey auth), to the client over http(s, potentially). Client then exits, voiding the link. I'm pretty proud of it, I don't want to have to put files on GDrive and sharing from Upspin to people out of Upspin was annoying. It supports sharing directory by packing a Tar archive on the fly (I'll add in support for other schemes through the Link's file extension later). -- "Hosting a dinner party tomorrow! -- "I'm sinking time into some personal projects to improve \"developer life\" in my vm lab - a local apt/rpm/pypi mirror and some automation around that. -- "I'd love a container for proxy/mirrors of each. I have never had great results with apt mirrors. I set them up in anger, but then they go sour. -- "Doing some interview practice for a phone screen I have coming up in the next couple weeks. Will be my first technical interview! :) -- "I super extra recommend [pramp](https://www.pramp.com/#/) and just found a [nice list of questions](https://www.reddit.com/r/cscareerquestions/comments/20ahfq/heres_a_pretty_big_list_of_programming_interview/) that could be used for a warm up. Remember, tech interviews are a total crap shoot. -- "Hey, thanks for this advice! I've been using pramp this weekend and so far it's been pretty decent. I've had a 2/3 success rate, and find that talking in front of another person really helps me to practice being succinct and understandable. Here's to hoping that my practice carries into my interview! -- "I want to work on a new audio-related Android app (it's been a while since my [last](https://github.com/sevagh/pitcha)), primarily so I can play with https://github.com/google/oboe I feel a bit claustrophobic stuck inside Android Studio (although I appreciate that it's gotten better over the years at installing NDKs, SDKs, making it easy to test stuff on my phone, etc.). This is a bit vague but is there some acceptable command-line/Makefile workflows for modern Android development? Or should I bite the bullet and accept Android Studio? I do mostly operations day to day so I pretty much only use vim + terminal. -- "Thinking about language design! Imagine some barebone language with a `contains` method that should return `true` if `value` is contained in some `cell`: fun contains[T](cell: Cell[T], value: T) The difficulty is that the method needs to returns correct answers in all cases, even in in a situation like this: contains(Cell(NaN), NaN) The core questions are: - how would the implementation look like? - what would be necessary language-wise to allow such an implementation? Previously I made the claim that only two of the following points could be met: 1. only one equality operation 2. generic types 3. correct floating point support E. g. if you satisfy 1. and 2. then you get: fun contains[T](cell: Cell[T], value: T) = cell.value == value // does not handle NaNs correctly If you satisfy 1. and 3., i. e. (no generics) this means you have to implement contains for every individual type: fun containsFloat(cell: FloatCell, value: Float) = cell.value == value || (cell.value.isNaN && value.isNaN) ... // more implementations for each and every type If you satisfy 2. and 3. you need to introduce another equality operation, \"identity\": `===` (which violates 1.) fun contains[T](cell: Cell[T], value: T) = cell.value === value || cell.value == value Now I realized a few minutes ago this is not entirely correct, because the `NaN` case can be solved like this: fun contains[T](cell: Cell[T], value: T) = cell.value == value || (cell.value == cell.value && value == value) It seems that 0.0 vs. -0.0 cannot be handled similarly though. Opinions? -- "I could argue that your first case does handle NaNs correctly. Maybe you should reconsider what the \"correct\" answer should be. Do you know that NaNs can have a payload? What is correct for NaNs with different payloads? -- "> Maybe you should reconsider what the “correct” answer should be. I sorted that out a while ago. Returning `false` on things like `contains` or not finding the element to remove on `remove` is definitely wrong. It means that you not only can't reliably use floating point values in collections, but also every other composite type containing a float. > Do you know that NaNs can have a payload? What is correct for NaNs with > different payloads? Yes. Different `NaN`s are considered to be different. -- "This is an interesting problem so I googled around a little. [This SO answer is quite insightful](https://stackoverflow.com/a/1573715/2361979), especially the last paragraph: > To be blunt: the result of NaN == NaN isn’t going to change now. > Better to learn to live with it than to complain on the internet. If > you want to argue that an order relation suitable for containers > should also exist, I would recommend advocating that your favorite > programming language implement the totalOrder predicate standardized > in IEEE-754 (2008). The fact that it hasn’t already speaks to the > validity of Kahan’s concern that motivated the current state of > affairs. Wikipedia says on totalOrder > The normal comparison operations however treat NaNs as unordered and > compare −0 and +0 as equal. The totalOrder predicate will order these > cases, and it also distinguishes between different representations of > NaNs and between the same decimal floating point number encoded in > different ways. IEEE-754 2008 says things like > If x and y are both NaNs, then [...] negative sign orders below > positive sign [...and...] signaling orders below quiet for +NaN, > reverse for −NaN. This does not really provide you an elegant way to implement \"contains\", but I learned that there actually *is* a total order for floating point specified but \"<\" does not provide it. -- "I'd consider this === that || this == that quite elegant. `===` means identity (whose implementation is built in and cannot be changed), and `==` means equality (whose implementation can be overridden by users). Both operations can exist on every type without causing too much pain. -- "I'm exploring building a game engine, so probably going to keep doing that :D :D :D -- "My condolences. -- "Why? :D -- "I'd consider it a major time sink. There are no limits to how complex it can get, especially in 3D. Not dissuading. -- "Ah! That's what I like about it! Something that I can just have fun with :) -- "Finally finished putting together a 16-node Slackware-based GPU+CPU compute cluster this afternoon. Final problems were a subnet-related Wake-on-Lan issue and a shutdown script that was unmounting the NFS-based root filesystem too early, preventing a system halt. At some point I'll put together a detailed writeup on the hardware and software. Tomorrow its Jeep work in the morning and Spartans-Wolverines football at noon. -- "Id be interested in that writeup. -- "Learning a bit of assembly since I mainly work with functional programming I think this will provide an interesting counter point. -- "I'm planning to wipe Windows (along with my Linux VM dev setup) on my Thinkpad P71 and then install NixOS as the only operating system. -- "Sounds fun! Have you used Linux as a full desktop OS before? Curious to know why your choice has fallen on NixOS. (I, myself, have been thinking of switching from Arch to NixOS) -- "I use it to develop web and mobile apps using Haskell. i3 is my preferred window manager (I don't use desktop managers). [Here's a screenshot](https://www.reddit.com/r/thinkpad/comments/7wmtdr/p71_goes_well_with_a_good_coffee/). > Curious to know why your choice has fallen on NixOS I can *declaratively* configure everything (packages, services, system configuration, kernel version, display drivers, etc.) and use that reproduce the exact instance anytime I want. Here's the [configuration](https://github.com/srid/mynixos/blob/master/configuration-thinkpad.nix) I use for my Thinkpad P71. -- "After 3.5 years I've finished my [prototype FastCGI/SCGI/WebSocket JSON-RPC 2.0 daemon in C](https://git.janouch.name/p/json-rpc-shell/src/branch/master/json-rpc-test-server.c), which now serves no purpose whatsoever. But I can tick that one off. Over the last day I've been fixing the behaviour of scrollbars in [nncmpp](https://git.janouch.name/p/nncmpp/), which was very irritating because I had to write this myself: https://is.gd/xLc5zx *Is there a proper software to inspect a general function from N to M dimensions?* -- "Going to a wedding -- "Attending my best friend's wedding and hopefully get a bit of rest and sleep. -- "I'm driving to Savannah, Georgia for the week on Sunday, as well as building out helper tools for my accountability/habit-tracking-as-a-service project (https://consistency.club). -- "Working on my RSS feed reader, learning some more Docker stuff, and hopefully playing some D&D. -- "Do you mostly use Docker for work or just personal stuff? If it's mostly personal stuff how did you get into learning it? Book recommendations? -- "Personal stuff at the moment. Working on dockerizing my RSS feed reader. I just read through some of the official docs and now I'm just playing around and googling stuff. -- "I'll be preparing slides for a talk I signed up for at a Python Meetup on [Beancount](http://furius.ca/beancount/). -- "Rewriting my toy x86 assembler from 2014 x86 assembly is not for the faint of heart, and machine encoding has plenty of its quirks and muddy details. Also, Haskell does not seem to be a perfect tool for this: absence of refinement types and subtyping, tree-ish ADTs often feel out of place and I'd rather use some kind of \"table typing\", stateful computation makes much more sense here (I need to bring in an ErrorT/StateT transformer), functions as predicates are black boxes that hinder optimization of instruction encoding tables. I need to sit down and rethink the approach and what parts of Haskell not to use. Also, hopefully, I finally start another simple program to learn Rust: a Markdown viewer (with fancy styling, line wraps, images, hyperlinks) on top of SDL2 (not the best choice maybe, but will do for a novice). Not a web browser, but at least it's very limited in scope and hopefully can be done over a couple of weekends. -- "> some kind of “table typing” There could be an interesting idea worth experimenting with in there. Could you elaborate? And maybe with an example or two of what's there which is kludgy vs what you'd like to see? -- "* Working on better inline assembly support in `rustc`. * Already fixed some smaller issues, but we are getting ready for the Inline Assembly RFC to hit the `rfcs` repo soon. * Hacking on my control group crate for Rust. * Hopefully spending the Sunday working on my super secret project in Rust. * I might finish some stuff that I didn't finish over the week for $work. Generally to avoid burnout and the associated concerns I avoid working on $work stuff over the weekend, but I'm super excited for what we can accomplish so I might give it a few more hours. Oh and correct a few mistakes in my Operating System Development for the HiFive-1 RISC-V board [article](https://wiki.osdev.org/HiFive-1_Bare_Bones)! -- "I've just put the finishing touches on the [0.4.0 release of Dinit](https://github.com/davmac314/dinit). So, it's time to relax a little, do some house work, grab a beer or two tonight, and probably start getting ready for my move back to Australia (in January). -- "Working on https://main.actor -- "I appreciate the domain name. -- "Finished the outside of the extension (24m2 in two floors) to our 17th century farmhouse I'm building, now I'll start on the inside - clear out organic material which made its way into the crawl space, put plastic on top, put in underside of floor, insulation on top,wooden floor on top of that, etc. Listen to Jordan Peterson discussing something with someone while working, most likely. Maybe Aron Flam (a Swedish stand-up comedian) vs. David Eberhart (a Swedish psychiatrist who tries to battle the Swedish 'gender mafia' who've been using a whole country as a social experimenting ground for decades. -- "I will be presenting [NixWRT](https://github.com/telent/nixwrt/blob/master/README.md) at [Nixcon 2018](https://nixcon2018.org/) this coming Friday, so what I should be doing this weekend is installing it on my home router, figuring out what I want to say about it, and starting to put some slides together. What I've actually done, so far, is try several times and fail to get it to reboot reliably using kexec. I'm _sure_ it was working in July before I put the project down for a weekend-that-became-six-weeks to write a mail reader, but even reverting to July's code ... doesn't work now. -- "Trying to get my personal website up, IndieWeb integrated, and probably going to roll up Hugo and nanopub, though I may yet go with Kaku. -- "Planning and hopefully implementing a prototype of a monitoring system that relies on an active agent written in Nim, that sits on the server. Nim because it's interesting, stable, allows flexible low-level access, easily works in all operating systems, allows easy static linking on linux with musl, and because it gives me tiny binaries easily. I'm intending this system to have a competetive edge from a nearly zero configuration giving reasonably useful information. -- "On my own language https://github.com/antonmedv/expr -- "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. -- "Work work work work work. Product improvements so it's useful rather than just pretty for users. Also get to build some servers and go see my lovely coworkers in person at the end of the week which will be nice. After seeing a talk at [NWRUG](https://nwrug.org) last week on ruby & HomeKit, I'm planning on trying to get [RubyHome](https://github.com/karlentwistle/ruby_home) up and running as a bridge to expose my temperature/humidity sensors initially. Nice simple project, might actually manage to get it going. Also looking forward to our monthly D&D night tomorrow, always a good laugh. -- "I've just made my [MPD client](https://git.janouch.name/p/nncmpp/) a lot more useful, but I'm still missing a few minor features and most importantly documentation before I can do a proper release with some peace of mind ~and leave it to rot, though I've been using it exclusively since around the end of 2016~. I've found it really useful to just describe subproblems and write ideas down as they come, and not just keep them in my head. And if I don't want to do something, to just look at the code and note where things probably need to change. It has a tendency to become too irresistible not to pursue, even though I might not be in the mood. Rather a rediscovery. Now I'm either going to be tidying one project up for inclusion in the master branch at work, or further improve my [directory navigator](https://git.janouch.name/p/sdn/), be it design or implementation. I guess I should be working on Go/X11 things but bringing past projects to some sort of closure is also nice. I've got a long, long backlog. Some of it I can now finish more efficiently due to experience, or scrap stupid ideas like learning Rust on things where it doesn't belong at all and multiplies work and complexity by an order of magnitude. Or C, if you found that inflammatory. -- "You’re the author of ncmpcpp? That’s amazing, I used it as my primary music player for almost 5 years! -- "No, not ncmpcpp, that one has a long history, but nncmpp. At least I have confirmation that it's unparseable. -- "Work: Amongst my normal duties I'm going to sneak in writing an interpreter for the [Common Workflow Language](https://www.commonwl.org/). My excuse is that I need to write an interpreter to understand the specification better, so I can help make changes to it. Hobby: Reading the [PDF spec](https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf) and modifying [this code](http://www.vulcanware.com/cpp_pdf/index.html) from John Dumas to make it do bezier splines amongst other things. Why? Because I've always wanted nice PDF plots of spacecraft journeys. -- "You may or may not be interested in [SILE](https://github.com/simoncozens/sile). It's a project which takes a few core parts of LaTeX, butchers them out mercilessly... umm, I mean *reuses* them, and glues together again with Lua. -- "@akavel Very interesting, thanks! So if this a full replacement for LaTeX? I recall several projects that were to replace LaTeX - I recall XeTeX and ConTeXt - but I didn't follow up. As far as I can see, for my use case, I'll just be adding to John Dumas' code to draw Beziers and then the bulk of the work will be in projecting the 3D data to 2D (basically [camera matrices](http://ksimek.github.io/2013/08/13/intrinsic/) ) and gluing the segments together for smoothness. I found a cool paper for this gluing [here](http://www.math.ucla.edu/~baker/149.1.02w/handouts/dd_splines.pdf). -- "It's kinda \"total mod\", or remodeling, in that it completely ditches away the whole TeX language layer (and hence LaTeX too). AFAIK, both XeTeX and ConTeXt were actually built on TeX, i.e. only replacing the LaTeX layer. A kinda simplified LaTeX-like parser is then added, but reduced to the level of a Markdown-like language (i.e. no macros, no Turing-completeness, just a simple markup allowing 80% of what a \"common user\" would want from LaTeX). Anything more advanced is delegated to Lua, which is a much more... *sane* language. That said, as it is with such ambitious projects, it's obviously not on feature-parity level with LaTeX. The most glaring missing part is math/equations support... and, umm, I am... [kinda working on that myself, actually...](https://github.com/simoncozens/sile/issues/220) from time to time... not that much to finish... but, that's how it is with hobby projects... somewhat stuck now on some bounding boxes issues... and got distracted by *up* and other stuff... -- "I've started back on my social network API, working on the payments system to allow folks to chip in with different providers. Currently managed by Stripe. And I was able to start taking myself both more and less seriously again, with a personal website built like I used to make in high school, by hand, no dependencies, and very personal content rewritten until I like it, despite its inaccessibility. Hoping to cover more of the topics I like to think about on it. -- "At work, I'm continuing to chip away at some [Active Merchant](https://github.com/activemerchant/active_merchant) improvements. At home, I'm working on my other hobby, my DeLorean, which needs a new window regulator. Two of the bolts are borderline impossible to get in, so I'm making a custom tool for the purpose, which will be the first thing I'll have 3D printed that isn't, like, a soap tray. I will also try to hack on [Factor](https://factorcode.org) a bit, but that's honestly been rare these days. The older I get, the harder it is to follow up a day of coding with...more coding. -- "any rumblings on what happened to Factors creator, Slava Pestov? I've used jEdit a ton in the past and heard alot about Factor ... i heard he moved onto Google at one point, but I'm shocked to have not heard any news regarding him in the recent past... I can relate to the \"it's hard to follow up a day of coding with ... more coding\" ... i don't even get how I have friends that can do hours of WoW after a day of coding. I need to separate myself from the PC in the evening daily :D -- "> any rumblings on what happened to Factors creator, Slava Pestov? He works on Swift at Apple. You can follow his Twitter feed it you're curious. -- "> so I’m making a custom tool for the purpose, which will be the first > thing I’ll have 3D printed that isn’t, like, a soap tray. I always think of stuff that is 3D printed as being -- for lack of a better word -- fragile. You are going to make a tool with it -- that is awesome and interesting. Can you give us some details after the fact about the 3D printer, tool and if it all worked? -- "Sure. That said, I think you're overestimating what a tool means in this case. John DeLorean and Steve Jobs have a lot in common, personality-wise, and the DMC-12 is kind of a Macintosh of cars: it's super-stylish and has tons of things that were novel for the time, but also made tons of compromises in the process. The doors, which are a) gull-wing doors, b) before people figured out how to actually do that sanely, c) and also have some of the earliest power windows, are a complete shit-show. In this case, to put the lower half of the door back on, you have to get two bolts (or screws, if you're the first one in the door and haven't replaced them, which is worse) into two holes. You would normally want to hand-thread something like this, but these holes are obscured, and also about 3-4 inches down in the door, accessible only through two holes, each only about 1\"x1.5\". And no, you can't do the bolts first. And, oh yes, if you miss, and the bolt falls into the door, you have to disassemble all of the door you've assembled up to that point. So, the tool I'm making literally just needs to help me get the bolts threaded in the tiniest, littlest amount, after which its job is done and I can sanely use a ratchet wrench. It's serving the role my fingers would play...if my fingers were 8\" long and as thin as a pencil. If you imagine two joined chopsticks that are bent 90 degrees for the last 2cm or so, that's literally all I'm making. So yeah, I'll post back, but unless I *really* fuck up, then while it might not actually work, it at least shouldn't snap or anything. -- "I'm just a little mad the DMC-12 stole the thunder from the Bricklin SV-1, *the* local automobile from here. It even had gull-wing doors too! -- "That's true, but didn't the SV-1 stop production like half a decade before the first DMC-12 rolled off the assembly line? It's been awhile, but I remember it having a shorter run and massive quality control issues. -- "Very much true - but the DMC-12 also has the advantage of becoming a pop culture icon ex post facto as well. -- "> fingers were 8” long and as thin as a pencil That image is now etched into my mind. :) -- "Working on a blogging system in [Racket](https://docs.racket-lang.org/continue). I've previously been extending the [Hacker News code base](https://github.com/arclanguage/anarki), but it's just too slow at parsing file uploads, so I've taken the jump at started building something from scratch. For the back end I'm planning to use [logic programming](https://docs.racket-lang.org/racklog/) instead of a database. -- "I have this weird issue at work when we spin up a new EC2 instance with a Mageno 2 build artifact in which the admin section of the application throws us for an infinite redirect loop. So probably that. If anybody has some knowledge in Magento2 deployments please feel free to shoot me a message for more details. We're almost at wit's ends over here. -- "I plan to finish the signup flow for my Telegram bot that notifies you of new flats for rent in your chosen neighborhoods. I'm also working on a Raspberry Pi kiosk that implements a simple chat for visitors and residents in a particular NGO venue. This is making me feel acutely how tedious it is to deal with software and operating systems. Such a simple task brings up so many questions with no satisfactory answers. Then I'm also learning Latvian! -- "\"Then I’m also learning Latvian!\" Rare I hear that. What inspired you to learn it? -- "After living in Riga for two and a half years, I figured it's time! I've been picking up words and grammar out of sheer curiosity, but now I'm finally enrolled in a course. -- "That makes sense! -- "I'm on vacation, so nothing! I did bring my laptop for emails, but am resolved to not write a line of code for the next three weeks. I'm thinking about going through the Emacs tutorial though, to see if I can be converted away from vim. I'm told Magit alone is worth it. -- "Magit is very much worth it. There are tutorials around, but really you can just start with `M-x magit-status`, press `?`, and see what it prompts you for. You can move around with arrows, and hit tab to expand/collapse sections. -- "Maaaaaaan, 3 weeks is a long time. I don't think I've gone 3 weeks without writing any code since I was 7. Edit: no, 11. There was about 9 months when I didn't have access to a computer at all when I was 10. -- "[FreeBSD support in the Zig language](https://github.com/ziglang/zig/pull/1661). Also playing with Ansible and Buildbot, trying to set up some cross-platform CI… -- "At work: * got in 30mins to run a task before others arrived. * today at around 10am PST https://www.presidency.ucsb.edu should be live to the world on an updated Drupal7 platform, migrated from a custom php application. This has been a massive 3+ year project. * babysit project launches today and hope everything goes well. At home: * cook some dinner maybe goto class in the evening. REST :D -- "> https://www.presidency.ucsb.edu When I click on the first link [How Different is Trump's Press Secretary Sarah Sanders?](https://beta.presidency.ucsb.edu/analyses/how-different-are-sarah-sanders-press-briefings), I get a 404. But if I remove the `beta` subdomain from the link [then it works](https://www.presidency.ucsb.edu/analyses/how-different-are-sarah-sanders-press-briefings). -- "Hi -- thanks. I think you're seeing DNS in transition! :D if you clear your browser cache it should be resolving fine now, SSL was just provisioned via LetsEncrypt like 10 mins ago so the dust is still settling. Thanks for the feedback! -- "I remember how it looked before. This is a big improvement! It would be kinda cool if speeches and things were made available as raw data, especially if it had metadata and all the \"other stuff\" isolated / decomposed (crowd reactions, gestures, titles and greetings, etc). -- "It's rare that I have a programming project in my hobby time but I'm working on an expense tracker. I have been making a surprising amount of progress on it considering that I'm not really much of a developer and web development in particular is not at all my in my wheelhouse. -- "Sounds interesting. I'm preparing for a talk this week on plain text accounting so I'm always curious for work happening in this domain. Do you have any details to share at this point? -- "Oh, this isn't a plain-text project, I'm implementing it mainly in the traditional HTML/CSS/Javascript stack. This will be so that my wife and I can track our expenses better. I've looked at a LOT of existing solutions but none of them quite fit because they either try to do too much, do too little, or are written in a technology stack that I have no hope of being able to maintain myself (e.g. Java) or that my wife isn't technical enough to use (e.g. ledger). I haven't decided yet what the backend will be yet so I might be able to leverage some plain text accounting tools there but it's too early to say. -- "A lot of different things: Work: * finishing some Jenkins jobs that help another department test stuff without our help * giving an internal course, the first of a couple probably * still lots of things to do in our backlog, I hope to pick up a few Home: * I did most of my planned weekend things, but not all. I still have some ansible/lxd things to do * looking at things on how to loose weight, I'm not into sports at all and have an old knee injury so it's going to be mainly food related things * I might need to travel to Sweden next month, so I'm looking at possible travel routes and accomodations -- "Last Friday, a friend and I started to do 2 sigma's Halite challenge. I will continue working on that this week on my spare time. I did it in Rust so learning the language too. -- "I'm working on some new features for [Equinox](https://equinox.io), my service for software updates. Specifically on a build service for any Go package that is available via `go get`. Also work on supporting new distribution mechanisms such as [Chocolatey](https://chocolatey.org/) and Snap. I'm also working on fleshing out [archive](https://github.com/kyleconroy/archive), a Go project to parse personal data archives from a variety of services. I have initial support for Twitter and Instagram with Facebook coming next. The next step is write a guide for users to export their data and make sure that my parsers are correct. My hope is that people can take my work to build out better tools for these archives. -- "Going to be releasing [PoG3](https://github.com/meritlabs/merit/pull/402) for [Merit](https://merit.me). Main work is testing and building binaries. I'll then switch over to more future looking stuff. -- "Last week we wrapped up our scheduled maintenance window. We do customer-impacting work on evenings and weekends when folk are less likely to be using their servers. That's meant a lot of late nights--I'm exhausted. This week I've got decommissioned systems to derack and other messes from that work to clean up. We don't power off equipment until it's ready to come out of the rack--powered down equipment will power back up in the event of power loss, and if you put new equipment in between a power off and rack removal you could wind up over capacity. Certainly one could physically unplug the host or turn the outlet off, but if you're going to be in the rack or making configuration changes it's safer and easier to do it all when you're removing equipment. I'm delighted to say that my week includes meeting @pushcx in person for the time. I've been working with Peter and hosting lobste.rs for a year this month, entirely remotely / online. We happen to both be in California at the same time. I'm looking forward to it. -- "\"I’m delighted to say that my week includes meeting @pushcx in person for the time.\" That's great yall get to meet. Reminds me that I've always wanted a Lobsters event where we can get together for fun, coding, and business. Maybe attach it to another venue that's popular like FOSDEM. -- "Recently started contributing to [sr.ht](https://meta.sr.ht/) so looking forward to adding some features. The project is in early stages so there's a lot of low hanging fruit if anyone wants to jump in. -- "http://github.com/rianhunter/wasmjit help me! -- "I plan to do a few things this week: 1. Comb through some of the ports that fail to build in HardenedBSD's ports tree due to the ports' dislike for certain llvm compiler toolchain components (llvm-ar, llvm-nm, llvm-objdump, etc.). 1. Fix an issue in FreeBSD's new bectl application. 1. Help OPNsense fully adopt HardenedBSD as its upstream. Right now, this means investigate a regression on i386. 1. Perhaps take a nap. -- "Trying to make meaningful contributions to some open source projects that I know and use, under the guise of Hacktoberfest, by implementing features or fixing tricky bugs. Sadly (or perhaps just disappointingly?), it seems like most people contributing to projects for Hacktoberfest are simply making pull requests for minor or almost irrelevant changes to things like README files. -- "'tis what happens when you gamify something. I'd say, if someone does this seriously, from a cold start, they'd need to pick a small bug for the whole month and get pointers from experienced coders on the project. At that point it would not benefit the project so much (because of the time it took away from the experienced coders). A useful way would be for experienced coders to pick an open source project they regularly use and have some familiarity with and use the month as an excuse to do bug-fixes or documentation improvements. But you know open source, community driven development: 'tis a miracle anything gets done at all. -- "> A useful way would be for experienced coders to pick an open source > project they regularly use and have some familiarity with and use the > month as an excuse to do bug-fixes or documentation improvements. This is essentially what I have done, and it's been nice to make some OSS contributions again. I used to be quite involved in a few OSS communities, but life happened and I had to scale back my involvement for the past few years. I mostly feel bad for the maintainers that have to deal with all the somewhat irrelevant/bothersome pull requests that are fixing spacing or adding punctuation. Don't get me wrong, I'm not against those fixes in general, but many are PRs for the sake of being a PR at this point. I know what it's like to maintain an open source project, and you've only got a fixed amount of mental capacity to handle things, and clogging that up with a dozen or so trivial pull requests is a great way to burn out a maintainer. Oh well. Hopefully there are more people attempting to be truly helpful than not! -- "At work I volunteered to be on the triage team for another 10 weeks, so I'm still doing that. Outside of work I need to get to work on the programming assignment for a job application. Original plan was to do it over the weekend, but then Arapahoe Basin opened Friday and I had to go skiing... I got a bit done on Sunday, though, so hopefully I'll be able to wrap it up in the next couple days. Other than that I need to catch up on some chores, research and buy new skis, and tune up my bike. -- "Working on generative art, using [quil](http://quil.info/), a Clojure wrapper around [processing](https://www.processing.org/). My main problem right now is that I'm not taking the time to come up with interesting ideas; I'm sharpening the axe (recently got [a PR](https://github.com/quil/quil/pull/256) into quil, yay!). That's great, but it's not exactly making good art. Also, as usual, random Emacs stuff. I recently started using org agenda again, so I'm investigating using it for non-scheduled things, like \"what books am I in the middle of reading?\" And, offline, trying to start up a new improv group with just one other person. I want to do some slower styles that don't work in my main group. -- "The first round of [Abstractions conference] (https://abstractions.io) sponsorship pitch emails are going out later this week after getting a verbal commitment from what may be our top sponsor late last week! The thing I've been building for work for the last 16 months is going into customer hands later this week! There are still some bugs to work out, though. I counted up my hard drives and I've got nearly 30 drives with nearly 36 TB of storage, but only 16 TB of that is powered with only about 8 TB of 12 TB in RAID6 actually occupied. All of the drives are out of warranty now as in the NAS I've used for nearly 10 years so I need to figure out something to do with these drives that totally still work while also gearing up for buying a new NAS and populating it. -- "I've started writing a post called \"The case for linearly bootstrapping compilers\". I don't quite know where I'll go with it, but hopefully I can argue the need for compilers which are not 100-percent circularly bootstrapped. -- "Three come to mind against 100% circular: 1. You get the compiler done faster if you use a language better suited for building compilers/interpreters. Many argue for LISP, ML's, and rewriting/meta languages. Intended language might not be among them. 2. Your compiler will *run* fastest if you use a language easy to translate to GCC, LLVM or C. It doesn't have to be normally but maybe one has reasons for the speed. Some are much easier to translate than others, esp if keeping advantages of high-level form. 3. If wanting formal verification now or later on (\"verifiable\" compiler) with low effort, then you're limited in building blocks to what languages, algorithms, and data structures people already verified. You don't even have to use the verified versions: just using unverified pieces with same functionality lets someone swap them out for real thing later. Interested to see what yours says when you're done with it. So far, I think circularly bootstrapped just hits a button in people's heads that says, \"Wow, what's wild to think about.\" Field evidence shows other options are probably more practical depending on what goal you're optimizing for. Except for static Scheme's closer to the machine (eg PreScheme) where doing 1-3 simultaneously might be feasible in same language. Especially if you bypass C's ecosystem with profile-guided superoptimization on fast paths. I don't know if that exists but it probably should. ;) -- "> So far, I think circularly bootstrapped just hits a button in people’s > heads that says, “Wow, what’s wild to think about.” I suspect one other major motivation here is that you impose on your fledgling language a BigRealWorldish endeavour that will leave you no choice but to continuously validate, refine, evolve and/or revamp most of its initial design choices as well as its stdlib (this latter facet again feeding back into the former along the way), which will also finally need to grow to approximately the minimal size and scope that the potential target audience might judge \"barely-sufficient to justify playing with it instead of discarding outright\". -- "That's what they say. Many often write a non-optimizing, simple interpreter or compiler for the circular part, though. It doesn't really stress the language in a lot of directions. It just says it's good at expressing an over-simplified interpreter or compiler. I think a better target for *that* goal would be porting a set of libraries that were *really different* in purpose and how their solution is best expressed. One might do some string manipulation, number crunching, complex structures, layers of control flow, high-error situations, concurrency, parallel processing, low-level interfacing, and so on. You prove it can handle multiple types of apps by implementing multiple types of apps. Each can be as small as needed for proof of concept. -- "I want to talk about auditability in a trusting trust scenario, formal verification, and something I'm calling the \"verified implementation graph\" for lack of a better term. Basically I want to bootstrap the world from a small core language and build production compilers from there. -- "That makes sense. It's what quite a few on [this page](https://bootstrapping.miraheze.org) were doing. My favorite is still nineties' [project](https://speakerdeck.com/nineties/creating-a-language-using-only-assembly-language). For more mainstream support, my concept was a C-like, While language with metaprogramming support. An interpreter written in assembly to start with. Tcl or LISP-like syntax to make hand-made parsing a breeze. Build up a few primitives and module support for programming in the large. Hand or tool-assisted conversion of something like TCC to it. Bootstrap. Then, TCC to early version of GCC. Various GCC's from there. Designing the solution at a high-level was fun. Implementation looked like a lot of tedium for me. So, I moved on once a solid plan was visible. -- "Do you know what are the limitations of the nineties' project? (In other words, what it's notably missing compared to \"mainstream languages/ecosystems\"?) -- "It's specifically designed to build his language. He probably didnt work to make it faster, more portable, have a great FFI, etc. The part I like is his staging and mix of native/interpreted to get benefits of each. He goes from ASM to bit better language to bit better and powerful VM. Then, it's so much easier to express the tooling for his actual, intended language. -- "I'd *love* to have it in a printed book form, to be able to easily study and annotate... ideally with some reasonable comments, like the ones in the slides... This kind of bootstrapping is totally an idea that zaps through my head from time to time, and from the slides, his approach looks like it might be approachable enough to just take and read, and certainly immensely educative... -- "That would be pretty awesome. I think we can get some docs and source at best. The rest could be a nice project for someone else. The project links are [here](https://github.com/nineties/amber/blob/master/README.md). -- "Right, just browsed the github. The [lexer](https://github.com/nineties/amber/blob/master/rowl0/lex.s) for rowl0 seems superbly annotated; the [compile.s] file looks much more difficult at a first glance... :/ -- "Yeah, I've seen miraheze.org. I'm trying to make this kind of bootstrapping plan more accessible to people who would like to join the effort. Perhaps part of that encourages people to write small runtimes with large libraries -- like a mini Python that's mostly written in itself. Just enough Python to bootstrap another programming language. That way there is more than one way into the graph -- multiple edges can be made, and then it's possible to compare the results of two seemingly equivalent compiler implementations compiling themselves... -- "Sound interesting. Especially an accessible project that allows comparisons. Look forward to seeing what comes of it. -- "I'm working on [Swagger UI](http://github.com/swagger-api/swagger-ui/)'s Docker image - we want to expose more configuration options through environment variables, so I'm dropping the [current approach of using `sed`](https://github.com/swagger-api/swagger-ui/blob/master/docker-run.sh#L11) in favor of a Node.js script that generates a JavaScript fragment for the image to serve up. -- "I was laid off last week[1], so I _should_ be applying for jobs but instead I'm taking a moment to collect myself. [1]: Company wide lay offs, unfortunately. -- "What kind of gig will you be looking for? -- "Not really sure, so that's why I'm also not rushing into anything. Heck, I might even get a minimum wage job for the time being. It's _nice_ not having to code or meet hard deadlines. -- "Yeah it's probably a good time to take some time off if you've gotten a decent severance. -- "> if you've gotten a decent severance I got three weeks of severance, so probably will need to figure out something money-wise fairly soon. -- "**Work** I currently work for an attorney service company. We have the largest court system in the US coming online in a couple of weeks so finishing up a few loose tickets & prepping for the wave of madness of the release. **Personal** I just found out that my VPS provider corrupted my personal machine, soooo probably that. On a related note: Anyone have a recommendation for a VPS? -- "Work: Automatically migrating dependencies from ant projects into Gradle files This is proving to be not that simple. Anyone have a better idea than parsing the Gradle file and adding dependency expressions into the AST ? Personal: Road cycling season is more or less over until next March just in time for me to start a off season training plan -- "Work: Automatically migrating dependencies from ant projects into Gradle files This is proving to be not that simple. Anyone have a better idea than parsing the Gradle file and adding dependency expressions into the AST ? Personal: Road cycling season is more or less over until next March just in time for me to start a off season training plan -- "Work: - Implementing payments and making sure the proper users are notified via in-app notifications/email. Thank god for Stripe. Having both Customer Success and Marketing double-check my ~~scribbling~~copywriting to make sure it's on point. - Upgrading our self-managed kubernetes cluster (3 major versions behind...) - lots of new features, lots of tiny (but breaking) changes, should be fun. Still really like kubernetes though. - Learning about all the terrible ways AWS and RDS can fail Home: - Taking care of my 5-week old daughter (together with my girlfriend) and making sure everything is taken care of. - When everyone else is napping, playing a bit of Pathfinder: Kingmaker. I haven't been this addicted since Neverwinter Nights 1 or Baldur's Gate 1 came out, it's dangerous! -- "I set up a new Pleroma instance: [d20hero.club](https://d20hero.club) and a small [instance information website](https://info.d20hero.club/) to help table top game players migrate away from G+ and into the fediverse. The 5000 character limit means its better suited to their use than Mastodon, plus Pleroma will run happily on very cheap hardware so it's very affordable for me to run. -- "Rewriting an API and making some updates as well as adding new features, this runs on the [yggdrasil Network](https://yggdrasil-network.github.io/) Maybe clean up a server and remove a site from it. -- "This week we're working on a real estate application that connects to an authority on listings api, brings in listings, lets you augment blog posts with the listings, and much more. It's a fairly advanced website, I'm pretty stoked. In my free time, I'm still playing with Go. I'm currently messing with a Discord bot in it -- "Finishing some slides. I'm going to be giving a talk about PHP performance at SymfonyLive Berlin on Friday. Other than that testing the ML product from elastic, looks very promising for our specific needs. A bit of Go, I'm starting to write a downsampling proxy for InfluxDB, that will allow us to have the same data with different granularity. -- "It’s Friday again; as always feel free to post your plans or projects for the weekend. -- "Busy Weekend. Just finished and posted most of the tedious release / writeup /video recording stuff for the latest [Arcan 0.5.5 / Durden 0.5](https://arcan-fe.com/2018/09/27/arcan-0-5-5-durden-0-5/) meaning that I'm finally free to switch over to more experimental things. Likely candidates: 1. Start working on the network- transparency layer (in Rust!) 2. Look into tui packing formats for moving font rendering / sharing glyph cache and texture atlas from clients into the server/composition stage 3. A VR glove that I'm prototyping ... or finishing the first out of three parts in an article series working through Xorg features point by point, explaining why my solution is better at everything. Also redoing the floors in my lab. -- "Racing our sailing dinghy with my daughter, gardening and fixing up stuff around the house mostly I think. Been idly thinking about how to remove the ethernet cable running up my stairs (carries two VDSL connections up the one cable to two modems in the office rack currently.) There's a comms cabinet in the garage now, where I'd like the modems/router to live, so need to figure out how to get a cable from the hall into the garage now. Current thinking is to run it up the wall into the ceiling then across into the garage. Still super happy with the idea of shoving two VDSL connections down one ethernet cable, even though it's a massive SPOF 😂 -- "Did you just use two wall sockets and patch into a single cable, or did you find a commercial 2-to-1 paired jack? Or is it just a cable with the ends split and two RJ11's on each end? -- "It's currently using an inline coupler for ethernet ([This one, or very similar](https://www.tlc-direct.co.uk/Products/CXSM315.html)), to go from two RJ11's to one cat5 cable to two RJ11's. I was eyeing an off the shelf solution for it, but it all added up to way more than two couplers and a punchdown tool. (I already had the three cables.) I'm tempted to mount a dual-RJ11 socket on the wall next to the two phone lines terminate in BT master sockets currently. Then I can just use two RJ11 male-male leads to connect it, no punching down or couplers needed. Wire the back of the RJ11 sockets to one cat6 (as that's what I have a reel of) and run that up, across into the garage and terminate in the comms cabinet somehow. Probably into RJ11 sockets in the comms cabinet, figure out some ghetto patch panel for them and then RJ11 male-male cables into the modems in there. Thinking about it, if I put a keystone patch panel in that cabinet, I could have RJ11 keystones at one end, and then cat6 keystones in the rest of the patch panel (for uplinks to loft/hall socket termination.) That would be fairly tidy I think. 🤔 -- "Helping clean the area of the sort-of HOA our vacation home is in. Parents are visiting to celebrate my birthday. Getting back into Project Euler a bit, but want to avoid computers a bit because of twinges of RSI. -- "Happy birthday / spirit journey formation anniversary! -- "[Click only if it's your birthday already](Happy_Birthday_!!!_I_don't_know_how_it_is_in_sweden_but_in_germany_you're_not_supposed_to_say_it_too_early), and I hope your RSI gets better. -- "RSI is a piece of shit. Hope you get better! -- "Painting a room in the basement. Finally setting up my lathe, a year after moving in to the house. Have an idea for a new kind of proportional pneumatic valve, if I have time will start with an oversized prototype. -- "Hiking! This is probably one of the last weekends where the mountains are still snow-free. -- "I haven't started yet, but I am planning to create a simple Notepad like application using GTK+ 3.x in C. I have planned out the list of functionalities that I need with initial version of editor. Once, I get grip with application development, I will planning to do some changes with Mousepad, an editor that comes with Xfce. Any suggestions on GTK+ and C? -- "C on *nixes has awesome man pages for both the standard and the POSIX library, learning how to read the man pages if you're not used to it will save you a lot of time and effort. Also `info` usually has more example code than `man`. -- "How did I never know about `info` before‽ There's so much useful stuff in there. The difference in the amount of info between `man dd` and `info dd` is astounding. Oh, neat and it even falls back to manpages for third-party stuff I've installed. Thanks for mentioning that. -- "On the other end of the spectrum, check out [TLDR pages](https://tldr.sh/). -- "Info is awesome because texinfo is relatively easy enough to write manuals in for websites, pdfs, and .info pages. The GNU culture around writing manuals is something more software projects should copy. -- "I'll be moderating and participating in a panel entitled \"You Are Not Your Major\" at my alma mater's Professional Networking Symposium, a gathering of nearly 500 alumni of our small school. The event is second in attendance size only to Homecoming. I've moderated or sat on a panel every event since 2013 when it started as a networking event for the business department and I was brought in to talk about tech entrepreneurship and Bitcoin. \"You Are Not Your Major\" is this idea a professor of mine and I discussed a few months ago in preparation for tomorrow's event. > You are not your major. You are an educated person who uses your > training and ability to learn to solve problems from a starting point. We want to convey to students, alumni, and friends alike that it's OK to work outside your field. It's OK to find ways to use your major knowledge in unconventional ways. As a programmer, I've worked with other programmers who majored in biology, chemistry, psychology, sociology, education, political science, and more. I'll be setting up my parents' new computer immediately after the event, so wish me luck! I've not used a Windows computer as anything more than a gaming console in approximately 10 years so what could go wrong? -- "What school, just out of curiosity? -- "MTB coach development all day Saturday, in the Scottish Highlands :~) Hopefully, starting a [BCHS](https://learnbchs.org/kwebapp.html) web app on Sunday. -- "Preparing for the birth of my third child next Tuesday. (It's scheduled because reasons.) Practically speaking that means lots of cleaning and reorganizing around the house to maximize comfort for my wife while she recovers, as well as keeping the older kids busy to tire them out. :) -- "Congratulations! -- "Congratz! -- "Nothing on the plan. And I will enjoy it. -- "I'll be glad if I can wash my clothes, cook food for next week and do some exercises. I wish I could do more personal-projects-stuff things, but it's been hard enough just to do the basics =/ -- "San Francisco Museum of Modern Art visit, while the René Magritte exhibit is still going on. It may sound unusual for an engineer like me to visit an art museum, but I go because my hope is that I will learn at least one new thing from all the exposure to things I'm completely unfamiliar with. -- "Upgrading to Ubuntu 18.10 since it may fix the one remaining power management glitch on my laptop :) Also continuing to train our new rescue dog. -- "Watch out for `unattended-upgrades`, which I think is default on 18.04+. We had some unfortunate mishaps when the server decided to take it upon itself to do security updates and managed to break some things. -- "FWIW the power management glitch was fixed by upgrading to the latest 4.19 RC kernel: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1796743 Now if I could only figure out this gdm bug on boot... :) https://bugs.launchpad.net/ubuntu/+source/gdm3/+bug/1796614 I've been deep diving in the gdm3 source, but there's a fair bit of complexity there and I'm just teaching myself Gtk so it's a lot to chew on :) -- "Sleeping -- "Lucky you -- "- Hockey game on Sunday - Plenty of homework due Monday -- "Learning ChaiScript as a possible way to script my simulator -- "Recording a podcast and then spending the weekend with the girlfriend. Wish I had some time to fix my corrupted system partition on my main machine. Next week probably. -- "A busy, bittersweet time - closing the camper for the season. Clean the camper, pull in the dock, take down the deck awning, that sort of stuff. Then we wait until next May. Sigh. -- "Scottish Games and Oktoberfest are both tomorrow. Coding: always more improvements to my wiki bot, and resuscitating an old Android app by cutting out customized old libs with common ones. -- "Writing posts, some hiking, feeding peanuts to the crows down at the beach, mourning summer. -- "Saturday we're going on a family trip to Newcastle, where my wife and son will go to a drawing master class while I read _La Belle Sauvage_ in a nearby cafe before we all head for sushi. Then heading home for a family Minecraft session, I suspect. Sunday I'm going to paint a wall in one of our bedrooms green and _literally_ watch the paint dry. I'm really excited to see how it will turn out, but I know from prior experience with this paint that it changes considerably as it dries. Good thing it's a quick-drying water-based paint. :-) Somewhere along the way there _may_ be time for me to study some ClojureScript/re-frame/Reagent too, which I'm currently taking my first baby steps with. -- "I'll be biking the Canary Challenge and then resting after that. -- "Biking. I'm leaving work in a few minutes and heading to my buddy's house for the night, and tomorrow morning we're going for a ride near there. There was an organized [group ride](https://hardscrabblehumper.com/) there last weekend, but I had a cold and he wasn't feeling up for the last big climb so he headed home early. So we're making up for it this weekend. The rest of the weekend depends on how the ride goes and whether I stay up there Saturday night or head home. Sunday evening I want to get back to work on my book scanner project. I got the ZBar bindings working and then got distracted by other projects and a head cold. For books without an ISBN barcode I want to scan the title page and use Tesseract to run OCR and get the title, and then lookup the book on isbndb that way. I did a little investigation into the Common Lisp binding (cl-tesseract), but I need to figure out how to use it with OpenCV images. -- "Ooh nice, hope it was fun. I'd never thought of doing an organised route after the fact, seems like a good idea if you can't make the event (or it was that good a route!) Will have to remember that in future, there's been a few events this year I've not managed to get to that I quite fancy giving a go. -- "Trying to document parts of my encrypted backup design: https://go.gliffy.com/go/share/snsw0vvrbuo0m4g09akr It's not so easy to make something other people can grok, I just need to work on how I explain things. -- "Do a formal spec and some flow charts. :) -- "Canvasing for Sonja Trauss, potting some plants, catching up on sleep. -- "My kids let me Github a little each night, so I'll be githubbing this weekend a little bit -- "I'll be traveling home from my first Strange Loop conference, which was amazing. -- "Taking a weekend off development of appdocotor to try and build somewhat a social media presence before launch. Not at all my strong suit so I have alot to learn about that, sales and marketing. https://twitter.com/appdoctorio?s=09 -- "Trying to beat Nix + home-manager into submission, such that I have my full dev environments at work & home merged into one ultimate set of .nix files. Also life. Helping friend with a flat renovation, and resting/unwinding after the week doing nothing reasonable. -- "Unsure to be honest, nothing specific planned. I guess I should get some head on writing blog posts and some Rust stuff. But most importantly, rest. Past two weeks have been way too hectic and I’ve neglected important things. -- "Digging for this ticket to GitHub Universe: https://twitter.com/github/status/1046052486413520896 -- "Contemplating whether to dive into one of the big development environments of the last century (common lisp, Smalltalk). -- "Mounted some of the windows in the extension I'm building to our 17th century farmhouse in the Swedish countryside. Since the thing will have 11 windows I did not finish them all, those on the second (first in European parlance) floor will have to wait a bit. The extension replaces a glass veranda - added somewhere in the 19th century - which was in a bad shape due to a leaky roof. I designed the extension (in Sketchup) on the base of some turn-of-the-century photographs I found of this place, added an extra level to it and built the thing this summer, it should be ready around Yule. -- "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. -- "Over the weekend I did a failover of lobste.rs from a physical host with an [L5520](https://ark.intel.com/products/40201) CPU to a physical host with an [E5-2660](https://ark.intel.com/products/64584). I didn't have a lobste.rs-specific reason for doing this: it happened as a side-effect of patching L1TF, which I'll continue working on this week. All the same, I'll be curious to spot-check lobste.rs and see whether it changes how the site performs. -- "Shows 45nm servers are still practical. The Rocket core for RISC-V was deployed to 45nm ROI. The newest ones are 28nm but 45nm is cheaper for development. I think L5520 performance shows there's plenty of mileage to be gained for open hardware on older nodes if anyone can harvest the free/cheap labor advantage combined with discounted tools at universities. -- "* Job interviews continue. Kissed a few frogs in the last two months, but currently chatting with three I could definitely see working at. * Lobsters has been getting a lot of pull requests the last couple weeks, so hopefully I'll be merging all the active ones this week. Really [thrilled to see so many contributors](https://lobste.rs/s/cmyzc8/lobsters_features_bugs_for_new) that they entirely take up the Code + Coffee time I put to Lobsters. * Last week I finished coding the rails app for the podcast I'm starting (1100 lines of code + tests, not big). Plan is to have conversations with folks doing interesting in computing, especially at the intersection of practice and theory, then editing to 10-15m episodes. Sorta Fresh Air crossed with Planet Money but topically more like Why Are Computers? This week I'm sending out some initial interview requests and deploying the site. Going to take [a run at guix](https://octodon.social/@cbaines/100878250214214217) for that, we'll see how it goes. * An old friend is in from out of town, so plenty of catching up and board games. -- "I like the idea of the podcast. I was messing with some ideas about a podcast like that a little while ago. If you're interested in any help with it, I'm willing to do what I can. (I think the intersection of practice and theory is the most interesting place for research and had I stayed in academia, I would be working in that space.) -- "A big chunk of the wallclock time around podcasts is in the editing. At least that's what I found. -- "I don't doubt that! I trained as a music producer for a couple of years and editing on an early 90s Mac is what got me into programming. I quite liked editing (even did it with 2\" and 1/2\" tape) but it is certainly time consuming. -- "Yeah. I also think that's where a lot of the value to listeners is. I'm tapped out on the podcast format where two dudes shoot the breeze until one says \"well, we're coming up on an hour here\". So part of my prep was dusting off my non-linear editing skills from [high school](https://en.wikipedia.org/wiki/Video_Toaster) to learn my way around [Ardour](https://www.ardour.org). I'm not going to be putting out something slick and beautiful like Radiolab, but the \"life without the little flubs\" style of Fresh Air should be attainable, and I'll see how it develops. -- "Gotta say I'm also pretty tapped out on that format as a listener. I enjoy it up to a point because you get a real sense of the personalities involved, but my time and attention are a precious commodity and I just don't have enough of it to spend listening to folks banter. I love podcasts, but lately I've come to realize that they can very easily expand to fill all available time and more, so I'm being a bit more selective about what I listen to. -- "Wow seriously can't wait for your podcast! I always enjoyed Garbage despite being pretty much BSD clueless. (Well other than setting up a few FreeBSD boxes in the early 90s :) I would so love to get back into Podcasting. Have an idea, been having trouble finding the spare seconds to put it together. I miss it. I really enjoyed co-hosting [Podcast.\\_\\_init\\_\\_](https://pythonpodcast.com). -- "Thank you for all your work maintaining Lobsters :) +1 to really looking forward to the podcast! -- "The autumn 2018 run of the Lisp Game Jam starts in just a few days: https://itch.io/jam/autumn-lisp-game-jam-2018 Why not join the fun? -- "Continuing to write a Mattermost bot in Go that keeps score of channel arguments. The first draft is done but it could use a lot of polishing -- "Hacking on a registry for [twtxt](https://github.com/buckket/twtxt) (https://tildegit.org/tildeverse/twtxt-registry). Also looking at getting a notification system added to [bbj](https://github.com/desvox/bbj), a small little bulletin server with a lovely curses interface. -- "I've never used twtxt, only spot-read the source code, but it seems like a fun project to hack on. What brought you to it? -- "It was submitted to the lobsters [instance](https://tilde.news) that I run: https://tilde.news/s/e1vadw/twtxt_is_decentralised_minimalist -- "**Work:** Reading materials on marketing and consulting to pitch to companies better. Doing a bunch of revisions of the 3 day TLA+ workshop to make it simpler and cover more. Rehearsing a beta of my CodeMesh talk. **Fun:** Trying to find some knitting classes in Chicago. Figuring out what kind of volunteering to do. -- "Trying to get an MVS installation working locally with the Hercules emulator so I can program in an environment that you might have used in the 70s. I was aiming to do the same for the 60s and OS/360 but software for that era is hard to find. -- "I figured out that clang fix and now I'm shepherding my change through the review process! Additionally, some typechecker stuff for work. -- "At work I'm still doing bug triage. The bug stream from our testing team has died down, so now I'm looking at some of our flaky unit tests. Outside of work, I started helping maintain [ST-JSON](https://github.com/marijnh/ST-JSON). TBH, there's really not much to do, but I'm going to add a README, and see if it makes sense to move over any of the changes in my private fork. My book scanner/database is going okay, but slow. Last week I had given up on scanning with the webcam, and this week I've given up on using gphoto2 (for now). The new workflow will be to take pictures of ~10-15 book at a time with my SLR, copy the images to my hard drive, scan each image with zbar, lookup the ISBNs, and add the books to the database. Then I'll make a second pass for books without ISBN barcodes, where I'll take a picture of their title page, use tesseract to extract the title and lookup the book that way. It's not as interactive as I wanted, but it'll get the job done. -- "I'm trying to port OMEMO encryption to Irssi : https://github.com/ailin-nemui/lurch/ already sent and received some messages but there seems to be still many bits missing...... -- "I've just begun learning Pony. The language is great and given the current status of development and engagement of the community, I believe in a couple of years it will get on the main stage. It has a lot of good parts and so far, no bad parts. Today I started the tutorial and developed an overengineered fizzbuzz. Maybe tomorrow I will make it concurrent and lazy. My goal for the week is to finish the tutorial and maybe try to solve some LHF on some part of the standard library and see if there's space for a beginner to contribute meaningful code. Otherwise I will reproduce some of my favourite libraries/tools from some other language and see if they stick. -- "After running into various Markdown-related XSS-problems towards the end of last week when auditing my own product for initial release I decided to take matters into my own hands today, so I built and released a library for handling markdown where secure by default is the core philosophy instead of opt-in security. https://github.com/Hultner/safemd I just posted about it here on lobste.rs https://lobste.rs/s/szw60m/safemd_markdown_renderer_focusing_on -- "For my hobby project (simulating space flight within the solar system [[1]]), I've switched from tinkering with the display to working on the mathy parts, which is the mini-programming language that offers the user various orbital and propulsive maneuvers to get from A to B. In this context I'm working on a blog post titled \"Dodging Greenspun's tenth\" which looks increasingly more like \"How I didn't dodge Greenspun's tenth\" [1]: https://github.com/kghose/groho -- "We released version 0.2.7 of the [Yggdrasil Network](https://yggdrasil-network.github.io) over the weekend, and I've been meaning to sit and write some [blog](https://yggdrasil-network.github.io/blog.html) posts about the things we've learned in the development process. In particular, I hope to dedicate some time to write about security on mesh networks and possibly even service discovery. I'm also still trying to pick up some Japanese on the side. It's proving to be an insanely difficult language to learn without supervision, so I'm trying to figure out a good learning strategy. -- "Most of the week will be spent cleaning up some technical debt, but the highlight will be giving a talk at [the university I graduated from](http://manchester.ac.uk), which is happening on Wednesday :) -- "Packing stuff to move into my new apartment next weekend. The old one is overpriced, ground level, has no sunshine the whole year except in winter. The new apartment is the opposite: Quiet, large, and full of sunlight. I'm super happy to move there, especially as I'm really stressed out the last few weeks (combination of work, university, and planning the move). I'm sure the cat will love the sunlight and balcony too. Other than that I'm trying to stay on top of everything at work and university. I can definitely feel the stress taking a toll on my health, which is really bad. Coding wise, I'm working on a freelance (next to work coding and university) project in the medical field. Simple project, but big potential. I'm really happy to be able to work on this on the side as it can make a difference. -- "* trying to convert some Json to myself tables. Anybody have a good way to extract some nested json data in mysql8? ... CTE * American Presidency Project to go live Oct 22nd. * Added Google captcha form over weekend to some forms in APP using cusim Drupal code. -- "At work: I’m definitely reworking one component to be multi-threaded. As part of that, I’m writing a custom IntelliJ refactoring. One of the really common patterns is: List list = obj.getBlah(); for (MutableType elem : list) { // doStuff(); } My strategy is to leave the underlying objects mutable, but give them an immutable interface. One section of the code will do all the setup, the rest will consume the immutable interfaces. I’m hoping that writing a custom refactoring will be a slight win on time, and definitely more interesting (I’ve written one before, so I have a rough idea of it). Unfortunately, I really don’t enjoy the IntelliJ code manipulation libraries: they seem to be undocumented, with very little help from the types. Does anyone have a refactoring library they like? Outside of work, I’m bouncing around from project to project. -- "* $WORK - Working on using succinct data structures for a new Haskell JSON lib. The parser preserves all sorts of nice properties, like `parse . print = id`, so there is no loss of information. Yes, another JSON lib, but Aeson is a bit long in the tooth and there are design decisions I disagree with. Also succinct data structures are soooo much fun, and so sodding fast, omg. - More visualisation research with a goal to lay the groundwork for some sweet graphics and visualisation packages. * $ME - Peering into the abyss that is the world of machine learning, for funsies - Keep on reading, keep on reading, keep on reading. - Lift something, heavy. -- "Dusting off my rusty C skills and diving into Linux to fix or more realistically better understand / provide better test/debug data for https://bugs.launchpad.net/ubuntu/+source/gdm3/+bug/1796614 I'm totally fascinated by the complexities of the modern LInux desktop environment. GDM interacting with X interacting with device drivers interacting with the kernel. -- "That fascination will pass. The quote from #dri-devel fits well - \" nothing involved with X should ever be unable to find a bar.\" The interface is race condition by design, logind/gdm/xorg/(plymouth?) fighting for drmSetMaster? VT switch once gets someone to release it. -- "Nope. Not in my instance of the bug. Flipping VTs doesn't do anything for me. -- "I agree with you though that there seems to be SO much complexity at play here I question whether or not it all makes sense. Design by accretion in action I suppose? -- "Turns out I managed to work around this with configuration. Turning off gdm's wayland detection fixed the problem and Gnome now comes up properly on boot. -- "I wrote a very simple data compression library called [BriefLZ](https://github.com/jibsen/brieflz) many years ago, which recently appears to have found some use in a few other projects. I've been implementing some algorithms to get better compression out of it without changing the data format. I am hoping to get a few of these polished enough to release. -- "→ Understanding how to provide gmaster.io users the value we see in the tool as soon as possible. → Preparing for Unite LA 2018 -- "This week I'm doing a couple of product demos and on-boarding users to the new letter sending feature of [NewBusinessMonitor](https://newbusinessmonitor.co.uk/). This will bring in more revenue. I'll also be working on a load of account management stuff for the service — a necessary chore. -- "- continuing to integrate the changes to our dependency management stuff at work. Everything here takes a lot longer than anything ought to. - continuing on my streak of good mental health that I mentioned last week, which is important - hoping to get my website updated, and at least one of my in-progress articles published - again, I'll aim to make at least one small movement on one of my many side-projects -- "Improving the compliance of my [Rockstar](https://github.com/dylanbeattie/rockstar) [implementation](https://github.com/palfrey/maiden) with the [reference implementation tests](https://github.com/dylanbeattie/rockstar/tree/reference-implementation/tests) -- "- I'm making some small adjustments to an [image recoloring bot](https://smidgeo.com/bots/colorer) I've been building with a friend. (Mostly, just limiting size this week.) - I'm starting to add a simple, year-based view to my [projects viewer](http://jimkang.com/observatory/) that uses GitHub as a data source. -- "Building a protoype/porting test of an older python web app into rust and actix-web. I've been using actix with tokio for a desktop project and have been liking it a lot so thought I would give the actix-web portion a go. Working on a service for pulling structured data from repetitive pdf files. Getting started on a teen titans go! Raven costume for my daughter for halloween. -- "Work - I have spent most of this week on user support. Personal - I am trying to improve my object-oriented design skills. I finished [Object-Oriented Design Heuristics](https://www.oreilly.com/library/view/object-oriented-design-heuristics/020163385X/) this weekend and have started reading [Object Design](http://www.wirfs-brock.com/DesignBooks.html). -- "I'm continuing to work on deploying [Prometheus](https://prometheus.io) to my [personal k8s cluster](http://mattjmcnaughton.com/post/a-kubernetes-of-ones-own-part-0/) so that I can monitor/alert around an [SLO](http://mattjmcnaughton.com/post/this-blog-has-an-slo/). I've been blogging my progress [here](http://mattjmcnaughton.com/post/slo-implementation-part-0/), and will continue to do so if anyone has any interest in following along :) As a side note, if there are any k8s users here, I'd love to hear more about how you organize your k8s namespaces. I'm not sure if I want to do just environment based namespaces (i.e. `dev`, `staging`, `prod`) or environment+application based namespaces (i.e. `dev-blog`, `dev-monitoring`, `prod-blog`...). Thanks in advance for any tips :) -- "I will continue to learn ansible. I've already created my first playbooks and made big improvement in my work with it. I'll now change SNMP configuration on the thousands of routers in my company to be able to monitor them properly. Uniformity and automation is the key. -- "It’s Friday again; as always feel free to post your plans or projects for the weekend. -- "Finish writing some code, go to a protest. -- "Do you feel comfortable telling what kind of protest are you atending to? I want to know, because it is rare to protest on the country I live in, though we have more than enough reason to do so. -- "Yeah its no problem you can ask anything, its an Anti-Nazi protest, although i had to cancel as i just got a job trial to do tomorrow, so i am sad i cant go, but all my friends are going so that's good. I try to go to the relevant protests for my political and moral view when i can, its worth doing as the world is getting more messed up everyday and there seems to be a lot of benign indifference to what happens in the world if it doesn't directly effect someone. I am sorry to hear that protesting is rare in your country, have you looked at the possibility of protesting online? There are a lot of ways you can do it anonymously, but make sure you research it properly especially if your in a country that has restricted freedom of speech and horrible consequences for speaking out. -- "I agree that we should not fall in the trap of benign indifference. Personally, I think we (as individuals) have the obligation to speak against unjustice, sadly most of the individuals in the society are not interested in trying to find a solution to our problems. I live (and have lived) in a poor country, from Central America, where freedom of speech is non-existant and people consider you a threat in case you want to speak about our problems. Writing things on the internet is certainly on my list of things I'd like to do regularly, but have to change VPS provider to one that is more aligned with my views in technology. -- "> Anti-Nazi protest Which government in the world currently is ideological nazi? -- "AFD in Germany, and multiple other groups, but its not Germany's current controlling party thankfully, we all know how that went last time. -- "#unteilbar? -- "Yes thats the one. -- "One can protest against Nazi parties before they are part of a government. In fact, given past history, it’s the only time one can protest against them. -- "I’m going on a weekend holiday to Tbilisi, Georgia! Also I’m continuing hacking on NewBusinessMonitor. Sending letters through the service works now, but I haven’t opened it to everyone else yet. I’ll do that this weekend. I’m super happy with it. I’m able to just click on companies to send personalised sales letters to them in the post. I’ve sent 103 sales letters in the past two days! -- "გამარჯობა! Enjoy some Khachapuri for me. Or don't if its not your cup of tea. -- "How could it not be anyone’s cup of tea? I don’t believe in miracles but if I did, Georgian food would be a great example. I had soko and shkmeruli for dinner, and it was an absolute triumph. -- "Mmm, you get to enjoy awesome Georgian food. Enjoy! -- "Further development on my app called \"My Leaf\" for Android and iOS. It's a third party alternative to the official NissanConnect EV app. Basically an app to for the Nissan Leaf. It's free and open source of course ;) Written using Flutter. Besides that I will be outdoor in the woods. Also playing through Valkyria Chronicles 4 on Switch late at night. Have a nice weekend! ;) -- "I joined an [amateur astronomy club](https://www.amateurastronomy.org/) to get back into backyard astronomy (despite living in an apartment in a city) and I'm going to their AGM. I loved it when I was a kid and I want to get back into it. Also going to try and setup the Hercules 390 emulator and get some version of MVS working so I can continue with what will be the penultimate entry in my debugging series. (It's taking me a long time.) -- "Various improvements to [BAN.AI](https://ban.ai) — bringing up Lisp LOGO, diagnosing an FNP channel wedge, cleaning up a few weak points in the mail gateway … and a lot of other little tasks! -- "Hopefully someone can recommend the right tool for the job for me here for one of the many items on the BAN.AI TODO list. BAN.AI has a [search engine](https://ban.ai:8090) which searches our large collection of Multics reports and documents. I have a few thousand PDF files totaling ~12GB, many of which do not have any OCR'd text layer, and thus not fully indexed. I'm looking for the easiest solution to pragmatically OCR these documents and merge the resulting text layer back into the PDF files, which would lead to an immediate improvement in search results. -- "The first answer [here](https://superuser.com/questions/28426/how-to-extract-text-with-ocr-from-a-pdf-on-linux) has a script that might help. You can also do it using ImageMagick, [Tesseract](https://github.com/tesseract-ocr/tesseract), and [hocr-tools](https://github.com/tmbdev/hocr-tools), but it's a little more work than the cuneiform script in the SuperUser answer. -- "Cool, thank you, I'll have to play with it and see what I can come up with. -- "Thanks again, the suggestion helped me very much, and sent me in the right direction. I ended up modyifing a script that uses similar workflow, and using pdftk to put the text back into the original PDF. [It looks like it's going to take a long time to complete.](https://ban.ai/_matrix/media/v1/download/m.trnsz.com/VzqcTbNGFzPYTgYJqZvJdDtF) So far it's only been averaging ~1.5 documents per hour. -- "I'm going to look a bit at my little Java functional utils project. Basically I'm doing a Try, Either, Tuple (0 to 8 items), and possibly yet another Optional - is there something obvious I've missed that you guys could see as a nice addition? And then I'm going to the big city to attend a concert with Shania Twain on Sunday. -- "Preparing to teach Python to colleagues on Monday -- "Out of curiosity, what kind of background do your colleagues have? I have one coworker that's been using more python, but they have a more sysadmin background, and all the other developers are C#,Java. -- "I am like your co-worker. I am a sysadmin / platform / cloud person. My colleagues are programmers and data scientists. They are better programmers than I am. My goal is to show them just enough python 3 so that they can move along on their own. So I am going to show them list comprehensions for example, how to open files with the \"with\" statement, csvfiles also, a bit of matplotlib, pip and python -m venv, but not numpy or Pandas. We estimate something like 8 hours split over the next two Mondays. My take away is that since I am forced to present something in an audience with expertise (OK not in Python, but surely in code) I too am forced to become better. -- "That sounds great and like a great mindset in general. Best of luck and let us know how it goes! -- "So, is this on overtime pay...? Preparing lessons for colleagues seem like something best done during work hours, IMO, not at the weekend. -- "Fortunately, I've never had overtime issues with my employers. -- "I'm going to try to finish some of my older projects. -- "Taking Daughter The First to see Australian sensations, The Wiggles; then, apple picking with the whole family on Sunday. -- "This is the best weekend plans posted so far. I wish more people in the IT industry, including most tech enthusiasts, would spend more time with real people - friends and family - than with machines. Maybe they do but just don't mention it? Probably not; I feel like if they did, various community issues could be avoided. -- "> This is the best weekend plans posted so far. You obviously haven't seen [The Wiggles](https://www.youtube.com/watch?v=se5XcrG4S8s). -- "> I wish more people in the IT industry, including most tech > enthusiasts, would spend more time with real people - friends and > family - than with machines. That's how it goes when you don't have friends and family doesn't live in town. -- "I'm going back to home to the land of red earth and dialectics to celebrate the life of my late uncle. He was well known as the author of a long-running humorous column in our state newspaper. -- "I really like these personal threads. I'm planning to go see the movie The Sisters Brothers with my brother. It was great book, so I'm (naively?) hopeful it will be a great movie. I started building an OpenBCI EEG interface and I want to test the leads and see the data coming back. if that all works, I'm going to assemble the 3D printed parts and try to record an EEG while I'm meditating. Should be fun! -- "I'm going to start reading William Gibson's \"Neuromancer\" novel. If I can find the time, I also want to begin reading Katsuhiro Otomo's \"Akira\" manga series, published back in 1988. -- "great choices, Akira is epic. I want to finish reading Snowcrash at some point! -- "I am amazed you could put Snowcrash down. -- "SUCH a good set of books! -- "Thank you. I'm really excited by Gibson's. Considering the fact it was the first time the term \"cyberspace\" was used. -- "If you make it through Neuromancer, you might want to check out his anthology Burning Chrome. Probably my favorite works of his. -- "That's certainly the plan, going through all of Gibson's work. Thanks for the recommendation. -- "Oh no, don't read **all** his work. The gems are: - Burning Chrome (short story collection, 1982) - Sprawl trilogy - Neuromancer (1984) - Count Zero (1986) - Mona Lisa Overdrive (1988) - The Difference Engine (1990), an alternative history novel Gibson wrote with Bruce Sterling Personally, when I do a re-read, I stop there. If you're still really keen, go on to: - Bridge trilogy - Virtual Light (1993) - Idoru (1996) - All Tomorrow's Parties (1999) Just beware that they totally lack the lyrical writing that people find so gripping in the Sprawl trilogy. All of his works after 2000 take place in the very-near-future or the present and have straightforward stories and themes. I don't find them compelling whatsoever and they generally get mixed reviews (in contrast with the universal acclaim of his earlier work). -- "That makes depressing sense - cyberpunk dystopia is no longer fiction, nor is it in the future. Though I haven't read his work so that's easy for me to say. Thank you for the recommendations, it's good to know where to start! -- "Thank you. I'm gonna do what you suggest, and will dive into his other stuff in case I feel curious. -- "Heh. Horses for courses I suppose! It’s been a while since I read them now but I remember liking the bridge trilogy (though not as much as the sprawl ones) but I hated Difference Engine and found it a dreary slog that I struggled to get through. -- "I agree with your summary but I'd like to add that I really enjoyed one of his modern books as well: 'Pattern Recognition' -- "Neuromancer is amazing. Enjoy :-) -- "Great! I'm even more excited about it. -- "I am so jealous you have not read Gibson yet. -- "I know that feeling to experience great things for the first time. It's certainly a grateful experience. -- "I just bought a cheap Raspberry Pi Zero and I'll try to use it as an audio bluetooth receiver, recycling an external USB sound card I don't use anymore. I think I'll use Alpine Linux, it seems commonly used on embedded hardware and I had a great experience with Alpine inside Docker containers. I'm also doing this because most bluetooth receivers can't be renamed (they're all named \"SomeBrand Bluetooth Adapter Thingy\" while anyone would prefer seeing the name of the room they're placed in) and I'm somewhat concerned with non-upgradeable IOT devices. I've also an unbelievable amount of things to debug and improve on GitHub. -- "If you get something up and running, I would love to see a writeup posted here. I've got a Pi Zero W with a DAC hat that I've been meaning to do this with for almost a year now. -- "I have a Pi-0W running [volumio](https://volumio.org/) with Airplay, DNLA, & spotify connect. To the best of my knowledge being able to use it as a bluetooth receiver is [still a work in progress](https://github.com/volumio/Volumio2/issues/795), but there are several people documenting how they got it working on their system. -- "I had no idea Alpine Linux worked on RbPi -- "https://wiki.alpinelinux.org/wiki/Raspberry_Pi -- "Hosting a bonfire tonight (you're welcome to come), and a Sacred Harp singing Sunday afternoon (oh, you're also welcome to come to that). I may get some coding in between errands Saturday. -- "Continue to crunch issues in my pet language [tinySelf](https://github.com/Bystroushaak/tinySelf). I have to implement exceptions and exception handling. -- "Work, work, work. SO and her family are on a backpacking/climbing trip, and I'm stuck here working. Probably going to try to get some extra long runs in when I have some free time. I have a half marathon coming up that I'm not very well prepared for. I might get a pretty good chunk of reading in too, pending my release from Overtime Hell. -- "Hunkering down indoors due to [a storm](https://www.theguardian.com/uk-news/2018/oct/12/storm-callum-batters-britain-with-galeforce-winds-and-heavy-rain-weather). No real problems here though; power is still on, and my flat seems to be coping with ~50 mph winds fine. Hopefully will get to reading something on my to-read list. -- "Be safe, especially if you have to get out candles. -- "I totally flunked my electronics test I had to take yesterday, so I'll just be relaxing a bit, working on some projects I had to set aside for a while, playing around with some graphics and taking the time to read a bit until the next semester starts... on Monday. -- "I'll be [working on a new blog engine](https://jacky.wtf/weblog/building-koype/) for my personal site. -- "Fighting my losing fight against entropy; e.g. cleaning my apartment. I'm also going to try playing Shroud of the Avatar with my dad. It runs terribly on my machine, and I'm not a huge fan of online games, but my dad loves & I'm mainly playing it to spend time with him. Also working on my congressional outreach tool that seems to just be dragging on & on & on. -- "A little bit of cracking/reverse engineering on a hardware device. Experiment some more with an ATECC508 chip I wired up on a protoboard last weekend. Finish off some library books that are woefully overdue. Go running, and perhaps play a bit of soccer if I can drag myself out of bed early enough. Review a few software side projects that have been languishing without much attention and either retire/archive them or plan some next steps. Stop by the office for a bit to effect a cubicle move outside of work hours. -- "Stressing out about the climate breakdown and the latest IPCC report. Considering how to get involved in the development of carbon capture technologies. There’s no such work locally as far as I know. -- "Canvasing for Sonja Trauss, preparing for work trip, going to Autograf & Stayloose, some personal project work of sifting through group feedback. -- "Things that I need to get done: * Clean apartment, continue unpacking (the last 5% takes _forever_) * Continue nesting activities in apartment (find more rugs...find more interesting lighting...trying to go cybercomfy ala [Cradle](https://store.steampowered.com/app/361550/Cradle/) * Catching a movie -- "Spend time with family, visit in-laws for lunch, maybe do a little DIY (painting/decorating), practice my guitar and generally stay away from my computer. Though 6-year-old son will probably beg me to join him in Minecraft, and I’m sure to cave in for a bit ;-) -- "I love these threads. There's something about the general default positivity of Lobste.rs that isn't the case on other websites. I just finished buying some things at the farmers market and enjoyed some avo on toast while the doggo took a nap. -- "HackUMass VI! Teaming with a few friends, should be a blast. -- "Working on a modified version of the Computer Modern Unicode Typewriter font, for day to day programming use. The original is beautiful, imo, but has some issues, including weak support for math symbols, operators that aren't vertically aligned (so ascii art and arrows look wrong), and no slashed zero. -- "Working on [viscal](https://git.sr.ht/~jb55/viscal) a vim-like timeblocking calendar: * [demo](https://jb55.com/s/viscal-demo-3.mp4) * [pic of me dogfooding it last night](https://jb55.com/s/af1b41614f1e549b.png) I wasn't happy with the current state of calendars that require a mouse, I also love timeblocking so I wanted to make a calendar that felt like a text editor and was easy to timeblock with. -- "I am pruning my extensive collection of technical books. -- "It’s Friday again; as always feel free to post your plans or projects for the weekend. -- "On Saturday I have a roller derby training camp. It's been a few years since I played, so I'm really excited to get started again. I also want to add some Hacktoberfest issues to the Haskell apps and libraries I maintain. -- "I'm home all alone! My parents are going abroad 1 week and other friends visiting family over the weekend. Soo... * Clean * Spectate local Tae Kwon Do tournament a few mins * ... hack on a work project?! * Clean my car -- "Whoo party at tenken's! -- "It's Thanksgiving in Canada so I'm going to drive down to Calgary and see my parents. -- "As you're right in the middle, does that make you an Oilers or Flames fan? -- "Definitely Flames fan, I was born in Calgary and grew up just south of it. -- "Nice! I'm not a fan of the Flames per se but I love Johnny Gaudreau. Also, their retro thirds this year are absolutely amazing. -- "As a Canadian living abroad in a non-thanksgiving country, please demolish some Turkey for me... -- "I certainly will, I'll even have seconds on the stuffing. -- "- Hopefully finally buy a bicycle - Find some projects to contribute to for Hacktoberfest - Try out a supposedly really good pizza place around the corner - Maybe get some people together to plan a climbing trip before winter actually comes -- "I'm helping to host a [Hacktoberfest event at Pittsburgh Code & Supply](https://www.meetup.com/Pittsburgh-Code-Supply/events/255198328/) on Sunday. I'll also be restoring to working order my gaming rig after a bad Windows update took out all USB ports two weeks ago and I had to find a PS/2 keyboard and mouse to borrow so I could fix it all. I'm also pricing out parts for my first new build in six years. -- "I'm not sure. Over the week I have rewritten my simple C++ PDF signer [in Go](https://godoc.org/janouch.name/pdf-simple-sign/pdf) and spammed the respective GitHub issues in all three Go libraries with that PoC, then finally digested the Meta II paper. Next I wanted to finish my dated proxy project that adds Shoutcast metadata to BBC radio HLS streams but I have met some mental resistance. Or I can keep trying to write a terminal emulator, also with design pains. Current job/client gives me no other sensible options. -- "Cool on META II. I previously submitted [this tutorial](https://lobste.rs/s/ravlax/tutorial_on_metacompilers_using_meta_ii) on that. You might find it interesting. -- "Need to: * Felt the shed roof, it's currently got a tarp over it but the recent winds ripped that * Repair the kitchen (flat, felt) roof before we get snow & heavy rain * Finish mowing the lawn, so it's not half done anymore Would also like to: * Go swimming and do 40 (x 25m) lengths in the pool * Finish sorting out the garage & get some proper lighting up in it * Pull a power cable up to the loft from the garage -- "In the last couple of weeks, I have learned a lot about modern JavaScript and CSS development with a local toolchain powered by Node 8, Webpack 4, and Babel 7. As part of that, I am doing my second \"re-introduction to JavaScript\". I first learned JS in 1998. Then relearned it from scratch in 2008, in the era of \"The Good Parts\", Firebug, jQuery, IE6-compatibility, and eventually the then-fledgling Node ecosystem. In that era, I wrote one of the most widely deployed pieces of JavaScript on the web, and maintained a system powered by it. Now I am re-learning it in the era of ECMAScript (ES6 / ES2017), transpilation, formal support for libraries and modularization, and, mobile web performance with things like PWAs, code splitting, and WebWorkers / ServiceWorkers. I am also pleasantly surprised that JS, via the ECMAScript standard and Babel, has evolved into a pretty good programming language, all things considered. To solidify all this stuff, I am using webpack/babel to build all static assets for a simple Python/Flask web app, which ends up deployed as a multi-hundred-page static site. This weekend I am going to port everything from Flask-Assets to webpack, and to play around with ES2017 features, as well as explore the Sass CSS preprocessor and some D3.js examples. -- "I'm working on a halloween costume (Winslow Leach from Phantom of the Paradise) this weekend. It's not as high-effort as a normal cosplay (and won't look nearly as accurate or good) but it's substantially more complicated than an off-the-shelf costume -- in part because I'm totally unskilled. -- "We and two other families are going \"camping\" (RV, no tents) up on some land that one of the families owns, in the traditional once-or-twice-a-year \"family vacation with the family you choose rather than the family you inherit\" trip. Six adults, seven kids, and a bunch of dogs. -- "I'll be playing Pathfinder and spending some time with my brother, who recently got back in town. If I can find the time, I'll be trying to clean up a version of bashmarks so that it works well on systems with spaces in their file names, and/or building a website in F#/.NET Core/Giraffe. I'm considering either re-writing my [erlang wiki](http://junglecoder.com:9090/IDEAWIKI/home) in F#, or writing the [a random link redirector](https://idea.junglecoder.com/view/idea/1) in F#. I'm mostly looking to move on from Erlang at the moment because the good properties about it (the strong distribued nature, and the debug tooling) are currently offset by fiddly set of tooling I've been using. My wiki instances are still running behind a set of tmux panes, and I'm unsure I want to take the limited free time I have to work through building Proper Erlang Releases to rectify that. I like the idea of being able to make my wiki software work on both Windows and Linux, and be super simple to get up and running. It's looking like .NET core is going to have some interesting stories there, and I've been needing an excuse to get into F# for a while now. I've tried using it before, but I've yet to ship anything with it, and as the .NET Core story gets better, my interest has been going up. -- "Thanksgiving weekend and I have Tuesday off - will be traveling to my sister's where my girlfriend will meet my family for the first time. -- "Hope that goes well! -- "Thank you! It did! -- "I decided to write a \"component Pascal\" compiler this week and will hopefully find some time to continue working on it. -- "That sounds interesting! Are you following some specification or making your own flavor? I wanted to learn Pascal when I was a teen after doing some Basic, but my cousin semi-forced me to learn C instead haha (BTW I wasn't a genius coding child or anything, just made a couple lame programs) -- "so, basically Component Pascal != Turbo Pascal. Basically N. Wirth, a professor from the ETH Zürich created the original Pascal language as a teaching language back in the days, it didn't even include a module system, as a teaching language. Wirth has a habit of creating simple Languages, simple for the programmer, and simple for the person writing the compiler. So all around the globe people started to implement their own pascal compilers and write software for it. Usually adding features along the way. Fast forward, a fairly popular dialect was \"Turbo Pascal\" by Borland which ended up as \"Delphi\". Nikolaus Wirth, however, didn't stop building compilers and languages and came up with his own descendants. First the MODULA series of programming languages. I guess he in the end felt that MODULA had accumulated a few too many features, and he slimmed it down into OBERON. For someone who did a fair amount of pascal programming, OBERON feels familiar in many ways, it definitely is different from Pascal though. # Why Component Pascal Its one of the ideas that never really goes away. I want at least once in my life have implemented a compiler. I had one or two past attempts that I had abandoned and with those I did not reimplement an existing language, but kind of also tried to design my own programming language, and I guess that meant too many moving targets for me. So this time I want to implement a specified programming language, so I can focus on getting the implementation done instead of contemplating syntactic or semantic design choices. I first thought I could implement Pascal and researched what specs or dialects are available. This is when I saw oberon which had a few properties I really liked about it. First of all the syntax of Pascal has deficits, especially since it retrospectively was extended by Borland and others. Oberon fixes a lot of these things. Oberon also has interesting low-level OOP features that I find interesting and I would love to explore. So I actually might use my compiler for some other pet project afterwards. Now I plan to implement \"Component Pascal\", which is roughly an Oberon dialect that was named \"Component Pascal\" for marketing reasons. The reason I picked component oberon is that it has a nice and concise specification http://www.oberon.ch/pdf/CP-Lang.pdf Cannot really tell whether the description of the semantics is complete, but I guess I will see if it is. In the best case, I can avoid ordering and reading all these published books on various revisions of the Oberon language by focussing on this single spec. # Turbo-Pascal-Style Pascal If you are interested in Pascal, your best bet at the moment probably is http://freepascal.org . -- "Thanks for the detailed response and good luck with your project! -- "Would you consider making it target the Dalvik VM as the output/assembly format? I thought recently that Oberon could be an interesting alternative language for writing Android apps without having to download the whole Android Studio. On the other hand, I suppose for you personally a more future-proof target could be WebAsm. I believe it's on its way to become the lingua franca of OSes, VMs, and maybe even processors? (Very curious if the latter is possible; can it displace even RISC-V?) -- "I haven't thought much about code generation yet to be honest. I might just plug in llvm or target risc-V for a start. Let's see. Dalvik might be interesting too. Webasm probably does not strike my personal motivation. -- "If by off chance you'd fancy to choose Dalvik in the end, I'd be super grateful if you let me know. It'd be very interesting for me. Also I might or might not then get tempted into randomly throwing some contributions to your project whether you like it or not ;) -- "I googled about Dalvik a bit while I was on the train. You'll be happy to hear I haven't ruled it out yet. One question I have is, it seemed like people would generate JVM bytecode and then have Dalvik tooling compile it down to Dalvik. Is this how it's typically done or is this just the workflow that people use who use compilers targetting the JVM? -- "Yes, people generate JVM bytecode and then have Android Studio compile it to Dalvik. That's why I'm interested in compiling *straight* to Dalvik — [to avoid having to install the hundreds of MBs (and growing) of Android Studio](https://softwarerecs.stackexchange.com/questions/50000/easy-to-port-compiler-for-a-full-fledged-programming-language#comment69228_50000) :) -- "is there an emulator / virtual machine implement for dalvik bytecode on the desktop? -- "Hmm; so, I know of [Genymotion](https://www.genymotion.com/); other than that, not sure... some googling shows [some](https://www.techradar.com/best/the-best-android-emulator) [others](https://fossbytes.com/best-android-emulators-pc/) too, including reportedly some emulator in Android Studio. Don't know of a FOSS one, or a more \"barebones\" one. I believe Genymotion is quite accurate w.r.t. emulating full Android environment; or at least was some years ago. *edit:* hmmm; I believe [this slideshow](https://www.slideshare.net/ssusere3af56/how-to-implement-a-simple-dalvik-virtual-machine) apparently has some info how to compile the Dalvik Virtual Machine from Android Studio, and use it from command line (see slide 42 and slides leading to it). -- "I will try to finish writing a chapter of my statistics book (dont want to tell too much about the project since it's early stage). -- "Setup a pirate hotspot, sleep lots and try to get back to learning Japanese for my up coming trip. -- "I've been diving into the Talos II server; there's a lot more work to be done. Debian Buster is currently booting off the nvme drive; that works fine. I also have an array of eight hard drives connected through an LSI 9300 host board adapter, which has been giving me some trouble. After a few hours of operation, the disks seem to momentarily vanish? Which obviously upsets the filesystem. I believe I need to update the LSI card's firmware, but I'll need to move the card to an x86 PC in order to do that (no PPC64 support for the firmware flashing tool). I've been waffling between OpenZFS and mdadm+XFS. I expected to be put off by ZFS's complexity, but now that I've observed how both systems deal with the faulty LSI card, I'm a lot more confident in ZFS (even if it is 250K lines of code). It just seems better about detecting errors, and pausing operations when the disk state is uncertain. It took a while to get my bearings regarding virtualization on POWER9. There is no `kvm-qemu` package, and eventually I realized `qemu-system-ppc64` is the necessary package. I was able to create a VM using virsh and virt-install, but haven't been able to attach a console yet. -- "Giving a talk at Pygotham... https://2018.pygotham.org/talks/scale-independent-python-how-to-scale-your-python-application-without-any-code-changes/ https://github.com/SeanTAllen/scale-independent-python -- "Launched https://twellowpages.com/ minutes ago. Some Woodwork tomorrow, winter is coming... -- "Working on that Common Lisp project for class. This may have been a mistake on my part as now it's drained me of any love for the language. Scheme on the other hand still sounds nice. -- "I'm curious about the CL project. What problems have you run into? -- "I'm not doing anything programming related, I'm producing a new Synthwave song for my project [Velvet System 82](https://soundcloud.com/velvetsystem82), my first 2 singles had a good reception and when you are just starting you need to keep the momentum. I'm also learning more about how to promote my music. -- "I think it's going to be a good weekend. First there's a cyclocross race tomorrow morning so tonight I need to give my bike a tuneup, put on new tires, and go for a quick test ride. And a friend gave me some \"special\" butter the other day, so I'm going to bake cookies with that either tonight or tomorrow afternoon. Also tomorrow I'm going to take a Codility coding test as part of the interview process for a new job. And I decided it's finally time to learn how to play the electric piano I bought back in January, so I bought a book on music theory and a couple of beginner piano books, and I'm planning to work on that for at least a few hours. And then I'm going to spend some time working on my book scanning/cataloging project. I'm running into problems using Tesseract with webcam images (the resolution and focusing sucks), so I'm going to look at using gphoto2 and a digital camera instead. -- "Documenting the assembly process for my DIY laptop design: https://www.flickr.com/photos/technomancy/44212511695/in/datetaken-public/ I've been working for months on this and finally found a way to fix the last remaining flaw. https://code.technomancy.us/technomancy/atreus-deck/src/branch/master/build-log.md -- "Too cool! -- "Out near Palm Springs to see a wedding. This place is full of mountains and desert and Joshua trees. Wtf -- "I'm thinking on starting a project in Django/Flask to learn a bit about a web framewor and setting up my homeserver. -- "[HackUPC](https://hackupc.com/) is in a couple weeks and I'm involved in designing/building the programming/CTF kind of challenge that happens in the event together with a friend. Got a lot of work to do as I'm developing tooling for the event -- "Contributing to Debian, Netdata, and writing a web-based epub reader. -- "What language for the reader? JS etc., or Elm, Reason, some WebAsm, or something even more funky? -- "Nim for the server-side, js for rendering the epub. Thanks for asking! -- "Reading about Z3, tutorials about model checking, fool around with my assignments and basic house maintenance. -- "It’s monday again, feel free to post what you’re working on this week. -- "I'm still working on that dang Clang static analysis feature. The amount of documentation I have to wade through is astounding. Off-hand: does anybody know how to check if a RecordType is actually a C++ class or struct? On the side, I am writing -- just bits and pieces, but it helps me understand what I'm programming. -- "I didn't touch that part of the code when I was working on LLVM, but your best bet is to ask the [LLVM Developers Mailing List](https://lists.llvm.org/mailman/listinfo/llvm-dev). They get questions of this nature all the time and are good about answering, based on my experiences. -- "Good point -- thank you for your suggestion. -- "I love the clang static analysis! It's integration into vs code is so slick, I feel I have a C++ REPL. I would say that it is the single feature that's made me keep using C++ especially \"modern\" C++ which has many more corners than whatever it was we were using back in 1999. -- "Working on version 3 of Proof-of-Growth algorithm in [Merit](https://merit.me). Version 2 was great but not perfect. We took community feedback to heart and started work on fixing the issues people are having. -- "* `$DAYJOB` is slowly making progress towards an internal release of the project we have been working on for 2+ years. Hopefully, we should get it launched within the next few months. * House renovation is nearing completion as well (hopefully finished before the end of October?) * Get the radiators hooked back up * Build the vanity for the full-bath once the radiator is back in * Build the molds and pour the concrete for the counter-tops (this week?) * Get the electrician out to do some really basic work * Get the plumbers back out to hook up the sinks * Leveraging [lwan](https://lwan.ws)'s straitjackets (read: chroot jail + privilege drops) for my website (MOAR SECURITY) * Starting on the rewrite of my pastebin with all that I've learned from setting up my personal website * Hopefully getting started on some of the basic code / DB work for a business idea I have (don't want to say too much yet, but could hopefully be a reasonable self-employment option) * Heading down to New Mexico to see the Balloon Festival this weekend! -- "> Leveraging lwan’s straitjackets (read: chroot jail + privilege drops) > for my website (MOAR SECURITY) Appreciate the reminder about lwan. People are often talking about language rewrites or compiler transformations for stuff like Nginx that's 100+ kloc. The lwan codebase was doing really good on fuzzing, is supposedly easy to read, and page says about 10kloc or so. Also, any improvement might benefit embedded since it's used there. SCADA and IoT that hackers are currently focusing on a lot. So, lwan seems like much better target for people wanting to use PL research or security tools to improve a web server. -- "Over the weekend I was mostly discovering and reporting bugs, and got bytesparadise/libasciidoc working on my Gitea with some hacking around the missing support for two-line titles. Right now I'm rewriting my little scripting language from C to Go because it seemed fun and who knows, I might get to use it in the sense of Emacs Lisp one day. -- "Aaand, [done](https://git.janouch.name/p/ell/compare/4c844e27892195caf9521d0fa89b1e0bf2907da2...f751975cfd967c717473fea400d926a4c9f8beb1). That wasn't too bad. -- "Posted a new [theft ](https://github.com/silentbicycle/theft) release, 0.4.4, which includes a couple bug fixes and Makefile improvements that shouldn't wait until the 0.5.0 release is ready...And then 0.4.5 shortly after, because someone pointed out I'd missed the version in the pkg-config file. Oops. Work: Among other things, working on some succinct data structure implementations, and a library which builds on them to create a highly space-efficient trie. Both will eventually be open-sourced. -- "It's cool you work somewhere that lets you open-source stuff like that. Unless you're an independent contractor/consultant working for yourself. Well, that's even cooler. ;) -- "At work: trying to provide colleagues with reproducible builds by moving complex build steps that are currently only written as groovy scripts that run on Jenkins build agents to MSBuild. This includes replacing a custom dependency management tool that was written (less than a month ago!) with a NuGet repository. But the really interesting stuff is happening outside of work. I'm on my third consecutive week of quite good mental health: possibly the best weeks I've had in a few years. As such, I am hoping to make the smallest amount of progress on the following: - at least 20 minutes of guitar practice every single day - some work towards the MVP for my side-hustle, which is software to help small restaurants/cafés/pubs manage their \"online presence\" - some thinking about what the next steps in launching my side-hustle to provide Nextcloud hosting service - any kind of movement on any of my free software projects Astute readers will notice that aside from guitar practice, my goals are incredibly vague and easy to accomplish. This is by design: I don't want to ruin a good run of mental health by trying to take on too much too soon. -- "I’m a big fan of the idea of easy goals. Not taking on too much makes it more fun, and tiny progress over time is better than getting tired of the whole project after a week. -- "$DAYJOB.init() * .push( Try to complete integration with campus data apis for curriculum data and derive SQL dataset using mysql json functions ... This has been a huge pita ); $HOME.push( wash dishes ); -- "* Framing my third floor. Wood arrives Wednesday. * Hosting a bonfire Friday, Sacred Harp singing Sunday! -- "I’m helping a friend write the software for a little gadget that lets kids enrolled in a local dance school unlock the front door with RFID cards (a “smart lock”). We already made a similar gadget that just registers their presence, now we’ll hook up another Raspberry Pi to the same database, with a card scanner and a 12V relay for the door’s magnetic lock. -- "Interesting. I've been meaning to do something similar at home. I've got a few Raspberry Pies collecting dust, assorted electronics, bread boards and relays, and I recently bought an electric door strike plate. My idea is to mount it to the back entrance door to our apartment so the kids can open the door with their own RFID tags. We live in an apartment building and the keys that open the apartment doors are ~80 USD a piece, which is a bit steep for something that may easily get lost (and rekeying all the locks is probably a lot more expensive). Instead the kids could each get a key that only unlocks the outer doors in the building (~30 USD) along with an RFID tag, which would be much easier to replace. -- "At work, I'm working through a maintenance backlog this week, and/or keeping up with tickets/issues coming in. I'll also be refocusing on studying for an upcoming certification. Outside of work, I'll be working on clearing up some space around the house by organizing some things a bit better, and I'll be working on learning how to use F# and .NET Core to build tools and websites on Linux. I'd also be interested in finding out if F#/.NET has a way to target the termux \"Linux shell on Android\" environment, without going through the pain that is building a mobile application using Android Studio. -- "I'm playing around with a [tiny dynamic arrays library for C](https://github.com/nullp0tr/dga/) that uses the same approach as [sds](https://github.com/antirez/sds). Also if I'd have time I'd continue hacking on [prom](https://github.com/nullp0tr/prom) which I'm trying to make an interactive strace out of. Other than that just normal day job work. -- "Tonight or tomorrow, I'm going to release CHICKEN 5.0 RC3. After that, I'll probably be doing some tinkering for myself. If it turns into something I might blog about it. Perhaps I'll also help people port some more code to CHICKEN 5. -- "Also, in the interest of dog fooding, I should upgrade my personal VPS web servers to CHICKEN 5. -- "At work I'm still on the triage team handling incoming cases from our test team, and fixing bugs here and there. I've started using org mode to track and document all of my work on these triage cases, and it's making me a lot more efficient. Outside of work I got the OCR for my book scanner to work. Unfortunately, I have 3 webcams (a standalone Logitech, and the ones in my iMac and MBP), and none of them focus quickly enough or have the image quality to make scanning as seamless as I'd like, so I'm going to use the [gphoto2 bindings](https://github.com/jl2/gphoto2) I started a while back, and doing the scanning that way. This week I'll be reviewing where I was on the gphoto2 bindings, and filling in the missing parts to work with the book scanner. -- "I am on vacation and thus free from `$DAYJOB`; I am working on [elvish](https://github.com/elves/elvish), trying to finish off some major refactoring efforts. Other than that I am also reading the [Perl 6 Language Documentation](https://docs.perl6.org/language.html). -- "I'll probably be spending my evenings digging into remacs and porting some C functions to Rust. I'll also try to make my X11 protocol compiler generate code for all constructs, even though it's still missing many passes. Reading the post on incremental results from a few days ago made me want to get my library to draw a rectangle on screen asap, no matter how many improvements could still be made. Though between remacs and the new `$DAYJOB` I doubt I'll manage to do it this week. -- "In `$DAYJOB`: * Writing up some of my interviewer experiences, in the hope of making us more consistent * Shipping out a few small product features, assuming I can do so without a massive refactor * Trying to auto-generate documentation for our internal-use HTTP APIs In life: * Trying to actually write a blog post one of these days * ... and also yak shaving by editing blog stylesheets -- "I'm migrating away from Gnus to Notmuch for managing mail in Emacs. Neither is perfect but my trial run of Notmuch was very favourable and it's nice to have a decent mail search that works on the command line. I ordered a Clueboard and hopefully it comes this week so I can start tinkering with QMK firmware. -- "Late last week I did a soft launch of [my synthesizer VST plugin](https://lhiaudio.com) slightly ahead of schedule due to a high-profile electronic musician using it on a Twitch stream for several hours. It was unexpected, but served to force my hand somewhat in regard to putting the website and final 1.0 builds up. Next steps for me are finishing up the user manual and then doing a PR push of some sort – posting on forums, making a bit of noise about it. It's my first time releasing a product on my own, and a B2C one at that, so there's a lot of learning to be done still, but, hey, on the home stretch of the home stretch now. -- "Could you give a bit more information on the performance? Who exactly has used the plugin, and is there a recording of it? Thanks! -- "Of course! It was Deadmau5, and there's an [archive of the stream](https://www.twitch.tv/videos/318416822) on his Twitch channel. -- "That indeed is as high-profile as they get! Congratulations! -- "Giving the finishing touches (live on Twitch streaming for my first time) to this extension for PyScaffold: https://github.com/pyscaffold/pyscaffoldext-custom-extension PyScaffold is a tool to create Python projects with the most solid tools available in the ecoysystem. It can be extended to add more features, more tools, more options. My extension allows you to create projects that will implement new Pyscaffold extensions. An extension for extensions. Metaxtensions. It's always a headache to understand at what level I'm operating. -- "Moving across the country, so lots of packing, logistics etc. This is a culmination point of a project I started 2 months ago with the goal of doing more BSD development on a daily basis. If someone wanted to sabotage me at this time one would only need to steal my bullet journal - I wouldn't be able to pull all this off without it :D -- "I finally launched [Moneygains](https://moneygains.co.uk/) — a price comparison app for residential energy tariffs in Northern Ireland. I still have some more minor details to iron out, and my business partner is negotiating terms with the five main energy suppliers in NI. We're in negotiations with one, which is why there is only one logo visible in the app. Built with Haskell, Elm, PostgreSQL, and NixOps/AWS. -- "Congratulations on the launch! -- "Thanks very much! The related landing page is [here](https://comparestack.com/). I'm surprised how much work had to go into this. I thought the project would be quite clean-cut and straightforward, but with the comparison logic, and only having time to work on this around my day job and my other two \"side projects\", it was quite the handful. My first commit was eight months ago on February 3rd. Using typed FP languages was a huge benefit to productivity, and saved me lots of potential extra QA work. Bugs were quite rare, and most of them were as a result of calculating projections/discounts/taxes incorrectly. This is where a test suite was invaluable. My experience working on this project and my other typed FP projects has solidified my opinion that \"types don't protect you from everything, therefore don't bother with types and just use tests\" is an incredibly dumb opinion that is unfortunately quite common in the industry. -- "I'm on vacation in Porto :) Have a great week everybody! -- "Honestly? Passing the days until I can start my first 4-week vacation in 6 years. At $work, this happily coincides with a week heavy with meetings, which I mind a lot less than usual. -- "It’s Friday again; as always feel free to post your plans or projects for the weekend. -- "* Taking part in a global sailing race at my club, the [Barts Bash](https://www.bartsbash.com). My first time racing, but should be fun. Managed to enlist my daughter as crew in our Flying Fifteen too, much easier than trying to sail single-handed. * Adding a workaround to a friend's car, something's failed in the heating system so the fan is always on full blast. We're going to splice an on/off switch into the power cable to the fan rather than replace it, so she can turn it off. (It ignores all heater controls currently.) * Sorting out the garden, it's been somewhat neglected since the UK has finished having a heatwave and is growing rather tall. * Provided the weather holds, going for a bike ride. There's a 50ish mile ride I quite fancy doing (with a halfway rest stop at a pub of course). -- "I've raced sailboats off and on for a couple years, it's a lot of fun. I hope you have a great first race! -- "Nice, I've sailed yachts for most of my life on and off, got given an FF three years ago and sailed at a local club a fair bit but never raced. Looking forward to taking part, they're a pretty friendly bunch. -- "The fan running full blast probably means that the blower motor resistor pack has failed in some way. You can probably replace it, or (in some rare cases) check the pack for continuity and touch up any shoddy soldering. -- "* Moving all my boxes of technical 'bits' from my Garage into my nice shiny new Shed/Workshop * Checking that the 1GB powerline connectors work across the new wiring from my house to my Shed/Workshop * ...and if so, installing a spare NAS in there as an 'off site' backup platform, plus a WiFi AP so I can have a laptop in there as well. -- "Going to build a Mattermost bot in Go. It'll moderate arguments going on in the channel and keep track of points for each participant. And since it's all good fun, I'll probably code in a way for folks to try and bribe it by direct messaging it with a sufficient offer -- "Working some more on my \"Security best practices\" pages: https://www.zie.one/en/security/ And going to help the local dog park at their work party. -- "I'm making headway on a project I plan on open-sourcing: a .NET Core CLI app for budgeting. I'm not happy with current consumer offerings in this space. I really liked YNAB but I'm not a fan of the online subscription-based format they moved to. So I'm building an off-line, open source alternative. The killer feature I want to work on this weekend is the ability to import CSVs downloaded from your banking provider. It'll be a challenge to write a CSV parser that can 'figure out' on the fly which columns are which. We'll see how it goes. -- "Hey, I would like to know more about your offline alternative. I'm also sick of the current apps that are in the market. I also agree with you about offline stuff, and if this is open source, I think it's pretty cool. -- "Thanks, I'm glad to hear others share my frustration! I plan on opening it up once I get it working in a \"minimum viable product\" type state. My bigger vision is to create something with a GUI and optionally something you would self-host on a web server if a user were to want access from away from their PC. -- "FWIW, I've been on and off learning beancount since last year, writing mediocre python importers for the various accounts I've had but still manually reviewing things afterward. It may depend on how the CSV is structured - some may have transactions represented within a single row, some across two rows (vanguard does this, and even worse the lines get a misaligned when having multiple transactions done on the same day). You may want to search the beancount mailling list for what people have done - for example there's been a couple attempts to do things with ML ( https://github.com/beancount/smart_importer and https://disjoint.ca/projects/ledger-reconciler/ come to mind, haven't tried either of those yet though) -- "Wow, thanks for pointing this out, this sounds awfully close to what I'm trying to build. I'll have to give this system a whirl and decide if I even need to build my thing. -- "Interesting. I'd thought of trying to use ledger-cli to do envelope budgeting, but I've bounced off it the last couple of times I tried to learn enough. Will have to give it another go soon. -- "I'll be learning to climb with ropes (basic toproping/belaying) for the first time, which should be fun. More relevant to here, hopefully looking into finally adding some content to my personal site - probably some Docker/Kubernetes posts to start with as that's where my day job has been focused for the past several months, and I have notes to work from. -- "I want to get into building some interactive code sketches with Rust and WebAssembly that run in the web browser. I'd love to use some more advanced things than languages like Processing supply like integration with public data feeds (visualize cryptocurrency price changes, view queries to my databases, etc.) and doing collision detection or some light physics simulations. It's my last semester of university and I've got a very light class load, so I figure I should spend some time working on coding projects for fun before I go all in on a career. -- "Uploading a video streaming library in Debian. -- "I'm going to be working on remaking the very first piece of software I ever wrote. It was a janky little text adventure game written very poorly in lua, I'm going to redo it in C++ (probably) with ncurses and ascii art, the whole nine yards. -- "I'm going to continue working on my closed loop stepper controller https://gitlab.com/crankylinuxuser/closed_loop_system -- "Apart from family stuff, I'm hoping to get further into the Programming in Haskell book and do some more Haskell exercises on https://exercism.io Before I learned Elixir, Haskell's syntax made no sense to me, but now I'm finding it absolutely fine. So far the book hasn't thrown anything at me I can't understand, but I'm only about 1/5 of the way through. Waiting for the mind-blowing parts! -- "i want to learn Haskell as well but procrastination has won so far. -- "I looked at Haskell for a few minutes. Given what I work with, I couldnt see me actually using it other than toy programs. It doesn't run embedded, and I use things like node-red for glue to stick projects and things together. If I get time, Ive been thinking about FPGA synthesis. But again, time. -- "Check out [Ivory](https://www.ivorylang.org). -- "I didnt know that existed. Sure makes writing control code for closed loop a heck of a lot easier. The only bad thing is that I'd have to migrate away from stm32-duino libraries, and potentially reduce help (if I ever had collaborators). -- "I gave Exercism a try but there are too few mentors. I can't get past Hello World because no one is approving or commenting on my solutions. I went to check my notifications and I haven't had a single response in a month. -- "Maybe if a lot of us from lobsters got on there we could get it going! -- "minimized my network setup at home today so i can spend less time maintaining it and focusing my time on better things. Hope to do some scraping this weekend of a few sites, anyone recommend any place to sell scraped data? -- "Working on my configurable Idle RPG. Its intended to work with any chat program, though Slack, IRC, and Discord are the initial targets. Its a remarkably fun project, and this weekend I hope to: * wrap up the Slack frontend * create the ability to set up custom achievements (triggerable via API so you can set them up to be awarded for whatever) * start work on the procedural quest generator. I haven't worked on generating stories since my creation myth generator so I'm pumped to get back into that headspace. -- "I'm on call this weekend, so waiting for the inevitable Pagerduty alert. Aside from that, * A colleague and I are trying to work through GEB, and I've been trying to be better about the notes I'm taking from it; I'll probably go back over my notes and try to do some chapter writeups. * I'm also taking a Udacity nanodegree program, so trying to work through that. * Much overdue housecleaning. -- "It's my birthday so I'll be hosting a tea party and dinner. Then I'm going to do some biking. Maybe if I get some spare time I'll work on my parsing tutorial. -- "Happy Birthday in advance! 🎉 -- "Heh, thanks! -- "Happy b-day! -- "Thanks! -- ">hosting your own birthday party Shouldn't somebody be the host and you be the guest? -- "Eh. I don't like traditional birthday celebrations. Some past birthday celebrations have included going camping with two friends, doing nothing, and having a birthday brunch potluck. This year I changed it up a bit and will be hosting a tea party, since I am the one known for being a tea-drinker. -- "Think of it as localhost. :) -- "If your the host, you can also control the experience a bit to ensure it will be great. Some might not want to leave to chance. On altruistic side, some people will enjoy giving something to others or putting on a show for their birthday. -- "Happy birthday!! I love the serendipity of wishing a real-life happy birthday to an internet stranger. Have a great weekend! -- "Thank you! -- "I'm speaking on code review at [Code Daze](http://codedaze.me) in a couple of hours and seeing one of my employees speak tomorrow at it, too. I just launched a new [Pittmesh](https://Pittmesh.net) website last night! -- "Going to the zoo, because I fucking love animals. In the 6th mass extinction event, enjoy them while we got them. -- "Bit banging Ethernet on a RISC-V board in Rust. Can I get more hipster than this? -- "That's pretty hipster. I think the only thing that tops it is building the Ethernet and RISC-V in your [Novena](https://www.crowdsupply.com/sutajio-kosagi/novena) using [Qflow](http://opencircuitdesign.com/qflow/). ;) -- "Listening to the new [Dirty Nil record](https://thedirtynil.bandcamp.com/album/master-volume). Installing a new radio in the Jetta. Playing with the kids. Not working. -- "* Saturday: my employer is throwing a big party for family & friends just outside of Berlin, should be fun. Lots of other toddlers, so my little ones will also have a great time. * Sunday: Berlin marathon is happening. I'm not actually into running, but the event happens just right at my front door. So, we'll watch and cheer! -- "I will be attending [Seattle Code Camp](https://seattle.codecamp.us) on Saturday. -- "Taking care of our new [rescue dog](https://pbs.twimg.com/media/Dmx0ML0UcAAHDdX.jpg:large) and doing a dog friendly walking intensive pub crawl with friends :) -- "I just finished my work on _Practical TLA+_! Since that (and a bunch of other stuff) meant I had no social life over the summer, I'm kicking that back up by hosting a dinner party tomorrow. Haven't yet decided what I want to make, though. Sunday is probably going to be quarterly taxes and business cards and stuff. -- "Re TLA+. Congrats on getting through with it! Re food. The desert will be homemade chocolate. -- "Dessert isn't homemade chocolate, the chocolates come out after dessert :P Post-dessert chocolates are gonna be Earl Grey truffles and pumpkin-seed caramel bars. It's the _rest_ of the dinner I'm having trouble with. I've mostly settled on jollof rice as the meat entree and mostly have my sides down, all that's left is to figure out the vegetarian entree. -- "* Canelo vs GGG 2 at the movie theater * Clean house * Dinner with parents -- "Continuing implementing a minimal WebRTC data channel server in Rust. I have the ice-lite, STUN, and DTLS layers working (at least with Chrome). Now I'm working on the SCTP layer. This is part of my work to self publish a browser-based massively multiplayer online game a la agar.io or slither.io. -- "I think I'm gonna build a simple go API. Any thoughts on Go ORM? -- "I don't like using an orm but http://jmoiron.github.io/sqlx/ makes it easy to scan rows directly into go structs. -- "Volunteering for the [Brooklyn Book Festival!](https://www.brooklynbookfestival.org/) It's the largest *free* book festival in the United States, with 300 authors coming to talk. Sunday in Downtown Brooklyn! There's also a children's day version tomorrow. It's easily the most fun and rewarding event I've been a part of :) (I also make 400 signs for the tents of the book vendors who help fund it.) -- "Trying to climb out of a depressive episode by forcing myself to finish writing a blog post and finally getting started on a programming project. Haven't written any code in a little while, would like to get back into it. It's my birthday this weekend but I'll probably just take it easy, no plans at all. -- "Just wrote https://packnback.github.io/blog/dedup_and_encryption/ . -- "Learning Erlang (with the book Learn You Some Erlang, super good book), asides from all the gaming and other fun that's gonna be going on. -- "Writing a Python exercise for a pre-interview meeting -- "At office taking lots and lots of interviews. Sigh. -- "- Working through tickets and editing [the Haskell Book](http://haskellbook.com) - Pairing to help others on [Moot](http://github.com/lorepub/moot) - Going to a birthday party where I will gift a book about economics, possibly mutualism. -- "I'm going to be in a parade this afternoon. Why? I'm not so clear on that, but my dad wanted me to be there so I guess that's good enough. Also, getting deep dish pizza. I'm looking forward to that more. -- "It’s Friday again; as always feel free to post your plans or projects for the weekend. -- "Saturday, driving from Bergen to [Flåm](https://en.wikipedia.org/wiki/Fl%C3%A5m) and back with the family. Planning for a ~15km mountain hike while there. Sunday, preparing a presentation on [Mezzano](https://github.com/froggey/Mezzano) for our local hackermeet. -- "Spending time with the family, then going to Edinburgh for 2 days before i head back to Berlin. Will try to get time to Research more PGP keyserver dumps for magnet links. -- "No projects this weekend. Spending Friday afternoon working on the train, travelling from The North to London for a friend's pre-wedding party tonight and wedding tomorrow. Train back on Sunday. The wedding is in the late afternoon, and I'll probably spend the morning trawling Forbidden Planet / Denmark Street. If you're a Lobsters person in London and want to say hi in person, feel free to send me a private message! -- "Heading to Manchester with friends for my mate's Stag Do. We're doing the Real Ale Train Trail from Batley to Staleybridge (get off at every train station, have a pint in the station pub) which should be super amounts of fun. Beyond that, probably doing some more work with a prototype server to get it into shape. Using Ubuntu/LXD so I can use terraform against it, need to get puppet wired up and a custom base image with the correct stuff installed. Then just pull together all the puppet stuff I have into one consistent place and deploy my VMs! -- "Preparing my apartment for the baby due at the end of next week. I don't think I have ever assembled that many pieces of furniture / stuff in this short a time span before. Besides that, I am hoping to work a bit on some Scala code for some smart templating - I want to be able to define what input a template requires (such as user information, business information, payment info, etc.) and have the compiler type-check that it is provided (rather than passing a list of input and have it checked at run-time). The idea is that I can call `Templates.MySpecificTemplate.render(input1, input2)` (or similar) and the compiler will tell me that `MySpecificTemplate` requires input of type X, Y and Z, and that I am missing input Z. -- "I'm going to look at prices for the text book for the japanese classes I started last week :) Books are pricy over here lately, but there are a couple of places around that have it -- "This ends my vacations. We're going to the giant library in Montreal on Sunday, among with the Science museum. I think we're getting a visitor from this evening until then, and I'm not sure what's up with Saturday. I intend to clock a few hours on Guild Wars 2, which I started playing during my week off. I'll probably start a Tensorflow class on LinkedIn Learning, although I think I'd be better served with a refresher on stats and a course on data visualization. No reason I can't do both these things as I come back in office though. -- "Grabbed myself a new microscope for the electronics lab that is slowly replacing what once was my kitchen. First target for testing its wings will be a WPC-89 MPU board from a pinball machine that refuse to boot. If I manage to gather enough strength of will, there is this \"ugly to reproduce\" rare bug I have that somehow boils down to glibcs named semaphores that, in some edge conditions, seem to get the linux kernel futexes to break horribly in all processes with the semaphore, and I am anything but sure of who is to blame here. -- "I'm in between personal projects right now. I plan on researching other projects and exploring contributing to open source stuff. -- "My wife is off to NYC for the weekend, so I have the girls to myself. We're probably going to go to the market tomorrow, then the zoo? Once they're asleep, around 7pm, I'll probably just play Zelda all night, because I got a Switch and oh man alive. -- "I'm planning a non-productive weekend, it's been a very hectic week again at work and I just feel I should lay off for a bit and maybe think a bit about what future I want. Things I do have planned: - reading The Lost World by Michael Crichton - going to a fun fair with my kids - go visit my parents -- "> maybe think a bit about what future I want That actually sounds pretty productive :) -- "It might, yes! I'm certainty going to do more devops-y things and be more socially active and find some meetups. I'm also going to try to accept work is work and not ponder at home about it. I'm not sure of how to achieve that, I'm hoping google will help me with that. -- "Continuing to work on my version of \"more\" for Windows. [I started it last weekend](https://github.com/malxau/yori/tree/master/more) and it has basic up/down/pgup/pgdn capabilities but there's a lot of polish to make it work well in more cases. I'd really like to have search with highlight, for example, configurable tab width, optionally display line numbers before lines, etc. And hopefully after this I can release the last 2 months of changes into a new Yori release. -- "Working on a UI for managing a tree of delivery routes. Its one of the first Elm programs I wrote and is in desperate need of some refactoring and enhancements. Still getting the hang of Elm and now considering a rewrite. -- "Are you migrating to 0.19 or staying with 0.18 for now? Or already started with 0.19? -- "> Are you migrating to 0.19 or staying with 0.18 for now? Or already > started with 0.19? Just sticking with 0.18. I wrote my app as a collection of separate Elm programs but sadly they all go through the same webpack/elm compiler. Not sure when I will embark on either upgrading them as a collection and/or breaking them out to ugprade one-by-one. To be frank, I'm not sure I will stick with Elm anyways since the 0.19 native modules thing is kind of annoying for me. -- "On call this weekend, so finally getting a chance to clean my house and maybe learn some Rust too. I'm going to try to find time set up my Jetson TX2 as a desktop sort of thing, if only to get it off my coffee table. A coworker has been pushing me to get caught up on reading GEB, so there'll probably be some of that, too. -- "Cyclocross racing tomorrow morning, and then driving up to the mountains between Fairplay and Buena Vista in the afternoon to camp and hike the Buffalo Peaks on Sunday morning. I'll probably follow [this route](https://www.summitpost.org/the-red-route-is-the-loop/42848/c-152356). Besides that I'm going to work on by book scanner and get some reading in. -- "Working on a indie-ish PS4 game that should be released in christmas and will be a total failure. But it's our game and we love it <3. -- "How do you develop for PS4? Is SDK available for every indie dev, or you need to go trough that crazy legal stuff, sign NDAs and other crap? -- "In regular basis, you need to go through the legal stuff and insane burocracy. **But**, we're inside Spain's \"PlayStation Camp\", wich is a program that selects a bunch of studios in the country and gives them some facilities, mentoring and QA to develop and release the game in PS4. The thing is, as it's a non-paid program with limited resources, we're not getting any money during development, so we've real jobs apart from work in the game, which means reduced available time. Also we're total newbies in \"\"real gamedev\"\" so it gets a little more difficult. Overall the experience is nice for me, we're learning a lot :). -- "Still polishing off my followup to [*Password Generation in Ruby and Rust*](https://hur.st/blog/2018/08-25-password-generation-in-ruby-and-rust/). Hopefully get it out over the weekend. I might bash some more on my new [email search tool](https://github.com/Freaky/esc), try to massage it into something that's at least minimally useful - it's more a proof-of-concept right now, albeit quite a fast one. I'm also helping out a teacher sort out forms for quizzing students. He's currently using 123FormBuilder and it's a bit like the website equivalent of [Kowloon Walled City](https://en.wikipedia.org/wiki/Kowloon_Walled_City). -- "I just bought my first desktop synthesizer, a [Behringer Neutron](http://www.musictribe.com/Categories/Behringer/Keyboards/Synthesizers-and-Samplers/NEUTRON/p/P0CM5), a bunch of patch cables and updated [Bitwig Studio](https://bitwig.com) to the latest Beta. This will be a friday evening full of slowly evolving soundscapes :) -- "I'm leaving Google. Last weekend I installed OpenBSD on a refurb X230 and it works great. This weekend I'm setting up a full internet stack that doesn't use Google services. Of course, I will not be able to transition to OpenBSD/NotGoogle overnight, but I want to start taking steps on that direction. I want to use tools for which either I'm the customer (i.e. paying), are self-hosted (everything I can except email) or free-software/non-profit -- "I'm relaunching [pittmesh's website](http://pittmesh.net). It won't look much different but the new codebase is far slimmer thanks to Leaflet.js and its support for GeoJSON, a thing that existed but wasn't widely used when I did the site initially several years ago. I'll probably also be hacking on Homebrew a bit. I've picked up some reviewing for it as an exploration of being an active contributor or maintainer. Lastly, [Abstractions conference](http://abstractions.io) planning is in full swing so I'll be looking for sponsors and working through my speaker shortlist. -- "Working my way through Types and Programming Languages from Benjamin Pierce and watching talks from ICFP. Trying my hands at ocaml to see I like it better than Haskell for that kind of PLT studies. -- "Worth noting that ML was designed to write a prover. Most provers also export it. Outside proof, SML has been used for many language experiments like Flow Caml and MultiMLton. CakeML is verified implementation. Many compilers or experimental languages written in it or Ocaml. Ocaml was also used for Esterel's SCADE code generator for safety-critical. Ocaml is also getting some mainstream backing with Jane St's help. So, either Standard ML or restricted version of Ocaml are good for this sort of thing with prior tooling to build on... maybe... depends on quality given it was academic projects focused on publishing more than code quality. Still experiment to find what you like the most. Whatever you can personally work with the best and has library support for your problems will benefit your productivity the most. That will be important for iterating on ideas in academic setting. -- "Working on https://github.com/moreati/pickle-fuzz. Specifically I'm making a variant of zodbpickle that requires callables/types to be white listed, as opposed to current pickle libraries which are allow any type (including os.system()) unless overridden. -- "Just wrote up a readme for a tool I want to exist: https://github.com/andrewchambers/asymcrypt Give it a star on github if it seems like something you would like. -- "This is very close to how I use GPG. I had scripted a few commands at one point just to remove its boilerplate. So, a script for GPG could probably do what you want. -- "GPG seems too focused on human interactive and email workflows. I don't even know how to get gpg to use a key from disk that isn't in my .gpg keyring. -- "I just used [this](http://irtfweb.ifa.hawaii.edu/~lockhart/gpg/gpg-cs.html) after checking the commands against man page and other guides. It's all I know about it. :) I guess you'd have to script importing it and then using it. That might be tricky given its interface. -- "Nearly done, not quite sure but I'm approaching 2 orders of magnitude faster than gpg on my machine and many orders of magnitude less code. ``` yes | gpg --encrypt -r ac@acha.ninja | pv > /dev/null 220KiB/s yes | ./asymcrypt encrypt s.pub | pv > /dev/null 174MiB/s ``` -- "Great performance. The reason I still lean on GPG is because Snowden leaks said NSA hated it. Apparently was hard for them to break in some or all usages. Only a few apps like that in the leaks. If hard for them, maybe hard for those with less funding, too. Low bandwidth didn't matter for sending text or small documents. Truecrypt was another tool the Feds and other spying groups didn't like. I used Truecrypt for big files, often disguised them as encrypted ZIP's or RAR's in equal-sized pieces if necessary, fast hashing tools for their hashes, and GPG for just signing the hash. I remember that much. -- "It’s Friday again; as always feel free to post your plans or projects for the weekend. -- "Cycling! My local brewery is hosting a cycle sportive in partnership with a local cycling club. I've done it the last couple of years, they pick a fairly interesting route and there's free beer at the end. What's not to like. Also need to break out the gardening tools and attack the wild growth that is currently lurking outside the house. Was much easier to maintain when the UK was scorching it into nothingness with a heatwave. -- "Replacing the front derailleur on my road bike and recompiling my desktop kernel with a patch so my mouse works in 4.18, woo-hoo. -- "I'm going to make an app for lobste.rs with Flutter (just to see how quickly I can make something functional). I made [an app for my school](https://gitlab.com/appteamepic/portolapp-x) in Flutter recently and was able to reach feature parity with the older version in 20% of the time. A lot of that was the fact that I already knew what I was doing, but added to the fact that I've never used Dart or Flutter before it's a huge improvement. I also need to review some Calculus for a test next week, and study for the ACT. Oof. -- "BMX racing on Saturday - 20\" and Cruiser - so will be exhausted by the end of the day... Sunday hopefully installing OpenBSD on a Rock64. -- "Working on a Node.js dns-over-tls library - https://github.com/sagi/node-dns-over-tls and a command line client that uses it. -- "I've spent the last couple weekends out adventuring, so now I have a weekend to get caught up on life and maybe start reading *Programming Rust*. -- "Moving from a place that's 40 minutes from $WORK to a place that's 10 minutes from $WORK. Depending on how the move goes, I might also write some Pony. I'm working on a small language for playing with attaching bits of text to nodes in a directed graph, and I'm starting with a readline-based REPL for this language. -- "Contributing to Nim https://nim-lang.org/ -- "How do you find nim? Is it easy coming from Python? I'll be honest, the reason I stick with Python for almost any little quick programme I need to write is that I know it like the back of my hand. But being able to replace it with something that was a little more easily metaprogrammable (and faster) would be nice. -- "Albeit Nim is not meant to have the same syntax as Python, it feels very close to statically-typed Python. There's even an experimental py2nim converter. For most metaprogramming you can get away with templates which are easier to learn and use than macros. Ping me or ask on #nim on Freenode if you have any question. -- "Adding the final slides to my ElixirConf presentation next week and also practicing. Nervous to say the least. Spending time with family and possibly trying to fix my car. -- "Just changed the oil in my car. That clears up the rest of the weekend for interview practice / leetcode &c. -- "Going to Atlantic City for this long weekend! -- "I'm going to try and finish off my followup to [*Password Generation in Ruby and Rust*](https://hur.st/blog/2018/08-25-password-generation-in-ruby-and-rust/), showing how easy it is to make small changes that significantly improve performance. I might also spend some time on Gutenberg [#381](https://github.com/Keats/gutenberg/issues/381), making external link checking more usable and robust. Or maybe I'll just [build more terrible hospitals](https://www.twopointhospital.com/). -- "Probably gonna work on those FFVI screenplays. I've been writing and rewriting the \"pilot episode\" (up until the moogle battle) for far too long. It's time to take the plunge and write the story after that. -- "I want to solder up some [PCB boards](https://youtu.be/SaRQub9Sg7c) for my collection of 18650 cells. -- "Implemented a monitor in SDL for my DCPU-16 emulator. That took an awful lot of debugging. As is typical with these sorts of things, the bug that took me many, many hours to fix ended up being `s/WIDTH/HEIGHT/`. Almost have my email set up properly as well: `mutt` configuration is mostly sorted, `msmtp` and `offlineimap` are talking to `pass` instead of reading passwords from plain text files. Only think I still need to set up is signing my emails using `gpg` and then I'll finally be able to say goodbye to using Google's botnet webmail. -- "Wanting to go to the mountain bike park but it's not looking like the weather will be good. Will likely just continue working on my web app. -- "Going to see if I can get my NEC PC-88 floppy adapter board to work now that it's back from the fab. With any luck (and enough bodges), I should be able to get it at least pretending to work with a 3.5\" floppy drive. -- "It's bucketing down, so I'm working on [FuPy](https://fupy.github.io/), or at least getting the build environment up and running at home. -- "I'm going to put in some time to fix remaining bugs in CHICKEN Scheme 5.0.0rc1 so we can make a second release candidate. I'll also go to the weekly market to buy some food for next week on the cheap :) -- "- remotely attending as technical support a demo/testing event of a work product - playing urban terror with [#openbsd-gaming](https://www.reddit.com/r/openbsd_gaming/) this evening (drop by on IRC!) - reading https://nostarch.com/seriouscrypto - trekking a mountain trail with wife and the dog (tomorrow) -- "My wife accepted a job in The Netherlands, so we are moving back to NL after five years in Germany. We are both really looking forward to moving back and to the new apartment. Our 4 year old daughter is also pretty excited about the move (moving closer to grandparents) and starts to practice Dutch more. We are have been packing the last few days and will continue throughout the weekend (won't have much time the last 2.5 weeks at work). We are not moving the furniture, turns out that it is cheaper to repurchase all the furniture than to use a moving company. -- "🇳🇱 🧀 ❤️ -- "Wrote a small tool to track how much time I spend at the computer/at work yesterday. (It writes to the same file every day, and then counts the time since then. Very simple, has know bugs, but also covers all I need after maybe an hour of work plus some experimentation before and after.) Looked into recipes for making (vegan) phô. Have one that is simple enough to hopefully make this weekend, and of course also found lots of other neat recipes to do. Will also clean my flat a bit and maybe help with a move. *Edit*: Oh, and maybe I'll continue with the overthewire.org games. Got until level 4 of [krypton](http://overthewire.org/wargames/krypton/), which was pretty fun. (Also got through bandit and leviathan in the past two weeks.) -- "```VB 10 Try to find a bike before my master starts 20 GOTO 10 ``` -- "Playing with a toy language design, where I want to explore getting the things right that were often well-known for decades, but always implemented imperfectly. Id' call it a \"modestly modern, mostly minimalistic\" language. Short overview: - tab-based indentation, so that everyone can decide how much indentation provides the best readability (no strong opinion about it, I just want to experiment with the idea) - stuff that should be standard by now: no semicolons, `[]` for generics, traits, virtual classes - stuff I want to toy with: String (bare-bone representation of UTF-8) vs. Text (contains locale, support stuff like casing operations, \"real\" length etc.) Syntax primer: ``` object Person // all types start uppercase ---v \tfun apply(firstName: String, lastName: String, age: Int32): Person = \t\tPerson.new(name, age) \tfun from(string: String): Person = \t\tlet (firstName, lastName, age) = ??? // parse string \t\tPerson.new(firstName, lastName, age) // one and only constructor, no secondary constructors allowed // constructor fields are the only way to introduce state into an instance class Person(firstName: String, lastName: String, age: Int32) \tfun isAdult = age >= 18 \tfun fullName = firstName ++ lastName let persons = List(Person(\"John\", \"Doe\", 42), Person(\"Jane\", \"Doe\", 23)) let result: String = if persons(0) // no special syntax for element access \t// pattern matching \tis Person(\"Jane\", _, _) then \"Hey, here is Jane!\" \t// introducing bindings with $, also used in string interpolation \tis Person(\"John\", _, $age) then s\"Joe is $age years old.\" \t// identity comparison \t=== persons(1) then \"They are the same person.\" \t// equality comparison \t== persons(1) then \"They are equal!\" \t\telse \"\" ``` -- "Powerlifting workout Saturday, then eating and sleeping. OpenBSD Sunday. -- "I already finished up re-writing my CV, because I didn't have a nice one and don't want to wait until I actually need it. I'll probably spend some time tinkering with my iOS app as well (me being a backend dev). -- "Planned to install a crank based powermeter on my road bike but destroyed (or rather will destroy) a set of chainrings after I've used the wrong chainring bolts (in hindsight over tightened them and stripped them when trying to remove them) on them. So now I had to order another set of chainrings and another set of chainring bolts which will only arrive on monday. Other than that I'm relaxing, finished a project on Friday new project/assignment from boss coming monday. Also a question: Why is cycling so popular in this community (and HN) ? -- "It's very foggy but not raining here, so I went for a walk on the coastal path and picked (and ate) a bunch of wild blackberries. I think I had an ambition to do something more related to a side-project, but this was nice. -- "A friend and I dug up most of our gravel driveway with a tractor so that we can put grass down instead. There’s about 60m2 of unnecessary gravel driveway that we’re going to use to extend the kids grassy play area. When it’s done it’ll be great, but it’s looking pretty messy half-way through. -- "I bought two Thinkpads (T420 and X230) and I'm installing Win10, Ubuntu and OpenBSD in all of them. I want to run benchmarks, CPU- and battery-wise. Both are great machines under 200€. The 420 is a heavy workstation, the 230 is the thinkpad version of a Macbook air, with an IPS panel. Great stuff :) Pic of my current setup: https://i.imgur.com/W1AatOh.jpg -- "Very interesting, if you publish those benchmarks publicly anywhere could you link it on lobsters please? I suspect a few crustaceans would be interested in what you find (: -- "Sure. It may take a few days to publish the post but here are the raw results. Geekbench + very unscientific battery life. - mba i7-4650U 1.7GHz. 1p, 2c, 4t. 8G RAM DDR3 1600MHz - OSX 3609/6720 - battery 8-10h (3h under heavy load) - x230 i5-3320M 2.6GHz. 1p, 2c, 4t. 8G RAM DDR3 800MHz. 63Wh battery - win7 3376/6375. 7h battery life - win10 3288/6262. 6h battery life - ubuntu 3528/6648. 6h battery life - openbsd 4-5h battery life - t430 i7-3520M 2.9GHz. 1p, 2c, 4t. 8G RAM DDR3 800MHz. 99Wh battery - win7 3544/7003. 8h battery life - ubuntu 3848/7346. 7h battery life - openbsd 4-5h battery life -- "Hand-writing a parser for a clone of pgbench aimed at Neo4j - both to learn more on parsers by eschewing parser generation, and to learn Rust, and because I really would like a static-binary benchmarking tool for Neo :) https://github.com/jakewins/neobench/blob/master/src/main.rs -- "I'd love to go out to the beach — it's 30-35ºC every day here —or at least go to the gym, but it looks like I'm spending all weekend hacking on [NewBusinessMonitor](https://newbusinessmonitor.co.uk/). It's getting traction, and my Y Combinator Startup School classmates will be holding me accountable for my progress. At least it's a project I enjoy working on! -- "Feel free to share you plans for the weekend! -- "If weather is bad enough to prevent me from hiking I plan to finish my Instapaper alternative (email myself a nicely formatted version of the article). This is my first step in exploring possibility of using email clients as a feed reader interface. -- "Well, the same thing as [the last time](https://lobste.rs/s/5k0k8y/what_are_you_working_on_this_week#c_8bvq0j): porting my IRC daemon from C to Go. I've had some problems with motivation, though that has sorted itself out and now I have before me the task of rewriting about 4000 lines of fairly straight-forward \"business logic\" code. It's mind-numbingly boring and fairly time-consuming. Since this is part of an over-ambitious project where I replace most GUI/TUI applications that I use, this rewrite being a warm-up exercise for Go in a problem domain that I'm comfortable with, I am considering starting a blog-of-sorts. I'm not sure if I could keep it alive for long as one needs to remember to describe the steps he takes and put them in context for readers which, needless to say, takes its time, but also as a side effect often provides interesting insights. There's definitely a lot to write about. What does one use to share a stream of short updates? I don't feel like spamming an aggregator with them would be very productive and summarizing events at fixed time intervals seems like a hassle. -- "Keeping a log/record of things you have learned, wanted to share, or ran into in an issue tracker for the project would work probably. Possibly just a markdown file? Makes it easy to at a later date write about the process from beginning to end. -- "I'd recommend http://jrnl.sh/ if you want to quickly do streams of updates directly from command-line. I personally like my fork which has one additional feature: native exporting directly to HTML https://git.timetoplatypus.com/timetoplatypus/jrnl -- "[Warwick Folk Festival!](https://www.warwickfolkfestival.co.uk) -- "After reading the story here on solving snakebird levels I've convinced myself that it isn't as hard as the author seems to think. So I'm going to give that a go and be proven wrong, I'm sure. -- "I just got back yesterday from 8 days of bike touring, so I'm relaxing and getting used to being at home. I've fallen dangerously behind in the Prolog class I'm enrolled in, so most of the weekend will be spent catching up on that. I'm also hoping to finish reading Karel Čapek's \"[The War With the Newts](https://smile.amazon.com/war-Newts-Karel-Capek-ebook/dp/B07F8RQ4CD)\". -- "I'm going to the Gilroy Garlic Festival! -- "Apartment hunting and playing around with my creation myth generator. I've been a digital nomad for 3 years, so I'm super excited to be able to own things like a desk and a tiny potted plant. -- "* trying to take up piano again, i have been off and on all year, but making an effort to do like an hour daily. Played as a child. A little lost on picking it back up again (start with theory, just start playing pieces ) ... I was not an advanced player but did a few years as a child had Fur Elise memorized at one point ... etc. * train more daily in martial arts -- active practitioner for decades. * bday party for friend! * excited about upcoming Diablo nuclear power plant tour in August 2018 I just got reservations for! -- "This? https://en.wikipedia.org/wiki/Diablo_Canyon_Power_Plant -- "Yup! ... but the tour is not for another 2 weeks or so ... I went there on a tour as a child, and my buddy who is going on the tour there, was an employee when the plant was being built 27 years ago ... -- "How'd this go? Do you tend to post photos online? -- "Hi. I had alot of fun on the tour. Actually for much of the tour your not permitted to take photos of the facility while walking around (some tourists did anyways, i took a grand total of 1 photo of the reactor units while on the bus from the bus window, and then 2 photos of a adjacent vista point they took us to and said we could take pictures at that tour stop). There is alot of security on-site. Unfortunately, I don't usually post photos online. -- "Oh, reactor facilities have operational security. Right, I knew that, I just forgot. Fair enough! -- "Moving, while my whole family is sick. WTF isn't there a provision in my lease that will give me a few extra days if we're all ill? And for that matter, why don't I get paid sick days? This whole thing is dumb. Hey, you asked! :) -- "FYI, this ended up being hell. Worse than expected. Expensive, embarrassing, etc. That there were no episodes of literal incontinence was a highlight. -- "I'm working on a watch2gether clone, that uses youtube-dl as a backend: `doji [dot] us [dot] .to`. I've made quite some progress on this, considering that I just started 2 days ago. The style isn't modern (intentionally), but it's rather lightweight and reasonably fast in my experience. There are still a few bugs and rough UX aspects, which have to be though through, commands implemented and some limits have to be set up. Will probably publish the source as soon as I fix a accidental `git --reset hard`. -- "Training for a bike race, going to an art museum - probably the MoMA, helping a friend move, seeing The Neon Demon, maybe heading to a jazz club. -- "Ahem: https://ckeys.org/events/smkmeetup/ -- "Finishing up a meta data scraper for YT videos in an archival team up with archive team. Putting some finishing touches on my init system, and getting set up at my new job. -- "I'm going to: * go wandering through Prospect Park for a bit * attend [Science For The People](https://scienceforthepeople.org/)'s big relaunch event * try to make some progress on getting [Smooch](https://github.com/emhoracek/smooch) deployable finally -- "Oh..it's time to update docs for go-critic. Also I would like to push forward upcoming project for easier Go performance analysis. Maybe conquer few mechanical bosses in Terraria :sunglasses: Listen a lot of Perturbator and visit Balkan restaurant this evening :3 -- "It's Friday again; as always feel free to post your plans or projects for the weekend. -- "I'll be moving around some furniture in the living room to make space for a bigger desk. I'm also working at a personal project scraping content from sites. I got pretty far code-wise but it currently only exists on my machine. I have been looking into deploying it with NixOS/NixOPS but cant get the containers to work like I want to (more like lxd containers). I'm probably giving up on that and will be focusing more on terraform + some deploy pipelines. I'm a sysadmin by day with some devops knowledge, but unfortunately we don't use tools like terraform so I'm going to play with them during the weekend. -- "This will be my very last week-end working on my manuscript; I am expected to send it to my reviewers on September, 1st. -- "Good luck! -- "I'm meeting up with friends and going to an opera concert. Also I've been trying to toy around with really simple NLP stuff, just learning the basics, and want to continue that this weekend. I still don't really know what I'm doing. What I want to do is be able to take an unstructured text document and extract a handful of specific things that I know are in there, but I don't know how to do this yet and I'm not even sure what to Google for. If anyone has any tips for me that would be appreciated. :) -- "Oh, cool, what opera? -- "I didn't manage to finish my D3.js spline code in time for [my talk](http://jordi.platinum.linux.pl/xsplines-talk.pdf) which I gave yesterday (which I think went really well, I loved the questions that I got!), so I'm going to try to finish it this weekend. I also have to finish reviewing the last few chapters of a book for No Starch Press so I can collect my sweet sweet money for technical review. -- "I thought I was going to have some downtime this weekend after a peakbagging backpacking trip last weekend, but it looks like I'm going to do some multipitch climbs in the Sierras. A stretch goal if I make it home on time is to get some work done on a few ideas for [Huginn agents](https://github.com/huginn/huginn) using webhooks. -- "I've got a Nintendo Switch and Breath Of the Wild coming in the mail tomorrow. I'll also be spending time with my family. Not many other plans outside of that. -- "BoTW is a fucking amazing game. You'll have a blast. My girlfriend has been watching me play, she legitimately gets excited just watching and always wants me to play. You could definitely make some family time out of it! -- "I bought BoTW in December of last year. Through light play sessions, plus some longer ones, I'm about to finish the game. Of course I could have finished it earlier but I just didn't want it to end. Nowadays I've almost run out of things to do in the game. It's *that* good. -- "Nothing tech related, but interesting nonetheless - I'm helping my wife prepare a fairly large trove of WW2 era photographs and correspondence from her grandpa who was an MP and served through most of the European campaign, including the liberation of the concentration camps. Heady stuff, but amazing, and I'm super glad it's going to be preserved for scholarship in posterity. -- "I've been trying to get elementary features required for GUIs working with BurntSushi/xgb and XRender. Unfortunately, things are in a miserable state and I'm just making sense of the wastelands. I've learnt a shitton about X11 and extensions so far. -- "Going to be working on some infrastructure for a conference I have been working on in my area. Need to revamp the website as well as get the comittee on the same page. Other then that, probably looking at more Android Xamarin related topics for work! -- "Doing packaging for Debian -- "thanks! -- "Who said packaging is a thankless job? You are welcome! -- "Some small hacking projects in the evening hours. E.g. I decided to move a personal server from using NixOps to regular NixOS, managed by just SSH'ing into the machine. I want to be able to deploy/change the server configuration on my home Linux machine *and* my MacBook and nixops on the Mac seemed somewhat of a bumpy ride. While at it, I was also setting up cgit. I don't really need a private gitea instance, since my 'social coding' is still on GitHub. -- "More Elixir learning / hacking! Anyone else doing this? I am thinking about a project that could map well to it. But I am very far away from even putting together a simple application. Learning Elixir, Phoenix and Ecto. Also, family time :-) -- "I also occasionally spend time learning Elixir! Would love to collaborate on some hack! -- "Planning on hacking on [ces.fnl](https://github.com/benaiah/ces-fnl) and the game I'm *slowly* building with it. -- "I’m learning to knit! Also applying to jobs and my arduino came in so I might start having fun with that. -- "Although I never was any good at knitting, my grandma taught me to crochet when I was young and I've never forgotten it. During the times when tech support is remoted into my machine to debug something, I usually pick up the hook and yarn and work on something a bit more relaxing than my day job :) -- "Aside from relax, I hope to finish up a couple of songs I've been working on and possibly start a new one. Using Qtractor, Qjackctl, Hydrogen, QMidiArp, and Yoshimi along with some other soft synths for my workflow. -- "Belfast! Headed across the short stretch of sea with an ex-colleague to see Stiff Little Fingers gig tomorrow night, which means a weekend in Belfast around said gig. -- "Writing letters to my local chapter of the union and my management team in an attempt to get away from a crappy working environment. Oh, and maybe making a trip to the [crag](https://www.mountainproject.com/area/105897953/kings-bluff) between shifts. -- "Working on small side project website, mobile, and JSON API and setting up switching over to Doom Emacs config from Spacemacs. Aside, if you use Spacemacs, does it eat up your power/battery? I am on macOS and Energy usage in Activity Monitor nearly sits steady 150+ during usage and I get maybe 75 minutes of battery on a 2017 MacBook Pro. -- "What on _earth_ is it doing to draw power like that? I run Emacs (just my own config) and even with rcirc and mastodon.el filling a few buffers it typically sits at zero CPU usage. -- "You can try doing profiling on your Emacs to see what plugin can take so much CPU: https://www.gnu.org/software/emacs/manual/html_node/elisp/Profiling.html . Usually, it's not Emacs itself, it's a plugin that might misbehave. -- "Learning Racket & Scheme. -- "Making a pilgrimage to a Chinese supermarket in Birmingham (1.5h on the train) to stock up on supplies this morning, so there will inevitably be some cooking this weekend. I also want to do some work with [beets](http://beets.io) to get my `~/Music` into shape for my new mpd server (built a raspberry pi & hifiberry digi+ player last weekend). -- "I got a very good deal on an almost-maxed-out T430 and I'm going to install OpenBSD on it. Plus I'm going to configure new services trying to avoid Google and Cloud services as much as possible, as an experiment. I don't think I'll make it my daily driver, but I want it to be a \"war machine\" even though there is no war :) -- "setting up what I want to be a collaborative database of C compiler and tool tests https://c-testsuite.github.io/ https://github.com/c-testsuite/c-testsuite If you know anyone who is into that sort of thing , send them my way. -- "Maybe [John regehr](http://john.regehr.org/)? -- "Big plans for the weekend or none at all? Feel free to share! -- "I have a birthday party coming up of my eldest, the party is going to be in the woods and there is going to be a treasure hunt. That's going to keep me busy for some time... I'm also going to continue with my scraper project and try to add at least one other site. I'm using xpath queries to select the data, but it's the first time using them so there is a learning curve. -- "Resting. -- "Studying X11, Xlib, xcb, xgb, XRender. Need to load all the concepts into my head. -- "Can you recommended any resources besides the official documentations? -- "GLFW source code. -- "Sources are all over the place. xcb/xgb is notably poorly documented, but most of Xlib applies with slight modifications. Yet Xlib docs aren't necessarily practical. It took me a good while yesterday to understand visuals and how to create an ARGB window (eventually StackOverflow helped me get past BadMatch by analyzing X.org sources) and paint a gradient on it with direct ARGB values, while knowing what I'm doing. X11 also has its deal of history. Right now I'm reading a random paper from 1994 http://www.rahul.net/kenton/perf.html as I've been trying to understand GraphicsExpose events. I don't know. I really hope I can find something readable on XRender. So far I have like: * https://keithp.com/~keithp/talks/usenix2001/xrender/ * https://www.x.org/releases/current/doc/renderproto/renderproto.txt * https://www.x.org/releases/current/doc/libXrender/libXrender.txt and none of that is very instructional. Though it seems to have Cairo-level capabilities. -- "I'm preparing a talk for our local Papers We Love. I'm going to be talking about special splines! And I think I'm going to try to implement the algorithm in D3.js because I can't figure out how else to quickly implement a nonstandard spline algorithm. If anyone has a suggestion, I'd be curious to hear it. -- "I'll be enjoying my last weekend outside of a software conference planning cycle for the next year. [Abstractions](http://abstractions.io) 2 is in one year from this weekend (or next, can't remember exactly) and I'm hosting my fellow organizers for a kickoff barbecue next weekend. -- "Working on one of my personal projects, a painting software. I'm using my own window creation framework (with Wayland, X11 and Win32 backend), but I'm not using any hardware acceleration, and not using any widget library. Instead, I'm doing 2D software rendering, with a queue with clipping rectangles for redrawing only what is necessary, and the widgets that you see on the screenshot are just array of a \"component\" structure, that is iterated over and rendered on the sidebar. Currently the application is using only the main thread to render on the window, but I want to add an option to use multiple threads. So, each thread will have a clipping rectangle on the window, then these clipping rectangles owned by each thread will intersect with the rectangles in the clipping queue. The result is each thread rendering only on their own space. Screenshot with the \"brush\" tool sidebar, used to configure automated generated brushes: 1. https://i.imgur.com/86mHDpF.png 2. https://i.imgur.com/FeQfOG7.png I also run :) -- "I think I will rest too, last weekends were pretty busy. I mean going here and there. -- "Im cleaning up servers and consolidating them in to less, and then working on some mass web scraping software. Non-tech - im going to read Walden by Henry Thoreau. -- "* tour of power plant!!!!! :D * maybe working a little on a patch for a vendor tool * clean -- "Soul crushing release management stuff: testing packaging, doing writeup and recording videos of key features etc. Will likely need to offset with about a gallon of gin and tonics. -- "Gearing up for a work conference in Phoenix, USA. I'll be team teaching a class on embedded C programming and I get to talk to a bunch of customers about compilers, which should be enlightening. I'm supposed to be an \"expert\", which is a little intimidating. My wife is coming along and when the conference is over, we're going to do some hiking at the Grand Canyon. I'm really looking forward to the whole thing. -- "Fuck, it's Friday? -- "Nope, I’m midway through Saturday already! (I live in New Zealand.) -- "I'll be playing EXAPUNKS, and/or catching up on sleep. -- "Enjoying the final weekend of my holidays for this time. Going to go to Guggenheimer and MoMA tomorrow and doing a bit of build your own adventure on Sunday before I jump on the plane home to Denmark. Any cool tech museums in NYC that isn't Intrepid? :-) -- "Babytimes, seeing some folks, and cleaning. -- "Oh..I need to make a proper blockchain testing. -- "What do you mean by blockchain testing? -- "Continuing to renovate the 1940s house I bought in March. I took it down to the brick shell and I'm slowly building it back up each weekend. I think I've had one weekend spare since then where I've not been doing DIY. But physical and mental work dovetail quite nicely. On the weekend my brain rests, in the week my body rests. -- "Sounds like you're living my dream! Are you going to be adding some of those much needed geeky accessories like Cat6e throughout and full house automation? -- "Given the reality of things I think the really geeky thing is *not* to use “home automation”. -- "Yeah. We're supposed to be the smart rebels to dangerous trends in tech. Alternatively, we'd do it on a super-secure setup limited to things that can't be used to spy on you or burn your house down. No Internet connected ovens, dryers, coffee makers, or toasters for example. The threat model still allows one to have a local network and computer controlling the rest, though. High-assurance VPN's are useful in this scenario, too, if one wants the remote functionality with minimal risk. -- "Only if you're not engineering it yourself ;) I'm just as wary of third party IOT/\"home automation\" as the next paranoid engineer with experience in these things but the idea of developing a super-secure, self hosted set up makes me tingle with excitement. For context, having an air gaped office network located within a Faraday cage is my ideal office solution. -- "I think your office was featured in this [scene](https://youtu.be/R90vWtcHLlE?t=1m3s) of a movie at least one American in Russia thinks was historically accurate despite talking about future events. ;) -- "Being at home and tired, but also playing http://overthewire.org/wargames/, which are surprisingly fun! (I got through the bandit levels yesterday, and now I'm trying leviathan and natas, both of which turn out to be quite a bit trickier. It's pretty fun so far, though.) -- "Started learning how to play Dwarf Fortress. -- "When you get the hang of it, you'll start seeing how similar it is to The Sims: Goblin Seige Edition. -- "The GUI and menu systems dont phase me but the sheer complexity of the game and the number of things that can go ~~wrong~~ fun is just overwhelming. -- "I'm attempting to document the installation of [Artifactory 6.2.0](https://bintray.com/assets/app/index.html#/jfrog/product/JFrog-Artifactory-Oss?tab=packages) on an Amazon Linux instance. I have a working instance of Artifactory 5.3.2, but in a minor version update (5.3.3) they split their authentication system into a separate web application, and since then I've made several unsuccessful attempts at upgrading. Time to dig into the source code. -- "Working on [version 2 of Tapestry](https://github.com/tapestry-cloud/tapestry/tree/2.0.0-dev), probably also writing an article on feeling that personal projects are never good enough even when they passed that tide mark months ago. -- "Relaxing with family after a week-long holiday. I will probably progress on my reading of the Haskell book on the train back home tomorrow. -- "Registered a domain and am currently setting up group chat software for queer folks in this tiny country that has become my home. Facebook is very entrenched here, but I spoke to some friends who recently deleted their accounts, and we figured it's worth a shot. I hope it gets some uptake. -- "I signed up for [WintellectNOW](https://www.wintellectnow.com/) and am watching [Bruce Dawson](https://randomascii.wordpress.com)'s courses on [Event Tracing for Windows](https://docs.microsoft.com/en-us/windows/desktop/etw/about-event-tracing). -- "Taking a break. It’s the weekend. Give yourself a moment away from the computer. -- "Yup. Instead of hacking yesterday, I made lemonade and went swimming in a beautiful, quiet lake just to take nap on the grass afterwards - refreshing af. -- "Continuing my android lobsters app that aims to provide content even offline (better for locations without network coverage like the subway) : DL every morning the 10 top news :) -- "What's your plans for the weekend? -- "Lab 3 on http://deadbeefsociety.org/bootcamp.html. -- "That looks neat, bookmarking for later, thanks. -- "Bookmarking that one as well, looks well worth going through! -- "I'll try to get started with [nim](https://nim-lang.org/). The official tutorial seems super complete, so that should be enough to get my hands dirty -- "I'm just starting with nim, too. I've found it pretty nice so far, coming from Python and JS. I find the [LearnXInYMinutes page](https://learnxinyminutes.com/docs/nim/) to be quite a handy reference. -- "I'm working on a hobby programming project that I'm very excited about: A build tool. -- "Any plans for features you want to include? or is it to recreate something as a learning experience? -- "My aim is to replace make. I have the core algorithm done, it takes a very plain tab separated format as input. I think there needs to be a good UI to describe builds. I'm proving it by building existing projects with it. -- "> Within a few weeks of writing Make, I already had a dozen friends > who were using it. > > So even though I knew that \"tab in column 1\" was a bad idea, I > didn't want to disrupt my user base. > > So instead I wrought havoc on tens of millions. (from https://beebo.org/haycorn/2015-04-20_tabs-and-makefiles.html) -- "The side-note is even better: > Side note: I was awarded the ACM Soft­ware Systems Award for Make a decade > ago. In my one minute talk on stage, I began \"I would like to apologize\". The > au­di­ence then split in two - half started laughing, the other half looked at > the laughers. > A perfect bi­par­tite graph of pro­gram­mers and non-programmers. -- "I so far setup a blog which will be where I document a new backup tool I have been designing, prototyping and thinking about for a while now https://packnback.github.io/blog/work_begins/ . I also want to play with https://tryretool.com/about which seems like it might speed up my progress on a different project in tying up a bunch of loose ends that would currently be done with manual sql queries. -- "Hopefully getting my home network up and running so I can put the wifi access point back on the hall ceiling. It's almost there, but pin 4 isn't showing up as connected according to my cable tester, so there's a few punchdowns to check along the route. Of course one of them is underneath the bedroom floor, which won't be fun to get to. Also spending yet more time in the car going to visit my friend for the weekend. (I usually drive about 30 miles in a week, this week I've done about 800 so far.) Looking forward to a social weekend, it's been a hell of a week. -- "There are tools that will tell you around what length the cable is broken. If you have some friends in the networking field ask them if they have one you can borrow. -- "My old desktop motherboard had this in the BIOS for the built in NIC. I can't 100% remember what it was, but i think it was a gigabyte with an AM3 socket. Might be worth checking that if you have any desktops sitting around. -- "Hah, it turned out to be a couple of issues. One on cable run I'd just plain punched down blue/brown pairs the wrong way, and on the other run I'd just not punched down one of the pins. Once the physical stuff was actually connected, the whole thing started working. Funnily enough. I think the longest run I have is about 15 meters, and I pulled a minimum of two cables through where I wanted a connection (along with a spare string in each run), so if I suspect a broken cable I'll just pull another run through. -- "Picking up my static site generator project after nearly a six month hiatus paused half way through refactoring. Currently planning on writing in file dependency resolution so it only compiles files that have changed and their dependants. Should cut recompile time down by 90%. -- "Nice, I've been meaning to clean up my static site generator (I use Jekyll, I want to make my own templates.) -- "I may get around to biking to locations around me I've been meaning to find, like a lighthouse, some parks, and this hidden farm in the middle of downtown that restaurants supposedly use produce from that includes an apiary. -- "Apiaries++! I have a hive in my yard, but there's no queen. Local honey would be a great part of the weekend. -- "spending quality time with the girlfriend, bake a sour-dough bread, some nice big cycling tour and setting up unbound on my vpn raspberry pi. -- " Unbound? VPN Raspberry Pi? -- "I run an openvpn on a raspberry pi at home. I currently have a dnsmasq based DNS setup on it (a bit like pi-hole, but self made). I want to replace it with unbound since that is a better caching resolver than dnsmasq. -- "sounds like a neat project. What's vpn all do, just let you act like you're on your home network from outside? What do you need to know your home IP to connect? -- "I have a Synology NAS that stores all our photos and I use the notes app as well. I travel a lot, so it is nice to have a vpn when I am using a public wifi. The girlfriend uses it for the same purposes. For connection I have a bit of a strange setup: my provider is dual stack, but the IPv4 is carrier grade NAT or something, so unreachable from the outside. IPv6 can be routed though. So my trick is that I run socat on a cheap/dumb scaleway instance that forwards IPv6 and IPv4 to my pi on IPv6. That way I can reach it from everywhere and only the scaleway box can talk to it. -- "Might build a game with C and SDL. Was thinking of building Asteroids, without using any sprites. -- "Sounds cool, so just drawing lines right to a buffer yourself? I got a project in mind to draw right to the buffer as well, but not even using SDL, we'll see how that goes. -- "Yeah. I contemplated also just using OpenGL. Would you use a graphics library, or would you skip even that? -- "No library, just writing to whatever buffer the system lets me (using Handmade Hero for some inspiration/reference just to see if I can and to keep it simple.) But may go to OpenGL when I get other things working so I could use graphics hardware if I can. -- "Honestly when it comes to C I think going with a library is your best bet. Even SDL can be a bit bulky when it comes to game development. I've found that Allegro works great for game dev in C. -- "I would say don't use hardware acceleration, use only software rendering. First, you are doing asteroids, so, it's 2D, it and can be made with small resolution, so rendering will be fast enough. Second, you can create many weird effects with software rendering, that would be a bit harder using hardware acceleration. And finally, software rendering is fun. -- "Participating in the annual \"queer days\" festivities. -- "And of course someone is upset about this and marks it as spam. -- "It's sometimes hard to tell where people just disagree or are haters. This is a thread about literally anything we might be doing this weekend. Someone marked that as spam. Clearly a hater. Ignore them and enjoy your weekend. ;) -- "Taking an overnight ferry to my home land. I expect to be on deck sipping a drink and working on a specification language to generate lower-level proof obligations for smart contract verification. -- "Producing [pod](https://soundcloud.com/theothermoviespodcast) [casts](https://www.youtube.com/channel/UCsNrm7d4Bd8yhd7O6YMnQLg) -- "> pod cast The topic isn't in my interest, but you seem like really likable guys, nice work. edit: whoops, I misunderstood but still nice work. -- "Thanks! The movies podcast stars me and a fellow amateur standup (see the theme) and the other one is more of a weekly journal. Both are infants and I just want to raise them right. -- "Nothing fancy here. But, planning to create a blog where I am going to write a small tutorial like intro to domain specific language. Planning to publish on every Sunday or any other day, haven't decide yet. I have created a [github repo](https://github.com/chauhankiran/dsls) for now and listed out around 20 DSLs so I don't stop after some posts. I am currently writing on [Haml](http://haml.info/). -- "OSS stuff. Working on my math library, then I will try to work a little more on my window creation framework, before releasing it. -- "- https://github.com/lorepub/moot - Monster Hunter World - More Huizinga -- "Staying in a cabin in the Michigan backwoods. Weather is calling for a few rainy days, so likely I'll be playing old SNES games on my Raspberry Pi :) -- "Oh man that sounds so cozy. Extremely envious. Enjoy!! -- "I'm just about to fly out to Calgary to visit a friend. So continuing my Canada adventures, which so far has been a few days in Toronto and then on the Canadian to Vancouver... I'll have to get back at some point :-) -- "Experimenting with solar! I have a 100W panel and a cheap solar controller. Going to see if I can get this 12V fan to run on solar power. Also, glad to see the switch from the culture tag to programming. Now this thread should get some better visibility. -- "* Pnut.io hackathon Saturday * Monday Night Dance Party anniversary prep (get a keg, check on the screen for screen printing, maybe redesign the website) -- "Playing around with Elixir on Exercism.io: https://exercism.io/tracks/elixir -- "Installing Ubuntu 18.04 on my new Alienware 17\" R5 laptop! Totally love the hardware. It's very reminiscent of the early 2000s era 17\" Power/Macbooks I fell in love with. A really nice non squishy keyboard with actual key travel and tactile feedback, really superb build quality and a GORGEOUS display. Two issues remain to be tackled: 1) I'm clueless about UEFI / EFI boot and need to figure it out. Grub install failed and apparently from workarounds I've seen posted I need to create a small EFI \"boot\" partition on my boot SD. 2) I need to get the trackpad working. Posted workarounds from earlier revs seem to indicate it's fairly standard Synaptic fare and a couple of tweaks and a mobprobe or two should get it working. I am positively stoked to be able to play with Linux desktop software again. It's been almost 10 years and HOLY GUACAMOLE BATMAN have things improved! Super grateful to whoever at Canonical coded the accessibility features I need. I literally can't even computer without them :) (Full screen zoom and adjustable text size in every UI component). -- "Headed to the lake with the family. We’re meeting up with friends from California and should have a noisy but fun weekend, with five kids between six and 18mo. -- "My [BeagleWire](https://www.crowdsupply.com/qwerty-embedded-design/beaglewire) arrived, so I'm learning Verilog. I'm on my way towards [clash-lang](http://www.clash-lang.org/), curious how long it'll take me to get there. I'm also ordering a [new fan](https://forums.sifive.com/t/make-model-of-the-fan-on-the-unleashed-board/1379) for my [HiFive Unleashed](https://www.crowdsupply.com/sifive/hifive-unleashed) RISC-V board. -- "Visiting the parents this week, coming back home on sunday. I've been doing a bit of work on their house / yard every day, they want to fill a hole next to the pool so I'm slowly digging an area they want to equalise and transferring it into a hole. I also replaced some rotting wood supporting a flight of outdoor stairs. This weekend we'll be cutting down a few dying trees. I'm also rebuilding my website, it should be ready by the end of today, and it's going to be a great improvement over the [current one](https://www.patrickmarchand.com). Just need to write a post describing my setup, deploy it and setup backups with tarsnap. -- "im working on data collection for a new end to end encrypted network called [Yggdrasil](https://yggdrasil-network.github.io/) so the developers can research the network as it grows. [node db & API](https://github.com/yakamok/ygg-node-db) very simple but fun -- "Working nights at a side-job and working on a script that nicely compiles all my markdown notes into a PDF in a specific way. -- "Spending time with friends, playing some WoW for the first time in years. It's been a great first week at my new gig, time to relax the mind for a couple dozen hours. Any lobsters play WoW send me a PM! -- "Saturday I need to tune up my bikes, and then I'll probably go to the coffee shop and work on some Lisp projects or go through the huge backlog of photos that I need to touch up, categorize, and upload. Sunday I'm biking with a friend in the morning, and then I'll probably be back at the photos or Lisp. I'd like to start contributing to some larger Lisp projects (SBCL and StumpWM, or maybe porting common-qt to support Qt5), so I've been familiarizing myself with those codebases and looking through their issue trackers for problems I can fix. So far I've tinkered with them, but haven't contributed anything back. -- "* hiking * cleaning * practice piano * exercise -- "Honestly, I will do my best to do absolutely nothing. -- "Climbing in [the Emeralds](https://www.mountainproject.com/area/105733929/the-emeralds) --- no computers, and hopefully no cell service. -- "Playing with GatsbyJS and Zappa/Lambda. -- "Writing a `robotfindschicken` clone in Scheme for kicks. It's fun but feels sorta sinful to write in a nearly purely imperative way in a language like this. I guess there's no way around with `ncurses`. -- "Scheme FRP library? -- "Interesting idea but I don't think any FRP library exists for any dialect of Scheme. Or any dialect of Lisp besides Clojure for that matter. -- "Trying to install Mastodon -- "Flying back from the ESSLLI summer school in Sofia, Bulgaria, where we taught a course about neural dependency parsing: http://esslli2018.folli.info/neural-dependency-parsing-of-morphologically-rich-languages/ -- "I'm learning to sew (I want to be able to modify & repair my clothes), going to a lake, and a friends place for dinner. Work is quite intense at the moment, so being able to completely switch off at the weekends is fantastic. -- "This is a little late, but this morning was spent removing excess banana plants. Adding a downpipe to the new gutter is this afternoons goal, and maybe work on some of the 6.x goals for [Bamboo Framework](https://bitbucket.org/koalephant/bamboo-framework) later tonight. -- "Last night, been busy setting up wireguard with my own dns server for my phone, and a wireguard server at home so I can log into my RPI. Planning on setting up some SDR stuff on my RPI at home, should be able to log planes, 433 MHz and boats! (AIS). Need to prepare/write my talk about the Arch infra for FrOSCon, hack on the archlinux.org website (testing for the Python2 to Python3 migration \\o/). -- "Sprinting to finish the TLA+ workshop I'm hosting on Tuesday! -- "Flying back to the US from New Zealand. Going to be the longest day of my life with the time change and all. -- "I [implemented a workaround](https://stackoverflow.com/a/51800972/2074605) for a [Spring Security issue](https://github.com/spring-projects/spring-security/issues/5007) that has been driving some people crazy since April. Basically, a new firewall feature was rolled out in a minor version update (v4.2.4) but provided no way for the developer to control the logging or blocking behavior. This workaround gives the developer a lot more control over this feature. -- "Feel free to share you plans for the weekend! -- "Taking my new divers license for a spin and working for on a couple of writing projects. -- "I have overwhelmed myself with task during this week. Need to prioritize and resolve everything. Oh.. -- "Escaping from a weekend-long festival almost right next to our house. For some reason they received permit to play music until whenever they want. With a couple of kids in our house it's unbearable. I'm also going to revamp my scraper. I've used it before to fetch data from realestate websites. It's some php code that accepts a list of urls with the correct xpath queries. -- "I got sucked into a ReactJS rabbithole. -- "Let me know if you need any help, I've been doing React for about a year now -- "I started a week or so ago, thanks for the offer! Are you on the channel? -- "I am now, same username as on here. -- "It's a long weekend and it's sunny, so I'm going to try to deploy an OpenBSD router I've been building and then I'm going to braai. If it's not too hot, I might have a play with a Bluetooth CTF I saw a while back. -- "South African spotted! I mean, who else would try deploy an OpenBSD router on the weekend. ;-) -- "Sorry, I'm British ;) I Just have a very wonderful South African partner. She's in charge of OpenBSD routing, I'm just manning the Braai! She's said that she doesn't understand fair queuing, apparently this is not a concept in South Africa ;) -- "Could be worse, she might be braai'ing the man. > Understand fair queuing, apparently this is not a concept in South Africa Like NZ, the available queueing protocols are ruck, maul and scrum. -- "I'm traveling Canada this weekend. On vacation, and going to jump on the train to Vancouver late Saturday evening. I'm checking out Toronto until then. -- "Trying to finish an update for my [regular expression game](https://github.com/phikal/ReGeX), since people have been mentioning that it's too easy. Already got rid of 1000 (out of 1900) lines of code over the last few days. -- "Your project homepage link gives me a 403 from the github README. -- "^^ Well, I am still working on it. I'm going to set the homepage up as soon as I have a more or less stable version I can properly document. Until then, the old [README](https://github.com/phikal/ReGeX/blob/33b18c4de39c9e912249949043d474fcee820cee/README.org) might help. -- "More work on my proof assistant this weekend, for sure. And the computer science students' society barbeque of course. Nothing better than a barbeque in the middle of winter. -- "My weekend doesn't actually occur until Tuesday/Wednesday, but I'll probably be over in Red River Gorge. We got rained out a few weeks ago and have been itching to get back out. -- "Working with a designer to get some pdf's of the frontend for my project appdoctor https://lobste.rs/s/gibtle/what_are_you_working_on_this_week#c_kbtnbm and then finally get to kick of the react based front end. -- "Hopefully going on a long bike ride to train for a bike race, meeting someone in my apartment complex for lunch, maybe read some stories by Julio Cortazar, also a good-looking movie. -- "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. -- "This weekend, [I put together a monochrome video cable for an untested NEC PC-8801mkII](https://www.leadedsolder.com/2018/08/04/pc8801-video-cable.html), and it works! So at least part of my 'hobby time' this week will be spent figuring out just what the machine can do, and planning ahead on how to make a nicer, high-rez-capable, colour video cable. It does sorely need the clock battery removed, as well. -- "Despite my best efforts, my windows install is running like garbage. With news that windows may be going month to month, Im considering switching to linux for good. Otherwise for the job, I am working hard with d3.js and reading through Grammar of Graphics 2nd Edition. It has been a great read https://www.springer.com/us/book/9780387245447 Personally, I am working on smart contracts with ethereum, and now am going to start toying with vyper soon. -- "I've almost finished porting that [IRCd](https://git.janouch.name/p/haven/src/branch/master/hid/main.go) of mine, I just need to port/write a few unit tests, rework logging and I can start using it on my domain. Also needed to write my own simple version of netcat because I was testing TCP shutdown and _“The result of testing hid with telnet, OpenSSL s_client, OpenBSD nc, GNU nc and Ncat is that neither of them can properly shutdown the connection.”_ After that I'll be looking into graphical user interfaces and how to make one. -- "This weekend, I decided to buckle down and try to learn some [Factor](https://factorcode.org/), and ended up writing a 4-function [calculator](https://gist.github.com/yumaikas/6c8aebf8b0baf20431e06bd20c47dec4) as an exercise in learning the GUI system. It went better than the last time I tried to learn factor (which lead to me creating PISC). I think I could use factor for some things going forward. With the right set of additions, I could see it's GUI system being about as expressive as TCL's tk, but it takes a *lot* of getting used to due to the lack of examples. Thankfully, you can muddle through the documents to learn things, and most things are documented *somewhere*, but where isn't always obvious, and google is of minimal help.Still, there's a lot there to work with. -- "I finally had the inspiration to solve using public/private encryption with content addressed deduplicated data. If you are interested in encrypted deduplicating backup tools and have some expertise, I wouldn't mind talking about it to make sure it is sane. Did a tiny bit of work on a prototype backup tool, but not a priority for now, need to do some more boring work first. -- "Last full week with my current employer, driving down to one of our datacenters to rack up some `$work` servers I have at my house before I leave. Last visit to a datacenter for some time probably, as new employer doesn't have their own hardware (nor needs it in the imminent future.) Waiting on some patch panels arriving for home, then I can finish wiring up my home network (it's expanding to **two** switches in **two** separate racks!) Although like an idiot I pulled two bundles of multiple cat6 through the walls without labelling both ends of cables, so I now have to figure out which end is connected to the other a few times over. Super amounts of fun. (Yes, I'm an idiot. Ugh.) -- "Doing lots of 44CON stuff this week, including a TNMOC tour ticket giveaway. If anyone wants to see the new Bombe gallery at TNMOC over in Bletchley Park, sign-up details are [here](https://44con.com/2018/07/31/tnmoc-guided-tour-giveaway/). Hopefully getting some time to work on more ANSI art for the 44CON BBS and moving the raw hex site away from shopify, which has totally screwed us. -- "I launched Networks Of Philly last week and am going to continue building it out. It is a sort of field-guide type site for city network infrastructure in Philadelphia, very similar to the work of Ingrid Burrington. https://networksofphilly.org I’m also going to continue work on my group BGP darknet project, which currently needs more documentation. If I have time, I also want to do a little bit more on my PBX project, https://famicoman.com/2018/07/18/building-a-pbx-part-1-pbx-hardware/ -- "I just finished writing Practical TLA+ so it's time for a break hahaha no I've got a workshop to write and a tutorial to clean up Outside of work I want to start revving up candymakimg again. -- "Nice ~! I came across TLA+ recently and realized I should be using it at work. Got started with TLA+ using this intro guide - https://learntla.com/introduction/ (My schedule is a chapter per week). -- "* Going through the book \"The Rust Programming Language\" (3 chapters completed so far) * Hoping to release a draft of the book I'm writing \"Building GraphQL APIs with Node.js\". Purely focused on building and optimizing GraphQL backends. * Learning TLA+ using https://learntla.com/introduction/. At my pace, looks like I will complete it in 3 weeks. * I was able to clear all the to-read web articles during the weekend. I either read them or sent them to bookmark-hell. -- "Sidenote: it really irritates me how the culture tag's negative hotness modifier causes this weekly thread to drop off the front page almost immediately. It's only 12 hours old and already halfway down page 2. -- "We used to just tag it with `ask` and nothing more, but as it's a meta tag now it fails validation without another tag as well. I picked culture from the list originally because it felt the \"best\" fit for this thread, but that also irks me how quickly it vanishes. I'm sure it makes a difference to how many people comment on the thread (although if you're around here for any length of time you'll know it appears on a Monday, so can go look for it.) I wonder if there is a better \"second\" tag for these threads that wouldn't have the negative cost attached, without mis-appropriating the tag. /cc @kzisme -- "How about `programming`? \"Use when every tag or no specific tag applies\" -- "`practices` or `programming` seem fine. I'd also prefer this thread not drop away so fast. /cc @kzisme who often posts these. -- "I hit a personal blocker with regards to my archival system, and my file tagger projects, so I'm taking a sabbatical-sabbatical and started a project to make a simple unix shell in assembly. It's very nice working at a lower level, the set of problems are practically more tangible and easier for me to step-through mentally, it's a nice break at the moment. Currently I'm procrastinating reading up on proper code alignment on 64x Intel systems though :) -- "Via: http://blog.systemed.net/post/15 Systeme D Over the past two years, the biggest buzz among the geo chatterati has been Justin O’Beirne’s meticulously argued (albeit bizarrely formatted) feature-by-feature comparisons of Google and Apple Maps: their design choices, their data, their production processes. What fascinates me is how the comparison is implicitly phrased. Apple Maps is fighting on Google Maps’ turf, and Justin O’Beirne never questions that. He asks “How far ahead of Apple Maps is Google Maps?”. It implies the same direction of travel. They’re going the same place, but Google is getting there quicker. Meanwhile, OpenStreetMap goes its own way. Most OSM commentary focuses on unimportant minutiae (layers, for goodness’ sake, as if it’s still 2004) without seeking to examine what makes OSM unique—and whether that’s still relevant in a rapidly changing market. Could OSM become a dead-end curio while Google, Apple, and an increasingly self-sufficient Mapbox hare off in another, common direction? OSM’s continuing differentiation from Google/Apple boils down to two points. First, a non-commercial imperative. Google and Apple (and Mapbox, TomTom, HERE) are beholden to their shareholders and investors. They do what makes them money, which means car navigation. (Once human-controlled, now, increasingly, self-guided. When people ask “How far ahead of Apple is Google Maps?”, what they usually mean is “Who will get to self-driving cars first?”) OSM, however, isn’t ruled by shareholder value, but by the preoccupations of its contributor base. (We’ll come onto that demographic later.) Whether that’s a good thing depends on what you want from a map. But it’s clearly a point of differentation. Second, ground truthed local knowledge. Surveying by locals is the gold standard of OSM, building a rich, intricate compilation of contributors’ preoccupations. The painstaking human curation of areas and topics remains unique to OSM. Neither of these are under threat from Google/Apple. Outsourced quick-fire digitisation of Street View-type imagery in cheap labour countries doesn’t give you this. Nor does image recognition. OSM’s points of differentation remain clear. In OSM’s early days, commentators used the phrase “democratising mapmaking”, and it remains true. You choose what to map; and you choose how to use the map. You participate. Other maps are a one-way street: sure, you can contribute (actively through map corrections, or passively through using a mobile app that phones home), but the provider chooses what you get back. So OSM becomes a fractal of local maps. The closer you look, the more hidden detail unfolds. Rethink the map on openstreetmap.org We always say OSM is about the data, not the map. But that’s because we already get it. Any pro-OSM thread on Reddit, Hacker News or elsewhere quickly descends into “but openstreetmap.org looks pig-ugly” / “but when I type my street address into openstreetmap.org it’s not found” / “but openstreetmap.org doesn’t have live traffic”. We know that’s missing the point, that osm.org is just a testbed for OpenStreetMap proper, the data that lets you solve these problems. We understand OSM’s direction of travel. Neophytes don’t. They see a single eccentric-looking (albeit lovely), purplish map they can edit. (That’s why everyone’s first edit is adding a footpath with name=Footpath or somesuch, thinking only about how it appears on osm.org.) Look back to the inflection points for OSM’s growth. Sometimes they come when it gets easier to contribute to OSM: Potlatch 1, Potlatch 2, iD, maps.me. But, more often, they come when contributors’ work becomes more immediately visible. The first was when we went from weekly Mapnik updates to near-instant changes. Later, getting OSM on your handheld Garmin, or after that on your smartphone. Increasingly, it’s high-profile sites switching to OSM; both Strava and Pokemon Go resulted in massive bumps in contributor numbers. The feedback loop is important. Visualisation is important. Enter vector tiles. Vector tiles are the ‘fractal of local maps’ made flesh. One dataset, a thousand visualisations. The server sends the rich, raw data; the client slices and dices and presents it any way you choose. Bike map, walking map, skiing map? Kids’ map, salesman’s map, retired globe-trotter’s map? Art deco map, pop art map, antique map? All those; and a thousand you and I have never imagined. Moving to restylable vector tiles on openstreetmap.org would explain OSM’s direction of travel more than a year of Reddit and HN comments could ever do. In the words of OSM’s mission statement since 2004, “maps you can use in creative, productive or unexpected ways”. What might this look like? Think of a ‘style explorer’. Think of a new Design tab. Think of designing a style by starting with a bare-bones template then adding ‘playground’ and ‘park’ and ‘zoo’ and ‘railway’ and ‘dinosaur museum’ (to enumerate my two year old’s current obsessions). Think of storing styles against your user account and forking others’. By exposing OSM’s local, human data, we create a thousand new inflection points for the project to grow. Let’s explore this a bit more. Meeting people where they are People contribute to OpenStreetMap when it’s relevant to them. Outside pure geekdom, cyclists were the first group to embrace OSM. It started with two speculative punts on creating maps relevant to cyclists (OpenCycleMap, of course, and mkgmap which makes Garmin maps), plus a small amount of seed data: I still grin recalling OpenCycleMap’s creator, Andy Allan, commentating (at the second OSM conference) on an animation of OpenCycleMap’s first year “and here you can see where Richard Fairhurst decided to cycle across Wales”. Now, in 2018, every cyclist uses OSM: Strava, Garmin themselves (...and may I mention cycle.travel?). The humanitarian cause is the other stand-out. Thousands of people have attended mapathons or slaved over remotely assigned ‘tasks’ in the cause of humanitarian mapping. Most of them will never visit Haiti or Kibera. But they believe in the cause, and they gain intrinsic reward from helping. Again, it’s relevant to them. You can do all the outreach you want and agonise over conduct and tone. It’s all good, necessary even, and it’s all worthwhile. But if the map isn’t relevant, no-one will stay. The path to diversity in OSM is by building more OpenCycleMaps. Which is exactly what vector tiles give us. You know what I’d like as the father of a toddler? A map of playgrounds. Every family would. The answer is already there, hidden in OSM’s data. Maybe one day someone will build a Playground Finder app. But we can shortcut the “maybe” by baking that into openstreetmap.org. And then families start adding missing playgrounds; and OSM’s contributor base becomes that little bit more diverse. I started by describing OSM’s fractal of local maps as “an intricate compilation of contributors’ preoccupations”. A restylable vector map makes space for more preoccupations, not just those sanctioned by the maintainers of one stylesheet; and by welcoming more preoccupations, we welcome more, diverse contributors. Eliminating the drudge work There is no glory in clicking a mouse. OSM’s strength is ground-truthed local knowledge. It’s not magically better because each point has been positioned by hand. Technology moves on. In 2004 we didn’t have high-res global imagery nor anything but the most rudimentary handheld surveying devices. Now we do, and no-one would seek to go back. In five years’ time, iD (or its successor) will trace the geometry for you. Mobile apps which recognise shapes from the camera will see a sign and suggest that a speed limit should be tagged at this point. Sensor data or imagery diffing will suggest you might want to go and survey the new road a mile from your house. This isn’t the boring old “survey vs import” argument. This is about using technology to make contributing local knowledge easier and faster. And, again, by doing that we encourage a more diverse contributor base—broadening beyond people with lots of spare time and computer skills. All of this circles back to the same vision. A fractal of local maps; a map for every human, not just those who drive cars; a map that anyone can contribute to, and then visualise in the way they choose. Getting underway This vision, and this article, have been brewing for a year now. I’ve jotted down disconnected paragraphs in spare moments on trains, in cafes and pubs, occasionally dropping comments on Github issues, forums, Twitter. But now is the time to move forward. There’s a wide understanding that vector rendering is the next challenge for openstreetmap.org. I’m anxious we should get it right, just as Steve Coast got the concept of OpenStreetMap right, I got the UI of Potlatch (mostly) right, Tom Hughes and Grant Slater have consistently got OSM’s scalability right. This will be another of those decisions which will determine OSM’s direction of travel. Treating it as simply a back-end change for the existing (lovely, eccentric, purplish) openstreetmap-carto style would be a business-as-usual solution. The maps would be a bit sharper, a bit faster to load. We might manage a few worthy side-wins around internationalised placenames. But it won’t move the needle for OSM. This will. This weekend (28-30 July 2018) is the State of the Map conference in Milan. I’ll be hosting an informal Birds of a Feather session on moving openstreetmap.org towards vector tiles. If you’re attending, watch the whiteboards (and Twitter) for time and venue. Previous post: Adventures with the LG 360 Cam. -- "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. -- "At work, it's review time, so I have to do that. I'm in a good position where my team is extremely good, and we're getting loads of cool shit done, so it's not that I have to have The Talk with any of my people; but it's still this sort of ugly kabuki nonsense. I'm looking forward to being done with it for another six months as soon as humanly possible. At home, I had the baby to myself all weekend as the wife and the big girl went camping. It was amazing, but I'm very glad that everybody is home now. We're in a really good spot with the girls; they're 18m and 3y and are tight as thieves. I've started assembling a \"new\" PC out of parts I've had lying around, and I got it all hooked up and ... bupkis. The motherboard is getting power (there are LEDs on the ethernet jack that light up) but the fans don't start and the power switch does nothing. So I have a couple of evenings \"fun\" swapping parts around to try and narrow down what's busted. At the very least, it's not the CPU, so that's a $1200 relief. I'm also playing around with NixOS on the one working computer; I stand by my declaration that this is the only sensible way to configure and maintain a computer, but I am increasingly disenchanted with the nix/nixos specific experience. I *hate* the language, and the tooling is pretty weak, and the documentation is not good at all. I think I should start blogging about it, so that someone coming after me will have additional documentation, but that smacks of work and I am so very tired. -- "> I’m also playing around with NixOS on the one working computer; I > stand by my declaration that this is the only sensible way to > configure and maintain a computer, but I am increasingly disenchanted > with the nix/nixos specific experience. I hate the language, and the > tooling is pretty weak, and the documentation is not good at all. I > think I should start blogging about it, so that someone coming after > me will have additional documentation, but that smacks of work and I > am so very tired. I've been meaning to try GuixSD/NixOS for a while as it seems a lot more sane than the current way of doing things. Have you tried GuixSD? What are the problems you've found with the nix language/NixOS? To me it seems that `guile lisp` is better than the `nix` language, but I don't know how the ecosystem compares between both systems. -- "nix-the-language is just a shittier, untyped version of Haskell, with terrible, terrible documentation. The tooling is bad, but improving. I haven't tried Guix, which I would expect to like better because scheme, but be less useful to me because of maturity and the strict approach to software freedom. -- "> nix-the-language is just a shittier, untyped version of Haskell, with > terrible, terrible documentation. The tooling is bad, but improving. As a newbie trying really hard to figure things out in NixOS, this si so damn true. -- "why didn't they just create a minimal version haskell? (instead of inventing a whole now, subpar, language) -- "I don't know. The people behind nix and NixOS are *very* smart, however, so I would expect them to have a good reason ([Chesterton's Fence](https://en.wikipedia.org/wiki/G._K._Chesterton#Chesterton's_fence), and all). -- "This comment reminded me to submit [this story](https://lobste.rs/s/gqupat/nixos_on_prgmr_failing_learn_nix), which pretty much summarized my Nix experience; while the idea of declarative OS config did seem cool at first, it quickly gave way to frustration with the obscure and under documented tooling... -- "This comment reminded me to submit [this story](https://lobste.rs/s/gqupat/nixos_on_prgmr_failing_learn_nix), which pretty much summarized my Nix experience; while the idea of declarative OS config did seem cool at first, it quickly gave way to frustration with the obscure and under documented tooling... -- "Still looking for a job. If anyone has any need of a Ruby or Python developer from now until October, especially in the Berlin area (remote also works), please let me know. [Brief summary](http://dpk.io/hireme) — [full CV/resume](http://dpk.io/cv) Besides that I’m making the final arrangements for a group I’ve organized to walk in Berlin’s LGBT Pride parade on Saturday. -- "> job If you're ok with doing fairly non-exciting work with an ERP system in Python then write me at svenstaro@gmail.com. -- "I should probably spend my free time this week on catching up on the prolog course. However, this weekend, I hacked together a tool to use code coverage/property based testing tools to show you input-output pairs that take different paths through code (https://github.com/hyperpape/QuickTheories). I'd like to implement shrinking, and I'm also poking around at symbolic execution, as it seems like that's the right way to implement a robust version of the tool. I'd also like to create an IDE plugin that lets me trigger this for methods in my code, and see if it's as helpful as I imagine it being. Right now at work: I don't know what I'll be working on before the day starts... -- "On the personal side I'm getting deep into category theory and the theoretical side of lenses in haskell (I got a haskell tattoo last week so now I feel the pressure to expand my knowledge, as stupid as that sounds :D). At work I'm refactoring the frontend rendering engine to be able to plug a wasm version in the near future. -- "Away from work, I've started on a (very WIP) set of [documentation](https://pisc.junglecoder.com/playground/docs/) for PISC, which has involved: - Parsing documentation comments, - Editing documentation comments, - Adding `break` and `continue` to the loops in the language - Writing some basic support for writing out a iolist (a nested vector of strings and vectors, inspired by Erlang's iolist) type, to avoid N^2 string concatenation to PISC's IO libraries - Fixing/expanding the PISC test suite. Having these documents built from my Go/PISC source code has demonstrated how poorly a good chunk of the PISC code is documented. Having basic access to the same documents at the command line (names and function signatures) has proved surprisingly useful, reducing the amount of \"And I have two code windows open\" going on by a lot. I'm considering trying to write a sort of command-line documentation generator for C# that works in a similar fashion, just to have easy access to function/method signatures. Intellisense provides this to some extent, but having this might make it easier to not depend on Intellisense. At work, getting ready to be on maintenance for a couple weeks, which should be nice. -- "I enjoyed this article (https://peter.bourgon.org/go-for-industrial-programming/) so I would like to revisit some Go code I've written at work and make it better. I'm lazy with testing, tracing, metrics, all of the above. -- "Today I'm working with the rest of the team on getting a new version of Wallaroo (wallaroolabs.com) out, and working on a blog post that describes one of the new features. Out side of work I'll probably be fiddling with my Pony workshop (https://github.com/aturley/pony-workshop) and maybe putting together a short Pony reference capability talk. -- "Continuing the never-ending process of documenting my PBX. It was fruitful in that published a small intro piece last week. Also started a BGP darknet with some mesh people which I hope to keep building out this week now that people are back from HOPE. -- "Reverse engineering and suppressing my cat litter box's DRM to allow me to refill the soap cartridge. -- "This is simultaneously a cool hack and the most depressing sentence I've read in weeks. -- "Agreed, when I first bought it I thought that it was just tracking uses to be helpfully but it basically becomes a brick after a set number of washes with each official cartridge. -- "Aside from some client work, I'm working on building a Bitcoin full node entirely in Elixir. It's entirely for learning purposes (my own), and I'm documenting my progress along the way. Fun stuff. -- "back on a cryptography thing at work, integrating vault's transit backend into our app. also considering modernising a back office tool by deleting it and using our CRM for its purposes, if that is possible. non-work: final choir practice before Warwick Folk Festival. playing some violin duets with a colleague. more writing of OOP the Easy Way. -- "Apart from regular work and my master thesis, I have an offer from a really interesting company in Amsterdam, and I am trying to figure out if I could actually afford to move there. That may sound dumb, but the rents in that city are absolutely crazy (and there are basically no apartments under 1.5K€/month). Dutch crustaceans, any recommendations or tips? -- "How far into your thesis are you? I've been considering going back to school for a bit now, but have been hesitant. Any regrets so far? -- "Not as far as I would like to, hahaha. I have most of the experimentation done and verified, now I just need to actually write everything down, so this is the tedious part. Honestly, I think learned far more things in the company I started working a half a year ago than in the master degree, but I guess that depends on a lot of personal things. -- "I spent around the last 5 months working on the back end for my saas I have been working on. Appdoctor.io . I finally feel it is done(tests and all) and am now starting on the front end. The back end is built in elixir / hosted across multiple regions on digital ocean. The application does a couple things. 1. It can proxy requests. Ex. Google-com-ACCOUNTID.appdoctor.io will make a request like your calling google.com directly. This request is searchable and you can assign rules to trigger on...so something like if a request to Google takes longer then 1 second email team 1. 2. Used for public status pages. Can be configured to send health checks and set up public status pages at status.appdoctor.io/uniquename much like statuspage.io including response times / failed requests ect 3.Can be used to set up complex automated tests against production apis from multiple regions. Ex. Should request Google from Europe region and pass if response is faster then 300ms Sleep x amount of time Some other request/assertion from another region. I even splurged a little and took some time so users can right lua assertions if the basic assertion syntax is not enough. I am really excited to finally be \"done\" with the backend and able to get one step closer to launch. I used all the in's and outs of elixir extensively so feel free to as any questions. Random tidbits using distributed elixir so when a server crashes another server will pick up it's work(a running test for example) Test run in a spawned execution genserver and stop themself once the test is done. I love that elixir can act as my job runner. -- "Working on version 2 of the ambassador lottery for [Merit](https://merit.me). Making changes based on community feedback. Got sidetracked over the weekend and last week fixing bugs and keeping things running. But the community keeps growing at a faster and faster rate so it's pretty fun to see people use your work. -- "Work: * A few hand-off things on a mini-contract \"productionizing\" and updating the deployment of a little web app * Catching up on various administrative things about freelancing that I hate and procrastinate on. * Contemplating going back to FTE, rather than the freelancing thing, as the aforementioned client has expressed interest, and it's been a pretty great group to work with. Not work: * Generally enjoying a coincidence of my last big contract ending and nice summer weather -- my little mini-sabbatical/vacation. * Experimenting with building a UI over a github repo and/or gist that exposes a series of commits in a format specifically aimed at didactic purposes... a tool to demo the how and why of something small, but non-trivial or needing step-by-step explanation, in code. * Sorting and prioritizing various other little someday/maybe projects that I'd like to do some work on. * Getting my personal home network, desktop, laptop, and development environments up to date. * Continuing to work through the exercises from _Elements of Computing Systems_ -- "A talk for EuroPython 2018 (which has already started D: ) about using Rust and Python together. -- "I don't seem to find the usual 'what are you doing' thread, so I'm creating one for this weekend. Feel free to share you plans for the weekend! -- "I'm leaving for vacation soon, so I'm going to do some packing. I also have been downloading some Netflix shows I plan on watching, and looking for some ebooks to put on my trusty Kobo mini. The most work related thing I'll be doing is enabling out-of-office, and I'm very much looking forward to it! -- "Recovering from a half-marathon. Testing power consumption for various hardware configurations for the [Linux intel_idle patch I wrote last weekend](https://lobste.rs/s/9jj8it/what_are_you_doing_this_weekend#c_npg1lx). At idle in power state C4E, I shouldn't be hearing the CPU fan. And yet there is still fan noise. -- "I am building a wireless speaker using a raspberry, their speaker bonnet and raspotify. The idea is to build one in each of our main rooms (living room, bedroom, office), and hide them inside cute vintage objects. -- "Will try finish writing [my DSL for updating Karabiner configuration](https://github.com/nikitavoloboev/karabiner-generator). Recently posted a [thread on keyboards here on Lobsters](https://lobste.rs/s/nl96zm/what_keyboards_do_you_use_do_you_program) and it's awesome to see so many keyboard lovers out there. I was quite upset to see so few people customizing their keyboards so I hope to change that soon. -- "My main project will be finishing up plans for a cycling vacation in the Netherlands and Belgium. My wife and I sometimes have different ideas about what we want to see and the pace. She tends to leave the planning to me though. I've been trying to get our ideas into a Google Map so that we can discuss the itinerary based on how many overnight stops we want to make and the proximity to interesting places. This has me thinking about what my ideal travel planning tool would look like. I tend to think of trips as a graph with a start and end point that I select first. I then need to fill in a path with interesting things. The itineraries at the front of Lonely Planet tend to be useful, but I'd like to have a site where I can find and fork itineraries, and have people suggest other places by just picking them from a map. I feel like the last year has been relatively fallow in terms of personal tech projects as my energy has been elsewhere, so I figure sharing it might help motivate me a little more. I've signed up for my first 10-miler in Annapolis, Maryland so I need to sit down and plan the last month of training. It has been very ad hoc so far, but I've gone from only running 5k regularly in March to 6-7 miles now with great encouragement from my sister-in-law. -- "I dog-sat my brother's 7 months old Australian Sheppard. Never again. Now that that's done, kids' swimming classes in half an hour, then we're receiving friends this afternoon. I'd like to get some coding done tonight maybe. That our more LinkedIn Learning. Tomorrow, I can't remember what's up. Probably gonna read me some more Lovecraft. Maybe something more technical. Definitely some reading. -- "> I dog-sat my brother’s 7 months old Australian Sheppard. Never again. Hah. I walked this [pretty boy](https://i.redd.it/tv4f3c3xid511.jpg) yesterday. What problems did you had? -- "I have two older rescue dogs, one of which has severe arthrosis of the elbows, preventing her from even fleeing a situation. The other one is much smaller and couldn't just make the guest dog stop. So I had 48 hours of dog bickering to manage, because the guest dog is much younger and more playful. And did not get the cute that the other dogs wanted nothing to do with that. Full disclosure, I probably suck at dogs. -- "I'm in the middle of switching from [bspwm](https://github.com/baskerville/bspwm) to [swaywm](https://github.com/swaywm/sway) on wayland. I'm hoping to be able to contribute a few patches down the line, especially for simulating keyboard presses so I can get [rofi-pass](https://github.com/carnager/rofi-pass)'s autotype working under sway. -- "I built a [keyboard](https://imgur.com/a/Lmoxo4H)! -- "ONE OF US -- "*Edit*: added pictures through the process :) -- "Trying to figure out a good outdoor security camera system for my new house that can record to the existing NAS (NVR-style) and not forward video to the cloud while still having neat realtime alerts to our mobile devices and remote streaming. The tough requirement is not proxying through the cloud for these features and also securing the streams (i.e. tunneling or RTMPS instead of RTSP or similar). -- "Travelling to Europython! Any other lobsters there? -- "Today, hung out in Coventry with a friend. There's a few interesting galleries in the Herbert at the moment, including a retrospective on Rare with a huge behind the scenes on Sea of Thieves, and a history of games and toys. Managed to get another release of [OOP the Easy Way](https://leanpub.com/ooptheeasyway) out too. Tomorrow: probably more writing, I'm itching to get out of Part One of the book but it's the place where I've already done most research. Also playing and dancing at a local church fundraiser. -- "of course, the tomorrow bit didn't happen. I moved furniture and slept. Responding to change over following a plan. -- "Relaxing with season 2 of Westworld and hacking on my creation myth generator. Last weekend wrapped up my 4th wedding of the year, and honestly I'm just looking forward to a lazy weekend that's actually a weekend. -- "I'm writing a Windows package manger. Obviously this is done to death and mine won't be any better than the last thousand, but just like the last thousand, I still need a system for installing/uninstalling/upgrading the software I distribute, and I'm really looking forward to being able to efficiently say \"upgrade all from the Internet\" from the command line without copying new installer binaries around. -- "I am going through some Coq tutorials and getting pretty amazed at how cool it is. But I am also thinking about how does theorem proving and other formal methods apply to web services that are basically composition of calls to other services. -- "Building my company. -- "I'm playing around with `libtls` ([per advice](https://lobste.rs/s/jn62zk/persuasive_language_for_language#c_a4xyn3). I've already proved to myself that it can be used in an event based server, and now I'm playing around with trying to get it integrated into our network flow, which in this case means writing a Lua wrapper for it. [1] [1] There are two Lua modules for `libtls` that I've found, but neither one meets my criteria, namely, using the call back mechanism to control the network. The changes are extensive enough that I find it easier to write my own version. -- "Please write about your experience with libtls once you know how it pans out :) -- "I took the time to learn a little Go and write [a small little tool](https://github.com/MordecaiMalignatus/nn) I wanted to have for a while now. I was impressed with how easy Go was to pick up (between google and `godoc`, basically everything was covered), and with the standard library. It's definitely a useful tool in the box for \"I need to write a small service that does something trivial\", a spot that used to be taken by Python or similar. Other than that I'm mostly trying to care for myself and recover. -- "* Implement a project for the second part of the [SpaceKnow](https://www.spaceknow.com/) interview process. * Continue putting together my own programming language ([tinySelf](https://github.com/Bystroushaak/tinySelf)). -- "Working on finishing a single binary init system in Rust. Other then that I'm exploring youtube APIs so I can make some modifications to a distributed scraper I wrote. Planning to help an archiver try and scrape all meta-data off youtube. -- "Do you have any interesting plans for the weekend that are different from the day to day grind? Weekend trips, meetups,side projects, or anything interesting -- "Play Minecraft (and maybe some minetest) and Terraria with my five year old, fill up some more moving boxes, and try to get linux on [my odd smartphone](https://tilde.team/~sebboh/terrain/). -- "Hah, also have big plans for Terraria this weekend ;D -- "So...we (my friend and me) have conquered almost all bosses ;D -- "We had a set back this weekend... we lost our flying piggy bank due to a save error and/or cloud sync error. Steam on GNU is not really stable... -- "oh :( do you play via standalone server? looks like it's more stable -- "I start Terraria on two computers with this invocation: `steam steam://rungameid/105600`, and then on one I select the `Host & Play` option, and I set the `Steam Multiplayer` option to 'disabled'. Then on the other computer, I select `Join by IP`, and I provide a hostname (not FQDN, but it exists in /etc/hosts) and a port (the default). Hm, some games have 'headless' servers. Is that what you're referring to? Is that an option? I do have the 'save to cloud' option selected for our players and worlds. I may be mis-remembering the specific strings used to identify each menu option, sorry. I think I caused the inventory items to be lost when I terminated a process. ...Because it was just sitting there taking up CPU after we were done playing. My machines to literally nothing, not even update an on-screen clock when they are idle, so you can always tell when something is still running, because the fans become audible at all. So, I killed the Terraria and Steam processes... -- "> Hm, some games have ‘headless’ servers. Is that what you’re referring > to? Is that an option? > > yep, I'm referring to headless server. See Dedicated server at the bottom of the page: https://terraria.org/ -- "What Minetest mods do you play with? -- "Dunno, let's see: sebboh⬢truth:~$ ls -l ~/src/minetest/mods/ total 0 lrwxrwxrwx 1 sebboh sebboh 30 Dec 30 2017 adv_spawning -> /home/sebboh/src/adv_spawning/ lrwxrwxrwx 1 sebboh sebboh 33 Dec 30 2017 animalmaterials -> /home/sebboh/src/animalmaterials/ lrwxrwxrwx 1 sebboh sebboh 33 Dec 30 2017 animals_modpack -> /home/sebboh/src/animals_modpack/ lrwxrwxrwx 1 sebboh sebboh 35 Dec 31 2017 loyall -> /home/sebboh/src/loyall-minetest-mod lrwxrwxrwx 1 sebboh sebboh 27 Dec 30 2017 mobf_core -> /home/sebboh/src/mobf_core/ Wow, it's been longer than I thought since I touched this. The loyall-minetest-mod is locally developed. It implements a \"stereo\" item that can be placed, which plays music. You can toggle the music on or off by 'hitting' the block. Doing this helped my son understand what a programmer does, I think. He immediately asked me to implement vehicles and other non-trivial things. :) Since I'm talking about it, I might as well [publish it](https://gitlab.com/sebboh/loyall-minetest-mod). Note, there's nothing in here that wasn't cribbed from other existent mods. Except for the stereo/record player artwork, which was derived from photos of actual equipment in a way that I believe is fair use. You'll note that the stereo is actually two distinct blocks placed next to one another, one of which is inert... :) It's really just a proof-of-concept. -- "I'm revamping various parts of the EmacsConf website: - migrate the main site from Django to a simpler wiki (using either [Oddmuse](https://oddmuse.org) or [DokuWiki](https://www.dokuwiki.org)), - archive our Discourse forum and use a simple Mailman list on [lists.gnu.org](https://lists.gnu.org), and - deploy the Let's Encrypt certs I got a while back. It's been far too long since the last EmacsConf, back in 2015 :) -- "Road tripping to Montana for this symposium https://ancestralhealth.org -- "Neat, I'm originally from MT, you've inspired to me to look at visiting again! -- "I'm on call this weekend so I'll be staying around the house unfortunately... After a very rough week at work I'm planning on doing absolutely nothing. Maybe reading a bit. And taking calls of course. -- "Unwinding after my penultimate week before vacation. Doing some minor work around the house and garden. Doing a longer (relatively, around 10km) bike ride. Watching the World Cup final (on Sunday). -- "Octopath Traveler, World Cup, sleep. -- "Maybe my 6yo and me finally get around to try the ~50 years old Lego train my dad already played with. I also have to build a nice box for [my Raspberry Pi RFID player](http://beza1e1.tuxen.de/raspberry_rfid_music_player.html), but inspiration is missing so far. -- "Going to do a [Summits on the Air](https://www.sota.org.uk/) (mountaintop amateur radio for imaginary points) in the highlands of New Jersey, after spending time and perhaps money at the Sussex hamfest. -- "I'm in Kansas for a wedding! First time I'll wear a tux. -- "From Vancouver, BC. I'm going to try and figure out how to create an MVP for my personal project / startup idea. And hopefully go lay on the beach at some point. -- "This weekend my only plan is the watch the World Cup fixtures — and finish up my Multics RFC-822 gateway. But mostly football. -- "Meeting up with some old ex-colleagues who are visiting from abroad, watching the tennis (not so fussed on the football haha), noodling around making my first game, and hopefully get time to watch the last lecture of the fast.ai 2018 part 1 course. -- "On Saturday I have a wedding. Sunday there's an annual family party. Both are going to be far, noisy, and filled with people. I'm introverted, and I'll come out of this much more tired than I was going in (which is, coincidentally, already \"a lot tired\"). So right now I'm playing with Flutter, and later this weekend I'll squeeze in some of the DevOps learning track that I picked up on Linkedin Learning. And in about... 10 minutes? Yeah 10 minutes, I'll go get super-healthy-bags-of-chips and some appropriately cheap soft drink to go with it because I'm a grownup and I can make bad decisions if I want to. -- "Polishing up a simple parser for SCL, an Algol contemporary, for my Languages course. After that, maybe starting on a Scheme in SML. -- "1. Finishing [Subnautica](https://unknownworlds.com/subnautica/). 2. Having a pizza & wine with my wife somewhere outside. 3. Getting used to [TaskWarrior](https://taskwarrior.org/). -- "I'm considering NixOS as my daily driver, so I'm trying to understand it and generate a good initial configuration in a VM. The cognitive leap is being a bit harsh, but looks promising nonetheless! -- "Also considering this. Let us know how it goes! -- "BBQ today at a friends place. Tomorrow I'm probably working sadly. I worked the full weekend last weekend, so I really could do with some time to just chill out and spend with my partner. Hopefully the week after next will be free. -- "- Hanging out with the family - Reading the manual for pandoc, and generally screwing around with the same - Recording and episode of our podcast, this session will be about the philosophy of Accelerationism -- "Learning the basics of Coq *well*. I hope for it to be the beginning of many things. -- "You might find [this](https://github.com/tchajed/coq-tricks/blob/master/README.md) helpful in your journey. -- "I am [adding Intel Core 2 support to the Linux intel_idle driver](https://unix.stackexchange.com/a/454903/120445) so that Q45 Express chipsets with *Yorkfield*, *Wolfdale*, *Conroe*, *Penryn* or *Merom* processors can take advantage of extended/deeper power management states. Would have been nice to have 8 years ago, but better late than never. -- "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. -- "Nothing specific! My app has been finished and as of $work, my bureaucracy filled vacation starts. Considering to finally add progressive image support to Common Lisp JPEG library. Long overdue really but not sure I'll even have time to look until Friday. -- "I hit a few snags documenting my low-budget PBX setup when we had a series of power outages last week. Everything came back online, but I couldn't get any audio through the phones when placing/receiving calls. Rebooted, and the web interface wouldn't come up. So I upgraded the host to a Raspberry Pi 2 and things work perfectly and _much_ faster. I hope to continue with documentation this week! -- "For $career, I've started using Linkedin Learning. It's provided for free by $employer, and since course completion can be \"advertised\" on your LinkedIn profile, I'm throwing myself at a few different learning tracks centered around DevOps, Data Science (and ML and stuff), and leadership/management. I learned a bit about k8s, I didn't know jack before; hopefully this is good for my career and good for my brain. And I mean, good for fun too. The k8s stuff was fun. For $work, we're still in \"groundskeeper mode\", in the sense that it's not very exciting, we're just making sure that nothing blows up and that the damn kids stay off our lawn. Fiddling with config files in order to tweak a timeout isn't especially stimulating (at least in this case). We should be getting a brand new pile of fun soon, meanwhile I'm softly murdering a legacy app that has no maintainers (I actually had to volunteer to get it. Which reminds me, the manager who granted me authorization to work on that has left on Friday. I gotta work faster before I lose the permission to fix it.) For $fun, I've been bringing back to life an old-ish ATx box that has a RAID card in it. I tried installing Void Linux on top a few times, but I am pretty sure that the RAID array doesn't like it when I don't talk to it like a RAID array, even when I try to disable it. So after a bit of clever googling I found out that I probably need to use mdadm. I found a few things about that anyway. Hopefully, I get to throw this machine on my ridiculous server network of 3 (soon to be 5) laptops, running all-of-my-private-stuffs-and-experimentations, ranging from upspin to gitea to radicale (and even more!) I like my \"cluster\". Batteries act as a free UPS, to boot! -- "For work I'm making a nicer API to combine and filter streams of numbers so they can be easily visualized (in d3). After some experimenting I've finally got something that doesn't requires much boilerplate code when using it. Besides that I'm wrestling with d3 to get something on the screen. For otherwork I've been figuring out how to print receipts with Chinese characters on a receipt printer using the Windows API. After some days of looking through the incomplete API docs and Notepad++ source I've got it working. There must be an easier or better way, but I'm not familiar with Windows. For fun I'm reading through Clean Code. -- "I had some fun last week creating a small interactive checklist program with a curses interface, [which I gave an Elm-style architecture](https://bitbucket.org/sietsebb/checklist/src/e5e9c48d3ef15c49882532bd9c05fd66a5103564/check.py#lines-78). Only thing is: curses can only create interfaces that take over the entire terminal screen. I'd quite like the checklist to take only as many lines as it needs, and to remain visible like any other program output when I exit. If I feel like it this week, I might look into creating a takes-up-only-a-few-lines TUI using [prompt_toolkit](https://python-prompt-toolkit.readthedocs.io/en/master/). On the other hand, I might bypass prompt_toolkit and figure out which VT100 codes to send. One, the other, or something else, as my whimsy takes me. My long-term thing I'd quite like to do, by the way, is to create GTK or Qt programs for the desktop; but every library I've found so far has been unappetizingly imperative in style. If anybody knows a desktop GUI framework they'd like to recommend (especially if it's Elm-like!), my ears are open. -- "Work: - Understanding a legacy application and mapping out its data flow to understand the cost/risk of reimplementing it. It's not hard or complex, but there is a lot of it and the bits that have been abstracted do not always match the bits that needed abstraction. - Supporting an experiment in the company to replace \"filling in a big form\" with \"asking data aggregators for the contents of the form\". - Building visualisations of the micro service map and data flow in our not-yet-legacy applications by mixing our automated tests with our ELK-based event logs. - Theoretically replacing some hard-to-manage encryption with easier-to-manage encryption, though I doubt I will have time. !Work: I have a couple of projects on the go which I need to get to releasable state so I can both get some feedback on them and stop fretting about them! One is a book, one is an app. Unfortunately neither has moved much lately because I've been either low on energy or concentrating on other things. While we talk about other things, I have a choir practice, a dance-out, a band practice, and a music session to run this week. -- "Just got internet hooked up to my new appartment! So $work wise I'm looking for a new one, I have a dedicated office in my new home which will be very pleasant to use (once it's clean), so I'd like to find some remote work. I'd like to do stuff that's not web related, but I'm not going to push away web backend jobs if they come my way. I'm also taking care of my parent's dog for the week, as they're off on vacation, playing around with my personal server and cleaning the appartment. Towards the weekend I'll be helping out at the Laval beer festival, if any of you are around the montreal region do come around, it's going to be a blast. -- "* Got stranded in the burbs when my motorcycle battery died. Bought a replacement dry-charged battery and activated it by the standard process of pouring sulfuric acid onto toxic waste. I avoided several very exciting failure modes to produce a working battery and got home. Then a parallel parking car knocked it over, so now I have some more things to fix. Much like a community website, a vintage motorcycle is a [gift that keeps on giving](https://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html) (ctrl-f for \"living thing\"). * Took a run at [learning nix and nixos](https://push.cx/2018/nixos-on-prgmr-and-failing-to-learn-nix) and got stuck on documentation, but got a decent blog post out of it. Scheduled a calendar reminder for a year from now to check the manual for improvements or see if [Luc Perkins' book](https://twitter.com/lucperkins/status/999007471141240832) is out. * This week I'm practicing multitrack audio editing in [Ardour](https://ardour.org/), which looks a lot shmancier than [audacity](https://www.audacityteam.org/). -- "I ride a 1980 GS850 in the summer. It's ugly but damn it was cheap to buy. It took a long time to get it road-worthy but now it's pretty reliable. The only time it has failed me was when the throttle cable broke 1/2 mile away from work. I managed to get it home by replacing the throttle tube with vice grips. That ended up working way better than it should have. -- "I wrote an article about taking an now-unsupported (but still working) energy monitoring device and graphing its output in Graphite: http://blog.bityard.net/articles/2018/July/graphite-and-the-energy-bridge-to-nowhere.html I almost submitted it to lobsters but anything in there is novel enough to warrant placement on the front page. -- "Last week's bike trip was even more awesome than I had hoped. We had a few mechanical issues, but we were prepared and everything worked out. We circled the Holy Cross Wilderness area, and the scenery was absolutely beautiful. Now I need to go through the roughly 800 pictures I took during the trip, and I'm hoping to get them posted to SmugMug later this week. Besides the pictures, I need to catch up on the SWI Prolog course I'm taking. I read a little bit during the trip, but I've fallen far behind on the course work :-/ At my job I'm finishing up a couple small features and a couple bug fixes before our next release. -- "I'm taking on the algorithms on strings coursera course -- "I've recently started a new job, super tiny company (I'm the second programmer) and it's been a blast. We are working in the programming education sector. This week I'm investigating moving part of our renderer from typescript to wasm (compiled from rust), if that proved to be too much effort for what is worth I will be working on reducing GC of the current renderer to the minimum (same as last week). -- "Setting up a second microserver as NAS for a family member, debating whether just go with FreeNAS or put something like Ubuntu & LXD on it. (Probably just FreeNAS. ZFS & everything else installed for sharing to Mac basically equals winner here.) Really need to migrate my physical server back onto a couple of VMs - I've just not ended up running the services on it that I expected, which means it's a **very** expensive static web server right now. Also sorting out infrastructure for `$newjob` whilst still working `$currentjob` and seeing the family. -- "Do you have any interesting plans for the weekend that are different from the day to day grind? Weekend trips, meetups,side projects, or anything interesting? -- "Casting a level base & moving a shed at a family member's house. Planning out how to run cat6 (and probably starting to drill holes) through my house, as I need to get that all laid to/from the loft before the loft is boarded out at the end of the month. May even get out for a bike ride at some point too, we shall have to wait and see. -- "Will I get to finally read David Graeber's [Bullshit Jobs](https://www.simonandschuster.com/books/Bullshit-Jobs/David-Graeber/9781501143311)? That's my plan! Something something mice and men. -- "I started messing with my dotfiles again, I already spent some time on my mutt setup this evening but it's still pretty bare-bones. I'm not quite sure if I want to use mutt but I have used it a bit in the past and it doesn't seem there is a whole lot of clients to choose from. I already sync all my emails using offlineimap so using a text based email client seems logical. I'll also be moving all services off a vps I have running on vultr to my one on hetzner cloud. It's also running my PoC self-hosted email server so I'm seeing it as an exercise in thoroughness. To be honest, if it all goes wrong I'll probably end up getting a fastmail account but I'd hate to give my mails up to yet another company. Tomorrow I'll going on a nice trip to the beach, I'm really looking forward to that. Spending time offline is something I should do more often. I'm also starting a new book: 'monitoring with prometheus'. I guess it still counts as offline even though it's internet related. By the way, if anyone knows a good time management book: shoot. -- "A pub-to-pub(-to-pub...) cycle ride tomorrow, and a band practice on Sunday. We're playing a few workshops at Broadstairs folk week in August and this is the first time the whole band will meet... :-S -- "I'm thinking of taking this online course https://www.coursera.org/learn/algorithms-on-strings/home/welcome -- "I like that they list the names of the algorithms plus what they do with them. Anyone not wanting to take the course can just Google for tutorials for them. Might be good ones out there. -- "Squanching. -- "Tomorrow I'm hosting a dinner party, so I'll be spending the day cooking. The theme is corn. Lots and lots of corn. Sunday is uncertain: if we get a chance I might be syncing up with the technical reviewer for the book and try to do revisions. If not, bike ride I guess -- "With it be maize with its many colors and nutrients? Or that sweet, designer stuff in yellow? ;) -- "Do you have any interesting plans for the weekend that are different from the day to day grind? Weekend trips, meetups,side projects, or anything interesting? -- "I am working on forking filezilla, I have imported the svn repos into git and spent (wasted) a couple days trying to build it with debians reproducible build tools. Today I switched to docker and managed to build the whole system in there then run it on my host. Here's [the script I made](https://github.com/rain-1/filezilla-ng-docker/blob/master/Dockerfile). -- "Moving into a new apartment tomorrow, helping a friend move on sunday. Though I forgot to rent a truck and now everything is booked... I did find something, but it's going to cost me. -- "I'm moving tomorrow too. Spent the past month packing so I'm not stressed for it. Going to feel like 45C in Montreal. At least it will not be on July 1st when the whole world is moving and feels like 48C. Good luck to you! I found this funny so I'd like to mention it: boxes are storage of spacetime. You pack things in the present, you have stored that time (saved it) in the future. It also takes up space. Thus, a box is a spacetime storage medium :D -- "Thank you and good luck to you as well! I'm starting to move at 7h30 so hopefully I can escape part of the heat.. -- "Who else but a Québécois move on July 1? :-P -- "I'm moving over this weekend as well, and I'm from Florida as opposed to Quebec. If you're going to move, summer is as good a time as any -- "Going to see the incredibles 2! -- "Same! Really hyped, it's been too long since the first one. -- "Going clay pigeon shooting in the Peak District (Middle of the UK) for my mate's stag do. Never done it before, so looking forward to it. Along with the usual shenanigans that come from drinking proper beer and sharing good company with other people. Also get to drive the Mini One (#ProjectBMW ) through the Peak District too, which is good fun when the road opens up and there's no-one holding you up. -- "Back to working on a [hacking simulator](https://github.com/mtimjones/spectre) side-project. It's a \"game\" per-se with the intent of being a rogue-like (systems are hacked through for some purpose). Exploits can be employed as counter-measures to system security, with the UI being a console with a chat window to lead the \"player\" along. Commands are UNIX-like, but simplified. -- "Neat! I was working on a very [similar game](https://github.com/jerluc/3R4) back in the day, but never really got too far past the initial UI (for time commitment reasons, frankly). I actually arrived on the idea of making the UI accessible by SSHing into a game server, which would then put you directly into a shell process, which itself was the game. This provided a zero-installation game experience that I thought would be neat. Anyway PM me if you want to chat more about your ideas! -- "Very cool! Deploying through SSH is a great idea and could open the world up to multiplayer (network attack and defend). One area that I've struggled with is how to achieve balance. One of the first exploits that you can apply in the game is the \"sleeper\" exploit which puts a security process (like a sentry) to sleep so that it can be killed. Once security is removed, other operations are possible like getting files (bitcoin) or pivoting to other nodes accessible from this node. I assume that other security processes would have higher security and the sleeper exploit would not work. But finding that balance between measures and counter-measures is difficult (outside of simple rock-paper-scissors mechanics). -- "The kid's biological mom is picking him up from daycare and taking him back there on Monday, so the wife and I are going on a double-date with some old drinking buddies. Amateur pinball tourney followed by fine dinner followed by probably staying up too late with a bottle and a deck of cards. Saturday evening brings work for my spouse and for me probably arguing with my buddy about how much technology he vs I could build from scratch, you know, if transported to a thus far untouched desert island. Sunday, to be honest, will probably consist of binge watching The New Girl. Meanwhile, my mission to port postmarketOS to the NEC Terrain miiiight be suffering a little bit-rot. I'll get around to it eventually. -- "I was supposed to go on a two day road cycling trip, but then did not only my wheelset have some problems, the organizer also had to cancel the ride, because too few people signed up. Bummer, I've enjoyed this ride very much last time. Now I've got all this time to spend on finishing a paper and doing a what I can only assume to be a very fun assignment with Prolog. -- "I'll be writing up some explanations of how some of the fiction generators I've written for NaNoGenMo worked. (Among them: a comic book generator, a system that expands stories by adding parentheticals and footnotes, a mythology generator that plays up Sumerian scribes' tendency to over-use lists, & a partially-completed screenplay generator based on Save The Cat.) -- "I'm going on a week long [hut-to-hut bicycling trip](https://ridewithgps.com/routes/27860191), starting Sunday. Tonight and Saturday I'll finish packing my bags, make sure my bike's tuned up, and head to my friend's house. Sunday we ride from the house to the Polar Star 10th Hut. -- "Catching up on sleep, because startup life. Also going to continue working on my educational talk for Incognito Conference, which although is pretty far out from now, I know it's going to creep up on me and I'll procrastinate otherwise. -- "Some friends of mine are leaving the city, so I am hanging out with them before they go. Otherwise I am continuing to push through Patterns in Network Architecture. If I feel like prototyping I might mess with an elixir implementation of a raft cluster, or just keep it simple and try to come up with an elegant way to wrap a restful API around an XML over SSL RPC service that I’ve been working on at $job. I also want to run and climb. So it goes. -- "I finished decoupling [Libra](https://github.com/kori/libra), and I learned a bunch in the process. I kinda ignored the TODO haha, I wanna work on that this weekend Also, I finally met the devs who do meetups and stuff in my city, so that's also great -- "Do you have any interesting plans for the weekend that are different from the day to day grind? Weekend trips, meetups,side projects, or anything interesting? -- "Sans-screen will be mostly relaxing and enjoying the fantastic weather we've been having. Maybe get together with some friends for a hike. Screen-wise I'm gonna start work on a cross-platform text expander. I use OSX at work and Arch at home and it bugs me that there isn't a cross platform solution there. Main goals are that it works on those platforms, can sync with a snippet repo (so updates bridge computers), and that snippets are scriptable so you can dynamically have pieces filled in. -- "@rocx mentioned M4, and while it's kinda old and hairy the [GNU version](https://www.gnu.org/software/m4/m4.html) might be what you need. -- "Disney world. First real vacation in over 3 years. Still coding :-) -- "I will be at the [National Morris Weekend](http://www.nationalmorrisweekend.co.uk) :D -- "Friend of mine is turning one year older, so we’re going to a cabin in the woods with cake and liquor. I’m also going to continue reading through Patterns in Network Architecture, which I’ve been plugging through for about two weeks but got stalled on. -- "Celebrating a friend of mine incrementing the significant bit of his age. Picking up some work for a friend who needs an extra pair of eyes. Continuing with trying to write a language parser in ruby for another client. -- "I've been trying to develop a side hobby of building guitars. This weekend I'm working on a reproduction of a 6th century Germanic instrument called a lyre. My biggest challenge over the weekend will be gluing the two halves of the soundboard together, which so far I've been failing at. It requires planing two 24\" long boards along a 1/8\" wide edge to get a perfectly flat seam. It has led down a pretty deep rabbit hole of learning about hand planes and blade sharpening, but it's all pretty rewarding. -- "I'll probably take my wife to see *Jurassic World: Fallen Kingdom* this weekend. She loves those movies, and since she had breast cancer and is going through chemotherapy to mitigate the risk of recurring tumors, it's important to keep her morale up. I've also been tinkering with building my own OpenBSD static website generator using ```make```, ```sed```, ```lowdown```, ```sassc```, and ```dateutils```. It'll use my ```~/.plan``` file as a non-social blog, and also pull in ```~/.project```. Using ```sed``` will let me take advantage of ```lowdown```'s ability to extract metadata and convert markdown files without wrapping them in stand-alone HTML files to populate templates. I've timed both ```sass``` and ```sassc``` using the ```time``` command, and ```sassc``` appears to be faster. I'm pulling in ```dateutils``` so I can store timestamps in variables and convert them to arbitrary formats. I like what Roman Zolotarev did with his [ssg script](https://www.romanzolotarev.com/ssg.html), but his implementation seems blog-oriented, and I want to [get away from blogs](https://petermolnar.net/internet-emotional-core/) and [party like it's 1999](https://stackingthebricks.com/how-blogs-broke-the-web/). Rather than try to make his script work the way I want it to, I've been studying it as a reference implementation so I can do it my way. :) Also, I want to see if I can get better performance by using ```make -j```. It seems most static site generators process pages sequentially, but that seems inefficient when I've got an 8-core machine and 8GB of RAM. -- "Good luck on that generator. I tried the same thing but primarily with M4. Would not recommend that path. You could simplify your generator into `markdown content.md |cat head.htm - foot.htm >content.htm` in the end. -- "Thanks. I know I could use ```cat``` to simplify generation, but I've already figured out how to populate HTML templates using ```sed```. It's more complex, but also more powerful since I can chain multiple operations into a single command. I had originally started out by writing a shell script, but once I was ready to loop through multiple files I realized that a shell script wasn't really the best tool for the job, and that I might have a better time if I use ```make```. This way I can tell my wife that the ten bucks I spent on a used copy of *sed & awk* from O'Reilly Press wasn't wasted. :) -- "An especially random collection of things this weekend for me. A few social obligations, first, I'm going to finally be a good son and actually see my mother. It's been far too long again. Second, pride is this weekend in my city, so I'll be heading over to some friends' place for an afternoon. Between all that I'm working on making an enclosed spool holder for my 3D printer. I think I have the design mostly done, but I'm running into problems with it popping off part way through the print because it's so large, so it'll mostly be trying different tricks to get the PETG to stick to the bed better. Printing stuff is a really bursty project though, so hopefully I'll get some more done on my [CoAP library](https://github.com/azdle/tokio-coap). I got a couple PRs for improvements that has spurred me into getting back into working on that again. Finally I also picked up \" Hands-On Concurrency with Rust\" by Brian L. Troutwine, so if the weather cooperates I'm hoping to get some hammock time in to do a first read through on some of that. I'm still in the intro chapter, but I'm really encouraged by how much technical detail there is already. I actually forgot it was a book about Rust for awhile with how much discussion there was about x86 & arm instructions and how concurrent programs behave at that level on each. -- "Recording two comedy shows for producing my buddy's album! Recording two ([1](https://soundcloud.com/theothermoviespodcast), [2](https://ydkmy.podbean.com)) podcasts because they are fun! I don't program for fun anymore and it really doesn't bother me. -- "As an after-hours audio guy, I wish you good cables and low noise floors. -- "\"Celebrating\" Midsummer, as well as one can in a stereotypical wet and rainy Sweden. If the weather lets up I'll mow the lawn. I've also promised an updated CV to a recruiter. -- "I'm being a good son and took my mum to London with me, as I was going over to attend the friday nights Taylor Swift concert. So no programming this weekend. -- "Do you have any interesting plans for the weekend that are different from the day to day grind? Weekend trips, meetups,side projects, or anything interesting? -- "This weekend I'm preparing a blogpost about new go-linter(and also adding few additional linters as-well). Basically my friends and me going to create an easy linter-sandbox for the community. We've made almost 20 linter atm and going to add few more. -- "_(Ha, nice. I've wondered about doing these previously but wondered if it would be too granular given the weekly what-are-you-doing threads technically cover the weekend. Nice to see someone else had the thought—and tested the theory out. ✌🏻)_ * * * I picked up a secondhand gas BBQ tonight, and have cleaned it so we will have to fire that up Saturday evening to give it a test run. Also got a friend (& future colleague) coming to stay for the weekend, his one request is I take him sailing so that's pretty much our plan once he arrives tomorrow. I might see if I can flush and refill my car's manual transmission fluid at some point too. Had a lovely big syringe and hideously expensive oil turn up in the post today. -- "I really enjoy the weekly threads, but most people seem to focus on work tasks and such. I wasn't sure if this thread would get much love or hate, but it's a decent test I suppose :) -- "I have some sleep to catch up, and some garden work maybe. Computer stuff will hopefully include investing some more time in automation/devops things. I also want to start blogging again. I've bought some nice beer, and I'm looking forward to drinking it when everybody is asleep in the house. I can use some silent me-time after a stressful week... -- "Which beer? -- "I bought [Orval](https://www.ratebeer.com/beer/orval/835/) and [Gouden Carolus Cuvée van de Keizer]( https://www.ratebeer.com/beer/het-anker-gouden-carolus-cuvee-van-de-keizer-whisky-infused/507240/). I'm not sure if they are well known outside of Belgium but I like both of them. -- "I’ve had Orval, but not the Cuvée van de Keizer. Enjoy! -- "Probably, I will do some climbing and cycling. I might repot a plant. And I will try to soak up some much needed sun. -- "* country trail hiking (not steep mountains or anything) * try to get some drupal 8 gitlab-ci automation working on \"volunteer time\" * clean house and Father's day lunch. -- "I'm going to try out the beta for [Pulumi](https://www.pulumi.com) (a local startup). -- "Went to the National Gallery of Victoria (Melbourne, Australia), and saw [some works of art that are on loan from MoMA in New York](https://www.ngv.vic.gov.au/exhibition/moma-at-ngv/). Was very inspiring! Gonna do some more messing around on [Pikelet](https://github.com/pikelet-lang/pikelet). Trying to look at implicit arguments, and rework how I do variable binding. As you may notice I created an organisation for it last week! -- "Backtesting momentum-based investment strategies to verify assertions that there are low touch, downside risk reducing strategies that I can easily implement. I mean things as simple as ‘spread investment across 5 uncorrelated ETF’s, check once a month, sell when below 200 MA, buy when above 200 MA’. If that nets me 5% a year as a long term average, I’d implement it in a heartbeat. -- "My wife went to a thing called Rock Fest yesterday, to see Flogging Molly, Dropkick Murphys, and Rancid. I took the opportunity to figure out what the whole fuss is about this Fortnite thing I keep hearing about. Turns out you can install it on the Nintendo Switch, so I tried that out, and it turns out I suck massively. It's kinda fun, in a way, but it's not my usual cup of tea at all. I've also been supposed to do something with an old computer someone handed down to me; I'm going to add it to my roster of machines in my workshop, probably using it to host a Gitea instance, and some other stuff. Firmware on the BIOS is a bit dated, it won't take a regular USB stick to boot up, would only accept USB-FDD, which I do not own. So I had to dig up a CD-R that was not already written on and I _may_ be on my way to glory. I otherwise intend to play a bit of Minecraft with my son, he wants us to do some building challenge or other. I'd also like to finish setting up my kids' (hand-me-down) laptops and start teaching them how to use them. Anyone knows of good open-source type-teaching software? -- "> and it turns out I suck massively I think Fortnite was what two coworkers were talking about last night. One said he felt accomplished getting 5 or 6 kills in a game. You might not suck as bad as you think: seems inherently more difficult than some games to get kills. -- "Organising my [Morris dance](https://en.m.wikipedia.org/wiki/Morris_dance) team's cyclobooze, which is a 30-ish mile ride with pub stops. Trying out [Molly dancing](https://en.m.wikipedia.org/wiki/Molly_dance) tomorrow, which involves a five-hour round trip. So I've also racked up a few audio books for the journey. -- "Let me guess, all the pubs are on a CAMRA list? -- "we've embraced diversity and even have some cider drinkers now! -- "We're halfway though the weekend, I've spent Saturday helping my stepson move some stuff out of the apartment he's subletting while he's in Australia for 6 months. -- "Oh, I wish I'd seen this thread three days ago. On Saturday, my wife and I celebrated the second anniversary of our wedding. Just a little back yard party but, multiple people said that it was *really fun*! (Emphasis theirs.) You may be surprised to learn that it was our fourth annual wedding-related party in that very same spot and time of year. You see, we had a long engagement, so we threw a \"Negative First Anniversary party\", and the wedding party itself (The Zeroth Anniversary) took place there, too. By now, there are people who we didn't know then in attendance... :) Word on the street is that the 7th wedding party (2021) will be held near Cancun, instead of the back yard... -- "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. -- "Outside of work, I'm working through two coursera classes (maths for machine learning, algorithms & data structures), reading an [intro to quantum computing](https://www.cambridge.org/core/books/quantum-computing-for-computer-scientists/8AEA723BEE5CC9F5C03FDD4BA850C711) (got some basic exploratory programs working with the [Microsoft Quantum SDK](https://docs.microsoft.com/en-us/quantum/) and [Rigetti's pyQuil](http://pyquil.readthedocs.io/en/stable/)), and trying to refine and [explore some ideas](https://github.com/kisom/aqe/blob/master/KnowledgeBase%20example.ipynb) I've had while learning about [natural computing](https://mitpress.mit.edu/books/introduction-natural-computation). 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. -- "Still my reimplementation of the FastText embeddings papers in Rust. Now mostly working on optimizing hot loops, while testing on 400M and 28B token corpora. I got quite a bit of a performance improvement by replacing use of prefix sums + binary search (Har-peled, 2011, though the technique is much older) for weighted negative samples by drawing from a Zipfian distribution and writing more SIMD-vectorized loops. The implementation's speed is now in the same ballpark as FastText, and is mostly bound by memory latency. Though I have some ideas to make it faster (e.g. reusing negative samples). --- Besides that I was updating some of my older Tensorflow RNN models to use dynamic shapes, so that I can use larger batch sizes during prediction. As usual, all of this is a bit delayed by teaching and other 'distractions' ;). -- "This is my one week at home between the end of my third year at UChicago and the start of my internship at Braintree. I'm spending a lot of time on my health: running to keep my body fit, snuggling with my puppo to keep my mind fit. I've written a [blog post](https://lobste.rs/s/lmbkha/gentle_intro_plt_programming_language) about the basics of PLT. I have at least two more posts coming out this week that have been kicking around for a while. Stay tuned! I've also spent time developing a [hugo](https://gohugo.io) [theme](https://gitlab.com/mpcsh/hugo-theme-motherfuckingwebsite) that suits my needs. I'm pretty happy with how it turned out! You can see it in action on my [personal site](https://mpc.sh). I have a fun project in the works; it's an interpreter for a silly language that was part of an incredible final-lecture game-day hackathon in my recent programming languages class. It can't quite be made public yet, but I'm definitely going to write something up and share it as soon as possible. I'm also culling through my [dotfiles](https://gitlab.com/mpcsh/dotfiles) in anticipation of my coming internship. I recently spent a lot of time slimming them down to the extreme, just throwing out entire modules, in the name of minimalism. It's been great. I want to continue slimming down and making my environment more visually consistent, as well as more focused. I'm endlessly frustrated by my shell: `bash`, `zsh + oh-my-zsh`, and `fish` all have their own quirks that bother me to no end. Per [this commit](https://gitlab.com/mpcsh/dotfiles/commit/8d21fb514fee773c461ad48e82e1afc29eb1f1c2) in my dotfiles, I'm currently on \"Revert \"Revert \"Revert \"Revert \"Revert \"Revert \"Move back to fish!\"\"\"\"\"\"\". And that's just the actual `git revert`s. If anyone has any suggestions for a clean, modern, minimal shell environment, I would really love to talk to you! -- "I'm pretty happy with my current ZSH shell config. It uses `antibody`, so the config is pretty small with everything being pulled in from plugins (and I split the bits I did want from my old config out to plugins to make them reusable) and it's not using any of the big frameworks like Oh My Zsh, or Prezto, so it's fast compared to what I had before. If you're interested, you can find it [here](https://github.com/Haegin/dotfiles/tree/master/zsh). -- "Ooooh, this is really tantalizing. I like this a lot. Thank you very much for the link!! -- "Hey, so I finally got around to taking a look and I really like your setup. Can you elaborate a bit on some of your custom plugins? I can't find any descriptions for these: ``` haegin/zsh-magic-history haegin/zsh-magic-completion haegin/zsh-fzf haegin/zsh-asdf haegin/zsh-rationalise-dot ``` -- "Sure thing. I'll work on adding some readmes to those repos over the next day or so. The shortest version is that they're the bits of my shell config that I couldn't find in existing plugins, but that's probably not useful, so here's a summary of each: zsh-fzf - fzf is a fuzzy finder I use. This just sets up the plugin. zsh-asdf - asdf is a programming language version manager with plugins for different languages. This sets it up in the shell. zsh-rationalise-dot - this plugin sets zsh up so when you type more than 2 dots (`..`) in a row, each dot after the second adds `/..`. zsh-magic-history - sets up history settings that work across multiple shells, so you don't need to open a new shell to access history from other shells. zsh-magic-completion - this just copies completion settings from the repo I originally copied my config from (https://git.madduck.net/etc/zsh.git). I can't remember what exactly I found myself missing when I didn't have this, but I copied it over pretty quickly and haven't taken the time to go through it to work out if I want to change anything else. -- "Thanks, that helps a lot!! -- "- Either being work to migrate to the proposed; or researching a new proposal for a replacement model/Db adapter/etc system for `$CLIENT1` - Adjustments to a temporary data-collection tool for `$CLIENT2` - for `$HOME` - finding a new front door for the renovation. Apparently no amount of treating, oiling or lacquer will protect the pine door we’d chosen. - planning what/how electrical wiring I’ll be doing once the builders have finished, and what if anything they can put in place in the brickwork to simplify things later. -- "Main work/life news for me is that I signed a contract to start next year (January 2019) as Assistant Professor of Computer Science at [American University](https://www.american.edu/) in Washington, DC. So I'll be moving back to the US. Should be interesting and will definitely be a change of pace, though I'll miss living in this [beautiful](https://twitter.com/mjntendency/status/996550839379681280) seaside town in Cornwall. In work-adjacent noodling, added a feed to my [paper-reading log](http://www.kmjn.org/paperlog/) per a request. The structure of [Atom](https://validator.w3.org/feed/docs/atom.html) is simple enough that it was pretty easy to DIY it using a [Mustache](https://mustache.github.io/) template. Besides that, working on something for the [General Video Game AI competition](http://www.gvgai.net/). My goal isn't necessarily to build an agent that performs well, but to better understand the structure of the space. Characterize the different types of challenges encountered by agents in these kinds of arcade games, understand how algorithm/compute/etc. choices relate to performance, and so on. -- "Congratulations on the new job! -- "This week I'm: * Donating 50 EUR to OpenBSD * Updating the list of [44CON talks](https://44con.com/44con/44con-2018/44con-2018-talks/) * Continuing the [Raw Hex](https://rawhex.com/) migration to self-hosting everything without external dependencies Last week I was at two conferences which was fun but I've been pretty ill. Finally started getting better this weekend, so I'm going to take it a little easy but I have a lot of catching up to do. -- "I'm reviving/salvaging an old project I built for an employer about five years ago, and was allowed to open source. The specific usage of the project was a bit specific to that employer, but it had some really cool concept that can still be very useful in the area of network automation, so I started this weekend trying to salvage the parts. Working with five years old code is a bit challenging - not all components are backwards-compatible I found out. For the interested, it was written in ruby, with Sinatra as the microframework behind. -- "Last week I successfully got my Soviet-era desk phone working with my Incredible PBX and a Granstream HT502 ATA that supports pulse-dialing. This week I’m aiming to: * Finish writing an article about bOING bOING (the zine) for neondystopia.com * Document my PBX setup into a series of articles/posts to share the configuration info and have good notes for myself. * Troubleshoot my red Western Electric series 500 rotary phone, which looks like it might have multiple issues involving wiring and a dead element in the handset. * Finish an article I started writing years ago about emulating a z/OS mainframe. * Work on recreating the iconinc yellow Motorola pager from the movie Hackers (1995). I have all of the supplies and need to start it. -- "Outside of work, I'm trying really really hard to figure out what GUI toolkit I can use for Go that can also deploy to Windows, statically linked, that won't be too much trouble to install. Surprisingly complicated, I'm almost tempted to go back to something like C# and Mono for the purposes of the app in question. Context: Father is a doctor, and they're changing their \"doctor app\" (for lack of a better word in my vocabulary) to something else. The \"something else\" lacks a pregnancy calculator. Super easy: I need a date of last periods from the user, and from there I need to figure out 1- How many weeks are they along, and 2- when is X, Y and Z weeks from the date of last periods, to plan for follow-up appointments at weeks X, Y and Z, and finally 3- the due date. It's super easy to compute in Go, because for date managements I can just do like `dateOfLastPeriods.Add(280 * 24 * time.Day)` and I'm off to the races. Also I thought it'd be cool to do it in Go, and figure out how to wire a GUI to that, statically linking a library to it, like QT, but it's less simple than anticipated. -- "Trying to finish my PhD thesis :-D -- "Last week I started building a WebSub hub in `rust`, didn't make as much progress as I wished to. This week on my free time I will continue in this endeavor. I also used to spend a small amount of time maintaining the Hawkpost service each week, this one will not be different. -- "I'm in a new country, so I'm studying the official language. It's very hard, but also very rewarding. The natives get quite enthusiastic when I try to communicate in their language, and immediately switch back to it if I have to use English for something. They enunciate more clearly, and some want to chat for a bit and exchange language tidbits. \"So, now you have to give me some [my first language] in return!\" -- "Not exactly \"work\", but providing my public Multics service, I'm continuing to learn more about programming in Multics and trying to bring new things to it's modern users. This week I am hoping to complete an implementation of curses that plays nice (that is, works) with the Multics video window system invoked — there is an existing port of System V Curses which doesn't, and has some other issues, with no extant sources. Once this is complete, a lot of my 85%+ done projects will essentially be completed. Rogue and NetHack and vi, I'm looking at you! The games aren't \"real\" work, but they are a great learning experience for me, in addition to being a huge draw for casual users, many of whom stick around to learn more about the system and the fascinating people who worked to create it. I have way too many other small things to do, in fact, too many to list, but this is a big one I hope to get done this week since it's blocking otherwise completed work I can't show off. You can visit at https://ban.ai/multics or connect directly with mosh or ssh to dps8@m.trnsz.com -- "Another slightly odd week, after last week's unexpected shenanigans travelling to Edinburgh to celebrate my employer being acquired successfully. This week I'm off to meet my new team/employer in person for the first time (job change in August. Unrelated to buyout.) Which means more travelling, albeit to Sheffield this time. (Sheffield is lovely to boot, any excuse to visit.) Working on a parser for a client in-between everything else, which is the first language parsing I've seriously undertaken. Interesting stuff, currently writing a library for Ruby so looking at [parslet](http://kschiess.github.io/parslet/) to do the heavy lifting for me. Also the good weather in the UK amazingly continues, which means my garden continues growing. Bought a chainsaw last week and chopped a load of stuff down to start tidying it up, but there's (as ever) always more to do. -- "Mostly going to work on finishing up my thesis, and then I'll be working on a new OS with extreme attention to scalability over multiple cores. Other than this, I've been spending some time on the Crystal language. It's quite niche, can't wait for it to have support for parallelism. -- "Moved my language project (dependent typed systems programming language) to a new Github organisation: https://github.com/pikelet-lang - been working up to a 0.1 release, which will sadly just be an interpreter. I am definitely aiming for unboxed data types and closures, linear types, compile time evaluation, and low level interop in order to win the right for the 'systems language' moniker though. -- "Work: Think I may finally have finished my re-write of our iOS capture code, to split off the UI from the back end. Took a bit - I'm not really happy working in Objective C++, that's for sure. Now for some more cleanup and get out of the iOS development business again. Home: Finish cleaning up my various web sites and the providers. I am slowly consolidating on name server provider, DNS provider and VM provider. Maybe get some of the web sites updated even! -- "Work: * Trying to make our convex optimization for energy storage controls run more efficiently and quickly (likely just tweaking these parameters until I get better run times with slightly lower precision) * Continuing to try to raise money in a land where shitty scooters and fruit juicers can raise tens of millions of dollars, but a small clean energy analytics company cannot Home: * Continuing to learn more about quantum computing and planning on writing a basic quantum computer emulator to make sure I understand the fundamentals -- "Getting XOAUTH2 to work with isync / mbsync. If not, I'll be writing yet another program to scrape mail out of Google's email walled garden. -- "At VelocityConf in San Jose, giving a talk on Pat Helland's paper \"Beyond Distributed Transactions\" and how we implemented the ideas in Wallaroo. And probably fixing more Pony bugs. We've been knocking off a lot of high-priority fixes lately. -- "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. -- "I am reimplementing the fastText embeddings papers in Rust (at the very least the skipgram model). Reasons: * I need to use fastText-like embeddings in several Rust programs. * I want to use/try some other ideas from the literature (such as position-dependent context vectors). * It's fun ;). I have training working now. Next up: saving/loading models, clean up first version for code review. Other than that running some final experiments for a paper. Preparing/giving lectures. -- "Work, creating devicetree definitions for a new board. Hobby, learning how to make an app with Swift/10code. -- "BSDCan! -- "I was on my way to BSDCant, but it turns out they've cancelled it. There's nothing BSD Can't do! Enjoy! PS: (I made this joke on Mastodon as well, with similar groans for responses). -- "Looks like I will be migrating off from Github onto something self hosted, for peace of mind. -- "Yea, looks like I need to do that too. -- "Until now I treated self-hosting with \"well I know it's best to control my own files and code, but I can _probably_ vaguely trust BigCompanies.\" Thanks to the acquisition I finally got off my ass and got a DO droplet to use as my source of truth (didn't take long to set up at all). Gitlab is my primary mirror. I will keep GitHub as a source of truth for a handful of projects - namely the ones with contributions from other developers. -- "Even though MIcrosoft hasn't done anything egregious to irk me in about 8 years, I will also be doing that. -- "We released [pool mining](https://pool.merit.me) for [Merit](https://merit.me) recently and I'm working on integrating pool mining directly inside our [desktop wallet](https://www.merit.me/get-started/#get-merit-desktop). The wallet uses electron and I just released a new library called [libmeritminer](https://github.com/meritlabs/libmeritminer) that I wrote and nodejs wrapper called [merit-miner-node](https://github.com/meritlabs/merit-miner-node). In addition, This week I am going to start work on community support outlined in the [bluepaper](https://github.com/meritlabs/bluepaper). -- "This week on my free time (and probably on the following as well), I will try to build a [WebSub Hub](https://www.w3.org/TR/websub/#hub) using `rust` in order to practice and improve my skills on this language. -- "This week I'm: * Sorting out talk and speaker announcements for 44CON to go live on Wednesday * At Infosecurity Europe's Geek Street doing soldering workshops * At BSides London on Wednesday doing soldering workshops, 44CON table and mentoring a rookie * Dying on Thursday * Sorting out a HIDIOT project involving Devoxx, Cern and the University of Lancaster to teach kids coding and hardware hacking this summer. At least on Friday I'll be playing with Neopixels most of the day. I hope. -- "I'm working on moving the central PKI in [Peergos](https://github.com/Peergos/Peergos) from sqlite to ipfs itself. We're using a [champ](https://blog.acolyer.org/2015/11/27/hamt/) (compressed hash array mapped trie) - the same data structure which we've already migrated all user data to. It has a lot of nice properties, like insertion order independence and fast lookups. This will make mirroring the PKI trivial, and allow private public-key lookups on the mirrors. -- "I received a Soviet-era desk/house phone from Lithuania (I'm in the US) that I'm attempting to integrate with my Incredible PBX. The phone is push-button, but is definitely pulse-dialing instead of using touch-tones, so I ordered a Grandstream HT502 analog phone adapter because (nearly) everyone recommends these for pulse-dial phones on a PBX. Long story short, I'm still unable to register the adapter on my PBX and have it respond to the extension I've created for it. For such a popular device, I'm surprised there isn't more documentation out there to get it PBX ready, but I haven't given up yet! If you are a Grandstream/FreePBX guru, please let me know :) -- "Do you have the name or pics of the phone? -- "It is a VEF TA-01LXA, and there are pics available at the eBay listing but let me know if you need more, https://m.ebay.com/itm/USSR-Phone-VEF-TA-01LXA-Working-Condition-/332638456798 Everything seems to work as you would expect, but I have no idea what the R/K/M/W keys are for, or the round button on the bottom right. -- "That's about the plainest, toughest-looking phone I've ever seen haha. Thanks for the picture. -- "Got it all worked out now :) I hope to do a few writeups on all of this shortly. -- "Early week, I'm syncing up with @silentbicycle and giving a wildly experimental talk on cache invalidation and naming things. The first draft had a long tangent into Talmudic exegesis I stripped out in favor of a rant about wittgenstein. I've finally officially announced [the business](https://www.hillelwayne.com/consulting/). Later week is all about sending feelers to a few potential clients and writing marketing material (mostly formal methods demos). Also I'm in a Prolog class that starts Friday. Not sure if I'll have the time, but hoping it's fun. -- "Please post the talk when it's out, sounds fascinating! -- "> I’ve finally officially announced the business. Good luck, buddy! Hope you get the stuff mainstream! :) -- "**Last week** - Poked around a bit the [Arcan/Durden/Senseye](https://arcan-fe.com/2018/05/31/revisiting-the-arcan-project/) project from @crazyloglad. - Went down the rabbit hole. Got a raw ptrace (well, [a Python ptrace wrapper](https://pypi.org/project/python-ptrace/) debugger/editor going. I think this can be a decent external debugger for flpc. However, the more I try to do, the more conventions, file formats and Linux-specific knowledge is needed. I think I'll reduce the scope and not try to make something too general. One example was trying to make a function call and break right after the call returns. That is, interrupt the current execution to make that call. In assembly, this would just be call func_name int3 The simplest way is to just write these instructions below the current program counter, run and revert the write. But that wouldn't work for recursive calls and if we're near the end of the function, maybe we might write over something else that matters during the call to `func_name`? So now we could try to simulate the `call` by crafting a stack frame by hand but the program still wouldn't break if it finishes. We can reserve some new memory with mmap (syscall #9) and write our instructions there, out of the way of anything else. But the parameter to most `call`s are relative and only take a 32 bit address difference as argument instead of 64. So I don't know how to make a call that's far and the `mmap`ed chunk can be in a different segment as `func_name`. I ended up just writing `func_name`'s address into a register (`rax`) and ran `call rax` instead of `call func_name`. Maybe I should post about this. But its likely to be a lot of things you shouldn't do... **This week** - Try to add enough to the debugger so the beginning of flpc is easier to make (if recreated from scratch). I probably have to look into dynamically adding functions to C at some point. Dynamically adding to assembly isn't so bad since I mostly just have to find some empty space to write those bytes. I don't know if I should go the `dlopen` way or if that's more conventions and formats than its worth. -- "Comprehensive exams this week, then interview prep for the following week. Paper I, Wednesday: - Basic epidemiology - Robust statistical methods - Probability - Frequentist Statistical Inference - Clinical Trials - Analytical Techniques X 2 (i.e. univariate / bivariate analyses - Regression Paper 2, Friday: some of the above, plus GLM X 2, Survival analysis X 2, and Bayes. -- "I'm at MCE 2018. First time in Warsaw, I didn't know Poland was such a warm country :) -- "Enjoy Warsaw! The Vistula riverbank is a great place to chill after a long summer day :) -- "I’m trying to hack together a “git symlink as a service” product. Ideally, it’s a simple URL that should not change in the future, and resolves to a git repository hosted somewhere on the internet. In light of GitHub acquisition, this could be handy in avoiding things like this in the future. -- "Maybe I should be talking more about Mercurial this week. -- "Working on a couple of \"how do I..\" blog posts for Wallaroo Labs. Might submit them to lobste.rs. Still up in the air on that. Also working on my deck for my talk at VelocityConf San Jose on Pat Helland's \"Beyond Distributed Transactions\"... https://conferences.oreilly.com/velocity/vl-ca/public/schedule/detail/66765 -- "Work: - Building an XMPP spam-detection application on top of Wallaroo. First stab will probably be chat message frequency analysis, but I'd love to also plug in a bayesian filter. Non-work: - Keeping up with the coursework from [James Koppel's online software design course](https://jameskoppelcoaching.com/advanced-software-design-web-course/), which I am enjoying immensely! -- "As mentioned last week, today I published my first [timed-exclusive article in collaboration with Jonathan Boccara of Fluent C++](https://mailchi.mp/humanreadablemag/gcc-compiler-passes-zelda-puzzles-struct-and-constructors-oh-mymorning-cup-of-coding-issue-56). I'm still trying to figure out how best to handle such content. Keep the paywall? Run it for one day or one week? Should it be totally exclusive? Time, and feedback, will tell. The growth has been slowing down significantly though. I noticed that every day I don't share (read: advertise) the newsletter, I lose subscribers. If I do share (read: advertise), I'm \"breaking even\" or adding a few more. The hope, I guess, is that one day I get lucky and get thousands of subscribers (like what happened with Hacker News a few weeks ago). The problem is that I do not like spamming. And I have a feeling that's NOT a good thing for growth :/ I started doing [Monday Editions](https://medium.com/human-readable/gcc-compiler-passes-zelda-puzzles-struct-and-constructors-oh-my-monday-cup-of-coding-issue-3-84b4aa33934) exactly because I didn't want to spam every single issue. But nothing beats publishing the newsletter at 4AM because the weekend was crazy and wake up to emails like this: \"Hi Pek! This is the first mailing list I have religiously read every morning, and you're doing awesome!\" <3 -- "*Paper-reading log:* I've been more or less keeping up with my experiment in keeping a [paper-reading log](http://www.kmjn.org/paperlog/). Reasonably happy with it so far. The original ambition was a more public-facing \"these papers are neat and here's why I think so\" blog that explicates important papers in an accessible style. But as will probably not surprise you, that turns out to be a significant undertaking for even one paper, let alone a regular series. This version limits me informally to ~250 words per paper and a \"just notes on this paper to myself\" style, meaning the notes should be comprehensible *to future me* given the context of the title/abstract, but not necessarily to a general audience. That reduces the usefulness to others, of course, but there seems to be no real reason not to put it online, so I did so anyway. The win is that the constraint to be short and just-notes-to-me means it's been easier to slip it in as a routine part of my paper-reading without it becoming a big writing project in itself. Though I still don't write an entry for *every* paper I read; that'd be nice, but to avoid making it too tedious I limit it to papers I've read, liked, and want to be able to find again in the future. *Blogging:* In public-facing explanation mode, on the other hand, I did write [a blog post](http://www.kmjn.org/notes/rapid_game_jams.html) giving an informal overview of some recent work we've been doing [where I work](http://metamakersinstitute.com/) on \"rapid game jams\", which are 1-2 hour game jams using parametric game-design apps. *Exhibition setup*: Besides that, I'm helping to [set up an art/games exhibition](https://twitter.com/mjntendency/status/1003596164590133249) that we're hosting. I am not very good at this kind of thing. Neither my comp. sci. bachelor's nor PhD gave me any useful training in how to drill into different kinds of walls and mount pieces on them, nor how to pack and unpack fragile things. It's useful to learn something about, though. Today I learned that it is very easy to ruin drill bits by drilling into cinder-block walls. -- "working on a big feature of open source cache server [nuster](https://github.com/jiangwenyuan/nuster) -- "What is that feature? -- "active cache -- "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. -- "Working on a really fun project that I hope to present at a conference this summer (I'll post something here if that comes to pass). The project is for work, but we'll be open-sourcing it. Without giving too much away, it involves efficient evaluation of potentially enormous sets of boolean functions with predicates of different costs, where predicates can be shared among functions. The goal is to find all of the functions that match a given set of variable assignments while minimizing the cost function. (All of this is to massively speed up the primary product that I work on, which ends of solving a lot of decision problems in a soft-real-time environment.) On the personal side of the house, I'm thinking about removing the ncurses dependency in [mtm](https://github.com/deadpixi/mtm) by creating a lighter-weight terminal abstraction library that assumes it's running on a fairly recent terminal. I've been tinkering more with [sam](https://github.com/deadpixi/sam) as well, though it's getting to the point that 30 year old code just isn't cutting it...I think the terminal part is going to have to be completely rewritten. -- "I need this. I thought about making something like that for a long time to optimize some code if have. -- "> (All of this is to massively speed up the primary product that I work > on, which ends up solving a lot of decision problems in a > soft-real-time environment. I was going to say that a NIDS could use that but I figured you were ahead of me there. Fascinating project. :) -- "Given what I've seen you post here (and your username), I have a feeling you and I do a lot of similar work. Actually, given how small the industry is, I wouldn't be surprised if we know each other or are at most like one degree of separation away. -- "I appreciate it. I'm not currently in the industry, though. Most of the jobs I was offered in industry were about doing security on paper in companies that don't really care. That's just not me. I do this stuff on the side of my main job that's more business and service oriented. I work with people all day, do deep programming and security R&D at night. Or vice versa depending on scheduling. It did buy me a chance to survey, study, and do activist work with thousands of people over time. Learned and experienced a lot the security jobs wouldn't have taught me. I'm thinking of switching into paid R&D soon, though. I want to try to build my Brute-Force Assurance concept in case it's useful to people in your position. Plus cuz *someone* needs to build something like it. Maybe also try injecting high-security into commercial and FOSS products in way that maintains competitiveness and minimizes cost. If things go well, you'll probably run into me in person at a conference eventually. :) -- "Atm I'm implementing IndieAuth, Webmention and RSS for my federated link aggregator. IA is mostly so I can use the webmention.rocks verifier to ensure I did everything correctly. The other two features would enable a first simple but workable federation method and I can pull lots of content into stuff. However, this work is triggering a lot more work downstream in the package, I'm also planning to switch ORM from gorm.io to go-pg/pg which means writing migrations and managing them too. Additionally the federated content requires most of the resource cache I had planned for later to be implemented now to reduce the long load times when I request data from the internet in the background and convert media from remotes (protect user IPs and make CSP enforcement easier by not loading third-party data on the page). Otherwise I'm going to try out PJON for my LED Strip/Arduino setup to control it remotely. I'll also try to make a simple long distance experiment by running two wires for about 20 meters or so and checking how much data I can do safely with the LEDs. And of course, doing work for uni courses. -- "This week I am mostly working on my suntan in the outside office. (5Ghz wifi, power, a gazebo for the screen, decent table & chairs on the patio…) It seems the UK is in a minor heatwave at the minute so time to take full advantage of it. Also need to work on the garden, ignoring it for a few weeks has lead to rampant growth of _everything_ and it all needs trimming back. Time to break out the power tools for some fun playtime. -- "I'm working on a small project to use audio stenanography to transmit PICO-8 carts. The holy Grail is \"mix a copy of Celeste into some music from Celeste\" and be able to decode it through the computer/phone mic. I'm super unsure of if things are going to work but yesterday I got comfortable with some Python libs for working with audio and I have some (really limited) knowledge of Fourier transforms, so I'm hopeful this will work -- "**Last week** - Posted some small(er) projects in [collaborative software trades](https://collab.asrp.com) anyways. - Wrote most of a post on animation APIs. Still need to add some stuff and proofread it. - Wrote some simple example using my current APIs. **This week** - Finish that animation post. - Add some more parameters like opacity (hard for some backend) for guitktk and use them with animations. - Probably some time consuming administrative stuff. -- "I'll be publishing my next debugging book review either today or tomorrow, and I'm now reading debugging books from the early 80s. I'm going todebug some of the BASIC and Pascal programs in these books, which means entering the programs. The line numbers are actually really useful! -- "Finished up a consulting project and looking for something more permanent: either management or R&D role (I live in the DC area). Rewriting the first chapter of [*Farisa's Crossing*](https://michaelochurch.wordpress.com/2017/09/21/farisas-crossing-blurb-as-of-sept-21-2017/) to fix timeline issues and make the first 10,000 or so words less confusing without being boring. -- "Hoping to improve the build process of [rust-clippy](https://github.com/rust-lang-nursery/rust-clippy/issues/2716) by checking beforehand if the used rustc version can be used to build it. In the best case this prevents a bunch of bug reports due to nightly rust upgrades that are incompatible with clippy. -- "The packages I’ve been working on for the last 5ish weeks are going into use for the client. The cluster is already running, we just need to do final performance/failover testing and then schedule the migration. Following that is likely business as usual back to regular dev for the clients site. Besides $WORK we’ve got a price for the labour to do the renovations we’ve wanted for ~ 2 years so we’ll start looking at doors and windows and lights soon. -- "Working on a tool to help manage project dependencies, particularly to coordinate branch checkouts on our development machines. I'm sick of working on a branch, checking out one of our backend services and having a runtime error because one of our share libraries is on the wrong branch. -- "* Probably a day or so of consulting for a small client. I'm open to [more projects](https://push.cx/consulting). * Setting up an LLC via Stripe Atlas, the government paperwork should be coming this week. This is for the consulting + a project I want to work on a bit more before I talk about. * Getting my motorcycle out of winter storage. The tachometer broke shortly before I put it up for the season, but my fingers are crossed that's the only repair. The bike's vintage ('81 Kawasaki 440LTD), so anything I can't fix myself will total it at a time I can't afford a replacement. -- "Nice list of highlights. This one popped out at me: \"an online clothes retailer that has a return for almost every sales event.\" Does that mean people return almost everything they buy, part of almost every order, or they profit on almost everything? The first possibility would be an extreme case of living on razor-thin margins. ;) -- "It's part of their lifecycle. They send a couple outfits for people to try on and return the parts of that they don't care for. Careful planning and monitoring is required to ensure the business stays profitable, so cutting package handing costs was meaningful to their bottom line. And the shipping team was so happy about how much easier their job got that they bought me a bottle of whiskey, which was a treat. -- "I had the regular, e-retailer model in mind. That's really different and interesting. Nice, personal touch buying you a bottle haha. -- "The product that I've been working on for the better part of a year is going into production this month. This week, we're figuring out the deployment automation parts. We've decided on Terraform, so we're learning about it and finding a lot of solid examples for how to deploy our several services to AWS. -- "What's the stack you're working on? Our team has looked at Terraform and Cloudformation in the past but decided on using Jenkins and Ansible instead. Working with NGINX, PHP 5.6, MySQL 5.6, Redis, and Cloudfront over here. -- "Mostly Scala: Scalatra + Jetty, with no database for any part: two apps are acting as A&A for S3 buckets, while the other is A&A for a Kinesis sink. We have another part that's Rails atop Postgres but we're keeping it in Heroku until we get the other components stable. There are some other teams within my org that are Rails shops. Everyone's doing something a little different so we're going to powwow in June about a unified deployment methodology and platform. -- "I have a comedy show I recorded last monday to do post for and edit. I started a new podcast with a fellow comedian over the weekend - the basis of which we watch sequels to film franchises, hopefully without seeing the first, and do a companion/riff trax cut, and then a 30minute review episode. My other podcast released an episode where we interview Martin Wallstrom ([listen to it!](https://soundcloud.com/mrrewatch)). I am giving a small 5-10 minute talk at a coder meetup on wednesday about softskills for IT professionals and students. At work we're slowly chugging along with magento 2 integration into our production facility. Its going much slower than I anticipated. -- "I'm now a maintainer on this project https://github.com/fsprojects/FSharpx.Collections Working on a 2.0 release of the project which will include implementing the libraries in netstandard2.0 and converting all the unit tests to Expecto -- "Outside of the usual stuff, I've been feeling interested consistently in Rust lately, and have been working on learning it. I think it's related to a desire to have a go-to compiled language to build things that seem to benefit from that. I learned some Go, but I'm having a hard time getting enthusiastic about writing it because of the awkward boilerplate around errors and how clumsy the types feel. Rust's generics seem to let you do some really cool things, and the error handling seems much smoother - feel free to `unwrap` with reckless abandon the things you don't care about or know can't actually fail, and plenty of helper functions to handle things that can fail in reasonable ways. It may also be that dealing with the borrow checker business so far is a little tricky but not overwhelmingly hard. I think I could get my head around Haskell if I really plugged away at it for a while, but it's so different from everything else that it's hard to get enthusiastic about right now. Rust seems more approachable. -- "This week's a mix of hardware hacking, conference stuff and GDPR: * I've been working on my Chip-8 box and am currently refactoring drawing routines to use less SRAM. * I've built a HIDIOT-based IR thermometer thing I call [thermoboy](https://mastodon.social/@stevelord/99988907305325848/) to show off on our Devoxx table this week, and hopefully write up in any quiet periods. * I'll be at Devoxx UK later this week, helping people learn to solder and handing out 44CON stickers. * I finally got the 44COIN PCB prototype order in after Ragworm let us down (again). * I've got to get all of our GDPR exercise output together into a single draft doc this week that reflects our current state - we've done a ton on GDPR and thankfully have always been a bit more paranoid about attendee info than required, but distilling it into something manageable for attendees is the main sticking point. If after all that I have some time, I'm going to be inspired by Roman Zolotarev's work and set up an OpenBSD desktop using an old NUC I have lying round. -- "This week I'll merge a branch that removes over 4000 lines of duplicate code from the test framework at my jobby job. I've also begun making our builds reproducible by porting our custom scripts from groovy that only runs on our Jenkins machines, to MSBuild tasks that will run anywhere. -- "Working on open source project, nuster, a cache server based on HAProxy. https://github.com/jiangwenyuan/nuster Update to HAProxy v1.8.8, finally HTTP/2 support -- "Personal - hacking on language interpreters (FP, JOSS, and SETL) Work - Fixing some Windows 10 issues with a crufty application that I support. -- "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. -- "I just finished EXO_encounter 667, my entry for the Lisp Game Jam, so I'm going to be writing up a handful of blog posts as a retrospective on what it's like to write a short game in the love2d game engine with the Fennel programming language. https://technomancy.itch.io/exo-encounter-667 -- "Still working on my link aggregator, I got most of the voting system working, though I'm still tinkering on how to prevent people from voting twice. I wanted to start on the comments this week, most of it is already in the database, all that's left is find a way to properly pull a comment hierarchy out of the DB and display it on the page. Ideally with the limitation that it allows setting a limit to both top-level and total number of comments. I also wanted to start integrating plugins to source threads and comments from reddit, lobsters and HN to test out the scalability of everything and prove that I can pull and push interactions from both sides. On the side I'm investigating what stuff I need to do for the upcoming GDPR change, my expectation so far is that I need to reformat my Imprint and Privacy pages, probably outsourcing them to a separate domain so I can link it more easily from my other applications as well as sending mails to the users I have to inform them about what I collect on my services beyond the necessary (which is basically backups) -- "Off to Frankfurt, Germany for a couple of nights to start the week. Last minute short break, mostly to experience another place in Germany and partly because my mate needs to get abroad occasionally. Looking forward to it, especially not having to touch a laptop for a few days. Main project when I get home is sorting my wifi network out. Up until now it's been a Ubiquiti AP-AC-LR doing the heavy lifting, I've just picked up an AP-AC-MESH to go alongside that but placement of them isn't ideal currently. Need to pull some cat6 from the loft down through a bedroom closet to the hall to move one of them to the ground floor to see if that makes a big enough difference. (The goal is decent 5Ghz coverage in the main house & on the patio.) -- "I recently started running a Mastodon instance on my VPS. It took some doing, since I wanted to run it in docker and the documentation for running Mastodon in docker was incomplete or misleading in a few places, but I eventually got it up and running and talking to the fediverse. I'm excited to explore other technologies that make use of the fediverse, such as PeerTube and Pleroma. -- "Continuing my bachelor thesis. The verification tool has problems with simplifying conditionals expressions when the head is a constant expression (from macros for example). I spent too much time for that on the weekend already (recursively checking a syntaxtree and converting it into a CFA while doing optimizations wouldn’t go in my head). I hope to finish it today and then start verifying some IP input queuing. For that I have to see how to do the initialization the kernel usually would do during boot. -- "I am working on packaging [H2O HTTP/2 implementation](https://h2o.examp1e.net/) to [vcpkg](https://github.com/Microsoft/vcpkg), a cross-platform C++ package manager by Microsoft. -- "I've finished the core of my hardware and software Chip-8 emulator, running on an Atmega1284 MCU with an SSD1306 OLED display, buzzer, keypad and SD Card reader. Finally got a [launch menu](https://mastodon.social/@stevelord/99943615021923966/embed) integrated, that allows me to give users options to select emulation quirks using the 4x4 keypad. Now I just need to go back through the emulator core, double check and test the quirks and I'm ready to implement Superchip support. I'm also going to start looking at laying up the PCB for an initial run. My head says Eagle CAD, as that's what I'm used to but my heart keeps telling me to use KiCAD. I can fit the emulator in the 1284, but I'm uhmming and ahhing about adding support for a BASIC interpreter, and I really need some external RAM to make the most of that. I've been looking at 64k modules, but I might leave that for a later iteration if I can get this to a steady state without the extras. -- "What's the battery life? I'd like to make something very similar to this, but no emulator. Just write fast atmega assembly. -- "I haven't had it running on battery yet, but with some clever tickling of timers and the OLED I'm hoping to get about 48-96 hours on 3 x AA batteries. -- "No way to get it on 1 AA? I think 3 is too many :D -- "A single AA is 1.5v, you're going to need at least 3.3v to run things properly (although I think I can get away with down to 2.7v). 3 AAs should get me 4.5v, which lets me cheap out a little on power management ICs (everything is 3.3v/5v tolerant), although I might use an MCP1702 3.3v LDO regulator. For this version of the board 3 AAs will be fine, I'll look at options for using 2x AA or possibly coin batteries with a step-up converter or boost regulator down the line when I'm ready to build a production version. A lot of people forget the original gameboy used 4 AAs. -- "I have a few things that I've been working on for the past 8 weeks: - data visualization project - ActivityPub implementation - working through Haskell Programming from First Principles I'm in a rut where I've lost conviction about all three of these projects. I'm enjoying Haskell Programming from First Principles the most but I've been demotivated lately by the thought that I should be focused on applying technology in useful ways more than learning new technologies. I don't have any immediate or practical need to learn Haskell. I don't expect to use it professionally. I just think the ideas are pretty interesting. But I can't escape the feeling that there's something more important I could/should be working on. So I'm in a rut where I have some things I could work on this week but little motivation to work on them, and I'm not certain how to resolve this stalemate. -- "Would recommend to any developer who has a few months of mostly-free-time-ahead to dive deep into the Haskell world without regards to such concerns. Just a few months, then step back. Chances are high from numerous anecdotals including myself you'll be a whole-new-developer in whatever \"real-world languages\" you come back to. Not in the ivory-tower over-abstracting sense either. Just in the sense of almost-deeply-instinctively circumventing the more subtle pitfalls of all non-purelyfunctional languages, and devising more-principled, less-convoluted designs. Maybe you won't have that and maybe you're already there anyhow --- just saying, \"chances are high\". In any event such time won't be wasted and in your future real-world-work you will thank yourself for it, maybe even others (slightly less likely, nobody quantifies or detects infinite-numbers-of-troubles-avoided ;) -- "I really appreciate the recommendation. I'm not totally new to the concepts in Haskell. For example, I know the basics of and am comfortable working with algebraic data types. I too have found that learning these concepts strengthens and clarifies my thinking in other areas of programming. That's a big part of what I enjoy about Haskell and functional programming in general. -- "FWIW, I don't think I've ever really learned a language from a book. The examples / exercises usually feel too isolated and far-removed from the domains I work on. I do have a ton of language books, but I use them more as references while I apply the language to some problem. That focuses what you need to know. Usually what I do is to find a bunch of 500-line code snippets in the language, and choose one to add a feature to. I went through Real World OCaml a few years ago, and it was useful. But then I found an `ocamlscheme` project that I hacked on a bit, and that was a more useful learning experience. It wasn't exactly practical, but I think it focused me on a few things rather than trying to ingest every concept in a book. There are still a bunch of things about OCaml I don't know (and I think that is true for most people). The Pareto rule generally applies -- 20% of the language allows you to solve 80% of problems. There is usually a long tail of features for library authors (e.g. in C++). -- "I agree and support the principle here, which I think is that abstractions are best learned through application and experience. I like focusing on the language first and then using the language to solve a non-trivial problem. I get overwhelmed if I try to learn the syntax and core concepts while also trying to think of how to best express myself in that language. But I would never consider the language learned until the second step was taken and I had used the language to complete a real-world task. -- "**Last week** - Posted [Collaborative Software Trades](http://blog.asrpo.com/collaborative_trades). Seems like interest is too low for this to go anywhere, among other things. - Tried to look up some recent animation libraries. Found [popmotion](https://popmotion.io/) and others by the same author. - Cleaned up updates to [guitktk](https://github.com/asrp/guitktk) from the week before (mainly a new SDL backend) and pushed them. **This week** - Maybe think up of projects for Collaborative Software Trades anyways and add them there. - Maybe summarize my findings about animation. - I want to keep working on the low level (for C/asm) visual program editor but might have to shelve it for a bit. -- "Not sure I can help with the Collaborative Software Trades, but the guitktk reminded me that there's more I want to do with textual-based representations of non-textual things, such as diagrams. Just like PlantUML, Markdown, et al, use text to represent some (or mostly) non-textual things, but in a way that's very different from, say, using XML or JSON to describe a diagram or richly formatted page, I'd like to extend that idea to GUI layouts (e.g., JavaFX-based interfaces), where a textual almost-WYSIWYG gets you 80% of the way there, and the other 20% can be done with some other mechanism. I'm also doing the same for online quizzes/tests that's uses Markdown-like syntax, but allows for embedded questions and grading. Anyway, thanks for the ideas...even if the \"trades\" never happen, it's kinda neat to see what other things people want in this realm. -- "I've not heard of JavaFX before. Does it work well? I actually haven't thought about the layout portion all that much. It'd be interesting if a PlantUML-like thing described UI, although I've never had UI large enough that having it would have made that much of a difference though. I almost went the other way with mostly manual placement of everything. (Its uglier, but faster.) -- "JavaFX is the replacement for the Java Swing GUI toolkit and it's as good as any cross-platform GUI toolkit can be. One of the nice things about a PlantUML-like layout is that it's easy to version and see diffs. Also, a big problem that I see in complex layouts is the nesting structure, so if it could capture 60-80% of the use cases, it'd help a lot. -- "Oh, I thought JavaFX was some special UI describing language. I don't know if we're talking about the same thing but PlantUML is pretty declarative and [uielem](https://github.com/asrp/uielem) might be interesting to you. The same idea can be wrapped around other UI toolkits. However, it isn't WYSIWYG (but I prefer it to, say, trying to manually draw ASCII diagrams). -- "Aiming to keep my word and have a non-alpha release of [Mitogen for Ansible](http://mitogen.readthedocs.io/en/latest/ansible.html) out today. I don't think anyone really cares, but slips have a habit of snowballing, so I'm forcing myself the original [crowdfunding](https://www.kickstarter.com/projects/548438714/mitogen-extension-for-ansible) schedule as much as possible. Naturally it is the worst day to bump into a design problem in a task that should have taken 30 minutes, but also it was the most obvious day it would happen on :) -- "I'm glad I stumbled across your comment, this project looks really cool and is very useful to me, also recommended to my buddies at the org I volunteer for :) -- "Work: rewriting a major service for our production facility to keep track of orders coming out of Magento, conducting a few code reviews and design meetings, researching product and customer migration from mage 1 to mage 2, working on a small talk I'll be giving in May about soft skills at a local code meetup. Personal: editing a comedy show recorded on thursday, recording a show tonight, releasing super special episodes of my current podcast, working on some up beat cheery theme music for a friend's podcast, hitting the open mics on Thursday. -- "Finally [implemented dependent record types](https://github.com/brendanzab/pikelet/pull/47) in [Pikelet](https://github.com/brendanzab/pikelet)! Now working on adding some simple support for pattern matching. -- "I did some more work on my Sqlite insert performance testing with go and mattn's wrapper. I found that 'serializing' inserts (using a mutex on the sqlite db connection) gave incredible performance increase. It's not a meaningful benchmark, but I found that serial inserts in sqlite easily beats postgres. -- "Over the weekend I ported [my clone of jwz's xsublim](https://github.com/enkiv2/asublim/blob/master/asublim.py) from xosd to plain gtk. I'm probably going to refine it over the coming week, and test to see if it's now portable to systems not running X. I'm continuing slow progress on [a game I've been writing for the past year](https://github.com/enkiv2/mannaforourmalices). -- "I've decided to start working on my browser text game again with a full Java rewrite. Before, I was using Rails, but I was always stuck on finding how to do things and learning ruby as well. I felt like I was not accomplishing much and felt demotivated. So now using Spring boot and Java which I know both of them so I can concentrate on things I want to do. Still have some issues (which I didn't think I would hit that fast), but it's still fun :)! -- "Finally finishing up the work from the [past few weeks](https://lobste.rs/s/1sykjr/what_are_you_working_on_this_week#c_b3xxb4), which basically means ironing out the remaining small bugs in Failover/Proxy/Certificate/PXC Manager. Then, it's back to majority client work (setting up a new HA environment with the above tools, and regular bug fix development on the app) -- "I've re-made my blog's backend to reduce the mess that it was before (see my profile for the link if you're curious ;) ), I've released my android application and I'll work towards completion of a few small projects, like my [devlog](https://gitlab.com/Artemix/Devlog). -- "I'm still hacking on [FP](https://github.com/dbremner/fp). My current task is to split up a 674 line function into smaller functions that are more amenable to unit testing. -- "Did a silly with a friend and speed-ran the design, build and deploy process for https://antiprise.io in 2 days. Crazy simple site (1 endpoint api lol), but was fun to do all the parts including billing, accounts, setting up servers, SSL, etc with a time constraint since it's always so easy to handwave what goes into an actual deployed product. So unless people actually use it I'll probably not code outside of $work. If people do actually use it, I'll be really confused and I guess working on that! Gonna do another speed run next weekend, but using pieces of this as boilerplate/starter. -- "Via: https://medium.com/@felixrieseberg/defeating-electron-e1464d075528 Defeating Electron It is likely that some of your desktop apps have been developed with Electron, a framework that combines Node.js, parts of Chromium, and a layer of native code. Apps like Visual Studio Code, Slack, Atom, WhatsApp, or even the installer for Microsoft’s Visual Studio use it to build for Windows, macOS, and Linux. I’ve been working with and on Electron for years now, wrote a short guide on it, and am invested in the community. Whenever a technology gains some favor, a sizable group will stand ready to decry that choice as terrible, the technology as fundamentally flawed, and the problems solved to not be as complex as the advocates make them out to be. Electron is no exception. Reasons commonly cited as an argument against it (like memory consumption, general performance, or app bundle size) are clearly not leaving a mark with developers or end users. Commenting “Ugh, Electron” on HackerNews doesn’t seem to work, so let’s look at what you could do. Let’s consider why developers choose it and how it currently beats other desktop software environments. Let’s look at how you could defeat Electron. Developer Productivity Matters The term “cross-platform” is not well defined — at Microsoft, it usually means building for Windows 10, Xbox, and Windows Phone 10, excluding Windows 7. In the Apple world, we talk about code-portability between iOS, tvOS, watchOS, and macOS. Some frontend libraries simply mean that they support multiple screen sizes. If you’re building desktop apps, it means that you need to reach desktop users. Ground truth shows many Windows 7 and 10 users, some on the latest macOS versions, and a handful on various Linux distributions. For most Electron developers, code portability with mobile platforms, game consoles, or IoT devices is not a concern. Electron enables developers to target desktop platforms with high productivity and beats its competition in four main arenas. Web Technologies for User Interfaces Hate it if you must, but after years of iteration and a breathtaking number of frameworks, libraries, and even languages, web developers enjoy a smörgåsbord of amazing tools to work with. Hot-reloading the app you’re working on doesn’t grab attention anymore. That level of productivity is unmatched. We don’t need to just look at cross-platform technologies, even single-platform environments these days are years behind where web development is today. You might be comfortable in it, but Xcode hasn’t improved its developer flows in years. In the Windows world, Microsoft seems to focus its efforts entirely on the Universal Windows Platform, which has no chance of running on Windows 7. For Linux, we’re lacking any kind of consensus. I’ve seen adults yell at each other over gtk2 vs gtk3. Including libchromiumcontent (Chrome’s rendering engine) in Electron allows developers to build user interfaces that look, feel, and behave the same across platforms. Since the rendering engine is included, developers aren’t limited to whatever IE11 on Windows 7 supports — one can build the whole app with Rust/WebAssembly if desired. Electron offers the high productivity of web development without the pains of having to support ancient browsers. If your solution wants to beat Electron, it needs to provide a developer environment with the same levels of choice, convenience, productivity, and ease of recruiting engineers. Extendability and Interoperability Including Node.js in Electron allows developers to use any of the packages on npm, the largest repository for open source code that ever existed. More importantly, it allows developers to escape the limitations of JavaScript whenever necessary — many Electron applications switch to C++ or Objective-C to write high-performance logic, call out to obscure operating system APIs, or to share code with other environments. Atom recently switched to a native C++ text buffer, Visual Studio Code discovered that optimized JavaScript might be faster for them. Microsoft often asks me what APIs a solution would need to compete with Electron. The question is flawed: With Electron, one doesn’t need to know. Nothing is off-limits, not even the most unknown WinAPI or COM call. Not all Electron apps need to make native calls (like Visual Studio Code’s native debugger), but none of them are limited to never making one. Building, Shipping, Updating Electron would be a lot less attractive if all users were always running the latest version of their OS, the latest version of a modern browser, and possibly the latest version of your application. We do not live in that world. Electron offers a platform not just for building an application that works without dependencies on environments that haven’t seen updates in more than 10 years, but more importantly, sticks with the developer through the tasks of packaging, shipping, and updating the application. Browser-focused solutions like PWAs require developers to have an ongoing dialog with their customers about keeping their systems up to date. Native cross-platform solution like Qt tend to consider themselves more a library, less a platform, and have little to offer when it comes to creating auto-updating software, installers, and App Store packages. You might consider shipping and updating too easy for a cross-platform development solution to concern itself with. If you’ve never had to build an auto-updater, trust that self-updating software is a tricky beast to control. If you want to defeat Electron, you will have to stick with the developer once the code is written and the app needs to end up on user machines. Ease of Access & Skills Looking down on JavaScript developers seems like a quick way for “true developers” to bond together; many assume that Electron developers chose Electron because they wouldn’t know how to build an app without it. Yes, Electron makes building desktop applications easy. For cross-platform development, it might be the most accessible solution yet. For myself, the fact that Electron opens up the world of desktop apps to web developers is one of the reasons I’m excited about it. It is true that the ease of access means that many Electron applications have been written by people who do not fully understand the WinAPI, AppKit, or even how to write performant JavaScript. Expecting those apps to be written natively across all platforms is unrealistic. Prior to Electron, those apps would not have existed at all. While Electron enables both junior and senior engineers to work together, it’s a less crucial factor than often assumed. If another solution beat Electron across all disciplines except in ease of access, companies would switch. If you want to defeat Electron, it is crucial to understand and emphasize with the seasoned desktop software engineers who choose it. The engineers behind Visual Studio Code continue to deliver impressive software with equally impressive performance. Suggesting that the team behind Visual Studio couldn’t find anyone who understands native Windows development and was forced to use Electron for their installer due to a lack of skills is ridiculous. Defeating Electron You’d be surprised how many people deeply involved with Electron would be excited if it didn’t need to exist. The path to an obsolete Electron involves a competing technology that offers a better value proposition to junior and senior engineers alike. If your dream future involves non-cross-platform apps, call upon Apple to care about macOS and development for it. Call upon Microsoft to realize that win32 isn’t dead, no matter how hard they’re trying to kill it. Electron isn’t here to compete with anyone. It’s a free open-source community effort filling a gap. If you want to defeat Electron, you will need to fill it too; and you will need to do a better job than Electron is doing today. Many of the Electron maintainers are here to build desktop apps that end users love. If you succeed in helping them with that difficult task by building a better platform, they will smile, shake your hand, and thank you. -- "While I agree that the article is probably true, the biggest problem with Electron, and a lot of modern software development, is that \"Developer happiness\" and \"Developer Efficiency\" are both arguments for electron, but \"user happiness\" and \"user efficiency\" aren't. Electron developers are incentivized to develop applications that make users happy in the small- they want something that looks nice, has lots of features, is engaging. The problem is that in their myopic pursuit of this one-and-only goal too many apps (and electron is a vanguard of this trend, but not the only culpable technology by far) forget that a user want's to do things other than constantly interact with that one single application for their entire computing existence. That's where electron as a model breaks down. Electron apps are performant enough, and don't use too much memory, when they are used by themselves on a desktop or powerful docked laptop- but I shouldn't have to be killing slack and zoom every time I unplug my laptop from a power source because I know they'll cut my battery life in half. I shouldn't have to ration which slack teams I join lest I find other important processes swapping or getting oom-killed. Even without those concerns, Electron apps selfishly break the consistency of visual design and metaphors used in a desktop experience, calling attention to themselves with unidiomatic designs. We do need easier and better ways of developing cross-platform desktop applications. Qt seems to be the furthest along in this regard, but for reasons not entirely clear to me it's never seemed to enter the wider developer consciousness - perhaps because of the licensing model, or perhaps because far fewer people talk about it than actually use it and so it's never been the \"new hotness\". -- "> perhaps because of the licensing model I also think so. It's fine for open source applications, but the licensing situation for proprietary applications is tricky. Everyone who says you can use Qt under LGPL and just have to dynamically link to Qt, also says \"but I'm not a lawyer so please consult one\". As a solo developer working on building something that may or may not sell at some point, it's not an ideal situation to be in. -- "I think the big caveat to this is that for a great many of the applications I see that have electron-based desktop apps, they are frontends for SAAS applications. They could make money off a GPL application just as easily as a proprietary one, especially since a lot of these services publish most of the APIs anyway. Granted, I'd love to see a world where software moved away from unnecessary rent-seeking and back to actually selling deliverable applications, but as long as we're in a SAAS-first world the decision to release a decent GPL-ed frontend doesn't seem like it should be that hard. -- "I have been responsible for third party IP at a company that did exactly that with Qt; it's fine. -- "the author specifically calls out what the problem with QT is. > Native cross-platform solution like Qt tend to consider themselves more a > library, less a platform, and have little to offer when it comes to creating > auto-updating software, installers, and App Store packages. Don't be so dismissive of peoples choices with the 'new hotness' criticism. -- "I think you misunderstand what I'm saying. My claim isn't that Qt would solve every problem that people are looking to electron to solve if only it were more popular. My claim is merely that of the cross-platform native toolkits, Qt seems to be both the furthest along in terms of capability, and also seems to be one of the less recognized tools in that space (compared to Wx, GTK, Mono, Unity, heck I've seen seen more about TK and FLTK than Qt lately). I suspect that Qt could grow and support more of what people want if it got more attention, but for whatever reason of the cross-platform native toolkits it seems to be less discussed. -- "Especially with QML, Qt feels just like the javascript+bindings world of the web -- "Just to be clear, [this](https://www.youtube.com/watch?v=pIiOgTwjbes) is the workflow I have currently if I'm targeting Electron. Can you show me something comparable with Qt? -- "This is an overly simplistic argument that misses the point. Desktop app development has not changed significantly in the past five years, and without Electron we would simply not have many of the Electron-powered cross-platform apps that are popular and used by many today. You can’t talk about “not optimizing for user happiness” when the alternative is these apps just not existing. I don’t like the Slack app, it’s bloated and slow. I wouldn’t call myself a JavaScript developer, and I think a lot of stuff in that world is too ruled by fashion. But this posturing and whining by people who are “too cool for Electron” is just downright silly. Make a better alternative. It’s not like making an Electron app is morally worse than making a desktop app. When you say “we need to make desktop app development better” you can’t impose an obligation on anyone but yourself. -- "I'm not sure sure that it's necessarily true that the existence of these apps is necessarily better than the alternative. For a technical audience, sure. I can choose to, grudgingly, use some bloated application that I know is going to affect my performance, and I'm technical enough to know the tradeoffs and how to mitigate the costs (close all electron apps when I'm running on battery, or doing something that will benefit from more available memory). The problem is for a non-technical audience who doesn't understand these costs, or how to manage their resources, the net result is a degraded computing experience- and it affects the entire computing ecosystem. Resource hog applications are essentially replaying the tragedy of the commons on every single device they are running on, and even as the year-over-year gains in performance are slowing the underlying problem seems to be getting worse. And when I say \"we\" should do better, I'm acknowledging that the onus to fix this mess is going to be in large part on those of us who have started to realize there's a problem. I'm not sure we'll succeed as javascript continues to eat the world, but I'll take at least partial ownership over the lack of any viable contenders from the native application world. -- "> I’m not sure sure that it’s necessarily true that the existence of > these apps is necessarily better than the alternative. I think this and your references to a “tragedy of the commons” and degrading computing experiences are overblowing the situation a bit. You may not like Slack or VS Code or any Electron app at all, but clearly many non-technical and technical people do like these apps and find them very useful. I agree 100% that developers should be more cautious about using user’s resources. But statements like the above seem to me to be much more like posturing than productive criticism. Electron apps are making people’s lives strictly worse by using up their RAM—seriously? I don’t like Electron hogging my RAM as much as you, but to argue that it has actually made people’s lives worse than if it didn’t exist is overdramatic. (If you have separate concerns about always-on chat apps, I probably share many of them, but that’s a separate discussion). -- "> but clearly many non-technical and technical people do like these > apps and find them very useful. If you heard the number of CS folks I've heard complain about Slack clients destroying their productivity on their computers by lagging and breaking things, you'd probably view this differently. -- "If you also heard the number of CS folks I've heard suggest you buy a better laptop and throwing you a metaphorical nickel after you complain about Slack, you'd probably view it as futile to complain about sluggish Web apps again. -- "Dude, seriously, the posturing is not cool or funny at this point. I myself complain about Slack being bloated, and IIRC I even complained about this in my other post. Every group I’ve been that has used Slack I’ve also heard complaints about it from both technical and non-technical people. I’ll leave it as an exercise for you to consider how this is not at all a contradiction with what you quoted. My God, the only thing I am more annoyed by at this point than Electron hipsterism is the anti-Electron hipsterism. -- "Not posturing--this is a legitimate problem. Dismissing the very real pain points of people using software that they're forced into using [because Slack is killing alternatives](https://get.slack.help/hc/en-us/articles/201727913-Connect-to-Slack-over-IRC-and-XMPP) is really obnoxious. People aren't complaining just to be hipsters. -- "Dude, at this point I suspect you and others in this thread are trying to imagine me as some personification of Electron/Slack so that you can vent all your unrelated complaints about them to me. For the last time, I don’t even like Electron and Slack that much. What is obnoxious is the fact that you are just ignoring the content of my comments and using them as a springboard for your complaints about Slack which I literally share. You seriously call this account @friendlysock? Your latest comment doesn’t add anything at all. Many users, perhaps even a majority of users, find Slack and other Electron software useful. I don’t and you don’t. I don’t like Slack’s business practices and you don’t either. Seriously, read the damn text of my comment and think about how you are barking up the entirely wrong tree. -- "> without Electron we would simply not have many of the Electron-powered > cross-platform apps that are popular and used by many today. I don't really remember having a problem finding desktop applications before Electron. There seems to be relatively little evidence for this statement. -- "Please do not straw man. If you read what you quoted, you will see I did not say no desktop apps existed before Electron. That’s absurd. You also conveniently ignored the part of my sentence where I say “cross-platform”. Obviously we can’t turn back the clock and rewrite history, so what evidence would suffice for you? Maybe it would be the developers of cross-platform apps like Slack, Atom, and VS Code writing about how Electron was a boon for them. Or it could be the fact that the primary cross-platform text editors we had before Electron were Vim and Emacs. Be reasonable (and more importantly, civil.) -- "I think Vim and Emacs, traditional tools of UNIX folks, propped up as examples of what Slack or VS Code replaced is also a fallacy you're using to justify a need for Electron. Maybe better comparisons would be Xchat/HexChat/Pidgin, UltraEdit or SlickEdit for editor, and NetBeans or IntelliJ IDEA for IDE. So, those products sucked compared to Electron apps for reasons due to cross-platform technology used vs other factors? Or do they suck at all? Nah, if anything, they show these other projects couldve been built without Electron. Whether they should or not depends on developers' skills, constraints, preferences, etc on top of markets. Maybe Electron brings justifiable advantages there. Electron isnt making more sophisticated apps than cross-platform native that Ive seen, though. -- "I think you and the other poster are not making it very clear what your criterion for evidence is. You’ve set up a non-falsifiable claim that simply depends on too many counterfactuals. In the timeline we live in, there exist many successful apps written in Electron. I don’t like many of them, as I’ve stated. I certainly would prefer native apps in many cases. All we need to do is consider the fact that these apps are written in Electron and that their authors have explicitly stated that they chose Electron over desktop app frameworks. If you also believe that these apps are at all useful then this implies that Electron has made it easier for developers to make useful cross-platform apps. I’m really not sure why we are debating about whether a implies b and b implies c means a implies c. You point out the examples of IntelliJ and XChat. I think these are great applications. But you are arguing against a point no one is making. “Electron is just fashion, Slack and VS Code aren’t really useful to me so there aren’t any useful Electron apps” is not a productive belief and not a reasonable one. I don’t like Slack and I don’t particularly like VS Code. But denying that they are evidence that Electron is letting developers create cross-platform apps that might not have existed otherwise and that are useful to many people requires a lot of mental gymnastics. -- "\"You point out the examples of IntelliJ and XChat. I think these are great applications. But you are arguing against a point no one is making.\" You argued something about Electron vs cross-platform native by giving examples of modern, widely-used apps in Electron but ancient or simplistic ones for native. I thought that set up cross-platform native to fail. So, I brought up the kind of modern, widely-used native apps you should've compared to. The comparison then appeared to be meaningless given Electron conveyed no obvious benefits over those cross-platform, native apps. One of the native apps even supported more platforms far as I know. \"All we need to do is consider the fact that these apps are written in Electron and that their authors have explicitly stated that they chose Electron over desktop app frameworks. If you also believe that these apps are at all useful then this implies that Electron has made it easier for developers to make useful cross-platform apps. \" It actually doesn't unless you similarly believe we should be writing business apps in COBOL on mainframes. Visual Basic 6, or keeping the logic in Excel spreadsheets because those developers or analysts were doing it saying it was easiest, most-effective option. I doubt you've been pushing those to replace business applications in (favorite language here). You see, I believe that people using Electron to build these apps means it can be done. I also think something grounded in web tech would be easier to pick up for people from web background with no training in other programming like cross-platform native. This much evidence behind that as a general principle and for Electron specifically. The logic chain ends right here though: \"then this implies that Electron has made it easier for developers to make useful cross-platform apps.\" It does *not* imply that in general case. What it implies is the group believed it was true. That's it. All the fads that happen in IT which the industry regretted later on tells me what people believe was good and what objectively was are two different things with sadly little overlap. I'd have to assess things like what their background was, were they biased in favor of or against certain languages, whether they were following people's writing who told them to use Electron or avoid cross-platform native, whether they personally or via the business were given constraints that excluded better solutions, and so on. For example, conversations I've had and watched with people using Electron have showed me most of them didn't actually know much about the cross-platform native solutions. The information about what would be easy or difficult had not even gotten to them. So, it would've been impossible for them to objectively assess whether they were better or worse than Electron. It was simply based on what was familiar, which is an objective strength, to that set of developers. Another set of developers might have not found it familiar, though. So, Electron is objectively good for people how already know web development looking for a solution with good tooling for cross-platform apps to use right now without learning anything else in programming. That's a much narrower claim than it being better or easier in general for cross-platform development, though. We need more data. Personally, I'd like to see experiments conducted with people using Electron vs specific cross-platform native tooling to see what's more productive with what weaknesses. Then, address the weaknesses for each if possible. Since Electron is already popular, I'm also strongly in favor of people with the right skills digging into it to make it more efficient, secure, etc by default. That will definitely benefit lots of users of Electron apps that developers will keep cranking out. -- "Hey, I appreciate you trying to have a civilized discussion here and in your other comments, but at this point I think we are just talking past each other. I still don’t see how you can disagree with the simple logical inference I made in my previous comment, and despite spending some effort I don’t see how it at all ties into your hypothetical about COBOL. It’s not even a hypothetical or a morality or efficacy argument, just transitivity, so I’m at a loss as to how to continue. At this point I am agreeing with everything you are saying except on those things I’ve already said, and I’m not even sure if you disagree with me on those areas, as you seem to think you do. I’m sorry I couldn’t convince you on those specifics, which I think are very important (and on which other commenters have strongly disagreed with me), but I’ve already spent more time than I’d have preferred to defending a technology I don’t even like. On the other hand, I honestly didn’t mind reading your comments, they definitely brought up some worthwhile and interesting points. Hope you have a good weekend. -- "Yeah, we probably should tie this one up. I thank you for noticing the effort I put into being civil about it and asking others to do the same in other comments. Like in other threads, I am collecting all the points in Electron's favor along with the negatives in case I spot anyone wanting to work on improvements to anything we're discussing. I got to learn some new stuff. And I wish you a good weakend, too, Sir. :) -- "I find it strange that you somehow read > I don’t really remember having a problem finding desktop applications before > Electron as implying that you'd said > no desktop apps existed before Electron @orib was simply saying that there was no shortage of desktop apps before Electron. That's much different. > ...That’s absurd... > Obviously we can’t turn back the clock and rewrite history... > ...Be reasonable (and more importantly, civil.) You should take your own advice. @orib's comment read as completely anodyne to me. -- "I find it strange that you’re leaving out parts of my comment, again. Not sure why you had to derail this thread. -- "You seem to be confusing me with somebody else. -- "Please, please stop continuing to derail this conversation. I am now replying to your contentless post which itself was a continuation of your other contentless post which was a reply to my reply to orib’s post, which at least had some claims that could be true and could be argued against. I’m not sure what your intentions are here, but it’s very clear to me now that you’re not arguing from a position of good faith. I regret having engaged with you and having thus lowered the level of discourse. -- "> Please, please stop continuing to derail this conversation... I > regret having engaged with you and having thus lowered the > level of discourse. Yeah, I wouldn't want to derail this very important conversation in which @jyc saves the Electron ecosystem with his next-level discourse. My intention was to call you out for being rude and uncivil and the words you've written since then only bolster my case. -- "What is even your motive? Your latest comment really shows you think this whole thing is some sort of sophistic parlor game. I have spent too much time trying to point out that there may even exist some contribution from a technology I don’t even like. I honestly hope you find something better to do with your time than start bad faith arguments with internet strangers for fun. -- "> Please do not straw man. If you read what you quoted, you will see I > did not say no desktop apps existed before Electron And if you read what I said, I did not claim that you believed there were no desktop apps before Electron. If you're going to complain about straw men, please do not engage in them yourself. My claim was that there was no shortage of native applications, regardless of the existence of electron. This includes cross platform ones like xchat, abiword, most KDE programs, and many, many others. They didn't always feel entirely native on all platforms, but the one thing that Electron seems to have done in order to make cross platform easy is giving up on fitting in with all the quirks of the native platform anyways -- so, that's a moot point. Your claim, I suppose, /is/ tautologically true -- without electron, there would be no cross platform electron based apps. However, when the clock was rolled back to before electron existed and look at history, there were plenty of people writing enough native apps for many platforms. Electron, historically, was not necessary for that. It does let web developers develop web applications that launch like native apps, and access the file system outside of the browser, without learning new skills. For quickly getting a program out the door, that's a benefit. -- "No one is saying there was a “shortage” of desktop applications; I’m not sure how one could even ascribe that belief to someone else without thinking they were completely off their rocker. No one is even claiming that without Electron none of these apps would exist (read my comment carefully). My claim is also not the weird tautology you propose, and again I’m not sure why you would ascribe it to someone else if you didn’t think they were insane or dumb. This is a tactic even worse than straw manning, so I’m really not sure you why you are so eager to double down on this. Maybe abstracting this will help you understand. Suppose we live in a world where method A doesn’t exist. One day method A does exist, and although it has lots of problems, some people use method A to achieve things B that are useful to other people, and they publicly state that they deliberately chose method A over older methods. Now. Assuming other people are rational and that they are not lying [1], we can conclude that method A helped people achieve things B in the sense that it would have been more difficult had method A not existed. Otherwise these people are not being rational, for they chose a more difficult method for no reason, or they are lying, and they chose method A for some secret reason. This much is simple logic. I really am not interested in discussing this if you are going to argue about that, because seriously I already suspect you are being argumentative and posturing for no rational reason. So, if method A made it easier for these people to achieve things B, then, all else equal, given that people can perform a finite amount of work, again assuming they are rational, we can conclude that unless the difference in effort really was below the threshold where it would cause any group of people to have decided to do something else [2], if method A had not existed, then some of the things B would not exist. This is again seriously simple logic. I get it that it’s cool to say that modern web development is bloated. For the tenth time, I agree that Electron apps are bloated. As I’ve stated, I don’t even like Slack, although it’s ridiculous that I have to say that. But don’t try to pass off posturing as actual argument. [1]: If you don’t want to assume that at least some of the people who made popular Electron apps are acting intelligently in their own best interests, you really need to take a long hard look at yourself. I enjoy making fun of fashion-driven development too, but to take it to such an extreme would be frankly disturbing. [2]: If you think the delta is really so small, then why did the people who created these Electron apps not do so before Electron existed? Perhaps the world changed significantly in the meantime, and there was no need for these applications before, and some need coincidentally arrived precisely at the same time as Electron. If you had made this argument, I would be a lot more happy to discuss this. But you didn’t, and frankly, this is too coincidental to be a convincing explanation. -- "> then why did the people who created these Electron apps not do so > before Electron existed? ...wut. Apps with equivalent functionality *did* exist. The \"Electron-equivalent\" apps were a time a dozen. People creating these applications clearly *did* exist. Electron apps did not, for what I hope are obvious reasons. And, if you're trying to ask why web developers who were familiar with a web toolkit running inside a browser, and unfamiliar with desktop toolkits didn't start writing things that looked like desktop applications, but were actually web applications running inside a browser, without the requirement to learn desktop toolkits... well, I hope that those are also obvious reasons. It's easier to do things when you don't have to learn new technologies. -- "I am perplexed how you claim to be the misunderstood one when I have literally been clarifying and re-clarifying my original comment only to see you shift the goalposts closer and closer to what I’ve been saying all along. Did you even read my last comment? Your entire comment is literally elaborating on one of my points, and your disagreement is literally what I spent my entire comment discussing. I’m glad you thanked me for my time, because then at least one of us gained something from this conversation. I honestly don’t know what your motives could be. -- "\"and without Electron we would simply not have many of the Electron-powered cross-platform apps that are popular and used by many today. \" What that's actually saying is that people who envision and build cross-platform apps for their own satisfaction, fame, or fortune would stop doing that if Electron didnt exist. I think the evidence we have is they'd build one or more of a non-portable app (maybe your claim), cross-platform app natively, or a web app. That's what most were doing before Electron when they had the motivations above. Usually web, too, instead of non-portable. We didnt need Electron for these apps. Quite a few would even be portable either immediately or later with more use/funds. The developers just wanted to use it for whatever reasons which might vary considerably among them. Clearly, it's something many from a web background find approachable, though. That's plus development time savings is my theory. -- "I agree that many people might have ended up building desktop apps instead that could have been made even better over time. I also agree with your theory about why writing Electron apps is popular. Finally, I agree that Electron is not “needed”. I’m going to preemptively request that we keep “hur dur, JavaScript developers, rational?” comments out of this—let’s be adults: assuming the developers of these apps are rational, clearly they thought Electron was the best choice for them. Anyone “sufficiently motivated” would be willing to write apps in assembler; that doesn’t mean we should be lamenting the existence of bloated compilers. Is saying developers should think about writing apps to use less resources productive? Yes. Is saying Electron tends to create bloated apps productive? Definitely. Is saying Electron makes the world a strictly worse place productive or even rational? Not at all. -- "\"I’m going to preemptively request that we keep “hur dur, JavaScript developers, rational?” comments out of this—let’s be adults\" Maybe that was meant for a different commenter. I haven't done any JS bashing in this thread that I'm aware of. I even said Electron is good for them due to familiarity. \" Is saying Electron makes the world a strictly worse place productive or even rational? Not at all.\" Maybe that claim was also meant for a different commenter. I'd not argue it at all since those using Electron built some good software with it. I've strictly countered false positives in favor of Electron in this thread rather than saying it's all bad. Others are countering false negatives about it. Filtering the wheat from the chaff gets us down to the real arguments for or against it. I identified one, familiarity, in another comment. Two others brought up some tooling benefits such as easier support for a web UI and performance profiling. These are things one can make an objective comparison with. -- "> but I shouldn’t have to be killing slack and zoom every time I unplug > my laptop Yes, you shouldn't. But that is not Electron's fault. I've worked on [pgManage](https://github.com/pgManage/pgManage), and even though ti is based on Electron for the front-end, we managed to get it work just fine and use very little CPU/Memory*. Granted, that's not a chat application, but I also run Riot.im all day everyday and it show 0% CPU and 114M of memory (about twice as much as pgManage). Slack is the worst offender that I know of, but it's because the people who developed it were obviously used to \"memory safe\" programming. We had memory issues in the beginning with the GC not knowing what to do when we were doing perfectly reason able things. But we put the effort in and made it better. We have a strong background in fast C programs, and we applied that knowledge to the JS portion of pgManage and cut down the idle memory usage to 58M. For this reason, I'm convinced that C must never die. * https://github.com/pgManage/pgManage/blob/master/Facts_About_Electron_Performance.md (Note: the version numbers referred to in this article are for Postage, which was later re-branded pgManage) -- "\"But that is not Electron’s fault.\" It happens by default with a lot of Electron apps. It doesnt so much with native ones. That might mean it's a side effect of Electron's design. Of course, Id like to see more data on different use-cases in case it happens dor some things but not others. In your case, did you have to really work at keeping the memory down? -- "> It happens by default with a lot of Electron apps. I see where your coming from, and you're right, but if more JS devs had C experience (or any other non-memory-managed language), we would all be better for it. The GC spoils, and it doesn't always work. > It doesnt so much with native ones. Yes, but I think that greatly depends on the language, and how good the GC is. > That might mean it’s a side effect of Electron’s design. Maybe, but if pgManage can do it (a small project with 5 people working on it), than I see absolutely no reason why Slack would have any difficulty doing it. > In your case, did you have to really work hard at keeping the memory down? Yes and no. Yes it took time (a few days at most), but no because Electron, and Chrome, have great profiling tools and we were able to find most issues fairly quickly (think Valgrind). IIRC the biggest problem we had at the time was that event listeners weren't being removed before an element was destroyed (or something like that). -- "One thing I'll note, look at the ipc ratio of electron apps versus other native apps. You'll notice a lot of tlb misses and other such problems meaning that the electron apps are mostly sitting there forcing the cpu to behave in ways it really isn't good at optimizing. In the end, the electron apps just end up using a lot of power spinning the cpu around compared to the rest. This is technically also true of web browsers. You may use perf on linux or tiptop to read the cpu counters (for general ipc eyeballing i'd use tiptop): http://tiptop.gforge.inria.fr -- "> forget that a user want’s to do things other than constantly interact > with that one single application for their entire computing existence. Quoted for truth. Always assume that your software is sitting between your user and what they actually want to do. Write interactions accordingly. We don't pay for software because we like doing the things it does, we pay so we don't have to keep doing those things. -- "The situation is more nuanced than that. Because Electron provides developers with a better workflow and a lower barrier to entry that results in applications and features that simply wouldn't exist otherwise. The apps built with Electron might not be as nice as native ones, but they often solve real problems as indicated by the vast amount of people using them. This is especially important if you're running Linux where apps like Slack likely wouldn't even exist in the first place, and then you'd be stuck having to try running them via Wine hoping for the best. While Qt is probably one of the better alternatives, it breaks down if you need to have a web UI. I'd also argue that the workflow you get with Electron is far superior. I really don't see any viable alternatives to Electron at the moment, and it's like here to stay for the foreseeable future. It would be far more productive to focus on how Electron could be improved in terms of performance and resource usage than to keep complaining about it. -- "I never claimed that it doesn't make life easier for some developers, or even that every electron app would have been written with some other cross-platform toolkit. Clearly for anyone who uses Javascript as their primary (or, in many cases, only) language, and works with web technology day in and day out, something like electron is going to be the nearest to hand and the fastest thing for them to get started with. The problem I see is that what's near to hand for developers, and good for the individual applications, ends up polluting the ecosystem by proliferating grossly, irresponsibly inefficient applications. The problem of inefficiency and the subsequent negative affect it has on the entire computing ecosystem is compounded by the fact that most users aren't savvy enough to understand the implications of the developers technology choices, or even capable of looking at the impact that a given application is having on their system. Additionally, software as an industry is woefully prone to adopting local maxima solutions- even if something better did come along, we're starting to hit an inflection point of critical mass where electron will continue to gain popularity. Competitors might stand a chance if developers seemed to value efficiency, and respect the resources of their users devices, but if they did we wouldn't be in this situation in the first place. -- "Saying that developers use Electron simply because don't value efficiency is absurd. Developers only have so much time in a day. Maintaining the kinds of applications built with Electron using alternatives is simply beyond the resources available to most development teams. Again, as I already pointed out, the way to address the problem is to look for ways to improve Electron as opposed to complaining that it exists in the first place. If Electron runtime improves, all the applications built on top of it automatically get better. It's really easy to complain that something is bloated and inefficient, it's a lot harder to do something productive about it. -- "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. -- "Finals week is coming up so now one of our semester-long projects is coming to a close. One of the professors wanted a new interface for the list of research classes by making it searchable. Actually, they just wanted a *mockup* of one but came Wales or high water we made it semifunctional. Unfortunately it's all done on private resources (private hosting, school-provided private GitHub repo, &c) so there's not much of anything to *show*. Either way this gave me an excuse to learn me some Ruby and to be glad summer's coming up. \"Hey Mikey, Rocky likes it!\" -- "> but came Wales or high water http://jordi.platinum.linux.pl/piccies/iswydt.jpg -- "Working on open source project, [nuster](https://github.com/jiangwenyuan/nuster), a cache server based on HAProxy. Update to HAProxy v1.7.10, change config directives, remove share on|off mode, refactor code for next HAProxy v1.8 merging. Finished v1.7.x version, will move to HAProxy v1.8.x(v1.8.8) -- "Reimplementing Sonic the Hedgehog 2 in Haskell. Picking it back up after playing around with it a while ago: https://twitter.com/puffnfresh/status/916066859597758465 I have bits of decompression, colour palettes, collision data, block mappings, tile mappings, etc. this week I'm trying to connect those together so I can fully render a level. -- "Oh sorry before people ask for source, this is what I've pushed so far: https://github.com/puffnfresh/megadrive-palette https://github.com/puffnfresh/kosinski -- "**Last week** - Released [How to make these slides](https://github.com/asrp/maketheseslides). - Tried to participate in [Pyweek](https://pyweek.org/25/) but didn't finish ([final partial game](https://blog.asrpo.com/other/recording.mp4)). **This week** - Clean up the SDL backend made for guitktk last week. Will probably not maintain that backend after this point. - Maybe think of an actual way to add animations to the system (that makes use of work already done). -- "I’m going to be honest: most of my energy this week will be spent waiting for this week to end. -- "Same. I often read these threads and despair that I'm not doing enough with my life. At least we can commiserate together. -- "I am taking some comfort in knowing that I'll soon be able to play Sonic the Hedgehog because @puffnfresh is having a better week than I am. :) -- "Going to finish small websocket to kafka project. -- "At work, migration time for an embedded project: moving from a buildroot-based system to a bunch of custom layers for Yocto. Hope to be finished by Friday. Hobby, cosmetic touches to the BTC trader bot wrt instruments. Otherwise runs in the black for a while now. Thinking to add some public facing subscriptions/notifications to it. -- "I spent this weekend updating my personal homepage. I'm simplifying the server + JS, and making a nice UI with CSS Grid. I start a new job in 3 weeks, and am moving countries for it, so it's the perfect procrastination on the real work I need to do. -- "I did a full write-up of my [reversing of a Quake cracking program](http://faehnri.ch/finished-with-qcrack/), and thought that's right up the alley of PoC||GTFO so submitted it there. With a break from that, probably gonna do some sewing, then get started on learning to write a Nintendo NES game is assembly. -- "In my free time I'm trying to write an OS targeting little ARM microcontrollers (currently working with Teensy 3.6, and hopefully RPI0 soon enough). Work has finally quieted down so I hopefully have energy in the evening to continue. This week, I'm still trying to get an LED to blink from the bare metal. I'm ~~stealing~~ using [PJRC's](https://www.pjrc.com/teensy/) Arduino libraries for the Teensy 3.6 and incorporating a lot of it into my codebase. I'm learning a lot about the world of watchdog timers, crossbars, and confusing hardware defaults. It's a lot of fun, even if the fun comes from complaining. I'm still not sure what I want the OS itself to do, though. I know I want to 1. make it a toy project exploring stupid ideas (what if the filesystem was like JSON?) 2. make it easy to plug 'n' play user-space software with peripherals like GPIO but everything else is up in the air. Maybe I'll figure out what I want as I write it. I've never written a kernel or an OS before, so it's all a learning experience. -- "Far too dad-brained to do anything ambitious this week. So my goal is simple: learn how to process errors in Rust when I write wrappers that get a Result and return a Result, without calling unwrap, and without discarding data from the Error structs. And of course it must build. I believe this translates to getting good with error-chain. -- "Work: Attempting to do some pair programming with a colleague to help flesh out some service integrations into our new Magento 2 instance. Move my code out of a monolith repo into module repos to utilize composer (and stop fucking with environment related issues), finish up some tickets I have been sitting on. Life: Writing comedy, editing comedy, sleeping, and hopfully cooking a god damn meal for myself (its been weeks!) -- "We're into week two of my coworker's Scala class, and I'm TA-ing, so that's fun. I still prefer the ML style, because objects *blech* but eh whatever. I also handled some actual real-live engineering, including submitting a pull request and everything, so it's almost like I'm a developer again. At home, the weather has changed finally and so I can start taking the kiddos out to the park, which is basically all I want to do. Between that and the NBA playoffs, I'm being very deliberately not online during my evenings. -- "I'm buying a fucking house. Today. Then I'm going to be cleaning it up. Moving in the next couple weeks. -- "Congrats! -- "Thanks! -- "Last week of EMT classes. Just a practical and written final left and I'll be qualified to apply for a state license. Then immediately shunting off to Boston for the Future of Alloy conference. I just found out that I'm speaking there, which is... good? But a little surprising. For personal projects, I started a big Theorem Prover Showdown on Twitter. I have a postmortem to write and about 50 versions of leftpad to curate. -- "I definitely should get a Twitter given all the fun I missed out on here. Going through the whole discussion right now. Someone even brought up [Milawa](http://www.cs.utexas.edu/users/jared/milawa/Web/) I've often posted. Although, I semi-counter that Kumar's [thesis](https://www.cl.cam.ac.uk/~rk436/thesis.pdf) is so brilliant that I didn't trust it *because* it seemed too brilliant with circular forms of reasoning. Easy to trick oneself with things depending on themselves and such. Was I really seeing proof of his claims or just not smart enough to spot the flaws in them? I'd probably need to practice formal verification for years before I could be sure. ;) Regardless, Ramana Kumar, Jared Davis, and Magnus Myreen are all among my favorite researchers, though, given they're kicking ass on some of hardest problems in verification from theorem provers all the way to assembly code. Davis, the Milawa guy, also extended ACL2 to replace tools that cost five or six digits a seat at Centaur: the third, x86, CPU vendor most don't know about. Myreen was recently experimenting on something like Bluespec in HOL. I hope they all stay at it another decade cuz who knows what might come out of it. Exciting stuff. Edit: I'm saving this since I think it nicely captures a larger trend in CompSci: \"I'm doing a writeup on this; all the opiners didn't write proofs and all the people who wrote proofs didn't opine.\" (hwayne) -- "I hacked up a [small tool](github.com/codemac/sigbuffer) the other day that would buffer output from a command into memory until it receives a signal to reconnect to stdout, when it would dump everything that was output in the interim. I want to integrate this into dtach so emacs can have resumable shell sessions on remote hosts for TRAMP workflows. Let's just say it's a huge distraction from the work I actually need to do and I hope I don't make too much progress on it. -- "The link to your tool is currently 404ed -- "Oops, had no http on it: https://github.com/codemac/sigbuffer It's a dumb tool, but it was just a proof of concept that I knew how to use dup2+pipe again. -- "Far too dad-brained to do anything ambitious this week. So my goal is simple: learn how to process errors in Rust when I write wrappers that get a Result and return a Result, without calling unwrap, and without discarding data from the Error structs. And of course it must build. I believe this translates to getting good with error-chain. -- "I'm currently working on my automatic manga scanlator, warning ****NSFW****. users upload their own content for scanlating. https://robotscanlations.com Progress is slow due to all of the different manga styles but by running each page through the system multiple times with different parameters and with a growing set of rules it's becoming more reliable and general. -- "I'm still working on my federated link aggregator. Most of the Datastructures and internal Layout are done, what's missing (like last time) is putting more wires between all the pieces. [I've also worked a lot on the UI though progress on that front is a bit slow](https://nc.tscs37.eu/s/QwQ4BRqypjayjrL/preview). I'm orienting myself on older reddit versions coupled with CSS Grid to make it less weird and easier to mush into a mobile interface. While I do have JS I'm reducing that while I dev so I can make sure everything works without JS and then I add JS on top. For Uni I'm also implementing compression algorithms. First one is a LZ77 compression (which was hard) and second (in progress) is a Static Dictionary (think brotli). Quite fun. -- "Working on adapting the sample code in [Data Laced with History](http://archagon.net/blog/2018/03/24/data-laced-with-history/) to Rust as part of a prototype. It's been a great Rust refresher, although translating the Swift paradigms has lead down some rabbit holes. -- "I'm working on my Elm-based [static site generator](https://github.com/SupremumLimit/elmstatic) and my [Elm book](http://korban.net/elm/book/), as well as some less fun consulting bits. -- "I am still hacking on ISETL. I also started porting an [FP](https://en.m.wikipedia.org/wiki/FP_(programming_language)) interpreter to MacOS. The repository is [here](https://github.com/dbremner/fp.git) but it is about 250 commits behind. -- "Still [continuing from last week](https://lobste.rs/s/bpnnsm/what_are_you_working_on_this_week#c_icijzp) At this point it's down to integration points between the major components: - Failover Manager: configures keepalived, synced to n-machines, and triggers enabled state hooks - Proxy Manager: configures HAProxy with various service components, synced to n-machines - Certificate Manager: (optionally) requests via Certbot, and converts + builds chains/combinations of TLS certificate and key materials, synced to n-machines - PXC Manager: configures a Persona XtraDB Cluster of n nodes (where nodes can be running either PXC or Gallera Arbitrator) The integration points are around things such as: - Cetting the certificate for TLS encrypted mysql connections & cluster communication, in the right format, and on all the nodes. - Configuring the Load Balancer nodes to route traffic to non-arbitrator PXC nodes, with useful health checking - Configuring PXC nodes to accept PROXY protocol connections from the Load Balancer nodes only - Ensuring Gallera Arbitrator used on a failover/Load Balancer cluster only runs on the current keepalived 'master' It's taken longer than expected to get this far, but it's definitely been a worthwhile endeavour, and will soon allow a client's site to migrate off a (remotely hosted) RDS instance, to a local, reproducible setup. -- "Hazzah! Updated versions of all the related projects have been released: - https://bitbucket.org/account/user/koalephant/projects/IS - https://bitbucket.org/account/user/koalephant/projects/LIB -- "Still working on my bachelor thesis. The title is Application of Formal Methos to OpenBSD Network Modules. Bluhm and a PhD Student called Thomas from SoSy-Lab at LMU are helping me. Last week I was busy preprocessing networking C code so the verification tool (CPAchecker) could understand it. Problems arised: kernel memory management, machine dependent code, where to start, where to stop, what to ignore. Bluhm suggested starting with the IP input queue. I ended the week with reading ip_input.c. Turns out there is already a repo with preprocessed files of src. (Thanks Bluhm and Zaur) This week I will need to think about what to stub, where to stop and what to do about ip_init. -- "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. -- "Trying to iron bugs out of my work-in-progress [Component-Entity-System library](https://github.com/benaiah/ces-fnl) in time for the [Lisp Game Jam](https://itch.io/jam/lisp-game-jam-2018) that starts Thursday. It's written in [fennel](https://github.com/bakpakin/fennel), a new lisp that compiles to Lua (s/o to #fennel on freenode). Writing/drawing a bunch of game design notes as well. -- "https://noisy.fun/ is getting updates! I’ve been tinkering with lots of things behind the scenes, updating dependencies, improving the build process, etc. A lot of the work going into it is me just trying out things, even if they don’t add function. For example, just this weekend I switched it to FontAwesome 5. Now I am taking some steps to allow actually adding new features (no spoilers). I need space for more controls, so I’m working on adding a menu and moving some controls there. Should also be a big step towards a better UI on mobile. -- "Working on the typechecker for [Nickel](https://github.com/SelectricSimian/nickel), a type-safe, memory-safe, effect-safe intermediate language I'm building for use as a backend for functional compilers. Think Rust with a more expressive type system, or Haskell with precise control over memory management and mutation. It turns out that if you don't care about ergonomics or readability *at all*, you can create some very powerful low-level abstractions -- perfect for an intermediate language! :) -- "This seems like it would be a perfect intermediate language for my nascent programming language, [Forest](https://github.com/forest-lang/forest-compiler). I'm going to watch your progress eagerly. Have you had any interest from other programming language implementers? -- "I'm glad you're interested! Nickel is very, very new, and you're actually the first language developer to mention that you'd be interested in using Nickel for your compiler. When my project is a bit farther along, I'd love to talk with you more about how Forest's abstractions might map on to Nickel's execution model and type system. Feedback from an actual language implementor (other than myself) would be extremely helpful for refining Nickel's design! -- "Would love to go through that with you, and since Nickel is actually aiming to implement a lot of what I was going to do in the Forest compiler, I could be interested in contributing :) What do you think is the best forum to talk this through? I could open an issue on Nickel and talk about the stuff from the README that seems like it would fit Forest, if you like. -- "I've set up a [Gitter](https://gitter.im/nickel-lang/Lobby) for Nickel -- come and chat! -- "I have been toying around with the idea of writing a daemon that is similar to fail2ban. I use fail2ban on my small VPS now and have found it to be memory hungry. I plan on using Rust and exploring the problems that come with monitoring log files. There isn’t any code yet but I will get to prototyping soon. -- "I got around monitoring log files by writing my own [syslog daemon](https://github.com/spc476/syslogintr) in C/Lua. I have [code](https://github.com/spc476/syslogintr/blob/master/modules/ssh-iptables.lua) that monitors `sshd` and adds/removes entries to `iptables` over time. Memory usage has been negligible over time (or it's never been an issue as far as I can see). There are other modules I've written (like one that summarizes several Postfix log entries for forwarding onto another system). -- "Thanks for sharing, I will definitely refer to this when writing mine. I don't have much Lua experience but it is cool how tightly it integrates with C when you need it. -- "Working on a graphics live-coding Smalltalk/Self-inspired system that’s been tested so far on macOS, Windows, iOS (iPhone + iPad) but should work on Linux and Android too: https://youtu.be/rRMeOGc1JLQ Working on tablets is a main goal to allow for live drawing and fun educational applications. Has all of love2d.org and uses ImGui for UI. Uses a multiple-prototype-inheritance-oriented object system I made in Lua where the global scope of code you write is itself the object’s members with inheritance. “methods” have ‘call next method’ in the topological sort of the ancestor DAG. The main primitive involves “send”ing a scope code to eval. The hope is for it to make sense to do network sends. It’s in basic stages; hoping to work on error handling this week (idea: the send primitive itself notifies an error method on the object and inspectors can show logs) and try making a demo generative art painting app. -- "Continuing from [last week](https://lobste.rs/s/lxcz2h/what_are_you_working_on_this_week#c_k6sxha) Specifically: - Making Certificate Manager handle service reloads using hooks (i.e. to better support use on a PXC node) - Getting PXC Manager to request/manage (via Certificate Manager) TLS certificates for cluster communication, IST, and client connections Hopefully these updates will mean a \"fully\" working cluster scenario (failover + load balancer + cert management + pxc) is possible using just these tools, before the end of the week. -- "I'm working on automated testing of a smart contract system that will handle many millions of dollars worth of tokens on the Ethereum main net. This is in addition to other formal methods our team is using. The approach I've chosen is to write an exact model of the system in Haskell, which also serves as a kind of specification, along with whole-state invariants, and then running that model simultaneously with the real bytecode with randomly generated action sequences as input, verifying that the implementation matches the model and that all extra invariants hold on the model state. In addition, I'm also doing a simple kind of mutation testing using the same test suite, where I make random alterations to the bytecode—e.g., switching an `LT` to a `GT` or frobbing a constant value—and verify that the test suite then fails. -- "Have you considered looking at implementing some of it on Cardano, given the Haskell support for that platform? -- "Smart contracts aren't possible on Cardano yet—it's in the research phase, as far as I know. They have a very interesting team and I'm sure the platform will become amazing, but for now, Ethereum is the only viable platform for us. (It's \"worse is better\" all over again.) The first version of our smart contract system is already live today, and we're aiming to deploy the next version this summer. We've developed an Ethereum VM in Haskell (`hevm`) which is already being used as a library to support property-based testing (in the Echidna system by Trail of Bits, and our own system). And despite being huge fans of pure functional programming, we think it's possible to write correct—even provably correct contracts—for the Ethereum virtual machine. (There's a lot of misunderstandings out there, like \"you can only prove the correctness of functional programs\" and \"Turing-complete programs cannot be proven correct,\" and so on.) -- "That should work pretty well. It's similar to what I've seen a lot of groups do with stuff like matching functional specs to imperative or imperative code to assembly. For anyone interested in these things, my favorite one was still [this project](https://pdfs.semanticscholar.org/presentation/faf8/803bd1718c96fb0dc552676889f2d3e3ad9f.pdf) that used ASM's with great productivity and model size. ASM's advantage over Haskell is that surveys showed they're one of easiest formalisms to understand since they're basically abstracted FSM's. The simple programs, VM's, and actual assembly are also usually FSM's. So, they fit together really well. -- "This weekend I got my [chip-8 emulator](https://mastodon.social/@stevelord/99864992469203379/) to support 64x64 hires mode, which gave me a bit of a push to move to superchip support, but I'm already pushing the atmega1284's limits, so I need to look at adding external RAM long term. 64k will let me potentially add support for things like Infocom Z-Machine interpreters and possibly things like CP/M and Commodore Basic down the line. This week I'm continuing to consolidate a bunch of systems at the day job onto a single point-of-failure^w^w^wplatform. I'm going to chase a bunch of 44CON sponsors and possibly speakers, and assuming I get time write up some [HIDIOT](https://rawhex.com/) material. What I really want to do is move some of the static stuff to an OpenBSD VM running httpd, but as this would be under qemu/kvm I'm not sure how stable it'll be. Hoping to get some time on 44CON's GDPR compliance this week. Rapture, I tell you. -- "For work, mostly rewriting large parts of the app that dealt with the Instagram APIs that were retired without any warning earlier this month. In addition to just completely removing large parts of the API, their rate limits were reduced from 5000 per hour to 200 per hour. Lots to do. https://www.programmableweb.com/news/instagram-has-effectively-killed-its-public-api/brief/2018/04/04 -- "I'm working on a network framework for Lua. I use `select()/poll()/epoll()` (depending upon OS) to drive the events and use coroutines to handle the logic of a \"request\". So far I have support for both TCP and UDP packets and have a very simple HTTP server (that makes a request to a gopher server to test out the outbound connections logic) and DNS requests (so far hard coded to a server---working on parsing `/etc/hosts` and `/etc/resolve` to lift that restriction). -- "Are you familiar with the cqueues Lua library? If so, what pros/cons does your framework have in comparison? -- "\"What I cannot create, I do not understand.\" I\"ve written [enough code](https://github.com/spc476/lua-conmanorg) [over the years](https://github.com/spc476/SPCDNS) [to write](https://github.com/spc476/LPeg-Parsers) my own version of cqueues. In terms of pros/cons of mine vs. cqueues ... eh. I have an idiosyncratic programming style that isn't as popular with the C/Lua crowd (and let's just leave it at that). -- "Working on open source cache server [nuster](https://github.com/jiangwenyuan/nuster), migrating to HAProxy v1.8 -- "I just set up a sit/stand desk converter so that I'll be able to switch between the two at my desk, and will be around for the releasing of the sprinting that's been going on for the past two weeks at work. -- "Did some work on my [graphics engine](https://github.com/charles-l/ugg/blob/master/game.rkt). Added proper FPS camera (still not entirely sure why my code works - I can't find a clear explanation as to why my view matrix isn't storing the world coordinates of the camera in the fourth column - I think I'm doing something wrong, but it still works), and basic texturing support ([ugly screenshot](https://i.imgur.com/YxIamrp.png)) this weekend. Going to add a proper lighting model, work on shadows, and refactor the code a bit next weekend. That'll all probably push me towards adding global illumination and volumetrics for the pretty lighting effects. Don't want to get too bogged down in those details though, otherwise I'll never actually write a game :P For school, I worked on writing a 2D robot simulator that models a differential drive robot that I'll be using for the final project in my Robotics class (https://github.com/charles-l/robsim). Good practice for using my linalg skills. -- "Signify on PicoLisp -- "**Last week** Continued work on a sample presentation program for guitktk. **This week** Finish the presentation program and release. Was considering doing Pyweek but I don't think its quite ready for use as a \"game engine\" yet. -- "Personal: * Reviewing the the paperback proof copy of [my fantasy novel](https://www.amazon.com/Silver-Chalice-Golden-Joshua-Clanton-ebook/dp/B01E63NUQC/) * Write some of the last remaining scenes in my horror/supernatural suspense novel * Study of _Getting Things Done_ by David Allen Work: * Training a team on React & TypeScript * Heads-down coding on an AngularJS & TypeScript project -- "Implementing things for my thesis. Still not sure what the outcome will be. But I am happy to have interesting things to do. -- "Over at Wallaroo Labs, we have a standard \"scale indepence with wallaroo\" talk that I give. It's very Python specific and I'm giving the general talk at a Go meetup on Wednesday. It's the first time for giving a Go flavour version of the talk so I need to prep/put that talk together. I'm also finishing off part 1 of what looks to be a 3 or 4 part series on Go performance when interfacing with other languages (like using Go code as a library from within C/Pony like we do in Wallaroo). I'm doing final edits on that first post which I'll be publishing and posting to lobste.rs (and other sites) on Thursday. Lastly, I'm setting up some initial conversations about the role at Wallaroo Labs that I posted here over the weekend. We got 4 excellent folks who applied from lobste.rs. I've emailed a couple to try and set something up later this week and will be emailing the others later this week when my schedule for later in the week is a little more clear. -- "Currently working on a federated link aggregator (ie Reddit/Tumblr mix). I've got most of the DB layout down and atm I'm simply connecting up the View templates with the Model layer. Once that is done I'm gonna extract an interface so I can federate to reddit/others and activitypub. Also trying to work out how to do Karma/Scores with Federation. My current solution is to assign weights to votes and have unknown instances with unknown users have the lowest weight and as they get more local karma on an instance, they become more trusted. Similar to a web-of-trust, instances should become at least minorly trusted if a well trusted instance trusts them too. Also prevents brigading communities; outsiders need to participate to get a voice in the community and become trusted enough to hand out votes themselves. That should raise the bar significantly. Also tinkering with hardware again, I ordered more LED strips (someone stop me!) so I'll have to put some nails into the wall. There is only one cable in that specific area so I'm debating whether or not my GFI is good enough (wouldn't be my first rodeo with live and neutral) -- "A member of my team is teaching an \"FP in Scala\" class for the company, so I'm TA-ing for him. I am coming around on Scala, particularly now that I don't have to write it. I'm also going to be working more on process administrivia -- which JIRA board goes where, &c. That sort of thankless thing. At home, Smalls has turned a developmental corner and is now fully into the \"running jumping and hugging\" phase so it is *literally* all I can do to stay here at work and not run home and wrestle with her. Band practice this week, my wife's birthday tomorrow, friends coming from Montreal this weekend -- it's going to be eventful, and fun. -- "One of those weeks I don't have specific aims in mind, but it'll include the following: * Pub quiz * Pub visit sans quiz * Sailing (first time getting the boat out this year) * More aerial photography from my DJI Spark (& more practice at flying it) -- "I'm still hacking on ISETL. I have removed some cases of undefined behavior, replaced macros with inline functions, and converted many of the comments to markup. -- "What is a typical day at work like for you? Do you have any morning routines or nightly routines that you have picked up? -- " 6:15 - 6:30 Wake up, cuddle with SO and read in bed. 7:00 - 7:30 At work, make coffee in Aeropress, eat overnight oats for breakfast, read email. 7:30 - 11:15 Code/Document Work 11:15 - 11:30 Daily Scrum 11:30 - 13:00 Either Onsite Exercise Class + Run or Lunch with coworkers + walk around campus 13:00 - 13:15 Daily meeting with non software team members 13:15 - 15:30 Work 15:30 - Rest of day Go home, make dinner, sew/knit/pet cat/spend time with SO I have more meetings than this schedule suggests, but they are mostly adhoc design meetings. I also have calls with India once a week, taken from home with my cat walking over my keyboard. In the summer I work slightly longer in order to make time for bicycling my commute. More exercise = more tolerance for office nonsense. -- "5:45 - 8:00 Wake up, initialize myself for the day, fire up laptop, read news for the day, check stocks, do some coding. 8:00 - 8:30 SO wakes up and helps me with the breakfast 9:00 - 9:30 Drive to work, listen to some podcasts/lectures/audiobooks during the road 9:45 - 11:30 Read emails, do meetings if necessary 12:00 - 17:00 Work, work, work 17:30 - 18:00 Drive home, listen to podcasts/lectures/audiobooks during driving 18:00 - 23:00 Spend time with SO and two cats, read books, do some coding if I'm able. 23:30 - 23:45 Shutdown myself for the day 23:45:00 - 23:45:05 - I'm fortunate enough to be able to go to sleep in 5 seconds after going to bed. -- "Wake up anywhere between 600 and 900. Either make coffee or grab one from a local cafe on the way into the office. Or don't go to the office at all, depends. Check emails. Attend meetings. Code. Debug. Meetings. Listen to JRE or a radio broadcast of a ball game. Code. Head home anywhere between 1600 and 1800, and either go grocery shopping, grab some soup or a burger, or head straight home. Work on audio stuff if I have any to do, or go out and grab a drink, hit some open mics, or stay in or whatever. Watch baseball, and probably work on some music while doing so. Sleep. My days are wildly inconsistent other than I am available for work between 930 and 1630. Stark schedules bother me and make my brain feel dull and stale. -- "7:30 - Wake up, walk older kid to school 7:45 - 8:30 - Walk around the neighborhood 8:30 - 9:15 - Eat breakfast, drink coffee, talk with wife, play with younger kid 9:15 - 9:30 - Read the news, check personal email, etc 9:30 - 5:30 - Work (it's not very organized, except that all our meetings are confined to one day, there's a shower and lunch in there somewhere) 5:30 - 7:30 - Dinner, play with the kids, talk with wife, family movie night, go to the store, go to the park, etc. 7:30 - 8:30 - Bedtime for the kids, brushing teeth, baths, books, maybe a cartoon 8:30 - 11:30 - Work on personal projects, or catch up on bugs from earlier in the day -- "- 06:15 wake up (usually my cat's idea, rather than mine) - 07:30 travel to office (a short drive or cycle ride) - 09:15 team stand-up - 09:30-12:00 manager's schedule (most days) - 12:00-13:00 lunch and light research - 13:00-16:00 maker's schedule (most days) - 16:00 travel home We have a two-week sprint, so one day in ten is Sprint Ceremonies day and there is no maker's schedule. On the other hand we have no-meeting Wednesdays, so one day in five is no manager's schedule. There are at least four schools on the two-mile route between my house and work, so if I don't travel in very early and leave very early it will take a long time to drive or be dangerous to cycle. -- "Everyone here seems like a morning person... -- "6am isn't early in my world. I usually get up at 4am for exercise. Have done most days for the past 18 years. Been starting work most days around 6am for the past 6 or 7. Experimenting with injecting some leisure time into my morning by starting work at 7:30-8am. -- "By “world” you mean you live in a Nordic country? -- "I typically get up around 10am, if it makes you feel better. :-) -- "Hey, same as me! I kept trying to shift to an earlier schedule since bosses tend to prefer it. Brain just doesn't agree with it. They and I are happier if they schedule me in a bit later to leave a bit later. -- "It was this comment that inspired me to write mine. ;) -- "Frankly, I'm surprised no one posted a night schedule. -- "if it were up to me I'd work in fits and starts from about 10am to midnight. Unfortunately an office job comes with an expectation of visibility, and an attempt to travel at the same time as other road users. -- "Every day: 06:00 - 06:30 : Wake up, get milk for the kids, bring them into bed for a cuddle 07:30 : out the door, walk to subway 08:00 : arrive at work 09:00 - 10:00 : workout 11:00 - 11:15 : daily standup 12:00 : lunch 17:30 - 18:00 : pick the girls up from the nanny 19:00 : girls to bed 19:15 : cook dinner 22:30 : to sleep! Then, for my work afternoon, it depends: a lot of meetings, some code reviews, some management stuff. I don't really write software any more. In the evening, the wife and I will sometimes both work, or sometimes we'll watch basketball or a movie. I try to get to bed at the same time every night, because our kids will wake us up around six regardless. -- "7:00 - 7:20 Light alarm gradually fades to on. Wake up, in a fugue state. 7:20 - 8:35 Gentle voice reminder of who I am and that I enjoy being alive plays every fifteen minutes. 8:30 - 9:30 Get ready for work, including 30 minutes of light meditation in the shower. 10:00 - 10:30 Arrive at work, make coffee, review notes from yesterday, review today's calendar to make sure it's physically possible, write today's to-do list. 10:30 - 11:30 Maybe meetings, maybe code. On a bad day, email. 11:30 - 12:00 Lunch. 12:00 - 17:30 Mix of meetings and code, fading towards email at the end of the day. 17:30 - 18:00 Leave notes for tomorrow. 18:30 - 20:00 Social media, food, dissociation, video games. 20:00 - 22:00 Work on activism and other extracurriculars. -- "How does that voice reminder really work? -- "It gives me the information that, in the fugue state, I am lacking. This makes it possible for me to find the necessary memories. This a phenomenon that I experience as part of general dissociative identity disorder and dissociative amnesia stuff. It also has a very mild, carefully-chosen hypnotic effect which results in a slight mood boost. I think of it as my stage1 initrd. -- "I've always wanted an alarm app where I can dictate messages to it to play in the morning. I could use myself saying don't forget you need to do something, or don't forget you're trying to fix your sleep schedule, don't sleep all day. -- "I briefly considered interpreting \"how does it really work\" to be about the technical aspect, but decided to focus on what I think is the more interesting part. But yeah anyway I used Tasker on Android for it. I don't think that would work for what you want, but maybe one of the voice assistants will grow that functionality someday. -- "``` MORNING: - 06:30. My cats wake me up to feed them. I do that and go back to bed. - 07:15. My alarm goes off and I snooze it. - 08:00. I actually crawl out of bed and dress. - 08:25. I walk to the bus stop. - 08:35. I get on the bus. - 09:11. I arrive in SF and walk towards my office, grabbing a coffee on the way. WORKDAY: - 09:38. I arrive at the office and mentally steel myself for standup. - 10:15. We have our daily standup. - 10:20. We break from standup and coding/documentation/reviews/meetings. - 13:00. I eat lunch. I skew my lunches later so I can eat alone. - 13:20. I finish lunch and returns to coding/documentation/reviews/meetings. - 16:58. I wrap up what I'm doing and walk to the bus station. EVENING: - 17:10. I board the bus. - 17:42. I disembark and walk home. - 17:52. I arrive at home and collapse on the couch. - 18:15. SO and I begin cooking supper. - 18:45. SO and I eat supper and watch TV. - 20:45. SO and I get ready for bed. Sometimes I shower here. - 21:00. Sleep. ``` -- "6:37: Lights start dimming on. (30 minutes to full brightness) 7:00: Wife's alarm goes off, I start reading random crap from the internet. ~7:30: Out of bed into shower. ~7:45: Brew tea, mix together a lunch, clean apartment a bit. ~8:00: Walk outside and get on train. Then, read Lobsters/HN/RSS, drink tea, listen to music. ~9:00: Arrive at work, read more L/H/R if there's no pressing work. 10:00: Definitely start working if I haven't already. Individual days vary a lot. `if Wed || Fri`: 11:30-12:00: Project sync meeting. `if Tues`: 13:30-14:00: Team sync meeting. `if Thurs`: 15:30: Beer:30 with coworkers. 16:00: Head for train/bus, more reading L/H/R, more music. 17:00: Get home, work on a project or just watch TV/movie if too tired from work. 21:00: Bed time. Thankfully that's all the more specific I can be about my actual working time. There's no daily standups and nothing else overly rigid. It's just \"work on whatever there is to work on\" for the most part. -- "- 06:30 - 07:00 -> Alarm goes off, I snooze it, firmly beliving it will be only for a couple of minutes - 08:00 - 09:00 -> I finally wake up, half-desperate that I'm missing some meeting, half pissed of at myself for being late AGAIN On a good day: - 09:00 - 10:00 -> Breakfast, shower, leave to work (by bus) On a regular/bad day (those are more frequent): - 09:00 - 10:00 -> Pooping and farting and waiting to see if I don't have to poop or fart again (I have Crohn's disease, and it's been acting up lately) - 10:00 - 11:00 - > Breakfast, shower, being angry at the uber driver for taking too long to arrive - 10:00 - 11:00 -> Arrive at work, check email/chat, do quick code reviews and answer emails if needed - 12:30 - 13:30 -> Lunch. - 13:30 - 15:00 -> Trying to figure out if there's anything productive at all I can do until 15:00 - 15:00 - 15:20 -> Daily sync, currently at this completely stupid time because of freaking timezones - 15:30 - 16:00 -> Complaining about whatever happened in the daily sync meeting - 16:00 - 18:30 -> Trying to get some work done: discussing design/architecture stuff, sending emails to gather info, following bad manual processes because I don't have time to automate them right now, and, if the gods smile upon me, doing some coding or other programming related activities that don't make me wanna kill myself - 18:30 - 19:30 -> Give up work because it's late, try to organize list of things to do tomorrow, procrastinate - 19:30 - 20:30 -> Go home - 20:30 - 23:30 -> Hang around thinking that I should be doing something productive instead of just browsing social media and watching youtube/netflix - 23:30 - 2:00 -> Eat, watch some more youtube/netflix, go to sleep. -- "moved to Austin, TX recently, so new routine! 7:30: wake up 7:30-8:00: read HN and twitter (yes, what a waste of time -_-) 8:00-9:00: shower, breakfast, etc. 9:10: crazy biking to downtown 9:30: scrum meeting 9:40-{17:00,19:00}: write code, discuss with boss-slash-officemate bike home, eat pasta, think of the futility of life Twice a week: 20:15-{22:00,24:00}: dancing!! ^_^ -- "I'm not a big routine person. I think the most common events would be: - 8 - 9 AM - wake up - 9 - 5 PM - go to work - 5 - 9 PM - do \"home\" stuff - 9 - 2 AM - school work, gaming with friends, watching TV/movies. None of my core group of friends lives near me, we're kind of dispersed all over. Gaming is the way we \"hang out.\" Weekends are totally different and not even remotely routine. -- "Not sure I have a routine as such. Work days are vaguely similar, I don't have many meetings so mostly just appearing on Slack & making infrastructure work is my day. I pretty much only have my 1:1's every Weds, \"remote coffee\" at the end of a Weds workday (anyone \"remote\" who feels like hanging out in a google meet for an hour, does so), and then sprint retrospective on the last Friday afternoon, then Sprint planning the following Monday morning. * 0630 - 1000 - depending on the day I'll wake up at some point in this window. Work days tend towards the end of the window for some reason. * 1300 - 1400 - I try to take lunch, if I'm taking lunch during this time. Might be skewed an hour either way, or eat at my desk to finish up earlier later. * 1600 - 1800 - Finish work, depending on the day it's then mess about with kids/dinner/gaming/cycling/pub with friend(s) to pass the time till ~sunset * 1930 - 0100 - Watch Youtube, prod personal laptop, occasionally do a couple of hours freelance for a friend * 0100 - bed, usually flick through Imgur till I fall asleep On weekends the routine is vaguely the same, just replace $work with gardening/entertaining children/days out/cycling/sailing/working on the cars/hacking on laptop/going to pub with friends. -- "`6:00 - 6:15 Wake up, getting dressed` `6:18 - 7:25 Walking to work` `8:30 - 11:00 Work/Uni` `11:00 - 11.45 Lunch` `11:45 - 16:00 Work/Uni` `16:00 - 17:00 Walking home` `17:00 - 17:30 Prepare Dinner` `18:30 - 22:00 buy food / clean/ watching {Gynvael,yotube,etc.} / Projects / time with SO` -- "12:00 wake 12:01 make tea or decide to go out for coffee if anyone in the neighbourhood is about 12:30 catch up on RSS feeds and reddit 13:30 check email and github to see if any clients have new issues / tasks 14:00 (50% chance) code 14:00 (50% chance) listen to backlog of new music that is out 16:30 go for a walk to play PoGo or go to the arcade if weather is foul 18:00 cook dinner for a client or for self / friends 22:00 meet up for drinks with friends or go home and watch something many common other permutations, though. about twice a week I stage manage a live show (theater, drag, live music) or DJ and run sound and lights for similar shows. about once a month I house sit or dog sit, which precludes most everything else. -- "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. -- "I begun work on a few projects. I'm taking on a project to capture the ranking system that the [IndieWeb](https://indieweb.org) describes and make it into something like SSL Labs. I'm also experimenting with implementing a new federated identity service for the KDE community - big responsibility. I'm also going to be spending some time working on a [Qt5 C++](http://qt.io/) client for ActivityPub services (like Mastodon and [Quill](https://quill.p3k.io/)). Lots of F/OSS work since I don't have any contract work this week (or rest of the month). I'm also getting back in the habit of writing short stories. I'm working on placing them on my personal site very soon. -- "Realtime federated chat over ActivtityPub -- "Have you found ActivityPub to be a sensible choice for that kind of thing over something like Matrix? -- "matrix is a whole different beast, it does so much. it's not really a chat service, but a distributed graph database. I'm just using ActivityPub because I already wrote an AP server and am familiar with it. -- "Still working on the file protocol for Jehanne, aka FP. If you have experience with natively encrypted applicative protocols, [please consider contributing to this Lobste.rs thread](https://lobste.rs/s/a5d4np/prior_art_about_encrypted_applicative). -- "Mostly following on from [last week](https://lobste.rs/s/qonql9/what_are_you_working_on_this_week#c_on8tpf) I didn't post an update about it in that comment/thread but I did actually get a 1.0 out for Proxy Manager, and managed to get a decent chunk of the PXC Manager implementation written too (for those wondering, PXC = PerconaXtraDB Cluster, aka a pure-OSS MySQL fork with extra \"enterprise\" features and Galera Cluster pre-built) So, I'm now putting the final touches on PXC Manager, and debating with myself about an integration point between PXC Manager and Proxy Manager. -- "Oh and its hot season in Thailand so of course we now have critters to contend with. - Random bits of rubbish attract the rats. - The rats attract the tokay geckos. - The tokay geckos attract the snakes. -- "This week I'm running a ton of internal system migrations. Last week I did a nextcloud rebuild to consolidate multiple instances, this week I'm moving an internal dokuwiki to bookstack, taking out a ton of infrastructure and getting everything ready for a long deserved break from technology next week. I'm also doing some CAD this week, designing PCBs for both the 44COIN project and my Chip8 handheld emulator. I just need to add on a menu for the chip8 software, clean up the debugging and put proper timers in to sync everything to 60hz. I'm tempted to add superchip hires support into the mix and a 64k SRAM chip so I can use the same hardware for other systems. I managed to rejig my charlieplexed 44COIN circuit and get an extra analogue pin back, which I'm going to look at using for a matrix of 4 buttons on a resistor grid. This will let me possibly add a little simon-type memory game and maybe a dice roller/hi-lo game into the device as an easter egg. -- "I have returned from a week of holiday, so have spent my morning deleting emails and marking hipchat conversations as read. I'm in the middle of a vendor selection process, and this week is about crossing out the clearly bad choices and arranging to talk to the maybe good options. I'm also negotiating a change to my contract to adopt a four-day week, talking to my CEO soon. I've applied to volunteer at the National Museum of Computing. I spent the weekend hacking on an app for managing notes on research papers. It's nearly ready for a first release. -- "> National Museum of Computing Nice, I really enjoyed the part of the visit of the VT terminals where I typed for a bit ;-) -- "Work: beginning my last week at $job. Got a new job starting May 1st. Vacation in-between. (ElixirConf Europe early next week!) Not work: I started a small project using Vue and Phoenix, the goal is to be able to compose simple stream processing pipelines by drag'n'dropping blocks and drawing arrows between them. Source blocks could be sources such as uploading a CSV, polling a URL, receiving data over a websocket. Processing blocks would be simple maps, filters, reduces. Etc. Not sure how far I'll take this, having fun so far. -- "Finishing bringup of [arcan](https://arcan-fe.com) on OpenBSD 6.3 (+article). Mostly rework to take advantage of EVFILT_DEVICE for display hotplug left. If there's any time left over, I'll investigate some bug where the keyboard goes nuts if I run wsconsctl from within a graphical terminal (manual ssh in, kill needed to recovery, console filled with wskbd_input: evar->q == NULL). -- "I'm having coffee with a guy who wrote a Final Fantasy VI screenplay. I'm writing my own too. I am hoping we can find common ground and collaborate, because the reason I started writing my own is that I didn't agree with a bunch of things about his. -- "Is this a screenplay in the Final Fantasy VI universe, or a screenplay adaptation of the movie plot? Do you think you have a decent chance of getting it made? Which actor would you want to play Kefka? I'm working on a novel, [*Farisa's Crossing*](https://michaelochurch.wordpress.com/2017/09/21/farisas-crossing-blurb-as-of-sept-21-2017/), that has some FF6 elements/inspirations– female hero, steampunk tech level, and the gradual (over the series) displacement of lawful evil (Gestahl in FF6; Global Company in the Antipodes) with something both more absurd but also inevitable. -- "I can't help but wonder how many guys played *Final Fantasy VI* as young men and went on to write stories with women as either protagonists or major supporting characters. Also, which character did they draw upon for inspiration (Terra vs. Celes). -- "In my opinion, FFVI doesn't have a single protagonist. Terra is more of a blank, amnesiac Macguffin for most of the first half of the game, and Celes just has a few moments here and there. And it's debatable if it even passes the Bechdel test. I don't disagree that some characters got more development than others, but I think the authors succeeded in their intent to not give any one character the whole show. For this reason, I think it would work better as a TV series, where you can give each character a chance to shine, their own day int he spotlight. -- "They could even lure Leto in by putting in the contract that they won't delete half his scenes. I hear offers like that are harder to come by these days. -- "He's doing a screenplay adaptation of the actual story. He's gotten as far as the end of the floating continent. I've gotten as far as writing a pilot episode of just the first few scenes in Narshe, with flashbacks and background events in other locations. I don't think there's a snowball chance's in hell of any of it ever getting produced. Squeenix has already shut down fan attempts such as [this one](http://www.bad-pixel.com/terra/). So, it's basically a fanfic in screenplay format. But the guy I'm talking to is more optimistic. He's got some contacts that have spoken with Squeenix and think it could happen. As for casting, I think it would work best with unknowns. I don't know. That's too much fantasising for me. I just can't picture big names being attached to it. It might just end up being an animated adaptation like the recent animated Castlevania adaptation on Netflix. -- "Btw, is Farisa named after the FFV character? Or is that just a huge coincidence? -- "Mostly (totally?) a coincidence. I had played FFV a long time ago, but I didn't have FFV's Faris in mind when I chose the name. The character first came to me in a dream a few years ago. -- "Her \"real\" name is \"Sarisa\", but because she can't pronounce it as a kid, she says \"Farisa\" and her adoptive family just calls her \"Faris\". That's the explanation in the GBA English translation anyway. -- "Right. I knew that her name was Sarisa. She called herself \"Farifa\" in the J2E translation and \"Farisa\" in some of the EU translations. So... could go either or any way. The name pair *Faris* (M) and *Farisa* (F) is Muslim and means \"knight\", but *Farisa* also has African roots meaning \"virtue\" or \"kindness\". -- "In that case, it could very well have been the FFV character surfacing from your memories. You might find it a nice, introspective exercise to think of your thoughts or feelings about that character and dream looking for where the connections came from. It could also be random. -- "Will continue reading through \"Designing Data-Intensive Applications\". Really enjoying the book so far, specially the way the author lays out the trade-offs of different systems. Managed to do good progress with my reading last week. -- "Fininshing up my next debugging book review. I started out with three books, but I'm cutting it to two since the third book doesn't fit well (although I'm liking it a lot so far). For the review I'd like to find a good article about the pros/cons of whiteboard interviewing for programming jobs. If anyone has one they think is worth reading, I'd appreciate a link. -- "**Last week** Decided to hold off on further speed optimizations for the moment. Instead of the memory visualizer, decided to make a different sample program for Flpc: [Screenshot 1](https://i.imgur.com/9SyaooJ.png) [Screenshot 2](https://i.imgur.com/lIsSLMG.png). Hopefully, I can make it good enough to use one day. This way, once I get to the lldb visualizer, I won't have to make changes to the core of guitktk as much. Added to the core to support this: - Mark-paste and mark-duplicate - Fix some semantics bugs - Experiment with masking/cropping in Cairo. Don't know how to do that in Tkinter yet. **This week** Continue work on that sample presentation program. -- "Have been learning x86_64 asm for a couple of projects I have. I hope I'll get my e-ink screens this week to start trying to make them refresh fast for a e-ink laptop project I'm working on. I've been also building my jekyll blog to release a couple of write-ups later this week. -- "Which e-ink screens? I haven't seen anything that was particularly hacker-friendly when I've looked in the past. -- "I went with these ones: https://www.waveshare.com/wiki/7.5inch_e-Paper_HAT Following the work from @ninjatrappeur -- "Neat - thanks for the link. -- "Started on a cross-platform CLI for the bitwarden password manager: https://fossil.birl.ca/bitwarden-cli/doc/trunk/README.txt -- "Working on open source cache server [nuster](https://github.com/jiangwenyuan/nuster), migrating to HAProxy v1.8 -- "Putting the finishing touches on my talk for Haystack tomorrow. I will be enjoying that conference and also the Tom Tom Machine Learning conference day later in the week. Hoping the weather in Charlottesville is nice! -- "Do I even code anymore? I'm editing a video for work, debugging this obscure bug in our current Magento 1 instance, and organizing code reviews and trying to get environments for mage 2 built. Maybe I'll write some code this week, who knows! Personal stuff, I just got a Korg EMX so I'll be working on some loops and samples, possibly even some tracks on it. Need to get in touch with a comic friend of mine about doing his album soon. Possibly doing some stand up sets out of the city this week, time permitting. -- "Finishing up an infra move at work, putting the final touches on an HTTP server I wrote to be my personal homepages backend, and starting work on implementing my own ethereum virtual machine im rust. -- "Majority of work has been working on models for applying public funding for invoices in kindergartens, and discovering the shocking amount of edge cases and hoops accounting has to jump through to account for late applications, wrong calculations, etc. There is a huge gap between what I thought was the \"correct\" way and the way people actually do it, stemming both from my ignorance and how people are stuck in certain ways - some cases are easily solved on paper by a human, but is very hard to model. It's been both frustrating and a great learning experience, and it makes me wonder what else we do to account for people doing things \"incorrectly\", for various meanings of incorrect. -- "I'm currently trying to hack together some sort of text editor, and learn some ClojureScript. I'm embedding and forking Servo to render stuff, with NeoVim running as a daemon. I don't really know if it will actually get anywhere, but it's definitely an interesting learning experience. -- "How easy is it to embed Servo? I'm curious since I haven't seen any web browsers based on it yet, besides FF. Everything still seems to be Chrome based. -- "It's... interesting. It wasn't actually that difficult, just not amazingly documented. The documentation that was there is a little outdated* and I had to figure it out. The main issue is just that it's changing really quickly at the moment. I'd definitely recommend having a go if you want, but I wouldn't call it production ready. *: I am planning on making a PR when I get the time! -- "Interesting - that explains why I haven't seen it used. Hoping the embedding gets better soon - I'd like to see servo in something like QuteBrowser. -- "I'm working on building a new website for my ongoing science fantasy project using a [Pelican starter kit](https://github.com/matthewgraybosch/oedipus-pelican-starter) I created for building blogs as if they were [motherfucking websites](http://motherfuckingwebsite.com). It isn't much, but I had this itch and once I had decided to scratch it myself I figured I might as well share it. -- "I'm writing a tutorial for test-writing. I recently started contributing to an open-source card game, and while they have a testing suite, they're missing even basic functionality tests for over half the card-pool, so I've taken it upon myself to both implement a bunch of tests and help inform the other devs of the wonders of testing. The most fun part is it's all in Clojure which I don't know super well, so it's been a whirlwind adventure of learning. -- "Finally finished and merged a large improvement to our massive integration test system last week, and found out today that it uncovered a rather critical error. We now realised that we don't actually know how the integration test system ever worked before, and it definitely doesn't work right now. (An obvious bug was uncovered, and has been present for at least two months.) So I'll be fixing that and cleaning up that mess this week. I have an absolutely fantastic junior programmer who I'm mentoring, he learns fast, has what I consider to be the right approach and opinions, and a wonderful attitude towards learning. It's keeping me sane at my jobby job. Still struggling with what my new job was supposed to be, vs what it actually is. Made some realisations about this over the weekend that help me frame the problem, but actually make me feel worse about it. I don't know what I'll do about this. Managed to get precisely zero hours logged on my GTD application for Nextcloud last week: really hoping to turn that around this week, but I'm not hopeful at this point. By the time I get home from work, I can't manage to do much more than veg out in my lounge chair and read the internet. :/ I hope to turn that around now that the sun is still out by the time I get home from work. -- "I'm working on a simple tower defense game, mainly to try apply a genetic algorithm to finding optimal build orders. I chose JS/HTML5 to make the results easy to distribute. (It feels like if it's not on the web, no one will check it out.) I ran into a lot of little bugs because JS lacks strong types. The algorithm works fairly well, but taking up the CPU in a webpage doesn't work too well. I might have to do the optimization in node and export to a JS/HTML5 viewer instead. -- "Finishing off my senior thesis thing on PL implementation (http://github.com/charles-l/capstone), and planning to delve into more graphics stuff this coming weekend. So far I have basic Racket bindings for mesh loading, shader loading, basic (hacky) keyboard/mouse input, and an FPS camera ([demo](https://github.com/charles-l/ugg/blob/master/game.rkt)). Still have a long way to go before the dern thing is actually usable, but I'll start dog-fooding it once I have textures, physics, and some basic audio code working. -- "I've been learning Rust, with [gcstool](https://github.com/Freaky/gcstool) being the budding result - a utility for creating compressed databases for set membership tests. Main motivation being so you can check against leaked password databases without having to call out to a third party API or burn gobs of SSD/memory. The 500 million-strong pwned passwords 2.0 list weighs in at just 1.6GB with 1 in 50 million false positives - a good improvement over bloom filters, which would need more like 2.15GB for the same error rate. As part of this I also wrote [LineReader](https://github.com/Freaky/rust-linereader), an alternative to `BufReader::read_until` that cut about a minute off slurping in the database on my dinky little Xeon. I've been quite impressed with Rust so far - the language is rather nice and the tooling is excellent. I can see myself doing a lot more with it. -- "Working on part two of my series of blog posts on ripping all of your media to OSS formats and putting it all on a NAS. Here's [Part 1](https://feoh.org/2018/03/22/i-dont-want-to-let-go-the-media-rip-saga-part-1-formats-and-tools/) Also extending my current [Plex TV Series Extras Renamer](https://github.com/feoh/plex_tv_extras_fixer) into a general purpose Plex utility that will name movie / TV series folders and files correctly after looking them in in TheMovieDB. Nothing revolutionary, but the way you make progress in the craft outside of work is by scratching one itch at a time :) -- "I'm definitely going to be reading those blog posts. Keep em coming! :) -- "Starting my bachelor thesis. First week: Organisation, Literature and Basics. -- "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. -- "I'm going to end up spending a large amount of my time this week dealing with the aftermath of trying to switch phone carriers. My old device doesn't work on their network so I need to go buy a new one and return the rose gold loaner phone. Once all of that is taken care of, I'm going to work on getting my mastadoon integration branch rebased on top of the rubocop work that pushcx merged in. -- "I'll continue experimenting with the \"12 week year\" idea: setting a small number of goals and working towards them for 12 weeks. Selecting just a few goals and devising strategies to accomplish them is pretty darn useful. It feels really good when you get to the end of the week and can see the progress you made. One of my goals is to read the \"Designing Data-intensive applications\" book in this period. I'll keep up with my daily read during this week. -- "Currently working on [a GTK frontend](https://github.com/myfreeweb/galacritty) to [Alacritty](https://github.com/jwilm/alacritty). Also recently [switched my libweston bindings](https://github.com/myfreeweb/weston-rs/commit/86dec640cfd7ec54a1dc4ea3a9979c2a3db3c2bc) to [foreign-types](https://docs.rs/foreign-types) instead of a hand rolled mess (I wish I knew about foreign-types before, only accidentally discovered it via a very lucky google search). Also made [a list of GTK applications you might not know](https://github.com/myfreeweb/awesome-gtk). -- "I'm keeping an eye on the latest restic change which allows using rclone as backend. That would make my operations much simpler (I could simply do a OVH>Cache>Crypt setup with Cache size of about 30GiB to get decent performance). I'm planning to switch once this feature is included in a release and prepare setting all that up. Secondly, I'm reworking my youtube hoard, the number of files got a bit too large for Nextcloud to handle and caused server outages during sync (~16000 files in a single folder aren't a great decision). Next, I'm writing a federated link aggregator. It's a bit of a toy project but I think I got most of it figured out; I'll have the server use drivers for interacting with remote communities (such as subreddits) which are simply another binary that is called and uses HTTP over Stdio to communicate. That way I can simply plug in an adapter for, for example, lobste.rs or reddit and it'll handle natively. I'm not sure on all the interfaces yet, I'll have to finish most of the basic design before I can nail the entire interface into stone. (Reason being that ActivityPub is complicated and implementing it in go is a bit of PITA, so I'll implement it in something else and simple communicate with that) The idea is to have something that handles like mastodon (and ideally allows mastodon users to interact with threads as if they were toots if they're shorter than 500 characters) and can federate into the non-federated internet. I feel like enabling people to follow and participate with normal reddit and also federated communities would drive greater adoption. I'll see how it turns out, it's a bit of a slow tinker project, which gets my hopes up that I haven't been distracted by end of the week. Lastly, I ordered a logic analyzer so I can analyze my wire protocol I mentioned last time so I can get an overloaded arduino to communicate (slowly) with other arduinos. And possibly fuck around with a logic analyzer (yay!) -- "Over the long Easter weekend, I flew back to the UK to see my family. I'm using the extra time travelling and not working to make progress reading [Rhythms of the Brain](https://www.goodreads.com/book/show/1241576.Rhythms_of_the_Brain) (I'm currently about 1/4 of the way through, and it's very good so far), and continue with Coursera courses on [Maths for ML](https://www.coursera.org/learn/linear-algebra-machine-learning) and [Computational Neuroscience](https://www.coursera.org/learn/computational-neuroscience/home/welcome). I'll be working from Manchester next week & will likely be doing lots of social events in the evening, before going back to Munich next weekend. -- "I spent the weekend working on a project just for fun, a CHIP-8 emulator. I've been meaning to write an emulator for a while and thought of giving it a go. Of course, being a hardware nut I had to build my own hardware to run it on. My hope is to get it all working using an Atmega 1284 or 644, with an SD Card reader, keypad and beeper on an OLED screen, then 3d print a case so I have it in a nice handheld form factor. After I've finished this I'll look at adding Superchip support, which makes full use of the OLED. I'm using a Haltec OLED for now which is erm... not very good, but am waiting on getting parts from western suppliers (probably an SSD1306) so people can more easily build their own. So far I have most of the opcodes working, the screen running and a keypad working (but I haven't integrated it into the emulator yet). I've got it loading roms off SD card and was up all night last night trying to fix bugs in the screen display code. It's been a heck of an experience and thanks to the long weekend here in the UK and an extra day of, I'm going to spend a bit more time on it before going back to work. Obligatory weekend pictures: * https://mastodon.social/media/CpWBMQcxN24VGE4aJog * https://files.mastodon.social/media_attachments/files/003/319/831/original/df75cf0f3daefbfe.jpg * https://files.mastodon.social/media_attachments/files/003/319/829/original/256ab6fde4e2538c.jpg * https://mastodon.social/media/XMTEvBpFoeefEodt4sU * https://files.mastodon.social/media_attachments/files/003/321/640/original/e961dc64b52c97a6.jpg * https://files.mastodon.social/media_attachments/files/003/329/042/original/0152a9283c9eabc2.jpg * https://mastodon.social/media/wXdV3DYQxjVsuzTruh8 * https://mastodon.social/media/tEyqcOW9xL-5GXq1vSs * https://mastodon.social/media/tCfd8_B1ae9oNG48VjQ * https://mastodon.social/media/zhjS2wm2IouAfNY4MFo * https://mastodon.social/media/OL0SWDh37g1M8DOq8OI I'll post updates and progress on stevelord@mastodon.social. Once I've got something stable I'll post a writeup and the code here. -- "I’m hoping to get v2.2 of the [Shell Script Library](https://bitbucket.org/koalephant/shell-script-library/) pushed out tonight. That will facilitate following through with the v1.0 release of the [Proxy Manager](https://bitbucket.org/koalephant/proxy-manager) and the [Failover Manager](https://bitbucket.org/koalephant/failover-manager). Then onto a mix of direct client work and hopefully PXC Manager similar to the above tools. -- "I forgot to mention of course I’ll also be working on ripping my eyeballs out so I don’t have to see this abomination of an April fools joke any longer. -- "Item one: check - https://bitbucket.org/koalephant/shell-script-library/src/default/CHANGELOG.md#markdown-header-220-2018-04-02 -- "Item three: check - https://bitbucket.org/koalephant/failover-manager/src/default/CHANGELOG.md#markdown-header-100-2018-04-04 -- "I'm continuing to read The Pragmatic Programmer (p.100), got sidetracked by reading The Checklist Manifest and The Culture Map. After TPP I'll continue Clean Code (p.180), hopefully finishing them both this month. Last Saturday was very busy physically, with my flatmate we spent basically the whole day moving the house around, going to IKEA, installing new lights in our rooms/offices, painting a wall and just general cleanup. So now I have an adjustable standing desk from IKEA and nice passive lighting along with a desk lamp 〜( ̄▽ ̄〜) Also this weekend was reinstalling Arch Linux and setting it up, this time going with the Budgie Desktop, see how that goes (good so far). I want to get it ready for some Java development as I'm learning that. This week will be to start work up after the extended weekend from Easter and I also want to spend some time learning Java, doing something real with it. -- "At work I'll be going on my third two week sprint, working on UI cleanup and other such things for the product I\"m working on. Away from work, rather enjoying the April Fool's joke we have going on right now, and enjoying some Tradewinds Legends. -- "**Last week:** - [Finished post about combining my projects](https://blog.asrpo.com/the_plan) - Used [pyinstrument](https://github.com/joerick/pyinstrument) and [pyflames](https://github.com/uber/pyflame) to fixed bugs and improved speed for [guitktk](https://github.com/asrp/guitktk). Noticeably faster when tested on a 100 squares example. **This week:** There are two more things I could do to speed up do to speed up guitktk. But its a complete redesign and rewrite of some parts. And it would take up more memory and might make other usecases *slower*. On the other hand, if this works, it may be the last speed up I'll need for a while. I'm still undecided if I should do this. Maybe take a short break on projects. Efficiency is dropping. As per the blog post, look into making a stack and memory visualizer for Flpc in guitktk. All of memory is probably too big and slow to render (about 10000 cells) so maybe only view part of it. This means picking a ptrace backend between lldb, gdb and direct ptrace. Anyone knows of a more pythonic ptrace library? Both lldb and gdb are pretty heavy. lldb's console can drop into a Python console so I can test things out directly. Both extension interfaces are a bit clunky but beats rewriting something from scratch. -- "Release [nuster](https://github.com/jiangwenyuan/nuster) v1.7.9.9, a caching proxy server. Added cache stats functionality, fixed a security bug. -- "Continuing the home automation front with a xiaofang wifi camera that arrived over the weekend, so I need to get that reflashed and hooked into the house. Should probably redeploy the MQTT server and [HASS](https://www.home-assistant.io) now that I'm leaning on them seriously. (Currently they were stood up by hand as prototypes. We all know how long prototypes live for…) For the first time in my life, I now own three cars as well. Luckily we also have a three car drive, so this isn't an issue yet. The more amusing thing is the new-to-me car isn't actually new to me, I last owned it in 2011. Only has 10k more miles on it since then. Given it was given to me for free and may well die in the next 12 months, I'm treating it as a cheap crap car to do whatever I like to. Currently in the middle of bodging [DRLs](https://en.wikipedia.org/wiki/Daytime_running_lamp) onto it ([these from amazon](https://www.amazon.co.uk/gp/product/B06W9J8997/) are E4 certified! And bright! Most excellent.) Also have a tune box on the way, which should take it from 112bhp to 130 or so, and add around 80Nm of torque hopefully. Debating going the whole hog and fitting a [light pod](https://i.ebayimg.com/images/g/CkIAAOxy-o5RzJ2p/s-l1600.jpg) to the bonnet, because rally car. -- "Last week I set up the Lobsters April Fools Day gag. Later today I'll be taking it down again. I wanted to let it run a few hours into Monday so people who only check from work see it - there's some nice reactions [on AIM](https://twitter.com/search?f=tweets&vertical=default&q=lobste.rs%20-from%3A%40lobsters). Otherwise I'm finishing up folding [the site for my talks + long-form code writing](https://valent.io) into [my blog](https://push.cx). -- "Last week I set up the Lobsters April Fools Day gag. Later today I'll be taking it down again. I wanted to let it run a few hours into Monday so people who only check from work see it - there's some nice reactions [on AIM](https://twitter.com/search?f=tweets&vertical=default&q=lobste.rs%20-from%3A%40lobsters). Otherwise I'm finishing up folding [the site for my talks + long-form code writing](https://valent.io) into [my blog](https://push.cx). -- "Travelling Mon-Tues to Manhattan (including exciting weather delays, I'm sure) to talk to folks at a hardware startup about their API and infrastructure. Thurs-Sat will be in Dallas to hunt houses. Moving there at the end of May. If anyone is around NYC or Dallas this week, let me know and we'll meet up for snacks/coffee! No time spent this week in the bit mines, so my open source projects will fester a bit. Luckily some folks have been filling bugs while others are sending PRs to fix them, which is what you always dream of when you create a repo on GitHub and push your pet projects 😎 -- "Hoping to get my project Amiga 2500 back together again so I can use the desk space for the next repair project, which may or may not be a Mac SE FDHD. -- "I've been doing some go/sqlite insert performance testing with differnent journaling modes. For grins I'm benchmarking against postgres. I started testing serial inserts (no concurrency), sqlite can easily beat postgres in this case (with the right settings). I set up a simple http server to test concurrent inserts, sqlite suffers in this case as you might expect. I welcome critique of my methodology if anyone wants to take a look: https://github.com/mtayl0r/sqlite-test -- "Increasing the page cache size can help with bigger transactions. And read workloads of course. ``` -- e.g. PRAGMA cache_size = -131072; -- 128mb -- or PRAGMA cache_size = -1048576; -- 1gb ``` If you're okay with relaxing durability, running with `synchronous` in `NORMAL` mode can help with perf. ``` PRAGMA synchronous = NORMAL; ``` It will run a sync on every checkpoint, which by default is every 1000 pages of writes. You can control this on your own by disabling automatic checkpoints and running a separate thread to periodically checkpoint. ``` PRAGMA wal_autocheckpoint=0; -- sync WAL and write back as much data as possible without blocking PRAGMA wal_checkpoint(PASSIVE); -- sync WAL and write back entire WAL even if writers must be blocked PRAGMA wal_checkpoint(TRUNCATE); ``` That's what I do. Specifically I run a passive checkpoint every second, and switch to running truncate checkpoints every second if the log file exceeds 1gb. The transactions are all pretty small so that doesn't really happen, it's there as a failsafe against excessive disk use. Running a checkpoint every second ensures that the WAL will be fsynced every second, which might not otherwise happen in `synchronous=NORMAL` mode with pagecount-based automatic checkpoints. If you really want to retain every write then you should run `synchronous=FULL`, **but honestly this is a pipe dream** for normal use cases. You can't rely on that guarantee without undertaking significant effort to ensure your hardware actually will actually respect the sync in the case of a power loss. That means battery-backed storage, monitoring the status of your storage controllers and disks, and stopping your application at any sign of trouble. I think it's easier to block at the application level during important transactions until the change is visible on a geo-redundant replica. More application authors need to be aware that their data isn't likely to be durable unless they take great pains to ensure it actually is. Loads of people assume SQL database = durable, when in reality 1 second of data loss maximum is probably a lot better than most people have. And for most use cases complete durability isn't even a valuable feature. If a tweet gets lost, or a match win doesn't increase your ELO, it doesn't really matter. You probably have worse bugs. As long as your database is consistent after a power loss, you probably won't even notice 1 second of data loss. So there's my soap box rant about why you shouldn't, bother running with `synchronous=FULL` if it's going to hurt your perf. -- "Thanks for the feedback, for concurrent writes, to start I'm just trying to avoid failures due to the database being locked. So I'm trying to \"serialize\" writes in the http version with a goroutine. I figured putting all writes in a goroutine (blocking, unbuffered) using a single \"write\" database connection would ensure all writes are serial, but that doesn't appear to be the case, as I'm still getting database locked errors. I'm new to go so still trying to wrap my head around whats going on. -- "You can't do that with Go, because `database/sql` does connection pooling no matter what you try to do. You shouldn't do that anyway, since SQLite in WAL mode is fully capable of handling concurrent writes. You should handle `SQLITE_BUSY` with a short sleep and a retry. In WAL mode that should only happen doing `tx.Commit()`. -- "Actually, I've been reading the code for mattn's sqlite wrapper, and it doesn't do any connection pooling. -- "I know. But the interface provided by the `database/sql` package does. Those SQLite bindings only implement the low level Driver interface from `database/sql/driver`, which gets wrapped and managed by `sql.DB`. From [the `database/sql` docs](https://golang.org/pkg/database/sql/#DB): >`DB` is a database handle representing a pool of zero or more >underlying connections. It's safe for concurrent use by multiple >goroutines. [...] The `sql` package creates and frees connections >automatically; it also maintains a free pool of idle connections. But it looks like it's no longer impossible to get an individual connection, as of ~7 months ago. [Go 1.9 added the DB.Conn method to get an individual connection](https://golang.org/doc/go1.9#database/sql). -- "hah, for fun (as always) I started a pure Go sqlite reader over the weekend (https://github.com/alicebob/sqlittle). I don't plan to add write support, though. For now it's all low level routines to read the tabes and indexes. I'll try to add some very basic SQL support. -- "Learning how things are done at my new job, continue attempting to fix my sleep schedule so I don't fall asleep at the aforementioned new job, continue attempting to move from Bash to Zsh... btw, I finished that mandolin strap I mentioned a few weeks ago: https://www.instagram.com/p/BgjgrF9g5vN/ -- "_Nice_ work on that strap. Super unique -- "Haskell beginner here. Working on a Haskell CLI tool for managing my contract working hours on a daily basis and keeping track of how many hours were worked for whom, etc, and doing so in plain text files, similar to https://github.com/ginatrapani/todo.txt-cli. Here is the planned API, and I've only really gotten started on the `ls` feature: https://github.com/rpearce/timetrack-cli Any feedback on how to approach this is <3 and welcome. -- "I have continued to hack on ISETL. My next task will be to clean up the numerous cases of [unwarranted chumminess with the compiler](https://blogs.msdn.microsoft.com/oldnewthing/20040826-00/?p=38043). -- "I am nearly done the MVP of a GTD application that runs on Nextcloud, and I am really hoping to get that moved to a place where I can just import my massive inbox, and work from there. Along the way, I am aiming to improve the Nextcloud documentation improved. I have been toying with the idea of starting a Nextcloud hosting service, and I have set aside some time this week to go through a complete accounting of what that would entail, and whether or not it would be something that could at least cover expenses. (I already host more than one Nextcloud instance, so I have the expertise required.) I am still really struggling to get my personal computing environment in a state where I can be productive again, with the constraints I'm placing on myself. I really do not want to give up the constraints, but I also want things to work well enough that I can make forward progress in a reasonable way. -- "Oh this sounds excellent! Please email me when you're ready; I'd love to test this! -- "I'm working on making [IndieMark](https://indieweb.org/IndieMark) something people can get a score on without too much hassle. -- "I'm working on making [IndieMark](https://indieweb.org/IndieMark) something people can get a score on without too much hassle. Currently, I've been eager to get more into the space to get a better understanding of what it is. They encourage using the practice of [self dogfooding](https://indieweb.org/selfdogfood) so I'll leverage that. -- "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. -- "My little timeseries DB called henhouse has finally been [open sourced](https://github.com/mempko/henhouse). Maybe I'll investigate using [seastar](http://www.seastar-project.org/) to make it even faster. -- "Hunting for remaining issues in [Mitogen](http://mitogen.readthedocs.io/en/latest/)'s recently implemented [fork](http://mitogen.readthedocs.io/en/latest/api.html#mitogen.master.Router.fork) support. Pretty upset to discover it's somehow taking 8ms, that should be closer to 500 usec :S Sampling profilers are useless at this time scale. Currently thinking about some approach involving gdb's reverse debugging or similar.. need to capture behaviour of 2 processes containing 2 threads each. After I'm done with that, using the new support to add better isolation for Ansible modules that leak state or monkeypatch stuff -- "Last week was a sprint to finish stats assignments for end of term at the London School of Hygiene & Tropical Medicine: 1. For Analysis of Hierarchical and Other Dependent Data, an analysis of how patients' CD4 count trajectories varied depending on drug and three variables collected at baseline, using a mixed effects model and generalized estimating equations, 1. For Bayesian Statistics, a ficticious analysis combining data from a randomized controlled trial, a case-control study, and a cross-sectional study -- it's a bit hard to believe, but even though they study completely different probabilities, the odds ratio of outcome versus exposure (or equivalent ratio of exposure versus outcome!) is a common parameter.[1] 1. For Survival Analysis, Kaplan-Meier and Cox regression analysis for differences in time to death for patients diagnosed with Follicular Cell Lymphoma, by age, stage at diagnosis, and hemoglobin level (g/l) in a ~30 year cohort study, plus analysis of competing risks of relapse or death not from relapse. This week is: 1. figuring out if the data's going to be ready for my summer project, and lining up contingencies if not, 1. job marketing & networking, both in public health and back into the London software scene, 1. as the English call studying, \"revision\" of the past two terms of coursework. Comprehensive exams are in early June. [1] If you're really interested, the probabilities in question are: 1. For RCT, we administer an exposure, count outcomes, and then estimate probability of an outcome, given an exposure -- `Pr(outcome | exposure)`. So in a non-inferiority trial, we'd measure ,`Pr(Death|Drug A)` vs. `Pr(Death|Drug B)`. 1. For case-control, we collect some number of each outcome (called \"cases\" and \"controls\"), count exposures within each group (cases or controls), and then estimate probability of an exposure, given an outcome. So, again in this example, `Pr(Death|Drug A)` vs. `Pr(Death|Drug B)`. (Usually, case control is about some non-administered exposure...but this was an exercise.) 1. For cross-sectional, we collect some total number of people, count how many had every combination of factors, and then estimate the joint probability `Pr(Outcome AND Exposure)` or `Pr(Outcome)|Pr(Exposure)`. So, again here, `Pr(Death)Pr(Drug A)`, etc. -- "This is my last week as a Research Assistant so mostly wrapping things up and then leave for the easter weekend. I have started to prepare the courses that I will take next semester. This mostly consists of fighting the latex compiler, getting the correct number of passes for reference resolution, etc. I am using `latexmk` for that and the process has provided me a lot of headaches so far but I have a setup that (mostly) works. One of the last things for the winter semester is an essay about machine learning, today I am going to discuss the topic, which will be related to ethics and philosophy of science. I am really looking forward to that. -- "Working on cache server [nuster](https://github.com/jiangwenyuan/nuster), fixed a security bug which can bypass ACL check, implementing `cache stats` functionality. When `cache stats` is done, nuster would be a full functional cache server. After that, I will start to refactor some code(mainly rename cache related variables/functions with same name used in haproxy v1.8), and import haproxy 1.8. -- "How will this compare to the cache built in to haproxy1.8? Have you considered extending/copying the process that syncs stick tables to peers, to also sync cached data to peers (so a failover event doesn’t then necessitate a heap of unneeded backend requests)? -- "The cache introduced in haproxy1.8 has many limitations, for example only small response can be cached, which defaults to 16KB as defined by the global parameter `tune.bufsize`, while nuster can cache any size response. Also haproxy1.8 cache only works for 200 and GET, while nuster can cache any http code and POST/PUT. Also haproxy1.8 cache can only use `host and uri `as key, while nuster can use `header, cookie, query` as key too. And nuster has PURGE functionalities, disable/enable at runtime functionalities, stats, and so on, it is full functional compare to Varnish(HTTPS only available in Plus version) or squid(slow) or nginx(cache, purging only available in Plus version ). -- "Thanks for the detailed explanation, From what I read I’m not sure the “fully functional compared to varnish” is accurate. You don’t have a config language like VCL, or an equivalent to vmod’s do you? And I’m guessing none of the extras like compression handling, esi processing, etc. I’m not saying there isn’t a use case for your project, I just don’t quite see it as flexible as a regular haproxy+varnish pairing. -- "Following on from [last week](https://lobste.rs/s/nkvb3w/what_are_you_working_on_this_week#c_fuub7d) I'm pushing ahead with getting to 1.0 releases of at least three packages that are pretty close to being done: - Koalephant Certificate Manager: Simplifies use of TLS certificates (primarily with HAProxy and Certbot): builds joined files, fetches OCSP stapling data, syncs certs to peer proxy nodes. - Koalephant Proxy Manager: Simplifies config of HAProxy (primarily in a multi-node cluster): builds a modular config using the 'conf-available/conf-enabled' method, sets up Peer lists and syncs cluster config/enabled configs to peer nodes in the cluster. - Koalephant Failover Manager: Simplifies use of Keepalived and VRRP to add IP failover to a HAProxy cluster: builds a Keepalived config, sets sysctl parameters as required, and runs hooks on failover status. If *those* all go well, I'll be pushing into a PXC manager, again, to simplify setup, sync config/etc in a [Percona Cluster](https://www.percona.com/software/mysql-database/percona-xtradb-cluster) -- "I've been working on a new core data structure for Peergos - changing from a merkle-btree to a merkle-hamt (hash array mapped trie). I'm using the champ (canonical hash array mapped prefix trie) variety of hamt. This has some super nice properties, including insertion order independence, never any rebalancing or splitting operations (which makes ipfs pins much faster), and tunable storage overhead and data churn. In the process I found and fixed a bug in the same structure in ipfs/filecoin. The other interesting thing is that this data structure is amazingly young as far as data structures go. I think the original hamt was introduced in 2000, and the champ variation in 2015. -- "I've been tinkering with my Elm-based static site generator which is based on `elm-static-html`. That library relies on Elm's undocumented native modules feature which is going away with the next release of the compiler, so I'm trying to figure out if there's a way to do Elm-to-HTML conversion without relying on native modules.  -- "Spent the weekend playing with hardware devices. Reached a point where I can control a ceiling light in the way I want to, with a Sonoff Basic. (Only destroyed one of them along the way too, score.) It's currently soak testing on my dining table with a table light, but the plan this week is to install it into the ceiling of my office. (Basic gist, relay in the Sonoff controls the light on/off, and the light switch on the wall completes a circuit on GPIO14 pin to toggle the relay. Plus wifi controlled from Home Assistant/HomeKit.) Also reverse engineered a battery receiver for my wireless doorbell (Wilko's cheapest), and wired that into a Raspberry Pi successfully. When someone rings my doorbell, GPIO pin is pulled high and [go-doorbell](https://github.com/caius/go-doorbell) daemon emits the event into MQTT. I then have a script in Home Assistant that pauses my Sonos speakers, plays a doorbell sound through them and restores whatever the speakers were doing beforehand. [Obligatory Tweet about the project](https://twitter.com/Caius/status/977923830046916611) This week I'm aiming to have control of my office via HomeKit/Siri. (\"Hey Siri, turn the office on/off\".) That just involves a ceiling light coming on, and a wall socket turning on. (via Sonoff Basic & Sonoff S20 running Tasmoto firmware.) I've also promised someone a blog post about how I hooked up the doorbell, so I'm aiming write that up at some point too. And waiting to see what cheap electrical goodies from China arrive this week. Downside of cheap, month long shipping: I forget what's coming; Upside: surprise in every delivery! -- "Love the Sonos pause/restart after the doorbell sound! What a great feature. -- "Is third party firmware *required* for sonoff use w/HomeKit|iOS? Sonoff devices are quite readily available here (thailand) via domestic online shopping, but I’m hesitant to get any if they’re not actually usable. -- "With the current stock firmware they're controllable by the EWeLink app, and possibly Alexa now. [Apparently](https://www.facebook.com/permalink.php?story_fbid=1512116832212595&id=1194108247346790) homekit support is coming, but who knows when. They're _very_ hacker friendly pieces of hardware however, which is why there's a bunch of custom firmware that will basically do most things you want from them without having to write code yourself. They integrate with [Home Assistant](https://www.home-assistant.io) or [homebridge](https://github.com/nfarina/homebridge) pretty easily (either as HTTP endpoint, or via MQTT server) to get HomeKit support for them. -- "This week I'm working pretty heavily on [44CON](https://44con.com/), on the [call for papers](https://cfp.44con.com/), our house rules, t-shirt designs and our 44COIN project. The CFP is going fine (but we need more speakers, so if anyone here has anything interesting they'd like to talk about I'd love to see it). We're working on something we're calling house rules, which is an attempt to build something that helps set guides for behaviour, escalation etc. without falling into the flaws associated with codes of conduct. This week the draft house rules are going for final draft review internally, then being pushed out to various groups for external review. Should have them ready to publish in April. Last week I did a ton of sticker designs and the first prints are coming back this week. I'm doing T-Shirt designs this week, which are a mix of 1984 and DDR themed. Last year our crew were \"alternative domain admins\", this year they're going to be officials of the \"Ministry of Freedom\" as a nod to Orwell's classic. Finally, I'm testing our 44COIN, which is a little hardware project for people to build which is also part of the ICO we're going to run at the event. People who've been to 44CON before will know that this will be run entirely sarcastically and as a parody rather than a serious investment opportunity. -- "Is it just me or is there no about link on the main page? I wrote about in the url and it worked, but it seems like it could be a good thing to have, as I was mildly confused about the subject. -- "Thanks for pointing that out - I've changed and updated it accordingly. -- "After a bit of a hiatus I managed to get my next [debugging book review](https://wozniak.ca/blog/2018/03/25/Book-review-Formalizing-debugging/index.html) up, and I'm on to the next set of the books. The next few sets of books look like they're going to be a lot more fun than the last set. This past review was a pain because of some life stuff getting in the way, but also the books were big, dense, and one of them was really, really bad. Turns out writing a fair review of a bad book is a lot harder than I thought. I also added an RSS feed to my site and migrated the site to HTTPS hosting. -- "* [CompilerKit](https://github.com/hashemi/CompilerKit/) is a Swift library of data structures and algorithms used in compilers. It’s my learning project. * Applying to [OMSCS](http://www.omscs.gatech.edu). I really hope they’ll take me without an undergrad in CS. Any advice/help is very welcome and greatly appreciated. -- "> Applying to OMSCS. I really hope they’ll take me without an undergrad > in CS. Any advice/help is very welcome and greatly appreciated. Tbh your CV looks great, from what's on your website at least. STEM degree, published papers, shipped apps. The only thing I could see is if they're really strict on preferring a bachelor's in \"CS or a related field\", which they list as CS/math/EE. Maybe try to make sure at least one of your rec-letter writers can emphasize that you have a solid close-enough background, specifically if they can speak to: 1) that your educational background, while not CS, includes solid STEM fundamentals, and 2) your practical programming skills. -- "After doing a show and tell here on Lobste.rs for [balística](https://github.com/steveno/balistica) I've been trying to implement the suggestions I received for improvement. They were of varying degree of difficulty for me, so it's still very much a work in progress. Thanks again to all those who took the time to look over my project and make suggestions! Finally, the last big thing I want for balística right is now is graphs. While I've received a lot of help on how to do this in the form of comments like \"use cairo\" I still have no idea how to actually do use cairo to make a graph. -- "I've been staying busy in Rust land. I recently took over maintenance of the `z3-sys` and `z3` crates from Graydon and have been working on them. I've published a new version of `z3-sys`and I'm working on updating the `z3` crate. ([Repo](https://github.com/endoli/z3.rs).) I've published a long overdue update to my `lldb-sys` crate that brings is close to being up to date, and this week, I'll update the `lldb` crate for the newly bound features. (Repos: [lldb](https://github.com/endoli/lldb.rs), [lldb-sys](https://github.com/endoli/lldb-sys.rs).) I'm slowly working on some RDF-related stuff as well as Linked Data, but not sure what I'll get done this week on that yet. The final thing for this week is that I'm writing something to use some code borrowed from `serde-json` to provide serialization / deserialization between Rust and JavaScriptCore. I maintain bindings for `javascriptcore-sys` and `javascriptcore` and would find it useful to use `serde` to translate values back and forth. -- "I was hoping that meant the Z3 solver. Is it currently getting use for anything? And, if on program verification, have you or anyone else thought of a Why3/WhyML port instead to leverage multiple solvers plus any work done directly in Why3? It's got a nice, little ecosystem going. Frama-C and SPARK Ada use it. -- "They are bindings for the Z3 solver. I've used Z3 for stuff in the past and wanted to have good bindings for it in Rust. I don't use it for program verification though myself! -- "$WORK - Last week I setup a basic repo for a react payment widget to integrate into client websites, so I'll build it over this week and the next. - We're looking at oloo and their timesheet app to track hours spent on specific projects, ideally I would of preferred some kind of Taskwarrior + Timewarrior + Bugwarrior setup, but I havent found a package that makes it all easy to use for non technical staff.. $PERSONAL - Just one chapter of The Rust Programming Book left! - Still playing around with my email in acme, it's really fun, probably going to start looking at git in acme next. - I'd like to play around with Pijul, the rust vcs. - Probably update to the latest openbsd snapshot in the beginning of the week, to help test 6.3 (I'm already running -current, but from a snapshot before they froze the tree) -- "Currently: Looking at learning Coffeescript for something silly. Looking online, ES6 should replace it but ES6=ES2015 so that's only been around for at most 3 years, less if you count the time for browsers to become compatible. And isn't CS still fewer brackets, both curly and round? Although I probably shouldn't be getting distracted by any of this given all the other stuff going on... Last week: Released [guitktk](https://github.com/asrp/guitktk), the simultanous GUI and toolkit maker. This week: - Improve guitktk's speed. I can always \"hand compile\" function calls to their actual effect but this reduces polymorphism. What to do? - Finish blog post for what [all my github projects](https://i.imgur.com/J8XcMQZ.png) are about. -- "At this point of time it makes sense to learn typescript and ES6 - coffescript is going the way of the dodo. -- "Thanks. My searches already turned up the community's general feelings. But since I tend to have uses outside of intended purposes, I was looking for properties and examples. For example, what's the best choice if it was learned for a single project and then never again, and why? -- "I have no idea, I generally try to avoid tools that I can use only once, unless there are very specific business needs to use something. -- "> what’s the best choice if it was learned for a single project and then > never again, and why? Do you mean what's the best choice out of ES6, Coffee, and Typescript? If it's a small project and you want it done quickly, with not so much concern about rigor, and plenty of examples and help online, go with ES6. If it might live on for a long time with you coming back to it periodically and making changes then the assistance of a type system may be helpful, in which case Typescript. Honestly I can't see any reason to use Coffee anymore (especially not to learn it) but if it appeals to you for some reason then sure, why not. -- "I'm working on Mozillas Cornice - I've already added Marshmallow schema validation, now I've added out-of-the-box API Explorer for cornice_swagger package. -- "I finished up my [reverse engineering of QCRACK](http://faehnri.ch/finished-with-qcrack/), the old Quake cracking program. I'll be doing a full writeup to submit for something about how this was my first reverse engineering project. -- "Now that all my exams are finished, I've been thinking about a small project to work on until university starts again. One thing that really annoys me is how information is dispersed and among different websites, which all take a while to load, and an even longer while to find what one actually wants. But it's all \"stupid\" algorithmic querying of information, and it's always the same (when to take the train, where to go, what's the weather, what's on my agenda, what's in the news, etc.). Some people might make an app, but since I want to try using my phone less, I thought about using a [thermal printer](https://www.adafruit.com/product/2751) (or maybe a [smaller one](https://www.adafruit.com/product/2752)) with a raspberry pi I have lying around to create a daily \"summary\" of sorts, printed out on a receipt. So I've been looking into tools to parse RSS, the API for my local railway network, mechanisms to communicate between my org-mode agenda and the raspberry pi and of course I'm also trying to find out what adafruit's API allows (one can print via `lpr` so maybe groff could be used...). The cleverest way would be probably to package it all into a shell script and call it (only when necessary via cron). Maybe I could also create a web copy, for links and other resources, in case I want more information? -- "This is my first time posting here. I am looking into hardening certain aspects of Wallaroo's Python API and improving the error messages when improper pipelines are set up. Hopefully this will round out many of the sharp edges I hit when getting up to speed with Wallaroo's python support. After that I'm working on some benchmarks to identify bottlenecks in horizontal scaling of clusters. This work is a bit open ended but I expect to be doing a lot of profiling and system call tracing once we've narrowed things down. There are a lot of knobs to test and turn here but we'll start by creating a simple baseline with cheap computations and then find where our current sweet spot is when sending work across the cluster (for extremely cheap computations, I/O overhead dominates). I'll look forward to reporting back next week. -- "Planning out some long-term work at Wallaroo Labs, and writing a blog post about how our [Python API](https://blog.wallaroolabs.com/2018/02/idiomatic-python-stream-processing-in-wallaroo/) for writing stream processing applications works under the hood. -- "I ported my compressor to use AVX2. Most of it was find and replace because most SSE instructions have a same-but-twice-as-wide partner in AVX. Not all of it was that easy though, SSE has some instructions that work on the entire 128bit register (e.g. PSHUFB) while their AVX counterparts work on 2x128bits rather than 1x256bits. Took some staring to figure out which parts were actually broken and the fixes are ugly and slow but it works now. The AVX implementation is somewhat faster than the SSE implementation, which I'm pretty sure makes it the fastest decoder in the world. Compression is not awesome but I have some experiments to try which may also end up making it faster as a bonus. I've been having a lot of fun working on this and I've been thinking about how to move my career towards this kind of work too. I like algorithms and low level performance tweaking with more science than engineering. It seems to me that jobs like this simply do not exist (obviously they do but they're extremely rare) so I'm investigating starting my own company to work on it. Going to try to schedule some phone calls with people that have taken similar paths and other people who might be interested in buying it and see what happens from there. -- "I'm working on three things atm (maybe 4). First, I'm tinkering with SECL again, I want to extract as much of the lexer and parser as possible so I can reuse the entire construct for different usage scenarios (HTML templating in Go for example) Second, I'm working on a mastodon service like tweetlonger (I think that is how they called it) to allow people to post blogposts with their toots. I'm also chewing on a federated reddit variant based on this using activitypub as a common protocol. Lastly, I'm trying to work out how to best wire up a second RGBW strip to the current one across the room and some at the ceiling. I need about 20 Watts of power at 5V plus communication stuff. I was thinking about handrolling a custom 1-wire protocol, the arduino is way to busy for normal 1-wire, I need to significantly lengthen timings (atm I can, according to my math, squeeze about 20 bit/s over the wire). Though I might just scrap it too if it turns out I can't do it without needing a thick wire or high voltage >50VDC. -- "Comedy! I have some shows to edit and do post on (audio work, heck yes), I did some workshopping yesterday and will be at an open mic tonight. Meetup presentation! I am working on a presentation for a local code club meetup some time in the summer. I'm tryin to keep the topic under wraps but it'll have to be about working culture and not really about code. Magento 2! All I do these days is slowly port our proprietary Magento 1 extensions in Magento 2. -- "We had a hackathon and another release for my little social network, [pnut.io](https://pnut.io), over the weekend. On the security/privacy side of things I'm for small, vulnerable, unreliable silos like mine. ;) Now I'm organizing my thoughts about our next improvements, and helping developers implement the changes. It looks like we're already set for GDPR. Not sure how I'm going to improve our search back end yet. And if at all possible I'm going to feed the bees in between the rain! -- "Props for thinking about GDPR already. -- "A user pointed me to http://www.davidfroud.com/gdpr-compliance-step-step-part-1-prerequisites/ for a good start, specifically the \"GDPR in Plain English\" link in the first item. -- "I translated the navy seals copypasta into [Brithenig](http://steen.free.fr/brithenig/introduction.html). -- "This week will mostly be busy with job interviews, though I'd like to finish implementing an [rtpMIDI](https://en.wikipedia.org/wiki/RTP-MIDI) backend implementation for [MIDIMonster](https://github.com/cbdevnet/midimonster). Ideally with native support for the AppleMIDI session protocol, though the whole specification is.... not that good. Other than that, my to-do list contains a whole host of items, including publishing a new article on my homepage that has been in the works for long enough now. -- "My personal/toy project this week is writing something that sorts video frames based on their similarity, then recreates the video so that each frame is followed by the nearest remaining frame (with the audio synced as well). I have it written, but the current implementation is extremely slow. -- "Gonna spend most of the week learning about [Elixir](https://elixir-lang.org). We already used it in a Distrubuted Algorithms class at my college, but it was interesting enough to pique my interest even more. Apart from this, need to write more for an OSDI submission. -- "I have continued to hack on my fork of [ISETL](http://homepages.ohiodominican.edu/%7Ecottrilj/datastore/isetl/). I have replaced many macros with inline functions, added nullability annotations, and gotten it to compile cleanly as either C11 or C++14. -- "Via: https://medium.com/@xevix/what-to-do-when-tech-jobs-go-bad-93e631a1bdc9 What to do when tech jobs go bad No matter how many companies I go to, work eventually sucks. In the tech companies in which I’ve worked, sooner or later a similar set of problems becomes apparent that would require either a change of management, or rapid extreme changes in the style of the existing management to resolve. Typically, neither of these things happen and I seek other places in the hopes of encountering better management. I’ve worked as an individual contributor web backend software engineer in several tech companies, from small and medium-sized startups, to large corporations. This is my humble attempt at describing what I’ve seen, what the problems are, and what some possible solutions could be. I write this to organize my own thoughts, but also in the hopes that someone finds these stories familiar, and understands that they’re not alone in their experiences. In some cases, these may seem like issues with developers, but developers work in the environments that management creates, and so I’ve included them here as well. If you’re busy, I’ve laid things out as bullet points which should cover the gist of things. However, know that the meat matters as much as the bones here. Planning No roadmap, or a fluffy roadmap Having little or no idea of what success looks like, you will never achieve it. Vague ideas of projects lead to vague code being written, running “late” (how do you know without a roadmap?), and all kinds of frustration. Solution: Make a roadmap. Roadmap with no basis in reality (no engineers/stakeholders asked for estimates, no checkpoints in place for progress) Management decides on a list of things they want, and they decide it must be done this quarter. With no input from the people actually doing the work, this is likely to be wildly ambitious. With no checkpoints to know how things are coming along, projects will be very late, often too late to rescope them in hopes of finishing something meaningful. Solution: Force those responsible to break down and justify timelines. Drag them away from coding (many developers see only coding as productivity) and make them do this. Incentivize good and thorough estimates. Roadmap built too late (during development) Work begins on projects and roadmaps are built after roads. Suddenly it’s realized that the project being worked on doesn’t make sense. Time and effort goes out the window along with morale. Solution: Take time to build the roadmap well ahead of doing the work. No, you don’t have to predict every potential future, but it’s easier to steer without crashing when you know the lay of the land. Extreme changes in roadmap not a result of environmental changes, but a result of shortsightedness or lack of thoroughness in initial planning One day the business team wakes up and decides they think another project should be prioritized to make hockey stick graphs, because they failed to spend time to prioritize things ahead of time well. Months of work go down the drain, and it was entirely avoidable. Solution: Take the roadmap seriously. Prioritize things well. Unless an extreme shift in business occurs, stay the course. More is lost in indecision than bad decisions. Work on the projects you say you’ll work on. That’s measurable productivity. If you regret a previous priority, don’t repeat the same mistake next quarter. Ownership Lack of a Directly Responsible Individual (DRI) for a project A project is created and assigned to a team. Perhaps someone makes tickets to track the work to be done. A few people work on these tickets as they come to them. A manager comes by and asks for progress in an email. Nobody responds. The manager is frustrated and yells for answers. Developers answer questions individually. It turns out the project is way behind and much of the work on it is broken. Solution: Choose 1 person whose job it is to ensure that progress is made. They have the authority to talk to managers to get more resources if necessary, but at the end of the day, they answer questions of progress, and drive things forward. One lone engineer on a big project silo’ed away Everyone is busy on projects. One person has spare time, and is assigned to work on a project that’s important. Hurray parallelism right? Wrong. The engineer tries to get answers to how things work and gets limited assistance since others are busy. Nobody reviews her work. They ask what the delay is and she responds, but nobody’s satisfied with the answers. She asks for help and is told nobody is available. Solution: Unless you are a startup with absolutely no money and are dying in a few weeks, always assign at minimum 2 people to a project, and ideally 3. They are far more likely to raise problems since they can discuss the work, move things forward together. A third can break ties in design decisions and code reviews. Lack of taking responsibility in code reviews, not thorough, blaming the author of the code A pull request comes in. You’re busy, this person probably knows what they’re doing, just approve it and move along. Who doesn’t love easy approvals, right? Think again. Things will break in prod, tests will be missed, and you’ve revealed yourself as a lazy individual. Oh, also you’ve just set a precedent for others to likewise not review code. When things break in prod, are you really going to say “oh, I didn’t write that” if you reviewed it? Guess what, you approved it, you bought it. Solution: Take code review seriously. If you don’t have time, assign to someone else, or ask the pull requester if they can wait longer for a review. I promise you, you’ll be happy you did. Tech Debt Not taking appropriate action to retire old systems, rewrite and/or move existing legacy systems At some point, a legacy monolith reaches leviathan proportions, and is such a tangled web of disaster that it harms development. Existing veteran developers have trouble working with it, new developers strafe in the dark morass for months before being marginally productive, and strange crashes lurk causing unknown issues for your clients. But the management keeps prioritizing product, not realizing that the tech debt largely slows the development of the product features they so desire. Solution: Business must yield priority to tech debt. The most egregious issues with existing legacy must be prioritized and addressed. Longer-term rewrites must be sized and handled over time. This will pay huge dividends in development time of features, and developer happiness and longevity. It’s often said that developers don’t quit their jobs, they quit their bosses, but I think many times, developers also quit their codebases. Writing new systems that don’t need to exist simply to scratch an itch to write (NIH syndrome, etc.) “Have you heard of that cool new programming language? I’ve been learning it on the weekends and I want to see how it works in production. I’ve heard great things.” Time passes, and a new system is built in a new language, that does something very similar to an existing open source library, only in a more esoteric use-case-specific fashion, and with fewer developers to support it. Sooner or later, the project decays, the developer leaves the company, and much time was wasted on this system that wasn’t necessary which could have been used for business-critical work. Solution: This one is tricky. It takes a seasoned manager to know when to red-light this kind of project in favor of using existing solutions, and when to green-light things. You don’t want to suppress good developers, but you don’t want waste. The best that can be done is to ask the developer to write a thorough proposal that sells the specifics of the implementation, and to thoroughly vet it. This is, alas, one of the pitfalls of hiring less-experienced managers. Blame the legacy, it’s all the legacy’s fault Ah legacy systems. Everyone loves to swear at existing code, blaming developers who often are no longer there and can’t defend themselves. Things must have gotten this bad because they were awful, but we’re better. Sure we won’t fix what’s there, and our added hacks were necessary, but we’re better, really, we swear. It’s so much easier to build hacks on top of other hacks, it really makes you wonder how the legacy got here in the first place. This creates a toxic environment of bottomless pits of complaints, and ultimately hurts code quality and team happiness. Solution: While it may be tempting to endlessly complain about existing systems which may indeed be suboptimal, take the time to remember that the existing code brought the company this far, and that dubious design decisions may be the result of several changes of the guard and business decisions combined with emergent disasters which surround any fast-growing business. Is something awful? Make a concrete plan to make it better. Do it, even if you just chip away at it. The person who comes after you (it might be yourself) will thank you for it. Design If you spend more code to work around the weakness of a system than the advantages it gives, this is bad design Someone has a great new design they want to implement which is leagues better than what exists, and the existing design is just so awful. Only, it’s going to require some duct tape here and there, but that’s totally acceptable because overall it’s better. Until it becomes apparent that it’s mostly duct tape, but you’ve gone all-in on this and you can’t go back. Solution: Start over. The sunken cost fallacy is real. You’ve made a mistake, and that’s ok, you can take those learnings and build something better. Don’t settle for chaos. If most people working on this codebase run into the same set of problems avoidable by a different architecture, this is bad design You notice the same piece of code gets copy+pasted everywhere this system is involved. You ask someone why, and they explain “oh, that’s because this system expects this thing for a reason that isn’t actually true but sounds good, and everyone has to play along.” You have no idea why they did things this way, but you’re busy, you paste the snippet into your own code and move along. Solution: It’s painful to hear, but, refactor it. Refactor the whole thing and get rid of the copypasta. It will pay dividends. Coding Shotgun coding. No tests, or bad tests. Not handling of corner cases, mainly happy-path coding. “This is a startup, we don’t have time for this, we’ll handle it later. This is acceptable,” said the many developers over the years, each contributing their own piece to the chaotic mess that this became. Push out code with no tests, break production and fix it later, write tests to handle only the happy path, or not even that. Solution: Management can enforce test coverage, but really this is not a good measure of how well-tested a codebase is. What does work is forcing code reviews by thorough people who check for these things, and calling people out for doing superficial code reviews. Unfortunately, this is a case where hiring less experienced or conscientious engineers will hurt you badly, so watch your hiring for this. Meetings No agenda, or fluffy agenda with no measurable output You check your calendar and find you’re in a meeting called “Discuss The System” with no description, 10 people invited, and it’s 1 hour long. Being the good employee you are, you show up, stay silent through the majority of it as 2 people ramble on, and at the end of the meeting, the organizers pat themselves on the back and end it, and threaten to hold another one. Time is wasted, irritation brews, and nothing has been gained, but much has been lost. Solution: Enforce a company-wide policy that all meetings must have an agenda with a measurable output, involve only the necessary people, and have notes taken to show if the output was significantly reached. End all meetings once the goal has been reached, or the time is up. Any meeting that doesn’t obey these tenets, allow people to either leave, or not show up in the future. This will force people to change. Meetings that could be an email or a DM You’re in a meeting with an agenda with measurable output (yay!), but it’s a simple yes/no question that could be answered through email or DM. Solution: Yes, this is a shocker: use email or DM. Use your common sense, and use the appropriate medium. Meetings that include unnecessary people, and don’t include necessary people You’re in a meeting where 10 people are present, except the main designer. People wave their hands and say words, but in the end, all of this will just be overridden by the person responsible. Later that day, you’re in a meeting where for some reason the head of engineering is present to go through a low-level code decision, and nitpicks things out of context, wasting everyone’s time (including her own). Solution: Have a good reason to invite every single person at the meeting. If you can’t think of one, don’t invite that person. If the chief decision makers of something should be involved, invite them. And above all, stop adding people as “optional” to a meeting. If a person is optional, they should not be invited. It’s that simple. This is a company meeting, not a tech conference seminar. Meetings had for the sake of meetings (standups, what are you really gaining from this?) You’re at the daily standup meeting. People talk about things that you have no idea about, nor care about. You likewise share what you do that they don’t have any connection to. The few people who do have connections, you’ve talked offline to already, and here you report that you talked offline to them, and will continue to talk offline to them. Wait, why are we here again? Solution: If you absolutely must know what other people are working on, write it in text in a chat or email. “Oh, but nobody will ever read that!” you say. Correct. That’s because nobody cares. Do you think that hearing it aloud will make them care any more? Are you all now doing a better job as a result of this daily ritual? Probably not. Stop wasting people’s time, and focus on the results. Kill all useless meetings, especially the repetitive ones that are held mainly for ritual. Meetings too early or late in the day. Attention span low, irritation level high. You won’t get good things from these meetings. It’s 6PM and someone’s holding a meeting. You latch onto your third coffee of the day and pray this is either good or ends soon. Neither of these things come to pass. The next morning you realize someone has put a meeting at 8:30AM. You latch onto your first coffee of the day that you haven’t half-finished and hope this is good. Someone asks a yes/no question, and the meeting ends. Seriously? Solution: Seriously. This is one of many ways in which we’ve forgotten the human factor. Stop scheduling meetings too early or too late, schedule them during core hours. If a meeting is so important to have, it needs to be done immediately. Otherwise, there’s nothing that can’t wait a day or a few hours. People will be more willing to be present, participate more, and you’re more likely to achieve the desired outcome. Process Blind adherence to process without evaluation for current situation Sprints! Who doesn’t love sprints. We do Agile here. What do you mean Agile isn’t a noun? I just capitalized it, it must be so. Anyway, let’s just repeat sprints every week or so, and have people figure out what they’re doing. How do I know this is working? Because we create another sprint every week. What, results measurement? Many tickets were created and closed. What more do you want? Solution: Process is a great thing to have. It guides work, and leads to desired outcomes on the roadmap (which you of course have!). However, process that does not measurably get you closer to or accomplish your goals is either unnecessary, wrong, a waste of time, or all of the above. Always evaluate your process for what it gives you vs. what it takes away, and ensure the former is always greater. Excessive democracy leading to indecision Everybody’s opinion matters. We’re not a dictatorship here, ok? Let’s ask for comments from everyone in all of engineering. Wait, two people are disagreeing, that’s not good. One of the engineers isn’t in any way involved in this project, but she has great experience! Until this is settled, we can’t move on. Forget the deadline, we need to do things right! Correctness matters. Solution: No, corporations are not governments, and they should not be democracies. Fast, good decisions save a company, and slow decisions, good or bad, can kill a company. If you assign someone to be in charge of a project, they get the final say, and they make the decision quickly. Disputes can be resolved more privately without bringing in the entire engineering department. Focus your people, and you’ll maximize your outputs. Give them all a say in everything, and you’ll be gridlocked for no good reason. Excessive micromanagement, manager not taking care of bigger picture, ICs frustrated, bad work comes out The manager is a people’s person, she’s right there with you in the trenches. She asks you about this line of code and why you didn’t handle it another way, not knowing the context that led to the decision. You spend an hour explaining it to her, and in the end she goes “ohhh” and agrees. Meanwhile, the roadmap is running late and is not accurate, engineers are angry left and right, and the manager is nowhere to be seen on handling these real issues. Solution: Trust people. If you can’t trust them, get rid of them. Micromanagement is the death knell of any organization, and stops any team from scaling. If the manager isn’t handling real high-level decisions, that one line of code won’t matter, because the house is on fire while you were arguing with the carpenter about the new chair. Stay above it all, use the bird’s-eye view to make great decisions, and even if small inefficiencies arise at the lower levels, the ship is still sailing in the right direction. Hierarchy that hinders but is not used. Managers skipping rungs on the ladder to ask non-direct reports for updates. You’re working on something, and your boss asks how it’s going, so you give an update. Then your boss’s boss asks, and you give the same answer with less detail. Then her boss asks, and you say “good.” Then a manager completely unrelated to your team asks and you begin to wonder what’s going on here. You decide to just write a company-wide accessible report of what’s going on, wasting your time to give excessive visibility to managers who should have other concerns. What’s going on? Solution: As always, corporations are not general society. The hierarchy isn’t there to suppress the lower class, it’s there to maintain order and efficiency. If a manager 3 levels up is asking an indirect subordinate about a project regularly, it’s a sign of micromanagement, or too many managerial layers. Both problems are obvious how to address. Lack of useful checkpoints We’ll know the project’s done when it’s done. We report status in number of tickets completed. Sure, the number of open tickets varies over time, but it’s a rough idea, right? Until the project that was scheduled to take 2 weeks takes 6 months. Solution: Make checkpoints. “Such and such is expected to be done at the end of week 2.” If a checkpoint is not met, estimates must be reassessed, and possibly more people must be allocated to a project if it’s high priority. Otherwise, you have uncontrolled ballooning of a project’s scope and time taken. Not stepping in to help an engineer when they’re stuck Everybody knows that Jackie’s working on this long-term project, and that it’s taking a while. You often wonder how she’s doing. Management doesn’t seem to care she’s delayed, because hey, it’s just a difficult project you know? Time passes by, and nobody steps in. She asks for help from time to time, but she’s told that everyone’s busy. The project takes forever. Solution: Management should have some visibility on the status of projects. If something appears to be taking too long, then at some point, it’s wholly appropriate for management to step in and figure out what information is missing, or if more headcount is required. This is not micromanagement, this is a core part of management, but oftentimes managers who fear micromanaging give so much freedom as to not manage at all. It’s admittedly a tight line to walk, but this is the hallmark of good management. Note: From here on out it’ll just be lists, as I never got around to fleshing these out, but hopefully they should be somewhat self-explanatory. If it makes sense and time allows, I’ll flesh these out. Communication Overcommunication. Emails to large groups about particular details of everything, in the name of transparency. Floods inboxes, people filter, leads to apathy. Undercommunication. Big potentially breaking changes affecting other teams, other teams not notified. Evaluations Managers not evaluated by their direct reports Fluffy descriptions of how to improve, usually used to suppress salary by saying that a person never exceeded expectations without making clear what that means Rewarding so-called “firefighters” who respond rapidly to bad code deploys, rather than those who design and code more carefully to avoid issues in the first place No clear path for growth Propaganda “The company is a family.” No it is not, and if it were, many companies behave like an abusive parent, where the child keeps giving, and the parent keeps expecting and punishing. “Use your social media to spread the company’s posts.” This is disingenuous at best. Expecting people to use their own personal street cred to promote a company is see-through and pushes too hard from work into personal life. This is a huge overreach. If an employee likes what the company does, they will spread it on their own. Interviewing Process is not aligned with its goals: to find the right people for the job that fit in well with the company and teams Engineers overburdened by conducting interviews as often as they’re doing work Emphasis on hiring more people, without focusing on maintaining existing talent (how well will your engineer sell the company to others, if they feel they’re being badly treated?) Alcohol Providing regular events with alcohol. Peer pressure to drink, bad health habits, bad workplace environment. Normalizing and glorifying drinking alcohol. Discrimination Racism, sexism, LGBT discrimination, ageism. Much training given, but subtler forms emerge. Low diversity. Employee Well-Being Obvious signs of overwork, overstress or burnout ignored, glorified as “hard worker” Ignoring that employees are human beings. Ignoring interpersonal problems, health, etc. -- "Via: https://blog.liw.fi/posts/2018/02/17/what_is_debian_all_about_really_or_friction_packaging_complex_applications/ Another weekend, another big mailing list thread This weekend, those interested in Debian development have been having a discussion on the debian-devel mailing list about \"What can Debian do to provide complex applications to its users?\". I'm commenting on that in my blog rather than the mailing list, since this got a bit too long to be usefully done in an email. directhex's recent blog post \"Packaging is hard. Packager-friendly is harder.\" is also relevant. The problem To start with, I don't think the email that started this discussion poses the right question. The problem not really about complex applications, we already have those in Debian. See, for example, LibreOffice. The discussion is really about how Debian should deal with the way some types of applications are developed upstream these days. They're not all complex, and they're not all big, but as usual, things only get interesting when n is big. A particularly clear example is the whole nodejs ecosystem, but it's not limited to that and it's not limited to web applications. This is also not the first time this topic arises, but we've never come to any good conclusion. My understanding of the problem is as follows: A current trend in software development is to use programming languages, often interpreted high level languages, combined with heavy use of third-party libraries, and a language-specific package manager for installing libraries for the developer to use, and sometimes also for the sysadmin installing the software for production to use. This bypasses the Linux distributions entirely. The benefit is that it has allowed ecosystems for specific programming languages where there is very little friction for using libraries written in that language to be used by developers, speeding up development cycles a lot. When I was young(er) the world was horrible In comparison, in the old days, which for me means the 1990s, and before Debian took over my computing life, the cycle was something like this: I would be writing an application, and would need to use a library to make some part of my application easier to write. To use that library, I would download the source code archive of the latest release, and laboriously decipher and follow the build and installation instructions, fix any problems, rinse, repeat. After getting the library installed, I would get back to developing my application. Often the installation of the dependency would take hours, so not a thing to be undertaken lightly. Debian made some things better With Debian, and apt, and having access to hundreds upon hundreds of libraries packaged for Debian, this become a much easier process. But only for the things packaged for Debian. For those developing and publishing libraries, Debian didn't make the process any easier. They would still have to publish a source code archive, but also hope that it would eventually be included in Debian. And updates to libraries in the Debian stable release would not get into the hands of users until the next Debian stable release. This is a lot of friction. For C libraries, that friction has traditionally been tolerable. The effort of making the library in the first place is considerable, so any friction added by Debian is small by comparison. The world has changed around Debian In the modern world, developing a new library is much easier, and so also the friction caused by Debian is much more of a hindrance. My understanding is that things now happen more like this: I'm developing an application. I realise I could use a library. I run the language-specific package manager (pip, cpan, gem, npm, cargo, etc), it downloads the library, installs it in my home directory or my application source tree, and in less than the time it takes to have sip of tea, I can get back to developing my application. This has a lot less friction than the Debian route. The attraction to application programmers is clear. For library authors, the process is also much streamlined. Writing a library, especially in a high-level language, is fairly easy, and publishing it for others to use is quick and simple. This can lead to a virtuous cycle where I write a useful little library, you use and tell me about a bug or a missing feature, I add it, publish the new version, you use it, and we're both happy as can be. Where this might have taken weeks or months in the old days, it can now happen in minutes. The big question: why Debian? In this brave new world, why would anyone bother with Debian anymore? Or any traditional Linux distribution, since this isn't particularly specific to Debian. (But I mention Debian specifically, since it's what I now best.) A number of things have been mentioned or alluded to in the discussion mentioned above, but I think it's good for the discussion to be explicit about them. As a computer user, software developer, system administrator, and software freedom enthusiast, I see the following reasons to continue to use Debian: The freeness of software included in Debian has been vetted. I have a strong guarantee that software included in Debian is free software. This goes beyond the licence of that particular piece of software, but includes practical considerations like the software can actually be built using free tooling, and that I have access to that tooling, because the tooling, too, is included in Debian. There was a time when Debian debated (with itself) whether it was OK to include a binary that needed to be built using a proprietary C compiler. We decided that it isn't, or not in the main package archive. These days we have the question of whether \"minimised Javascript\" is OK to be included in Debian, if it can't be produced using tools packaged in Debian. My understanding is that we have already decided that it's not, but the discussion continues. To me, this seems equivalent to the above case. I have a strong guarantee that software in a stable Debian release won't change underneath me in incompatible ways, except in special circumstances. This means that if I'm writing my application and targeting Debian stable, the library API won't change, at least not until the next Debian stable release. Likewise for every other bit of software I use. Having things to continue to work without having to worry is a good thing. Note that a side-effect of the low friction of library development current ecosystems sometimes results in the library API changing. This would mean my application would need to change to adapt to the API change. That's friction for my work. I have a strong guarantee that a dependency won't just disappear. Debian has a large mirror network of its package archive, and there are easy tools to run my own mirror, if I want to. While running my own mirror is possible for other package management systems, each one adds to the friction. The nodejs NPM ecosystem seems to be especially vulnerable to this. More than once packages have gone missing, resulting other projects, which depend on the missing packages, to start failing. The way the Debian project is organised, it is almost impossible for this to happen in Debian. Not only are package removals carefully co-ordinated, packages that are depended on on by other packages aren't removed. I have a strong guarantee that a Debian package I get from a Debian mirror is the official package from Debian: either the actual package uploaded by a Debian developer or a binary package built by a trusted Debian build server. This is because Debian uses cryptographic signatures of the package lists and I have a trust path to the Debian signing key. At least some of the language specific package managers fail to have such a trust path. This means that I have no guarantees that the library package I download today, was the same code uploaded by library author. Note that https does not help here. It protects the transfer from the package manger's web server to me, but makes absolutely no guarantees about the validity of the package. There's been enough cases of the package repository having been attacked that this matters to me. Debian's signatures protect against malicious changes on mirror hosts. I have a reasonably strong guarantee that any problem I find can be fixed, by me or someone else. This is not a strong guarantee, because Debian can't do anything about insanely complicated code, for example, but at least I can rely on being able to rebuild the software. That's a basic requirement for fixing a bug. I have a reasonably strong guarantee that, after upgrading to the next Debian stable release, my stuff continues to work. Upgrades may always break, but at least Debian tests them and treats it as a bug if an upgrade doesn't work, or loses user data. These are the reasons why I think Debian and the way it packages and distributes software is still important and relevant. (You may disagree. I'm OK with that.) What about non-Linux free operating systems I don't have much personal experience with non-Linux systems, so I've only talked about Linux here. I don't think the BSD systems, for example, are actually all that different from Linux distributions. Feel free to substitute \"free operating system\" for \"Linux\" throughout. What is it Debian tries to do, anyway? The previous section is one level of abstraction too low. It's important, but it's beneficial take a further step back and consider what it is Debian actually tries to achieve. Why does Debian exist? The primary goal of Debian is to enable its users to use their computers using only free software. The freedom aspect is fundamentally important and a principle that Debian is not willing to compromise on. The primary approach to achieve this goal is to produce a \"distribution\" of free software, to make installing a free software operating system and applications, and to maintain such a computer, a feasible thing for our users. This leads to secondary goals, such as: Making it easy to install Debian on a computer. (For values of easy that should be compared to toggling boot sector bytes manually.) We've achieved this, though of course things can always be improved. Making it easy to install applications on a computer with Debian. (Again, compared to the olden days, when that meant configuring and compiling everything from scratch, with no guidance.) We've achieved this, too. A system with Debian installed is reasonably secure, and easy to keep reasonably secure. This means Debian will provide security support for software it distributes, and has ways in which to install security fixes. We've achieved this, though this, too, can always be improved. A system with Debian installed should keep working for extended periods of time. This is important to make using Debian feasible. If it takes too much effort to have a computer running Debian, it's not feasible for many people to that, and then Debian fails its primary goal. This is why Debian has stable releases with years of security support. We've achieved this. On the one hand, we have Debian, which pretty much has achieved what I declare to be its primary goal. On the other hand, a lot of developers now expect much less friction than what Debian offers. This is a disconnect that is cause, I believe, the debian-devel discussion, and variants of that discussion all over the open source landscape. These discussions often go one of two ways, depending on which community is talking. In the distribution and more old-school communities, the low-friction approach of language-specific package managers is often considered to be a horror, and an abandonment of all the good things that the Linux world has achieved. \"Young saplings, who do they think they are, all agile and bendy and with no principles at all, get off our carefully cultivated lawn.\" In the low-friction communities, Linux distributions are something only old, stodgy, boring people care about. \"Distributions are dead, they only get in the way, nobody bothers with them anymore.\" This disconnect will require effort by both sides to close the gap. On the one hand, so much new software is being written by people using the low-friction approach, that Linux distributions may fail to attract new users and especially new developers, and this will hurt them and their users. On the other hand, the low-friction people may be sawing the tree branch they're sitting on. If distributions suffer, the base on which low-friction development relies on, will wither away, and we'll be left with running low-friction free software on proprietary platforms. Things for low-friction proponents to improve Here's a few things I've noticed that go wrong in the various communities oriented towards the low-friction approach. Not enough care is given to copyright licences. This is a boring topic, but it's the legal basis that all of free software and open source is based on. If copyright licences are violated, or copyrights are not respected, or copyrights or licences are not expressed well enough, or incompatible licences are mixed, the result is very easily not actually either free software or open source. It's boring, but be sufficiently pedantic here. It's not even all that difficult. Do provide actual source. It seems quite a number of Javascript projects only distribute \"minimised\" versions of code. That's not actually source code, any more than, say, Java byte code is, even if a de-compiler can make it kind of editable. If source isn't available, it's not free software or open source. Please try to be careful with API changes. What used to work should still work with a new version of a library. If you need to make an API change that breaks compatibility, find a way to still support those who rely on the old API, using whatever mechanisms available to you. Ideally, support the old API for a long time, years. Two weeks is really not enough. Do be careful with your dependencies. Locking down dependencies on a specific version makes things difficult for distributions, because they often can only provide one or a very small number of versions of any one package. Likewise, avoid embedding dependencies in your own source tree, because that explodes the amount of work distributions have to do to patch security holes. (No, distributions can't rely on tends of thousands of upstream to each do the patching correctly and promptly.) Things for Debian to improve There are many sources of friction that come from Debian itself. Some of them are unavoidable: if upstream projects don't take care of copyright licence hygiene, for example, then Debian will impose that on them and that can't be helped. Other things are more avoidable, however. Here's a list off the top of my head: A lot of stuff in Debian happens over email, which might happen using a web application, if it were not for historical reasons. For example, the Debian bug tracking system (bugs.debian.org) requires using email, and given delays caused by spam filtering, this can cause delays of more than fifteen minutes. This is a source of friction that could be avoided. Likewise, Debian voting happens over email, which can cause friction from delays. Debian lets its package maintainers use any version control system, any packaging helper tooling, and packaging workflow they want. This means that every package is, to some extent, a new territory for someone other than its primary maintainers. Even when the same tools are used, they can be used in variety of different ways. Consistency should reduce friction. There's too little infrastructure to do things like collecting copyright information into debian/control. This really shouldn't be a manual task. Debian packaging uses arcane file formats, loosely based on email headers. More standard formats might make things easier, and reduce friction. There's not enough automated testing, or it's too hard to use, making it too hard to know if a new package will work, or a modified package doesn't break anything that used to work. Overall, making a Debian package tends to require too much manual work. Packaging helpers like dh certainly help, but not enough. I don't have a concrete suggestion how to reduce it, but it seems like an area Debian should work on. Maybe consider supporting installing multiple versions of a package, even if only for, say, Javascript libraries. Possibly with a caveat that only specific versions will be security supported, and a way to alert the sysadmin if vulnerable packages are installed. Dunno, this is a difficult one. Maybe consider providing something where the source package gets automatically updated to every new upstream release (or commit), with binary packages built from that, and those automatically tested. This might be a separate section of the archive, and packages would be included into the normal part of the archive only by manual decision. There's more, but mostly not relevant to this discussion, I think. For example, Debian is a big project, and the mere size is a cause of friction. I don't allow comments on my blog, and I don't want to debate this in private. If you have comments on anything I've said above, please post to the debian-devel mailing list. Thanks. Baits To ensure I get some responses, I will leave these bait here: Anyone who's been programming less than 12332 days is a young whipper-snapper and shouldn't be taken seriously. Depending on the latest commit of a library is too slow. The proper thing to do for really fast development is to rely on the version in the unsaved editor buffer of the library developer. You shouldn't have read any of this. I'm clearly a troll. -- "I myself has noticed that Debian packaging is really hard to get right as a newcomer. It’d be great if their was both simpler tooling a more concise guides on getting started. A PDF with 50+ pages/slides of information isn’t a good quick start format. -- "A coworker once spent a couple of months trying to get a package upsteamed to Debian. By far the hardest part was waiting for thebupstream maintainers to comment on the package. It took weeks to get any kind of feedback at all. By that time my teammate had completely forgotten all the packaging details but fixed the comments anyway. After not hearing back about the fixes for another couple weeks he just gave up. Someone else ended up finishing the packaging. -- "A few of these are mentioned in the article under the \"Things for Debian to improve\" section. I think improvements here could help reduce friction at the margins, but not sure they address the more fundamental disconnect. For example tooling/docs improvements would make it easier for the subset of upstream developers who value a Debian-style packaging system but currently don't bother with it due to annoyances on that front, which is definitely not nothing. But it wouldn't fix the problem with regard to upstream developers whose release cycle just doesn't fit the Debian packaging model at all. -- "Great article. Solid overview of the pros and cons of the quite different approaches of the Debian-packaging and npm-style worldviews. Lots has been discussed elsewhere, but I think this pulls together a measured overview that tries to seriously understand why each of them is the way it is, what could be improved in each without undermining their core benefits, and what are more fundamental difficulties in getting the two approaches to work together well. -- "There is also a commentary on this from Joey Hess, one time Debian release manager (I think) See http://joeyh.name/blog/entry/futures_of_distributions/ -- "* Semver allows me to break compatibility in major releases. The author recommends not to, and to support old interfaces for years. The latter is out of the question for hobby projects. The package manager of the language I use (e.g. Cargo, npm) is able to deal with this just fine. Apt is not. * Cargo or npm allow me to lock all versions in my dependency tree and to restrict version ranges. Especially the latter is necessary for API breakages (in compliance with semver) to not be a problem. Again, it's only apt that is not able to deal with this. Cargo or npm can resolve this conflict automatically and find appropriate versions, or do version splits if necessary. In Debian packaging, version splits are a manual task done by a person, which, to me, is the actual friction here. As an application developer I don't see why **I** should need to work around the deficiencies of distribution's package management systems, especially when those deficiencies are admitted by the author. I am not convinced that I, as developer, should bother with Debian. I can just statically link everything, put the resulting binary in a PPA and never need to bother with any of this. All of the arguments in \"why Debian?\" are from the perspective of an end user. -- "Everything made a lot more sense to me when I started to think about the fact that the npm model assumes that code is being deployed by a team of full-time developers who are paid to stay on the upgrade treadmill and work thru all the integration issues of pulling in different pieces that have never been tested together. In this context, you can't afford to wait for a stable release of a whole distro; you've got the bandwidth and expertise and test infrastructure to handle making it work with just the pieces you know you need. But forcing the end-user to be responsible for that kind of integration would be a nightmare. -- "The npm model works because it's being deployed on top of a stable Debian system. -- "I'm late to the party, but can you elaborate on this? -- "*The package manager of the language I use (e.g. Cargo, npm) is able to deal with this just fine. Apt is not.* Apt is perfectly able to cope with complex versioned dependencies, including \"not compatible with libs < this version\" and \"this random point release actually changed the API so all the dependencies need to care about it, even though the developer claims otherwise\". Exactly what feature do you think apt is missing? -- "Version range restrictions (particularly upper bounds) are the default in Cargo and npm, while in apt they are only used if actually necessary. They're not necessary if no breakage happens. That is the friction in apt for actually using semver to its full extent. It's more of a policy or best practice question than a technical one, but it doesn't matter. -- "I wish more folks involved in packaging for Linux distros were familiar with Homebrew. Obviously not everything Homebrew does is applicable to Debian, but the ability for folks to show up and easily contribute new versions with a simple PR is game changing. Last night I noticed that the python-paramiko package in Debian is severely out of date, but the thought of trying to learn the various intricacies of contributing to Debian well enough to update it is turns me right off. -- "I just looked at the packaging information for paramiko and I have more questions than before: * Debian automatically keeps track of outdated versions (see top middle widget at https://tracker.debian.org/pkg/paramiko), so they *know* it's outdated since >1 year. There is also an open bug report about this without a response: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=882322 * It only has two individual maintainers. Other Python packages I've seen are maintained by a pool of maintainers, either https://wiki.debian.org/Teams/PythonModulesTeam or https://wiki.debian.org/Teams/PythonAppsPackagingTeam How does this setup even work in case of a security vulnerability? -- "> How does this setup even work in case of a security vulnerability? Bugs tagged as security problems (esp. if also tagged with a CVE) get extra attention from [the security team](https://security-team.debian.org/). How that plays out depends on the package/bug, but it can range from someone from the security team prodding the maintainer, all the way to directly uploading a fix themselves (as a [non-maintainer upload](https://wiki.debian.org/NonMaintainerUpload)). But yeah in general most Debian packages have 1-2 maintainers, which can be a bottleneck if the maintainer loses interest or gets busy. For packages with a lot of interest, such a maintainer will end up replaced by someone else. For more obscure packages it might just languish unmaintained until someone removes the package from Debian for having unfixed major issues. -- "Unfortunately, Debian has still a strong ownership model. Unless a package is team-maintained, an unwilling maintainer can stall any effort to update a package, sometimes actively, sometimes passively. In the particular case of Paramiko, the maintainer has very strong opinions on this matter (I know that first hand). -- "Strong opinions are not necessarily bad. Does he believe paramiko should not be updated? -- "As an upstream dev of code that's packaged with Homebrew, I have noticed that Homebrew is by far the sloppiest of any packagers; there is basically no QA, and often the packagers don't even read the instructions I've provided for them. I've never tried it myself, but it's caused me a lot of headaches all the same. -- "A major reason I use Debian is that, as a user, I consider 90% of software lifecycles to be utterly insane and actively hostile to me, and Debian forces them into some semblance of a reasonable, manageable, release pattern (namely, Debian's). If I get the option to choose between upstream and a Debian package, I will take the latter every single time, because it immediately has a bunch of policy guarantees that make it friendlier to me as a user. And if I don't get the option, I will avoid the software if I possibly can. (Firefox is the only major exception, and its excessively fast release cadence and short support windows are by far my biggest issue with it as a piece of software.) -- "I never really understood why short release cycles is a problem for people, but then I don't use Debian because of their too long ones. For example, the majority of Firefox's releases don't contain user-visible changes. Could you elaborate what your problems with Firefox on Debian are? Or why software lifecycles can even be hostile to you? -- "For me there is an equivalence between Debian stable releases and Ubuntu LTE ones, they both run at around 2 years. But the advantage (in my eyes) that Debian has is the rolling update process for the \"testing\" distribution, which gets a good balance between stability and movement. We are currently switching our servers from Ubuntu LTE to Debian stable. Driven mostly by lack of confidence in the future trajectory of Ubuntu. -- "Because you need to invest into upgrading too much of your time. I maintain 4 personal devices with Fedora and I almost manage to upgrade yearly. I am very happy for RHEL at work. 150 servers would be insane. Even with automation. Just the investment into decent ops is years. -- "Every time a major update happens to a piece of software, I need to spend a bunch of time figuring out and adapting to the changes. As a user, my goal is to *use* software, rather than learn how to use it, so that time is almost invariably wasted. If I can minimize the frequency, and ideally do all my major updates at the same time, that at least constrains the pain. [I've ranted about this in a more restricted context before.](https://whbboyd.com/articles/interface-changes-are-bad!.html) My problem with Firefox on Debian is that due to sheer code volume and complexity, third-party security support is impossible; its upstream release and support windows are incompatible with Debian's; and it's too important to be dropped from the distro. Due to all that, it has an exception to the release lifecycle, and every now and then with little warning it will go through a major update, breaking everything and wasting a whole bunch of my time. -- "> Due to all that, it has an exception to the release lifecycle, and > every now and then with little warning it will go through a major > update, breaking everything and wasting a whole bunch of my time. I had this happen with Chromium; they replaced the renderer in upstream, and a security flaw was found which couldn't be backported due to how insanely complicated the codebase is and the fact that Chromium doesn't have a proper stable branch, so one day I woke up and suddenly I couldn't run Chromium over X forwarding any more, which was literally the only thing I was using it for. -- "Ha, now I understand why I use emacs. It hasn't changed the UX in years, if not decades. -- "I'm with you. I update my personal devices ~weekly via a rolling release model (going on 10 years now), and I virtually never run into problems. The policies employed by Debian stable provide literally no advantage to me because of that. Maybe the calculus changes in a production environment with more machines to manage, but as far as personal devices go, Debian stable's policies would lead to a net drain on my time because I'd be constantly pushing against the grain to figure out how to update my software to the latest version provided by upstream. -- "I've had quite a few problems myself, mostly around language-specific package managers that break something under me. This is probably partly my fault because I have a lot of one-off scripts with unversioned dependencies, but at least in the languages I use most (Python, Perl, R, shell, etc.), those kinds of unversioned dependencies seem to be the norm. Most recent example: an update to R on my Mac somehow broke some of my data-visualization scripts while I was working on a paper (seemingly due to a change in ggplot, which was managed through R's own package manager). Not very convenient timing. For a desktop I mostly put up with that anyway, but for a server I prefer Debian stable because I can leave it unattended with auto-updates on, not having to worry that something is going to break. For example I have some old Perl CGI stuff lying around, and have been happy that if I manage dependencies via Debian stable's libdevel-xxx-perl packages instead of CPAN, I can auto-update and pull in security updates without my scripts breaking. I also like major Postfix upgrades (which sometimes require manual intervention) to be scheduled rather than rolling. -- "Yeah I don't deal with R myself, but based on what my wife tells me (she works with R a lot), I'm not at all surprised that it would be a headache to deal with! -- "Via: https://medium.com/@giacomo_59737/what-i-wish-i-knew-before-contributing-to-open-source-dd63acd20696 What I wish I knew before contributing to Open Source Let starts with facts so that you can build your own opinion. On July 25, 2015 I joined the Harvey team, looking for a simple OS. I contributed to Harvey OS for about six months, the best way I could. You can see my 175 contributions listed here. And all my mails to the project here. If you read the various threads you will see that, when I care about something, I’m pretty used to fight for it. Politely, but strongly. When we do not agree, I cannot accept compromises: I want syntheses. And I’m used to play Scopa, not Poker: there’s no way to bluff, with me. Unfortunately, this approach didn’t work in Harvey. Indeed, after a lot of hard nightly work and several technical debates, I was asked to fork the project. And so my own Plan 9 fork was born. And I saw that it was a good thing! :-) Later I knew that Harvey addressed some of the issues I had fought for, and I was happy about that. Intelligent people can change opinion. I was naive enough to think that, after adopting the tools I proposed months before, they might have understood why I argued so much. Then I mostly forgot about Harvey for a while, till the begin of 2017 when they joined the Software Freedom Conservancy: Karen Sandler wrote a mail to all previous Harvey’s contributors, ready to answer to developers’ questions and concerns about the new Harvey status as a member. I asked if something was going to change about my older contributions to Harvey. It was relevant to me because I used a lot of the code and changes that I contributed to Harvey for my own Plan 9 fork. She replied (emphasis mine): Sorry for my delay in responding! I had three conferences last week and through the weekend (the first in Brazil and the second two in Brussels last night). I can confirm that joining Conservancy doesn’t change the licensing of old code. If you validly take code under a particular license, you still have the right to use it so long as you comply with that license. Even were the code to be relicensed under other terms later, you’d still have your original license. (Although we are happy to do it when asked, Conservancy doesn’t hold copyrights in most of its projects. We do help our member projects deal with relicensing if for some reason it’s necessary but on a special case by case basis after much analysis and consideration.) hope this helps! So far so good! I forgot Harvey again. On fall a friend of mine (another geek, you know) asked me about my Plan 9 fork, but I told him it was just an unstable toy. Since he already knew 9front but was looking for something different, I suggested him to give Harvey a try. We met again on New Year’s Eve, and geeks as we are, we started talking about the differences between the various Plan 9 forks. At one point he said: “Giacomo I was curious about your code, but grep cannot find your name in Harvey”. “Strange!”, I replied, “maybe they moved to better solutions, after all”. “Or maybe you are not worthy! Just like 9front’s guys!” he joked. Two day later, I checked the Harvey code base and I noticed that actually, no mention of my name was present, but still a lot of my code was there. I was sure it was a simple mistake and I opened a Github issue to get it fixed. NOTE: I have to link the WaybackMachine’s archive, because the way the issue was addressed broke most of the references in the issues. And most of Harvey’s forks on Github. They git rebased the main repo! You can play the game of differences by comparing the linked pages in the archive to those in the original issue. Now, if you just want facts, read the whole Github issue and stop here. I can assure you it will be instructive… but I won’t waste your time explaining here how to define a CONST(a) macro or how many ways exist to design a process scheduling API. Let me just say that there are always several ways to address a problem. There is no such thing like FLOSS When I was a young idealist I used to look at Richard Stallman as an hero. To my eyes, he was the man who discovered Free Software and hacked a license to protect its core values: trust and respect. Indeed, the freedoms imposed by the GPL are designed to ensure that developers trust and respect each other. Like in the early hacking communities. Growing, I became more cynical, and I lost interest about these topics. I started to use terms like Open Source and Free Software interchangeably. After all, who does really care about definitions? Well, the way Harvey managed this affair taught me a valuable lesson. There is no such thing like FLOSS. Free Software and Open Source Software are completely different things. Free Software feels proud of each person that contributes. Whatever the license, a Free Software community will be very happy to add your name to their code base. Because you studied and changed the code. You made it useful. You are a sign of honor. They trust you. And respect you. On the other hand, Open Source managers are eager to take your code. But while your code becomes their asset, your copyright is a liability. Beware of this, if you are going to donate your time and skills to some hyped Open Source project leaded by some big firm. Or, if you are going to donate money to their foundations. -- "It may be the late hour, but I'm having trouble synthesizing the information presented here. It seems that Giacomo contributed some code to Harvey, a Plan9 fork, but then forked Harvey at some point to create Jehanne. He stopped paying attention to Harvey at some point after focusing efforts on Jehanne. A friend pointed out that Harvey's attributions no longer included his name. He verified this and then posted an issue about it. The Harvey folks said something along the lines of \"no big deal\" and after some discussion, the Harvey folks decided that it would be better to remove all of his contributions than to attribute them to him. He pointed out that their rework didn't really remove his contributions but rather reimplemented them minorly. Then he posted a blog post about it. Does the Harvey team still have work to do if they want to actually mitigate a need to attribute to Giacomo? -- "He laid it out cleanly in the end. Instead of respecting him and his contributions, they bitterly removed them. He feels the Free Software people respect contributors, while big corporate open source folks dont. I agree with his conclusion. It's a cautionary tale. -- "It sucks a lot but I think it's something that we as contributors have to accept. Code changes. When our contributions are no longer present, there's no longer a need to actively recognize those contributions. At least, that seems to be the terms of the license. -- "except thats not what seems to have happened. They actively removed and reimplemented so the name isnt on the project. Thats some nasty stuff. -- "> They actively removed and reimplemented so the name isnt on the > project. Thats some nasty stuff Umm, no, that's not nasty. It happens, sometimes for good reasons: https://marc.info/?l=openbsd-cvs&m=99118918928072&w=2 -- "The point @stsp is not that they reimplemented my stuff. Surely they can! But their new implementation can be obtained by trivial, non recursive, modifications of my patches (that is: you can do that with notepad, you don't even need for a regular expression). And, accidentally, their reimplementation work went mixed in few huge commits that were a squash of several commits from several authors. Now, I wont bore them anymore. But I really learned a lesson there. -- "And if the parts of your patches they kept could be obtained by trivial, non recursive, modifications of their original code, what then? Your statement shows that you are applying the derivative work concept, but only where it favours your own cause. -- "> And if the parts of your patches they kept could be obtained by > trivial, non recursive, modifications of their original code, what > then? If you think that my patches can be obtained by trivial, non recursive, modifications of their original code, you didn't look at the code at all... -- "This is about parts of patches, not the patches as a whole. -- "I cannot agree @colindean: I didn't complain for the code they removed or replaced. For example I ported zlib to Harvey and wrote a console filesystem in user space, and they properly removed them together with the copyright statements, [here](https://github.com/Harvey-OS/harvey/commit/279effbf562faf51e1a77035da1ad6146b3870ab) and [here](https://github.com/Harvey-OS/harvey/commit/23ecd7506879007d15c5cf42b76e6fb0ee7adadc). I'm fine with this: it's their project, they are many different people, they can always choose better approach. What I cannot accept, is people using my code and patches that I'm using elsewhere without **any** attribution. SCO teaches that things can get hairy in the long term. And they are backed by Software Freedom Conservancy. -- "> It’s a cautionary tale. Exactly. But note that it's not just a matter of Free Software's ethics. [As I tried to explain them](https://github.com/Harvey-OS/harvey/issues/698#issuecomment-365286356), if you use somebody else code without proper copyright statements, **you pose a threat to their own right to use their code elsewhere**. -- "My comment in another thread (sorry @Shamar, didn't realize you had also submitted your blog post as a separate story): https://lobste.rs/s/yz7npb/gpl_enforcement_update#c_fdcggi -- "Following up on the above: So @Shamar, my take would be that the test code you added in [this commit](https://web.archive.org/web/20180107053613/https://github.com/Harvey-OS/harvey/commit/4392ad33cbf6ab719c02c535158b01014d17ec69) is copyrightable, but s/uint32_t/uint64_t/ is not. And I would also hope that [adding 'const' to function parameters](https://web.archive.org/web/20180107053511/https://github.com/Harvey-OS/harvey/commit/401284bef0d6ae6d240e1d27dece8a5165011316) does not make the result a derivative work. You could probably find a lawyer who would support this claim though, as long as that laywer doesn't know C. -- "> You could probably find a lawyer who would support this claim though, > as long as that laywer doesn’t know C. Well, the lawyer I consulted knows enough about these stuffs to suggest me to record the issue evolution in the WaybackMachine when I told him that they where using `git rebase` to remove me from the repository. He is pretty smart, actually. ;-) As for the const matter: are you sure you know the modifier's semantic deeply enough? ;-) The modifier enables several optimizations (they can vary depending on the compiler). It was not supported by Ken-C. My patch enabled these optimizations not only for the functions you can find in the ISO C standard (that btw was not supported, in any way, by the Harvey's libc), but also for others that were specific for Harvey, such as all the rune related ones. Now, I agree that my patch is the **simplest possible way to enable such optimizations**. But not the only one! If you barely know C, you know that there are several other ways to do the same. In a word: **macros**. But if they really wanted to support ISO C, they had several other alternatives to address the optimization problem without using a patch that conflicted with mine. They have an ISO C library in APEX after all! -- "Whatever the semantics of const are in various implementations of C, this question boils down to whether your change is a copyrightable \"derivative work\" or not. I suspect you can only determine the legal answer in a long court case. Do you really wanna go there, after they've already removed all code that everyone already agrees consitutes a derivative work? I think you're blowing this out of proportion. -- "No no no! As I said otherwhere, I wont bore them anymore. According to my lawyer, my github fork (frozen before the rebase) and the archive on the WaybackMachine should be enough to defeat in court any pretension on my code. The medium post is, as it has been defined by @mempko, just \"a cautionary tale\". For younger devs pondering to contribute to Open Source Software. -- "I don't think what you're doing is encouraging younger devs to contribute to open source :( -- "Indeed! I **strongly** suggest them to contribute to **Free Software**, instead! -- "You had one problem with one project. Generalizing this experience to an entire class of communities doesn't seem appropriate. -- "Please, read more carefully. I wrote: > Free Software feels proud of each person that contributes. > **Whatever the license**, a Free Software community will be very happy to add > your name to their code base. Because you studied and changed the code. > You made it useful. You are a sign of honor. > They trust you. And respect you. > > On the other hand, Open Source **managers** are eager to take your code. > But while your code becomes their asset, your copyright is a liability. I'm not generalizing to \"an entire class of communities\". I'm saying that, whatever the license, **you should not assume** that you are working for a Free Software community that will trust and respect you. And, that you should really know what you are doing before contributing to Open Source Software leaded by big firms, because there you will **probably** be just another minion to use. -- "Ah.. yes... since you cited the scheduling issue, please try to get their change with s/uint32_t/uint64_t/! ;-) I don't want to be a jerk, but as I wrote, I do not play poker. I try to back my statements with facts. -- "> please try to get their change with s/uint32_t/uint64_t/! ;-) Well, what other change in that diff do you mean? This one? -uint32_t\t\ttk2ms(uint32_t); +#define\t\ttk2ms(x) ((x)*(1000/HZ)) Are you convinced that change must carry your copyright? I don't mean to be confrontational, I'm just trying to help you find a perspective on the matter that doesn't leave you in a bad mood. -- "No, problem. What I mean is: open one the file modified files in that commit, eg sys/src/9/amd64pv/devarch.c or sys/src/9/k10/dat.h, at the state before the change and try to use s/uint32_t/uint64_t/ all over it. You will notice that you had just broken the system. Finding the **right** type to change was not trivial. And I had to do some iterations, testing manually that everything was working in kernel and user space. That's why I wrote the test you cited. Do you really think that work does not constitute a derivative work? Are you sure it was a trivial change not deserving any authorship? -- "Yes, so copyright your test. Doesn't that solve the problem? -- "http://jeffacubed.com/the-boilermaker-story-or-knowing-where-to-tap/ -- "That was exactly what happened, hobbes! Thanks for sharing! -- "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. -- "Spent the weekend getting things hacked together for a first foray into a \"smart, connected\" home via Apple's Homekit. Hooked up a DHT11 to a Raspberry Pi for temperature/humidity ([via this server][pi-humid-temp]), and also got control of some 433mhz-controlled sockets ([via this server][socket_control]). This is all wired into the Homekit system via [homebridge][] running in a SmartOS Zone. It _mostly_ seems to work. A couple of friends have pointed out [nodered][] which looks to remove some of the wiring up work I've been doing with http/python so far. Going to check that out this week I think. Work on the [blood pressure \"calculator\"][bpcalc] iOS app stalled in favour of the homekit stuff, I've figured out the behaviour I want from the table rows being tapped (& I also _finally_ understand the highlighted/selected state of `UITableViewCell`s.) Next steps are wiring up the number picker (keyboard) to adjust values in a row, and adding UI to show the averaged result. [pi-humid-temp]: https://github.com/caius/pi-humid-temp/blob/master/server.py [socket_control]: https://github.com/caius/socket_control/blob/master/server.py [homebridge]: https://github.com/nfarina/homebridge [nodered]: https://nodered.org [bpcalc]: https://github.com/caius/bpcalc -- "As usual, continue on to the next set of debugging books to review. I just [published](http://wozniak.ca/blog/2018/02/04/From-intuition-to-methodology-in-debugging/index.html) ([Lobste.rs story](https://lobste.rs/s/gljvvk/from_intuition_methodology_debugging)) a review that contained one huge book that took longer than I though to digest. (Short story: it was a mediocre book and explaining why was trickier than I thought.) I'm not sure if the next batch will be a couple of heavyweight texts (including Zeller's \"Why Programs Fail\"), or concentrate on a collection of stuff from the 70s and 80s, or maybe a collection of chapters on debugging from programming books. I'm thinking I should just get the heavyweights out of the way because with the old books I need to learn some COBOL and re-learn some Basic. -- "I've been building a C testing framework for work and heard about [Snow](https://github.com/mortie/snow) on Lobsters, so I'm planning to peruse it's features for inspiration. The one I'm building isn't as macro-heavy/macro-driven but I think there are a number of advantages to leveraging macros so I want to see what I can add. -- "I'd be curious to see what someone could come up with if the test framework didn't use the C preprocessor and used something else instead. Might be a fun exercise. But then again, maybe I'm just not liking the preprocessor lately. -- "What would it look like to drive tests, for C programs, in say Lua? It seems like a wonderful idea, but I’m not sure if the boilerplate stuff can be automated in such a way to make it feasible... -- "I'm not sure either, but it still might be an interesting exercise (or mini research project). Maybe I should be the one to look into it since I'm the one that spoke up. ;) -- "Actually, this sounds like something @silentbicycle has probably already tried. Might be worth checking in with him first. :) -- "You should have a look at [greatest](https://github.com/silentbicycle/greatest), which has worked out great for me in the past. I don’t do a lot of C, but dropped my own little testing setup for greatest, and haven’t looked back. -- "I'll check it out, thanks for the link. At a glance, my framework does look similar. Probably worth mentioning, I am sort of targeting this at folks that develop software using the traditional full cycle SDLC and have to live through that cycle many many times. As a result, I also have a goal to formally support requirements engineering. Basically what that means is that as a test engineer writes a test for a developer to implement against, they can optionally map it to either a requirement (by ID), a type of requirement (functional, non-functional, performance, etc), or a set of requirements (multiple IDs). On a very large project with many moving parts, support for this in a test tool can be invaluable. The nice side benefit of this is that if you're using a tool like Git, you can scroll through major points in the Git history and clearly see the progression of development not just by what tests are passing, but also by how many of the requirements solicited from the customer/stakeholder are satisfied. Eventually, I'll support generating metrics from the tests in a common business/professional format (such as an Excel spreadsheet, so managers can create visualizations and whatnot). I think it'll be useful for developers because they don't just have to point at a results table and say \"I'm passing all the tests\", they can point at a results table and say \"I'm passing all the tests and here's also proof that the tests passing fully cover all the initial requirements laid out, therefore the product you asked for is built\" (and of course if they don't like what they got, they can go talk to the requirements engineer :P ) -- "Hi, greatest author here. :) Something that might be useful in your situation: with greatest, if you have formal requirements IDs, you could use them as tags in the test function names, and then run tests based on those -- you can use the `-t` command line switch in the default test runner to run tests based on test name / substring match. (Similarly, `-x` skips matching tests.) If you name tests, say, `TEST handle_EEPROM_calibration_read_failure__ENG_471(void) { /* ... */ }`, then `./tests -t ENG_471` would run that. (Running tests by name also helps with quick feedback loops during development.) I did some automotive embedded work several years ago. We had a whole requirement traceability system that involved scraping requirement IDs out of comment headers for tests, which eventually fed into coverage reports. -- "Oh wow, that's pretty cool. That tagging system can certainly be useful for more than just the requirement IDs but ya, that would work. Being able to filter tests by the tags is also really neat and I hadn't thought of that as a feature. -- "Work: * Migrating Ansible 2.3 to Ansible 2.4 (modules API changed so lot of Python to rewrite). * Continue improving tooling/servicing for the dev team (this week will probably been again on improving logging) Perso: * Started CIS194 (from recommendation from https://github.com/bitemyapp/learnhaskell/ to finally understand why Haskell is so amazing) -- "In the process of replacing an old huge heavy laptop with no battery that I carry around to do my personal stuff when I'm on the move with a hand-me-down EeePC. My brother had no need for it anymore, so I asked him to send it my way. I appreciate the form factor and the lightness. It's not powerful, but I can run a tiny linux on top of it and it's gonna work great for what I want to do with it anyway. For work, I'm going to be running more load tests using apib. Probably fix some nodejs code along the way as well. -- "Working on open source project [nuster](https://github.com/jiangwenyuan/nuster), fixed a bug, released a new version. -- "Today is the first day of my new job! As much as I want this week's agenda to be to share all the ideas I've had for the product over the last couple months, I know that's not what someone should be doing in their first week. Or month. Or three. This week I'm going to find my bearings. I'm going to feel out the culture, acquaint myself with people, and fit in. I'm going to try to understand more of the fundamentals of their product, development process, culture, and industry. A lot of new information is about to come at me and I expect to be a bit overwhelmed and exhausted, but that's the game. I'm excited and nervous and all of the usual emotions. Wish me luck! -- "Good luck, and congratulations. -- "My [Mono patchset](https://github.com/mono/mono/pull/6677) is likely getting merged upstream. So far I can run things like ASP.NET and old IRC bots of mine, but on weird IBM midrange systems. -- "Putting the final touches on UTF-8 input and output support for [The Last Outpost](https://www.last-outpost.com/) MUD. We're looking for more players, so when its time to take a break from whatever **you've** been working on this week, come over and explore some dungeons with us-- *now with umlauts!* Also, just for fun, I added a 'baudrate' command into the game. Chose among your favorite modem rates (56k bps or lower), and you can try playing our mulit-user text adventure game just like it was when it first went online back in 1991, minus the occasional burst of line noise and your mom yelling at you to get off the phone. -- "I've been working on a follow-up to a discussion I had on how GNU's implementation of `yes` had a higher throughput than any other implementation from their use of buffering two pages of `\"yes\ \"`. ([Reddit post on r/unix](https://www.reddit.com/r/unix/comments/6gxduc/how_is_gnu_yes_so_fast/), [lobsters](https://lobste.rs/s/akycpo/how_is_gnu_s_yes_so_fast)) I'm interested now in benching the speed of a virtual terminal, hopefully it'll be ready by the end of this week! -- "I'm building this kind of [greenhouse automation system](https://veranda.seos.fr) to monitor my plants at home and maintain appropriate conditions throughout the winter (by turning on/off some of the electric heaters, ventilation, light, sending email alerts when things get too much out of range). It's all PHP, which is not sexy - *but it works* - and a few python or bash scripts running on the Raspberry Pi machines that are scattered in the rooms. My goal is to eventually use machine learning to give advice on when to water the plants (and eventually do it automatically). For now, I manually record the watering times until I have enough data to use. For now, it seems like dirt colour (the system also takes regular pictures of the plants) is a rather good indicator, but not good enough. The clean, server-side parts of the code are [here](https://github.com/seeschloss/veranda). -- "Awesome project! I've done this at an industrial scale for multi million dollar greenhouses at my previous job. I initiated and developed with our team a system then called Cortex now called HelioCORE ( http://info.heliospectra.com/heliocore ). It was a modular system which had an easily extendable frontend and backend, all our own features were built a independent modules in the same way so the extensions would be first class citizens. We built it in Python3 with a react frontend but you could pretty much build the modules in anything that speaks http, the core module would broker the connection to hardware using multicasting, udp, broadcasting, plc, modbus, etc through a simple http/websocket JSON-API. We also used some quite sophisticated algorithms which learned to recognize i.e. at what times the sun would pass by beams in the structure etc. Was great fun and very exciting to work with something so tangible. -- "Thanks! My system is flexible enough that I was able to add (in the private part of it) things like my weight (from a connected scale) the times I leave/come back from work, presence of my bike in front of the house, or getting intrusion alerts, stuff like that, not very useful but interesting to do. For the important data though, temperature/light/humidity mostly, I'm struggling to find adequate sensors, good parts of my space are far from electric outlets so I tried to go with battery-powered BLE sensors, but most of those I tried aren't as precise, long-lived and easy to configure as I'd like. But I guess real professional greenhouses are already wired so this wouldn't be an issue for you? -- "Yeah they usually have sensor speaking through some modbus or PLC system which we interfaced with through an industrial pc. We also built some sensors ourself using grade A sensor hardware and arduinos for communication. -- "I finally doped out an [issue](http://junglecoder.com:9090/IDEAWIKI/vdiff?from=7d5f8fae12abcaf9&to=458b7e9aafc6513d&sbs=1) in my wiki/notebook software that was keeping me from being able to simply `make run` to get it up and going. I've also added and edited that wiki some, though not quite as much as I was doing in the first few days after setting it up. -- "Based on last weeks post - I've been brainstorming based on the advice you had given. I'm still trying to think of something either I can build or something I can just run on my Digital Ocean VPS (aside from ZNC). -- "I just hired two more people to my team today, now at full planned strength. While I've been doing recruiting and interviews for a long time, these past few months were my first involved in the whole process as a hiring manager, from initial contact through orientation. It's been a difficult˚ but rewarding process full of plot twists and learning a lot about people. I'm pretty excited to see what my team is going to produce! _˚ difficult because hiring is hard, not because of company or other standard things that inhibit what feels like it should be an effortless process_ -- "Congratulations on getting through the first challenge if your career pivot. There's been lots of info on hiring that's often a bit contradictory. Were there any articles or other resources you found helpful for how you did it? -- "Unfortunately, I didn't save much of what I read. I can say that a lot of my process I came up with myself, borrowing ideas I've heard here and there throughout the last few years. It started with a few tenets, which may get long as I think about it: * Know what you want but reevaluate after each hire when hiring a team. * My latest hires became viable when I realized that my initial pass at job descriptions for their positions didn't reflect the skills of the team hired in the meantime. With the help of my team, we revisited the job descriptions and changed expectations. Not lowered, not heighthened. _Changed_, because the _team_ had changed. * Job description skill lists should be short and should convey an expectation that engineers at all experience levels are expected to learn and teach others. * Establish one or two tech skillsets that are desired for the position, that are non-negotiable. Those are things that someone ideal for the position must know day one. * Establish a group of skillsets or technologies that are nice-to-haves. That is, if you know one or two of these things, I want to talk to you! * Establish a group of interesting technologies. That is, if you know some of these words, let's talk about them on a screening call in addition to some of the other more pertinent things. * When marketing positions, personal outreach is incredibly important. * Ask friends who _might_ not be interested and ask if they know anyone who might be. _All_ of my hires came from this or similar referrals. * Angelist was not a useful resource for me. I received probably triple-digits' worth of interest notifications and I think i contacted maybe 3 people. So many clearly hadn't even read the posting. * Represent yourself well and consistently. * I had the privilege of working with an extremely professional and competent internal recruiter. I learned a lot from her. We helped each other remain consistent. * Be quirky but not self-important, pretentious, or self-deprecating. Do not compromise your authority or authenticity. * Build on your networks constantly. I've been networking for _years_. That network is what helped me execute this, hiring for skills that are hard to find in my area. * Design interview processes such that if a candidate progresses to an in-person interview, you _know_ they can code. * Don't waste precious face-to-face time assessing a candidate's ability to write code. Whiteboarding is out entirely. * Front-load a tech assessment as a short project if you cannot find evidence of their competency through social coding profiles, recorded presentations, internships, etc. * When I say short, I mean 30-60 minutes for a _new_ programmer to complete and something that veterans could bang out in an email response. I'd rather have the latter than a zip file containing a documented project complete with 100% unit test coverage, although such would be pretty impressive in its own right. * I hear of tech tests that are _weekend_ projects. That's unreasonable and does not select for the kind of employee I think I want. * Make it clear that _intent_ is what matters, not syntax or compilation. I'll take a solution for the tech test or the in-person exercise that doesn't compile if it shows me enough of what a candidate is thinking to assess that what they're thinking is correct or at least on the right track. * Expect the best, prepare for the worst: I would rather inadvertently hire someone who falsely misrepresented themselves and have to fire them than bog down myself and my team and my candidates with litmus tests. * Assess two things in an in-person interview: 1. Can this person explain themselves? * My interviews are designed to encourage a candidate to _geek out_ about themselves and their passions. * My interviews get technical but it's not a quiz. I like people who \"talk shop\" well and who can tell a story. Great communicators are often great engineers. 2. Can I work with this person long-term? * If I'm stuck in a room with this person for a 2 week sprint, will be both emerge at the end and still like each other? I do intend to write a blog post _after_ another hiring manager within my company tries this strategy and succeeds. I'm working on formalizing these ideas internally as policy first. -- "Great write-up. Appreciate it. Among other things, I like how you do the coding tests in a way that doesn't waste too much of the candidate's time. I also thought the \"Be quirky\" line was interesting: people rarely talk about that stuff in tech hiring write-ups. What was the reasoning behind those do's and don'ts? -- "Quirkiness is showing a weird side, showing a touch of class and uniqueness that the potential applicant likely hasn't encountered in another job posting. For me, I was able to summarize our very complex mission statement and then summarize the summary into a single sentence and be really upfront with eyecatching buzzwords but explain what we're doing with those buzzwords later. A contrived example of a mission statement shortening: **Highfalutin mission statement:** Colincom is enabling life-changing insight into customers' desires for self-improving their culinary skills to make an impact in non-alcoholic social gathering situations. **Distilled:** Colincom helps customers make better non-alcoholic drinks. A self-important job description overemphasizes the novelty or impact of the company, its product, or its team(s), or a combination thereof. Avoid words like \"life-changing\" and \"visionary\", and anything else that would be used to introduce a speaker at a Nobel prize dinner or TED talk. That *highfalutin vision statement* could be in the JD but really should be summarized to show that the company actually can do an elevator pitch. A pretentious job description overemphasizes perks that don't really matter, such as a particular location \"a newly-outfitted office in $hipster_district\" or things available only to employees that aren't considered benefits, such as free booze or work trips. Benefits like free lunch or mass transit passes belong in a bullet list, not in the second paragraph of the description of the job. A self-deprecating job description is pretty hard to write, but would say things like \"we are moving to a better location soon\" or \"we will soon have an HR department\". That self-deprecation line is more a verbal thing once you've established contact with a candidate: every company has problems, but how a candidate perceives those problems as they encounter them sets a tone for their time with the company. _Never_ shittalk another team: \"they didn't do this right\" is bad, \"there was a miscommunication about how to proceed\" is better. It's spin, honestly. Things can be on fire and you can point out the fire, but exude the confidence that it's under control even if it isn't. If it's not, and it affects candidates, why the hell are you interviewing candidates until that fire is put out? Avoiding a compromise of authenticity is largely keeping messaging consistent. Update JDs across postings, ensure that external recruiters are using your messaging and not diluting it, use some templates across all JDs so there is consistency company-wide. Avoiding a compromise of authority is a more confident way of conveying that telling a candidate you don't know something is OK, but you _must_ take it upon yourself to _find out_ and tell the candidate an answer, even if that means putting them on the phone with someone who has the authority to answer questions. I'm a good example of this: I _do not_ talk about health benefits to candidates. I say we offer them and if they have questions, I'll get them on a call with our HR team even if that call is five minutes. -- "Appreciate the detailed reply! That all makes a lot of sense. :) -- "For fun, I’ve been building a [web interface](http://trends.haber.sexy/) for [Funhaus’ Google Trends Show](https://www.youtube.com/playlist?list=PLbIc1971kgPCjKm56j_tNsetBn3PA5GaY), and as usual I’m being massively inconvenienced by CORS. This week’s contribution will probably be a server‐side component to sidestep it. -- "Working on a Kafka Streams, Kotlin and Spring Boot to standardise our async payment events. -- "I received a Tiva C Series Launchpad MCU from a friend and am currently running through some exercises to get comfortable working in an embedded environment At work, transitioning back to a project I left a couple weeks ago, so a lot of review of things I still remember from before -- "Hosted a Hackathon at our office (a *\"small\"* castle) weekend, which was great fun and now I'm evaluating the success and also onboarding a new hire for backend+devops. Will write a article for our company blog about the event with some highlights this week. Other then that I'm looking for a good platform for a smaller firm to deploy Python services on our servers, leaning towards Kubernetes, hoping it's not to big for a ≈15 person startup. We also have to figure out how to handle file storage if we go the container route. If anyone got experience in it I'd gladly appreciate some tips and pointers. -- "Same as last week: [Rustwell](https://github.com/ocschwar/rustwell), a Rust REST front end to Gnome Shotwell. Progress is slow as this is what I do just after I put my kdis to bed and before I go to bed, so progress is dad-brain paced. The reasons for it are that I want not just to have a full catalog of all my photos and videos, with duplicates detected, I want to know exactly where I have duplicates of my pictures, and the ability to have a consistent policy about it. And that policy should enable me to say \"oh, that picture of my whiteboard at work should not have been backed onto Flickr because of company policy, let's delete,\" or \"that picture was of a document containing PII, so it should not exist anywhere\", with Rustwell knowing what to do. 20 minutes of work going into it every night, and now that it builds and runs, the coding-without-fear thing is really kicking in. -- "Work: I have written and submitted [some patches](https://github.com/tensorflow/rust/commits?author=danieldk) 1-2 weeks ago to the Rust Tensorflow bindings to make tensors, graphs, and ops `Send + Sync`. In the latter two cases, this was trivial, but for tensors this required a bit of work since tensors of types where C and Rust do not have the same representations are lazily unpacked. I didn't want to replace `Cell` for interior mutability by `RwLock`, because it pollutes the API with lock guards. So, I opted for separating the representation for types where C/Rust types do/don't have the same representation, so that tensors are at least `Send + Sync` for types where the representations match. Since the patches were accepted, I am now implementing simple servers for two (Tensorflow-using) natural language processing tools (after some colleagues requested that make them available in that way ;)). Besides that, since it's exam week I am writing an exam for Wednesday and there's a lot of correction work to do after that. Semi-work/semi-home: I have been packaging one application (a treebank search tool) as a Flatpak. Building the Flatpak was far less work than I expected. Thus far, I had been rolling Ubuntu and Arch packages. Building the Flatpak was far less work than the Ubuntu packages. Also, the application seems to work well with [portals](https://github.com/flatpak/flatpak/wiki/Portals), since most file opening/saving goes through `QFileDialog`. I guess I am also benefitting from rewriting some sandbox-unfriendly code when sanboxing the macOS build. -- "Work: - I can't talk about it. Personal: - Reading [bitemyapp/learnhaskell](https://github.com/bitemyapp/learnhaskell) + doing H-99 (Ninety-Nine Haskell Problems) ([link](https://wiki.haskell.org/H-99:_Ninety-Nine_Haskell_Problems)) -- "Awesome ! I’m also reading this learn Haskell from Chris, I’ve started the CIS194. Thanks for H99, that should be a nice complement if I want more exercises. Are your sharing your learning experience anywhere? -- "I’m not sure what I’d share in my learning experience, to be honest. Most of what I’ve learned is tricks that are succinctly shown in the challenge solutions. -- "Hurriedly preparing a talk on [mruby](http://mruby.org) for the local Ruby meetup this week, using [How To Prepare A Talk](https://www.deconstructconf.com/blog/how-to-prepare-a-talk) from Deconstructconf. I'm not giving it nearly enough of the time the article recommends though, because I spent the month getting my home office in order and then discovering that the mruby build system still has a lot of rough edges (which are ending up as part of the talk) -- "Work: well its work, and this week is fixing merge conflicts for stuff, so exciting Home: Been debugging building ghc 8.2.2 on armhf for alpine linux on/off the past few months. Will keep working on that, but discovered I wasn't the only one with the issue. So have a ticket open on that front. Also porting ghc to aarch64 and i586, but encountering other fun issues unrelated to ghc, aka the cross compilation stuff in alpine linux is broken for seemingly just me somehow. -- "I'm working on some tonality models for this music composition app that's like an IDE for music. You should sign up here https://docs.google.com/forms/d/1-aQzVbkbGwv2BMQsvuoneOUPgyrc6HRl-DjVwHZxKvo if you wanna be notified when I launch it. -- "Hello! These look fun! Evaluating different graph databases for use with user data at work. Not entirely sure they'll be a good fit over our usual combination of RDBMS/Elasticsearch/Cassandra, especially given the REST-like way some of the queries are structured. Planning to test out Neo4j, AWS Neptune, JanusGraph v Plain Old Cassandra; anyone have experience running these or others in production? At home I've started on a project to enable using a midi keyboard to control playback of sound effects and ambient music over Discord for my regular Dungeon World roleplaying sessions. Managed to get a horrific thing that'd play any number of youtube videos into Discord voice chat at the same time going in about an hour, so I'm excited about the next steps (reorg code, then put in functionality to queue/layer/etc). Writing code on Windows is still not entirely ergonomic, but I've been pretty impressed so far with rustup's ease-of-use and how far the mingw/msys ecosystem has come since the late-00's. -- "skullrump: https://docs.rs/skullrump/0.1.0/skullrump/ Allows me to easily create binary based formats and write tail/head unix-like programs. I use this for a couple personal services and saves me tons of space and is very efficient. I write data every second. Using tools like gzip, fswatch, parallel, and others, I can compress my data and manipulated in parallel with ease. -- "I'm trying Alex and Happy (and Haskell) for the first time in a side project; trying to make a really minimalistic query language for CSVs. I've gotten up to generating some small parse trees from strings. https://github.com/emsal1863/csvql/ (I'm sort of embarrassed) -- "Work: - a webgl-based menu system for someone's website (it's flash time, all over again!) - a phone app to help kids track and manage/monitor their medical condition - a Zombie shooter/puzzle game in VR Home: - finishing up my old-school retro arcade shooter game (coding is done, just setting up for online sales. I'm aiming to sell the latest version, with the previous version under GPL.) - writing a browser extension to detect and flag up sponsored content in news articles -- "Step-by-step I'm rewriting [vdirsyncer](https://github.com/pimutils/vdirsyncer) in Rust. Right now I'm trying to (unsuccessfully) debug a segfault that happens only in the legacy Ubuntu Trusty environment of Travis (switching to Ubuntu Precise helps), but not in an equivalent local VM: https://github.com/pimutils/vdirsyncer/pull/698 Apart from that: * I've just returned from FOSDEM and I try to figure out what I could work on next * A bit of studying. One exam still left for this semester * Working -- "Work: - We released first alpha last Friday. It all went well except that it was supposed to be done on Thursday. - This sprint will be all about refactoring, fixing pressing bugs, adding pressing features (light stuff). Personal: Game development and more game development! Been spending around 1 hour or so doing game dev. Some day I'll have a game. I'm going through the incredibly inefficient rule of writing my own game engine. I'm doing this with Java+LWJGL. I don't know either of those. So this should continue to be fun for several months lol Also I'm reading The Pragmatic Programmer, couple pages a day or so, just in the ocassional downtime. -- "Started rewriting the static site generator that powers usesthis.com, because it grew without any planning and its current design is frustrating me. -- "1. End-of-module assignment for Generalized Linear Models. 1. End-of-module assignment for Statistical Methods in Epidemiology. 1. Proposal for working on TB surveillance data as the project for my MSc in Medical Statistics at LSHTM. -- "I've been working on a DND assistant that tracks character sheets, spells, items, etc. https://dnd.fn.lc/ It's built in react native and backed by firestore. It's been pretty fun trying to make something cross platform like that. -- "Working on the grind of focusing and writing my own code in c and assembly. I honestly don't know how to focus on the programming and less about the meta stuff. -- "I've been working my way through the Programming Phoenix book, with the intent of finishing the book and working on a small hobby app. After that, I'm going to dive into either React Native or Swift to build a mobile frontend for my hobby app. All in the hopes of either providing myself the skills and exposure for a new role, or at the very least, having a product out in the wild that I can be passionate towards. :) -- "I'm playing around with porting the RxSwing library (https://github.com/ReactiveX/RxSwing) to work on RxJava 2. Work wise I'm making a custom sort routing which is locale aware for C strings... The wonders of working on an embedded device without a full C standard library. At least I've gotten to brush up my C++ for the test code - and props to CppUTest for being by far the best c++ unit testing framework I've tried so far. -- "Hopefully finishing setting up a basic Packer → Terraform setup for my own website + side-projects so I can easily deploy things. I realised that was one of the blockers for me getting side-projects up and out there. -- "Work: Thinking about implementing an XSS Sanitizer and exposing it to all web pages, a bit like [DOMPurify](https://github.com/cure53/DOMPurify). The road to writing web standards and IDL is...bumpy. (Well in fact, my focus should be on code reviews and meeting preparations this week :)) Fun: Trying to build a music player for my toddler that is toddler friendly and doesn't require any kind of reading. Idea: NFC cards with colorful stickers that allow the selection of songs / albums / playlist. Based on a raspberry pi and an rc522 -- "I started porting [Chroma](http://level7.org.uk/chroma/) to MacOS. The makefile has two targets - a curses build and a graphical build that uses SDL 1.2. The latter fails at runtime with an error message that didn't yield any useful search results. This weekend I'll try compiling the SDL version for Windows. If this succeeds, I'll port Chroma from SDL 1.2 to SDL 2.0 and try building it for MacOS again. -- "Yesterday my order for various bits and pieces for my new RGBW lighting system arrived. Soldered some basic stuff onto the PCB and I might get around to finishing the ardunio code for it today. Also load testing, I have no idea how much power the LEDs pull in reality, only some quick napkin math. Might burn a wire or three. Otherwise, not much planned, I was tinkering with a small data protocol on a notepad, might be fun to reinvent most of TCP and write a basic userspace lib for it. -- "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. For me? My [patchset](https://github.com/mono/mono/pull/6677) is coming along well. I can almost smell the toolchain bootstrapping, but there's some runtime issues left to debug before that happens. -- "For fun(!) I wanted to make a client for MPD with Elm and `display:grid`. It now works more-or-less and was easy enough to do, but I'm not really happy with the default websocket library from Elm. Maybe there is one with a more explicit connection state? For this week to finish it I want to make the design presentable. -- "What in particular are you looking for in controlling the connection state? The idea behind the websocket library is mostly built around the idea that you shouldn't need to worry about handling the connecting or how messages are sent. You can use the [low level functions](http://package.elm-lang.org/packages/elm-lang/websocket/1.0.2/WebSocket-LowLevel) to put together an explicit model of the state if that's what you need -- "I would like to know the state of the connection, so I can display that. Or not show certain parts of the GUI when there is no connection. The current magic reconnects by the high-level module can take quite a while, with the build in exponential backoff (and reloading does not force the establishing of a new connection, somehow). The low level functions are really rather low level :) Guess I'll have to dig in them anyway... -- "Indeed, for those types of situations you are best off using the low level stuff directly. If you need a hand, join the Elm Slack -- there's lots of people who can help! -- "$work: In some ways better, in some worse. Mostly I'm just happy I don't have a release for another month or so. !$work: A lot of my programming stuff is on hold while I plan out some springtime shopwork. I'm scheduling a trip to Brimfield, getting a dumpster delivered for spring cleaning, identifying what I want to get cleaned during spring cleaning, getting plans together for the work I need to do in my shop, and figuring out whether or not I need various permits for a couple outbuildings on my property. Lots of nice, bitesize bits of work that I can just do and feel accomplished about having done. I highly recommend doing something like that from time to time, it's good for the mental health. Also throwing stuff away is literally my favorite activity. -- "I had a lot of trouble sleeping this weekend which means I actually ended up working on something. I put a bunch of work into my [Neocities](https://neocities.org) CLI interface and (eventually) rust library: https://github.com/azdle/neo It mostly works as is now, but it's incredibly rough around the edges and has zero documentation. I'm now hoping to keep up the momentum on it and get at least the CLI really polished off. I've struggled in the past with motivating myself to work on things, even when I already really want to, and I'm hoping that having something that I've gotten to a solid 1.0 that I can be proud of will be addictive to me. So, on that note, if you have an CLI tools that you really enjoy using, post em here, I'm looking for ideas to steal to make this a delightful tool. -- "I just wrote [A personal wiki](https://idea.junglecoder.com) in Erlang (it's currently a little over 400 lines, and is designed for a single trusted admin, but public facing ideas). That project was motivated by me wanting to pick up the basics of Erlang, and to expose this list of ideas so I have a place to track various things I'm going at a slower pace. I've started a little [retrospective](http://idea.junglecoder.com/view/idea/40). -- "So did you essentially re-write your website (jungle coder) in Erlang? When reading through your blog it mentioned being written in Go. I also quite enjoyed your blog :) -- "No, this isn't a rewrite of my blog. For one, this is *way* more simplistic. It has a lot less styling, for one, no comments, no markdown parsing(yet), not much linking to/from tag and home pages, and it outsources auth to nginx. Another difference is that the bar for content on this wiki isn't going to be super high (since it's mostly for me, with occasional sharing to friends), whereas on the blog I usually try to write content that others would find useful or interesting. Actually, once I have a chance to sit down with it and polish it up, I'll be moving the retrospective to my blog, for example. For me, they serve distinct purposes. My blog is a place for me to talk to the world, the other is built to be a place for me gather my thoughts. -- "Oh! My apologies I clicked on the first link in your OP which took me to your blog site ( In a green and white color - I'm getting an invalid cert on my end too for what it's worth) By removing 'https' it correctly took me to the actual idea.junglecoder.com (the wiki) - that's why I was confused. Any tips in learning Go with a C# background? I've been trying to think of things to build or work on. -- "No, thanks for pointing out the broken link. It should be fixed now. As far as learning Go from a C# background goes, (bear in mind, my path on this has been meandering) * Go Standard library documentation is *excellent*. It's your new MSDN, but the source is also included * Read the source to the standard library if you're curious about how something works * Go has two major strengths: Servers and command line tools. If you want to learn go for what it's good at, these are the types of things you'll want to start with. * If you can afford it and haven't already, look into getting a VPS, if you're interested in Go servers. There are a lot of nice single-purpose servers like [linx](https://github.com/andreimarcu/linx-server), [Syncthing](https://github.com/syncthing/syncthing), [Mattermost](https://github.com/mattermost/mattermost-server) and [gitea](https://github.com/go-gitea/gitea). I've administered all of these servers for work (mattermost, gitea's upstream gogs) or personal use (linx, syncthing), and if you know some basic nginx, they're very low effort. The operational simplicity in getting most of these set up is an awesome thing. It's not 100% unique to Go, but it's more common in Go programs. You'll want to learn nginx and `nohup` if you do this. * If you want to also learn fossil, and check out something rather curious, I have been working on a programming language called [PISC](https://pisc.junglecoder.com). -- "Thanks so much for the links! Getting a personal VPS is actually one of the things that sparked my interest in Go. One of my small goals is to write a CLI tool or a server of sorts. Coming up with a decently useful idea is the more challenging part. Or writing something I can run/leave running on my VPS. I've been reading bits and pieces about PISC on your blog - I'll keep thinking as well. -- "You can always go with the classic yak shaves in terms of servers: Blogs, wikis and task-trackers. For the first task, I'd focus on something that's been done before, but that you might have a personal spin on. That's why I wrote blogserv, the software behind the main Jungle Coder blog. It was a complete yak-shave, and the code isn't super pretty or super correct. (As of right now, it doesn't check HTTP methods when routing, for example. Thankfully, anything administrative has to be authenticated). There are lot of fun little things I've done with my server and domains over the years, if nothing else, throwing up a basic web page and static files directory allows me to serve content from my server during events like game jams. -- "I'll have to try out some of the ideas I have had with yak shaving - I've been wanting to \"do it all myself\" but haven't come up with much. Thanks for the suggestion! I'm always open to more. -- "One of the really different things about go is that other people’s badly written code is pretty easy to follow (assuming they haven’t done anything especially clever with reflection, which go makes very hard to do). I’d recommend finding a small go project to use & modify (I’m hacking on a wiki I found called cowyo) -- "I'll try that :) Is your background anything close to Go? I've been reading a few different books when I have spare time to be go over the language. -- "I’ve done mostly ruby and frontend; I’ve done a year of go professionally and prefer to use software written in it on my servers (because it tends to be very stable and requires less frequent patching). As far as language specific stuff: you shouldn’t use any of the go-specific stuff (goroutines, channels) in most applications code; let that wait until your app mostly works. -- "> A page for tracking where I am in each of the webcomics I currently read. Have you tried [Piperka](http://piperka.net/about.html)? I've used it for like a decade now and it's great for this. -- "I have not. I'll give it a spin if I get frustrated with my wiki page (though I kinda want an excuse to use this software on a regular basis) -- "I'm all over the place this week. Some minor things to fix on the OpenBSD port of Arcan, along with a writeup on the porting experience as such. Then there is some low level stuff when it comes to accelerated/compressed handle passing/mapping/drawing for multi-planar YUV formats that falls in 'tedious, please kill me, has to be done..'. To not burn out on that I'm playing around with support for 180/360 stereoscopic video playback on HMDs. -- "Getting my next debugging books review up. I'm just about finished Metzger's \"Debugging by Thinking\" so that gives me 3.5 books to write about. I was going to read all of Polya's \"How to Solve It\" but I want to go over that one more slowly, so I'm only going to consider the first two parts. -- "Today I finished the v0.9.5 milestone for [SECL](https://github.com/rls-moe/secl) which fixes some of the bugs someone reported to me via chat. The query language can now also access list indices or filter out either the map or the list of a value. Sadly I did break compatibility in two cases, though I don't have enough adoption that many people should care. Might work a bit on how to get macros working and finalize v1.0 after some cleanups. I also moved from Ansible to Fabric for my server configuration, it's much nicer since I can script out the various steps of the configuration instead of having to fit it into the ansible templates. Though some ansible .yml files will hang around until I can translate them into python. For the next few days I'll have to monitor the space usage of my backup scripts on the server to see how it develops. Otherwise I might work on some more relaxed projects, ie that on archival/curator thing I wanted to work on, which I mostly threw under the table so far. I've started some doodles on leftover printer paper on the architecture and design stuff. -- "Spent last week clearing my garage out some more and picked up a weight bench & some free weights. Done one session in there so far and could do with some more 5kg plates but mostly I just need to continue lifting. Injured my foot (I _think_ I kicked the bed, but I can't remember specifically doing it. No cycling till that heals irritatingly.) I've recently been fed up with recording my blood pressure, as the recommended way to do it is to take three readings a minute apart and record the average of the three results. This means writing down three values and averaging them, to then go enter them into Healthkit on my phone. (Already massively lean on Apple's ecosystem, one more thing can't harm.) Got bored of doing that, couldn't find an app that did it for me, so sat down at the weekend and started writing my own. Ended up working out how to present a keyboard when a label is tapped ([labelpicker][] is that test project), and [BPCalc][] is the main app's repo. This week will be hooking up the data entry, and adding the calculation. Also want it to be able to save straight to the health store for me but that might be next week's task. -- "Thank you for the wonderful comments last week. I wrote an Earley parser. And a Pratt parser. The Pratt parser is what I've been looking for all this time: a modular recursive descent parser. What it lacks in formalism it makes up with in brevity and power-to-weight. Now, I need to choose a host language. I'd like to pick Rust, but I'm not sure it has a ready-made GC solution right now, and I don't want to go down that rabbit hole. That leaves C++, JVM, or OTP. Any thoughts? -- "What kind of language are you looking to interpret/execute? The three platforms you mention all have really different tradeoffs. -- "A Lisp-esque language under the hood with a non-Lisp syntax on top. Idea is the functional paradigm can subsume the other two big paradigms (imperative/logic). Can use the CEK machine for proper tail call handling, so that isn'ta requirement of the host. Big thing I'm looking for is a GC (whether lib or built-in) and a language I like that I can target it with. -- "You also have Go and .NET Core as possible host runtimes. -- "For rust, you can wrap everything in a `Rc`, or if you have multiple threads an `Arc`, or if you want tracing GC you can use [this](https://github.com/Manishearth/rust-gc), or if you just need epoch-style reclamation there's [crossbeam-epoch](https://github.com/crossbeam-rs/crossbeam-epoch) or if you just need hazard pointers there's [conc](https://docs.rs/conc/0.5.0/conc/). I've had a lot of success with crossbeam-epoch in lock-free systems I've built. -- "`Rc` (and friends) would need cycle detection, no? Maybe the thing to do is just use `Rc` and do research on cycle-detection algorithms to see if they are hard or not. I looked at Epoch and hazard pointers and wasn't sure if they were ok as a general GC. I need to do more reading. Thanks! -- "Yeah, you can create [memory leaks with Rc cycles in rust](https://play.rust-lang.org/?gist=5e3926ddc26297ebd5949e75cc4b733c&version=stable). But this is rarely an issue in most use cases. Rust memory can feel a little confusing at first, but cycles tend not to come up once you learn some different idioms for structuring things in non-cyclical ways. For example, if you want to build a DAG, you can quickly implement it with a HashMap from ID to Node, where ID is some monotonic counter that you maintain. Each Node can contain Vec's of incoming and outgoing edges. You can implement your own RC-like thing that tracks the sum of indegree and outdegree, and when it reaches 0, you just remove the Node out of the containing hashmap. For the cases where performance or concurrency concerns rule out this approach (which are rare and should not be pursued until this is measured to be a bottleneck) you can always write Rust like C with unsafe pointers, Box::into_raw, dereferencing inside unsafe blocks, and free'ing by calling Box::from_raw (actually calling drop() on that if you want to be explicit about what's happening, but it will be dropped implicitly when it goes out of scope). Use mutexes on shared state until... basically always, but if you REALLY want to go lock-free, that's when you can benefit from things like crossbeam-epoch to handle freeing of memory that has been detached from mutable shared state but may still be in use by another thread. Feel free to shoot me an email if you're curious about how something can be done in Rust! I know it can be overwhelming when you're starting to build things in it, and I'm happy to help newcomers get past the things I banged my head against the wall for days trying to learn :) -- "FWIW, many languages written in C or C++ use arenas to hold the nodes that result from parsing . For example, CPython uses this strategy. I'm pretty sure v8 does too. So you don't manage each node individually, which is a large load on the memory allocator/garbage collector -- you put them all in a big arena and then free them at once. -- "What about Nim? It seems to be a memory-safe language with low-latency GC, macros, and produces C. I mean, the Schemes are ideal if doing language building with LISP thing underneath since they start that way. -- "Save the earth , use C++ or OTP -- "Hating my life because we're a month-and-a-half past our scheduled release date because of a subtle bug in our code that wasn't caught due to the nature of our test data (I know, I know!) and a bunch of testing not being done on the UI side because we're understaffed. -- "Dont waste time with automated tests. Users are unpredictable creatures and do crazy shit. Exploratory testing will save you time. except regression tests, do those. -- "Rushing to get [my lock-free rust bw-tree-backed embedded database](https://github.com/spacejam/sled) to an alpha state before FOSDEM next weekend, where I hope to encourage a few people to give it a shot for low-impact workloads. Thinking about ways of applying real-time scheduling to threads in a concurrent property testing library I'm writing to tease out bugs in the bw tree to get similar results to PULSE when used with quviq's quickcheck for erlang. I will name my first child \"Determinism\" after the past few months of intense debugging... -- "I started today on my ideal personal day planning tool. It's a very simple browser app where I can create a number of blocks for the day—like a queue of named pomodoros with an implied flexible break between them. I'm learning to write good specifications and enjoying playing with TLA+ and watching talks by Leslie Lamport and Ron Pressler. Now I'm going to a meeting for a local obscure political magazine for which I have ended up as the WordPress guy. -- "Nothing! I'm at dotSwift now, and FOSDEM later. I'm working on nothing. -- "Got an interview on Wednesday for a javascript developement position, so I'll be refreshing myself a bit on the most popular backend / frontend frameworks and checking out new developments in the language. The cool part about this job is that it's in the microbrewery industry, so I'm excited by the prospect of bringing those two parts of my life together. I'm also thinking about turning one of my desktops into an openbsd server and moving my various cloud services over to it. (mostly email, xmpp, git and nextcloud) -- "$class: Memorizing human anatomy and legal issues wrt not letting people die. I've been taking a lot of tangential notes on the systems complications of EMS, like how calls are recorded and such. Then I've been mocking out simple software architectures, mostly to keep my skills sharp. $!class: book stuff! Writing more of the TLA+ book, but in addition, two reading projects: * [Haskell Book](http://haskellbook.com/) by @bitemyapp and Moronuki (who isn't a lobster yet). Definitely one of the better introductions to the language I've found. * [Data and Reality](https://books.google.com/books/about/Data_and_Reality.html?id=fQZKPgAACAAJ) is absolutely _incredible_. I can feel my understanding of taxonomies and type systems warp as I'm reading it. I'm carefully annotating every page so I can share both the book and my annotations with friends. It makes the going much slower but I'm comprehending a lot more. I might push a couple of friends to do annotations on top of my own annotations, just to see what happens when the book is covered with us all analyzing it. -- "Applying for jobs in research, mostly FFRDCs. I've decided that unless I am absolutely stuck in Corporate forever– unless God hates me that much– I'm getting out. These slimy profit-motive companies... I don't see the point. -- "My resume. :/ -- "Slanty face for a layoff? Seems to have been a few people in my extended networks hit in the last two weeks. Nobody seems to be having an issue finding a new gig but that is still a slap in the face. -- "Not a layoff. The project I'm on is circling the drain and I don't know if I can keep up the facade and stay on the ride until upper management kills it. -- "Way more JavaScript than I ever thought I'd be writing in my life, which brings me to my favourite joke: I'm not sure if I'm starting to love JavaScript or if I have Stockholm Syndrome. -- "Working on a [game](https://github.com/MaxBittker/thumbwrestling) in webgl, and packaging some [tiny](https://github.com/MaxBittker/glsl-voronoi-noise) [quality of life](https://github.com/MaxBittker/glslify-big-triangle-boilerplate) [tools](https://github.com/MaxBittker/regl-shader-error-overlay) for my workflow in the meantime. main takeaways are that regl and glslify are really delightful! A mystery for the reader: What is this weird rendering artifact i'm getting on mobile? [image](https://pbs.twimg.com/media/DUufLqJVwAAbgBQ.jpg) At work this morning, fixing a small crop of bugs that popped up over weekend <3 -- "[Final few issues](https://github.com/beyondgrep/ack3/issues?q=is%3Aopen+is%3Aissue+milestone%3A2.999_04) for ack 3 to go to its first 3.000 release. -- "Last week I finished up implementing live-streaming logs for the OfBorg build system used by Nixpkgs: https://github.com/NixOS/nixpkgs/pull/34386#issuecomment-361258104 / https://github.com/nixos/ofborg. (The self-inflated name of the bot started out as a joke / silly hacky thing and turned in to something serious.) The frontend was written by another member of the NixOS community, samueldr. The backend was nicely simple to implement from RabbitMQ: STOMP.js is a delight! This week I'm expanding its test runner to run the VM integration tests on aarch64 (https://github.com/NixOS/ofborg/issues/36) and hopefully work on coalescing build result comments (https://github.com/NixOS/ofborg/issues/47). This requires rewriting one of the last PHP components in Rust, which I've been wanting to do for some time now anyway. Combining the comments should open up new, interesting opportunities like automatically sampling pieces to build per PR, and perhaps separating build logs per attribute requested, which could also open up interesting future options... -- "Working on [Rustwell](https://github.com/ocschwar/rustwell) I have two NAS boxes, a Linux laptop, and large disorganized collections of family photos scavenged from drives long dead, relatives dropping by with cameras, SD cards and phones to back up, et cetera. I tried to use Gnome Shotwell to unite them all, but had a lot of frustrations. So I want to do as follows: 1. Write a Diesel & Rocket front end for the Shotwell SQLite database (In progress) 2. Add two object tables to the database: a. An Object Location table, listing copies of every entry in the Shotwell video and photo tables. b. An Object Store table, storing enough meta data to enable listing copies on an arbitrary collection of NAS resources, as well as sites like Flickr, Shutterfly, Piwego, Amazon S3, et cetera. Then populate my DB, by scanning all my storage locations, and detecting duplicates so the Object Location row keys to the right rows in PhotoTable and VideoTable. I am writing this in Rust in hopes of having my BeagleBone board do the grunt work in the background regardless of what my laptop is doing. -- "$work: try to document the mess that is our custom hacked Wordpress installation and maintain my sanity... !$work: 1. find a CMS to host my BMX club's new website - the server will be [OpenBSD](http://www.openbsd.org/) and I think I would like the CMS to use either [go](https://golang.org/) or [python](https://www.python.org/), any and all [lobste.rs](https://lobste.rs/) recommendations appreciated :~) 2. catch up with Return to Teaching online course that I'm currently on... -- "I am integrating patches from several forks of GNU [superopt](https://directory.fsf.org/wiki/Superopt). -- "This weekend I'm going to be working some ideas for approximate membership queries -- aka what I should have been doing last weekend before I got sidetracked by [a neat storage trick](https://github.com/isometric/BucketCompressionTrick) I found while reading related papers. Pretty happy I decided to take that detour though - getting stars on github was way more exciting than I thought. -- "Currently taking a break from personal projects until Wednesday, but from Thursday onwards I'm going back to the web-based rhythm game I'm currently a contributor for, [Bemuse](https://github.com/bemusic/bemuse), and begin the process of upgrading the Webpack on that project to Webpack 4, since [the beta for it is currently out](https://medium.com/webpack/webpack-4-beta-try-it-today-6b1d27d7d7e2). Glad to be working on stuff again after a somewhat busy week! -- "Working on getting MAP_FIXED work on a CONFIG_NOMMU architecture in Linux... Fun! -- "In terms of work, work is progressing smoothly, hopefully this week we can meet internal deadline to release alpha version. In terms of side-projects, I'm learning game development. Currently doing that in Java (I'm a JS dev), and I'm doing the hard route of learning to make a game with LWJGL directly, with no framework. If by the end of this week I can display a sprite on the screen which reacts to my keyboard, that's good progress I figure. -- "Last couple of weeks I've been working on improving some of the Elm tooling that exists. In particular, I've added these things: - [elm-bash-completion](https://github.com/eeue56/elm-bash-completion) which gives you auto-complete for Elm tools in your bash/zsh terminals - [elm-help](https://github.com/eeue56/elm-help) which is a tool to give you information about a particular package or your local application from the command line - [elm-documentation-parser](https://github.com/eeue56/elm-documentation-parser), which is a \"mostly works\" library for getting documentation from Elm files that matches the docs produced by the `--docs` flag in the elm-make binary -- "$work: a strange week where I'm wrapping up a bunch of tiny projects that probably shouldn't have been done at the same time. Life of a internal tools engineer I guess. $play: Gonna get some work in on my pet language Tiko. Dunno if it's more than I can reasonably get done in a week since I've never done it before, but I'm gonna try to generate some LLVM IR and get it moved over from an interpreter to a compiler! I only have so much play time until the 10th when a friend of mine and I are gonna start a more serious project, so getting all the code-frivolity out before then. Probably wouldnt be a bad idea to give myself a bit of a screenbreak either. -- "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. -- "I wrote the user-space emulation of non blocking IO for [Jehanne](http://jehanne.io), and now I'm looking for more tests. Please share links to POSIX C code that uses non blocking IO. Any small program that `exit(0)` iff non-blocking IO works will help. -- "The [screenshot link](http://jehanne.io/pages/wip.html) on your front page is down. If I have time some time this week, I'll swap out 9front for Jehanne for my occasional \"Plan 9\" hacking explorations. I've been curious how things are going over there. -- "It's not down, it's sadly \"work in progress\"... that is: I had no time to write the page down. Sorry... I can either code or edit the web site, and I usually prefer to code. :-( I'll try to give it a shot asap. Thanks for trying Jehanne! Just beware that it is **really unstable**, by design. And I'm going to change it deeply in 2018. So do not use in production. :-) OTOH, [9front](http://9front.org/) is the most stable evolution of Plan 9. I imported a lot of their improvements, but if you are looking for a Plan 9 system, you might be disappointed. I mean: if [Plan 9 from Bell Labs](http://9p.io) were Homo Sapiens, 9front would be Homo Sapiens Sapiens. Jehanne would be a race of [Elves](https://en.wikipedia.org/wiki/Elf_(Middle-earth)). -- "> Just beware that it is *really unstable*, by design. I'm very aware, but 9front is already in my \"for fun\" bucket, with things like Haiku and DragonflyBSD, so that's fine. (Honestly, to a point, it's almost better, because it means the community is probably actively having some fun and not entrenched in process yet, and the last thing I'm looking to do in my spare time is to learn or contribute to Yet Another Unix that's almost but not exactly like what I do for work each day.) -- "Just added a screen shot at http://jehanne.io/pages/screenshot.html Also, the link in the front page should work now. This is marketing, dude! :-D (it has been work in progress for more than two years!) -- "Had an idea at the weekend, instead of building base images for my standalone SmartOS hypervisors by hand I could lean on [packer][] via the [Joyent public cloud][]. Does the same thing, and costs a few cents per image build. Given I'll build one of these per quarter most likely, I can live with the cost 😆 Once that's done, then I _just_ need to move everything on the home server across to a new supported base image and make sure puppet is managing what it needs to on there. Sounds an awful lot like work to me 🤔 [packer]: https://www.packer.io [Joyent public cloud]: https://www.joyent.com -- "Building an AI to play [Ambition](https://docs.google.com/document/d/1S7lsZKzHuuhoTb2Wj_L3zrhHZh5IEKBDf56ExgErv4o/edit). I tried gradient descent / backpropagation but the results were mediocre (barely better than random play) and, given that most of the 608 inputs aren't likely to be relevant-- I doubt that holding the 7 of diamonds matters in most cases-- I'm going to try NEAT to evolve a sparser (and faster to train / use) network that, I hope, will perform better. *Farisa's Crossing*: had a bit of a writing slowdown due to family emergency over the holiday, plus work pressures. Getting back into it. Going to read over previous draft in order to plan the last third of the book (although I basically know how the story ends) in the revised version. It turns out that writing a literary-grade novel takes 5-10+ revisions. -- "Most importantly, data recovery. Windows Startup Repair was of the opinion that my LUKS drives need to be formatted as GPT and nuked all backups of the LUKS header along with that. So I'm recovering the most important stuff from backup atm (I did loose an ancient backup of mostly lower sentimental value and a small data collection which is a bit annoying, I only backed up /home really...). I'm still torn on whether to nuke the disks completely and setup a LUKS+RAID1 or try to recover anything. Once I've got everything recovered, I'll have to deal with a few bugs in the configuration language I'm writing, a few new features have been suggested to me and I'll implement them this month for the [v0.9.5 milestone](https://git.timschuster.info/rls.moe/secl/issues?state=open&milestone=6) I'm also looking to rewriting some parts of my toy kernel to be more robust, especially the global kernel state (without the stdlib, having a globally mutable static variable is slightly annoying to do in Rust, even moreso if you don't have heap when it needs to be setup). I also think about starting a curator/archive project, I've got some design/architecture ideas for that, nothing concrete yet. I might experiment a bit in what to write it in too so I'm flipping through various webframeworks and languages. -- "> I also think about starting a curator/archive project I'm interested in retro computing and have volunteered with / hope to volunteer again with some computing museums in the UK. Anything I can help with regarding requirements/UX? -- "Probably not yet, it's still in the early stages, as mentioned, I haven't even decided on a language or framework yet. It's not really targeted for retro computing, more in the direction of archiving and curating user content from websites, it could help me to compensate my data loss from above (it's all online but I curated what I archived) -- "I'm starting the course https://www.coursera.org/learn/financial-markets-global as per the recommendation comment here: https://lobste.rs/s/2rwddp/what_is_on_your_2018_reading_list#c_3houma And continuing my massive art photography project as noted last week. (of course, the above is contingent on how much free time I have outside of work). -- "> I'm starting the course Same here! Let's see if I make it to the end of this Coursera course. That would be... the first one? -- "Want to team up and each make sure the other one stays on track? -- "I got enough motivation on my big-deal side project to get it started, got it started, then hit an issue: I'm working in a HURD* VM and don't have a browser set up in it, so I can't add my ssh key to GitHub to publish my code. The host OS is Windows so I don't really understand how I might file-share my key between the two. Fixing it is just a question of apt-get, but I decided at the point that I hit that problem it was a good place to park it, and will be dealing with that this week. Work: we've got two distinct products that solve two similar problems, and the goal in the short term is to turn those into a single product where we can sell one or both features. I've designed the capability configuration and explored its impact on the architecture, it's time to put that into practice. Additionally one of the teams I work with has failed to meet its delivery commitments for the last few sprints, and I'm investigating why with the people, putting changes in place, and communicating those changes around. And I seem to be involved in a few job interviews [we're hiring!](https://www.wealthwizards.com/careers/) *why? I want to use its model of message-sending for IPC. My thing is building an Erlang-style message passing model, but without doing all the threading in user space on a VM that is only supported by a couple of languages. If you can build your message-send function in C, then it can be used by anyone whose language includes a C FFI which is nearly everybody. I _think_, but do not know yet, that I can do the same on Protocol Buffers, and will investigate that once I've used Mach (which I understand better, i.e. at all) to express a solution to the problem. -- "I fixed the paragraph 1 issue by installing lynx in my HURD VM and adding the SSH key in the github UI. -- "For the next couple of weeks I'm going to continue to hack on the [Thymio](https://www.thymio.org/en:thymiospecifications), [Aseba](https://www.thymio.org/en:thymiosimulation), and [Jetson](http://www.nvidia.co.uk/object/jetson-tk1-embedded-dev-kit-uk.html) stuff I have for my Masters. I'm working with one other on an (academic) year long project to implement SLAM to map unfamiliar environments, and then use evolutionary algorithms to identify the best strategy to achieve various goals. Since the bot hardware is cheap and cheerful, the main challenges we're facing is developing any kind of useful SLAM output, and navigation through it. For simulating and developing improved strategies, the plan is to handoff to the Jetson strapped on top and use the GPGPU cores (OpenCL) to be quicker than the PIC device in the bot itself. -- "Cool projects. I don't know what SLAM is in this context. Turning it into a link would be helpful. -- "They probably are talking about [Simultaneous Localization and Mapping](https://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping) -- "Oh, OK. That makes sense. Thanks. -- "Making lots of progress toward stabilizing my [rust lock-free bw-tree](https://github.com/spacejam/sled)! Hopefully I'll have an alpha out soon :) The goal for the next week is to have stable disk utilization while under extreme contention and fragmentation. Now that crash testing and interleaving tests have teased out much of the low-hanging fruit, it will soon be time to turn my attention to dynamic instrumentation for teasing out exotic race conditions :] If anyone is curious about lock-free high performance stateful systems in rust, feel free to ping me, and I'd love to spend some time teaching potential collaborators. There are a ton of really juicy database features that I'd love to delegate to other people who are curious about learning how to build them! -- "One of the things on my bucket list for 2018 is creating a small project and let it have at least 1$ in revenue. Not profit, just revenue. I'm creating a list of some ideas but they all seem pretty bland and hard to monetize. Currently I'm pondering to do something with a tool to help schools to automate some things. This is the first time I'm doing something like this and I must admit it's harder than I imagined. At $work it's going to be a though week again, lots of things to do and unexpected issues will turn up again. I've been working there for almost 2years now and most weeks are still full of challenges. For reading, I'm planning to start with '1984'. -- "I would not recommend starting with an idea, however good it seems. I tried it, it doesn't work. It's much better to start with the right kind of *research* to find out what people will pay money for. This site has a lot of useful information: https://stackingthebricks.com -- "Sites like that recommend a course of action that really smells a lot like bait-and-switch to me. It might not be technically a crime depending on your jurisdiction / industry, but it doesn't seem particularly honest. -- "Whatever do you mean? -- "That one is actually the least like what I described in that particular niche, so I guess I sounded kinda dickish. Most those \"start a business\" information products are just instructions on pretending you have a bunch of products, and then somehow pulling the one that gets the most bites out of your ass in a month. I find the idea of advertising something I don't have and probably will never build extremely distasteful. -- "To be clear, I think it's _nothing_ like what you are describing, and it's unfortunate that you chose to make the first comment, possibly putting @kamme and others off having a look, and (by association) casting me in a negative light with talk of crime and dishonesty. Please take more care next time! -- "IIRC, the advice that startup factories like Y Combinator give on this issue is to identify something in a market segment that's already painful or just could be better. You pick something you understand pretty well first. Then, you figure out how it could be done better where you or other people would enjoy. Then, you might try a startup idea based on that. They or whoever it was that I read said this leads to success the most often. Double true if it stays within domains you have a lot of experience in so you'll avoid gotchas. The schools is a good example of it. The people who already are in schools or deal with their IT functions have a good idea of what will or won't fly in that market with buyers, teachers, etc. They're the best people to do a business in that area. They're also the best people to listen to if you want to get in it. -- "That's why I'm thinking about schools, I know quite a few teachers of various age groups and different social and economical levels. Every time we have a discussion about their work I will find a couple of things that could be improved. The hard part here would be sales. Schools are not known to be flexible and teachers often have no saying in purchases. This means I would have to target principals and administration, and this is not going to be easy to sell as they often have very tight budgets. I'm leaning towards doing 4 or 5 smaller projects this year and probably target different audiences for each. I know this will not be Y Combinator approved, it's an excersise to create a bit of a habit and learn different skill sets. -- "> This means I would have to target principals and administration Good point. Start reading up on their decision-making in acquisition. Talk to them a bit as a person that knows there's issues with current products looking to find ways to improve things for both them and teaches. You get it straight from the kind of people you'll be selling it to. You can also note what you've learned from teachers' problems for effectiveness. I'm sure you were already going to do that, though. If budgets are tight, maybe SaaS model with an upfront discount on licensing where you tell them you're just covering setup and support costs that year. This isn't my area of expertise, though. I just know they would want minimum transition cost and/or offset. Watch out for lock-in, too, of anything that's in an old system. \"I’m leaning towards doing 4 or 5 smaller projects this year and probably target different audiences for each. I know this will not be Y Combinator approved, it’s an excersise to create a bit of a habit and learn different skill sets.\" Oh yeah, I'm not saying go YC or anything. I was just saying experts warn to stay in stuff you have real-world experience with. Many looking for any money-making project make mistake of straying too far from that. You're not. It's good you're aiming for a few projects for self-improvement with possible financial gain a bonus. Good luck on that for sure. :) -- "I'm trying to build some small profitable services too, I've been finding it tough indeed (but I broke $1). -- "At work, I'm aiming to try my first patches to some of our Elixir components, which will be interesting. At home, I've been working on a series of blog posts about \"the everywhere computer,\" which is basically the idea of having your entire computer environment available anywhere, but _not_ by just relying on web apps or needing to `SSH` into a specific machine. My goal for the week is to get a miniseries on file systems in this space (currently IPFS, Minio, KeybaseFS, Perkeep, and Upspin) done enough that I can launch it with some confidence I can maintain a once-a-week post cycle, but we'll see. -- "Please post a link to those posts to one of these threads when they're up. It's an interesting area, and I can't be the only other person who'd like to know more about it. -- "You might find the [Nirvana Phone](https://lobste.rs/s/ybbj4d/nirvana_phone_demo_2010) interesting on the desktop-anywhere angle. For a whackier take, there's the person that [switched](https://www.networkworld.com/article/2223927/opensource-subnet/why-this-linux-user-is-now-using-windows-3-1.html) to Windows 3.1 on all devices to do photoshop on the cheap. -- "Last week, I made my first non-trivial program work! [libra](https://github.com/kori/libra) is a huge achievement for me, in many aspects. It's contributing to a project I love, it's learning how to do a bunch of stuff, it's feeling accomplished, all in one. This week, I'd like to work on its interface. It's still not very useable by other people, and considering it's made to be used by other people, that's still a bug! -- "I'm actively working on multi-core support for [theft](https://github.com/silentbicycle/theft) again. While I'm still integrating the code for shrinking failures, running individual tests parallelizes nicely: in some early/casual benchmarks, running 10,000 trials of a CPU-bound test on a 4-core system indeed runs ~4x as fast as before. Shrinking should also be well-suited to parallel exploration. Once that's working, I'll do more substantial benchmarking, on a system with 40 cores. It may be a couple more weeks before the next release, but in the time I've found for it, I'm making steady progress. Incidentally, taking an existing project and restructuring it so that individual units of work can be relocated to different processes, moved around a network, etc. is an interesting exercise. A lot of implicit decisions become explicit. Thinking about what actually needs to be passed along in messages to the next phases (rather than everything staying in-scope by default, due to sequential computational inertia) draws attention to implementation details hiding in plain sight. (This restructuring is also a bit tedious in C, because, well, _C isn't Erlang_. Pattern matching and tagged tuples would help a lot!) I started learning x86-64 assembly a couple weeks ago, and started doing [Project Euler](https://projecteuler.net/) for practice. I'm still only a couple problems in, because I've focused on better understanding details like the costs of different approaches. The early problems have just the right level of difficulty for useful self-study. It also gave me some context that was useful for Meltdown & Spectre-related investigations last week. Finally, I am working on a few submissions for the [IOCCC](https://ioccc.org). :D -- "Currently working on writing a quick character generator for Cryptomancer in rust followed by releasing a more genericized crate for anyone who wants to do quick character generation for their trpg of choice. Otherwise it's just setting up monitoring and backup scripts at work. -- "Working on an acoustic impact detector for industrial environments. Analyzes multiple mics at a time, and can configure particular audio signatures to violate on, based on various audio features. -- "Finding time to write down notes about things I've learned so I don't forget them over the years. Inspired partly by https://lobste.rs/s/lubstu/personal_wikis_lobsters_tale, but also trying to make myself a little more disciplined about it by making the notes public. Finished [the first one](https://tstearns.com/notes/2018/where-does-my-data-go.html) earlier this week, about methods to use traceroute etc. for determining where data goes across the globe, and the many difficulties involved. Then I plan to use some time on my 11hr LHR->SFO flight tomorrow to read some Lovecraft ([At the Mountains of Madness](https://en.m.wikisource.org/wiki/At_the_Mountains_of_Madness) in particular) which somehow I missed when I was younger. -- "At work, I'm focusing on getting more tickets handeled, and having an interesting time exploring our CRM tables Outside of work, I'm [learning Godot](https://twitter.com/yumaikas/status/953125972001411073). I've wanted to do game development as a hobby, and have done so for game jams in the past, but Godot seems to be the right mesh of a reasonable GUI editor that isn't as heavy as unity, and a scripting language that's fairly decent. Up until now I'd been using Love2D a for game Jams, so Godot's 2D toolkit has been an interesting change of pace. -- "Work: Checking out [Meson](http://mesonbuild.com/) to see if I can stop writing project files for all the systems I have to maintain, as I try to create a library to share with 3rd parties. I remain unconvinced, but perhaps. Any other multi-platform build file creation programs you recommend? Google's [gyp](https://gyp.gsrc.io/) and [GN](https://chromium.googlesource.com/chromium/src/tools/gn/) just seem like typical Google overkill. Home: Still hope to check out (pony)[https://www.ponylang.org], he says for like the 5th week in a row... -- "Made a new release and a brand new readme for https://github.com/dapphub/seth — our command-line tool for Ethereum. I also started playing around with \"planning\" — using old school STRIPS-style \"good old fashioned AI\" planners, as well as Ceptre & Celf to do planning in the form of linear logic solving — as part of some hobby research into user interfaces based on automatic plans. Finally I'm continuing thinking about smart contract language design. -- "Two approaches I found interesting when studying classic AI were [Procedural Reasoning System](https://en.wikipedia.org/wiki/Procedural_reasoning_system) and Firby's [Reactive, Action Packages](https://pdfs.semanticscholar.org/5792/db47b1a1300416e7019708dfcd891537a300.pdf). You might enjoy making some knockoff of them. -- "Thanks, I'll look into those! It's interesting how hard it is to even locate any working software implementing the paradigms of good old fashioned planning... -- "I don't know if that [well-understood phenomenon](https://en.wikipedia.org/wiki/AI_winter) is interesting or depressing given I was one with high hopes for it all. The job was just way harder than people thought. Our brains are really just amazing. :) Well, that's why it all got defunct. The availability part might have come from how so much was done in commercial/defunct LISP's, Prolog's, Poplog's, and other obscure stuff on odd machines or OS's. Then, just older stuff being hard to get a hold of in general. They used weirder tooling than most, though. -- "I've understood that there is an annual competition for automated planning. http://icaps-conference.org/index.php/Main/Competitions All the software seems pretty obscure, though! There are several numbered major versions of the PDDL action language, but it's nearly impossible to find implementations of any of them... With linear logic programming, it seems like quite a well-developed research topic, but the only implementations I've found are Celf and Ceptre, neither of which are really polished (and Celf's last commit was years ago)... -- "It's *really* interesting you said the competition because that was in me comment preediting to cut size. I originally wrote another trend in AI was that narrowly-focused AI tech that got really great stopped being called AI any more. The examples I had were computer vision and planning noting that the new sub-fields had their own conferences. They get obscure, too, when that happens. I recently saw the planners in conferences last year looking up where the field was at for a scheduling use-case. We have so many that perform well. Scheduling, esp timetabling, is such a big problem across the US you'd think the algorithms or FOSS solutions would get more attention. So, the obscurity on AI side makes sense to me given AI Winter and Narrow AI Is Not AI Effect. The part that's strange for me is operations side not utilizing them effectively. One more thing: the machine/deep learning side has a momentum going so strong it's redefined AI to mean that in minds of a lot of people. Quite a few AI majors I met at ML-focuses places didnt think traditional AI was even being developed any more. They *never saw it*. Silo effect from drowning out. -- "I've been working on a motion controller for a giant vertical pen plotter (with a work area that tops out at around 400m^2), and I had been trying to get everything working with a BeagleBoard Black, but last week I tried to bring up the board only to discover that BBB are a pain in the butt and there are undocumented restrictions on how certain pins on the board can be used. After all of the frustrations from last week, this week I've decided to scrap the BBB entirely and try to do a design with the ESP32, which I've been meaning to try out for a bit anyway. I finished the schematic yesterday, parts should be here by the end of the week and I can hopefully bring up the board and get some steppers stepping over the weekend! -- "At work I'm back-porting some changes to a patch release. Outside of work I created a Fast Fourier Transform visualization using a grid of Julia set fractals. The code is [on GitHub](https://github.com/jl2/jfft/) and there's a sample [video](https://vimeo.com/251273298). -- "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. _(Yes, today is not Monday but it seems most of the western world went back to work today so why not start our weekly thread here! First one of 2018 too!)_ -- "I intend to work on my personal finances application, which will basically be a software version of the system I have setup right now with a whiteboard. The only idea of this software is to be able to keep track of where your money is at right now, no advanced features like budgeting or so, because I don't need to do that extensively. I may, but I'm not sure, work on an extension for Chrom(e|ium) to be able to have calendar-like features in Workflowy. It's an idea I had while I read Getting Things Done. When I'm done with that book if I think it's a good idea I'll do it. -- "The part of my job that I'm least good at, though take non-least interest in, is people management, and I need to do that betterer. I manage a couple of devs so I'm going to pair with each of them this week to get more insight into how they work and how I can help. Out of work: I made a [big map](https://radar.thoughtworks.com/?sheetId=https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fd%2F1T-6iUYLm0OZ3ym3MKLGTrjNbkA-oaJYluQJWf6498uI%2Fedit%23gid%3D0) of my interests last year and will be chipping at something on there. Probably AROS, I made a small start at the weekend and enjoyed it. -- "Finally decided having a push-based masterless puppet setup was a bit silly, and am now switching it around to be a pull-based one. Yet more shell scripts to maintain, but at least it's less effort to push changes out across my nodes now. (Also had the bright idea to use bash to install puppet, then use puppet to setup the masterless puppet stuffs properly. Two stage bootstrap ftw.) Making plans for the next few weeks as well. Lots of DIY in the house to complete, and I've made decisions on a couple of things so I can stop stalling and just crack on with it. Also decided that ProjectBMW is going to be sold this year, and I want an MX-5 again. Maybe even an NC, although I still think they're the worse looking of all generations. -- "Outside of work: I've been moving into a new apartment and decorating it with help from family. I recently picked up a bunch of books for the Humble \"Be a Coder\" bundle that I'd like to work through and blog about, including some ones I've wanted to get for a long time, especially Land of Lisp., I'll be writing some retrospective articles on things I've done in 2017 in my various side projects, (the [first one]() talking about improving PISC performance is up, but I'd like to write one or two more). At work: This is about week 6 of my new job. I'm still learning a lot, and getting familiar with things, but things have been going well. -- "Looks like the link is incorrect: [This is the article I meant to link.](http://www.andy-rambles.com/post/PISC-Perf-2017/) -- "- A major Vue-based refactor at work, which has been a lot of fun. At the same time I'm a bit paranoid that I've been taking too long. If anyone can speak to dealing with that paranoia in healthy ways, it'd help me feel better! - Working exercise back into my life after a puzzling injury - it seemed like [De Quervain's Tenosynovitis](https://www.mayoclinic.org/diseases-conditions/de-quervains-tenosynovitis/symptoms-causes/syc-20371332) but it took three times as long for symptoms to ease up - Wedding planning -- "Some tips regarding feeling slow: - discuss solutions with coworkers - demo results for stakeholder often - break down work items before/during coding to get the feeling of checking items off the list - if it suits your work place: get your work into the main branch early & often, I really think it helps to balance the perfect (but slow) solution vs making tangible progress; it feels nice, and if the issue really drags out so that it needs to be aborted, there was a little bit of progress delivered I think it is mostly a communications issue. Usually the daily standups catches things that take too long, which should make team members want to help you in someway. Most of the time when I feel like that, it is remedied by talking to someone, or even rubber ducking. I am sure there are other tips if you google it a bit, good luck! -- "Thank you! -- "I'm trying to properly set up my current emacs nearly 3 year old hacked-together configuration. I've got mail working, and still have to figure out how to make some editing operations more intuitive (like wrapping _n_ statements in c-mode with a if/while). I tried helm, but it just doesn't seem like it's worth the effort, especially when it pops up it places I'd rather it not, like magit. Other than that, I've been contemplating about switching to Debian stable from Void on my Thinkpad X41, and I've been playing around with pandoc 2.X. The new groff output mode is great, I really appreciate that they're added it. -- "What's your current solution for mail? I really want to use Emacs for that but I personally do not want to give up the IMAP idle mechanism from thunderbird, hence I am still using that while the volume of incoming mail is somewhat low. -- "Currently a rather standard mbsync+mu+mu4e setup. But I do currently have to (and want to) manually updates my inbox, so I'm not sure if my setup would be what you are looking for. -- "Ah I see. Yes, unfortunately it looks like that. Still, I am always glad to see others talking about emacs. It prompted me to finally submit two tiny changes to two projects that have annoyed me for quite some time now. -- "for a food: migrating proxmox lxc to openstack, troubleshooting micromonolith, writing ansible and docker compose as usual for fun: assembling armhf kernels for c.h.i.p/dreamcatcher and bumping some versions here and there -- "Finish a system which makes RSS feeds from release versions, with Wikipedia as source. This gives me a single place to keep track of things I need to keep track of for work, without getting too much noise. Works pretty well for things as git, Kibana, or Ruby. Not so much for very small projects which don't have a Wikipedia page :) Mostly done, needs a few things still: https://verssion.one and/or my github. After that the next side project to keep me distracted from real work... -- "I plan to do something like this (track software updates), but I would directly scrap software websites or CVS web interfaces (e.g. fetch git tags on cgit) instead of relying on Wikipedia, to get instant updates. I wonder how package maintainers (or Wikipedia contributors) are dealing with this because few pieces of software have an RSS feed for updates. By the way, to have a *user-friendly* way to privately scrap websites (elements of pages, text files, etc...) automatically for all kind of updates would be awesome. I know someone that uses a piece of proprietary software that is not so nice for that matter. -- "I've been mentally designing a 'good' way to do this for some time. It's very hard if you care about edge cases, but not so bad if you don't. I'll do a show-post here if I ever get it going nicely. -- "Going to the sites directly makes it really hard to filter out betas and other unstable releases. Even the github \"releases\" page don't help much here; it also happy lists the -pre1 releases. Regexp-ing version numbers is also less easy than it looks (192.168.1.1 looks like a perfectly fine number), so you would need to twiddle for each and every software project, definiing a source, what a version looks like, and how unstable versions work, and keep them up to date. On top of that there is Vim, which releases a new stable(!) version every 4 hours or so. :) I had a look at all that, and at what is available on wikipedia. I choose to use wikipedia, since it's Good Enough IMHO. And as a bonus it helps keep wikipedia up to date! -- "You might have luck with scraping gem repositories for version numbers. Could be a bit more straightforward too. -- "I still have this week off, since lectures do not start until next week. Still, there are still some assignments left, that I will need to work on in the remainder of the week. I /just/ finished [writing a recap of my year](https://jnboehm.com/post/short-review-2017/). I thought that if I don't do it this week (today) I would not get around to it. The super quick summary is that I got my Bachelor's last September and moved twice in the last year. I really want to work on a project in Rust and even have an idea for it. I would really like something like isync but that is also able to handle IMAP idle. I guess offlineimap could be used but I most times it is discussed someone is complaining about the code quality of it... -- "Changed email providers yesterday, from fastmail to posteo. I had to set up a bit of email redirection to be able to support my custom domain name, but I'm happy with my setup. I still need to finish setting up smtp for mutt (I'm using offlineimap for imap). I also want to finish setting up Quake 2 on OpenBSD, so I can join gaming sessions with the nice people on bsd.network. Non-Tech related it's the last day of the christmas camp tomorrow in my mogul skiing club, so I'm going to be doing video that I will upload to a self hosted nextcloud app that I'm using to share my student's videos with them. On friday and saturday I will be doing an Advanced Teaching Module as preparation for my level 3 ski instructor exam in february. -- "Changed email providers yesterday, from fastmail to posteo. I had to set up a bit of email redirection to be able to support my custom domain name, but I'm happy with my setup. I still need to finish setting up smtp for mutt (I'm using offlineimap for imap). I also want to finish setting up Quake 2 on OpenBSD, so I can join gaming sessions with the nice people on bsd.network. Non-Tech related it's the last day of the christmas camp tomorrow in my mogul skiing club, so I'm going to be doing video that I will upload to a self hosted nextcloud app that I'm using to share my student's videos with them. On friday and saturday I will be doing an Advanced Teaching Module as preparation for my level 3 ski instructor exam in february. -- "Writing a blog post that attempts to answer the question \"how much can you trust benchmark results from cloud-CI pipelines like Travis?\" (eg. as suggested by [this post by BeachApe](https://beachape.com/blog/2016/11/02/rust-performance-testing-on-travis-ci/)). Intuitively, you might think \"not much\". Well, it turns out the answer is... \"not much\" - but I have numbers to prove it. Benchmark results from Travis-CI are substantially noisier than equivalent benchmarks taken from a regular desktop PC. Disappointingly obvious, but it's nice to put some data behind the intuitive answer anyway. It does get me thinking about whether a sufficiently-smart benchmark harness (potentially some future version of [Criterion.rs](https://github.com/japaric/criterion.rs), the Rust benchmarking library that I maintain) could mitigate the effects of this noise and give reliable-ish numbers even in a cloud-CI environment though. -- "Via: https://codewithoutrules.com/2017/12/01/interview-lynne-tye/ How do you find a job with work/life balance? Most companies won’t tell you “we want you to work long hours” on their careers page, it’s hard to ask, and it’s not like you can go to a job board and search for work/life balance. Until now, that is. Key Values is a newly launched site that lets you filter jobs by values. Instead of the standard boring “at X we’re passionate about doing Y with technology stack Z” (more on that below), you can search by the things that make a job work or not work for you. That might mean work/life balance, but you can also search for companies that are good for junior devs, or have a flat organization. Different people have different values, and Key Values reflects that. It’s still early days, so there aren’t a huge number of jobs yet, but I love the concept and wanted to hear more. So I got in touch with Lynne Tye, the creator of Key Values, to hear how she ended up creating such a different, and useful, approach to hiring. Q. Could you share your background with our readers, how you became a programmer? LYNNE: I studied brain and cognitive sciences at MIT, then went into a PhD program in neuroscience at UCSF. Two years in, I realized it wasn’t for me, and I dropped out. Then I had a couple of odd jobs while I was soul searching, and a few months later I started working at Homejoy, as an operations manager for the Bay Area, a people manager. While I was working at Homejoy, I noticed how powerful the engineers were. They could make so much impact with just one line of code, and I always felt frustrated when I needed them to fix a small bug that was making my life a nightmare. What I was doing just wasn’t as scalable, like having lots of 1-on-1 meetings. So after Homejoy, I decided I wanted to learn how to code. Q. What did you learn from your experience before starting Key Values? LYNNE: Scientific academia is one of the few industries where there’s a master/apprentice relationship, a very clear structure of mentorship. I think that the way you view relationships, the way you make decisions about joining labs is based on the idea of working relationships that need to be as compatible and symbiotic as possible. A lot of times these mentors stay with you your whole life [like family], your mentor’s mentor is your “grandfather”. I noticed this was lacking when I started doing web development. After grad school, I was feeling pretty lost and really wasn’t sure what I wanted to do with my life. I had basically been laser focused on becoming an academic professor and research scientist for the last 6 years and hadn’t once looked up to consider a different career. One of the main frustrations I had with research was how slow it was, and slow it was to get feedback. The environment at Homejoy gave me all of that. It was intense, exciting, fast-paced, and there was constantly feedback from all directions. At the time, it was my dream job. And I think it just also made me realize that it wasn’t for everyone, but it was perfect for me. It made me realize that everyone has their own set of personal values/goals and it’s so important to find work that aligns with those. Q. Doesn’t sound like there was much work/life balance at Homejoy. LYNNE: Hahaha, there definitely wasn’t. But, I didn’t want work/life balance! When I left grad school, I genuinely thought work/life balance was a proxy for laziness, or a lack of passion. Of course, after grinding it out at Homejoy for a year and a half, I burned out quite a bit. Afterwards, I wanted work/life balance for the first time. And I found it in the lifestyle I had as a web freelancer. Ironically, after a couple of years of having so much work/life balance, I started to miss the excitement and sense of urgency of working a lot. That’s where I am now: I’d feel a little sad if I was on a team and the only one working past 6pm or 7pm. All of this sharpened my views on finding a new career: you need to know what you want, and you should be picky and demanding when you’re evaluating your options. Q. As an operations manager at Homejoy you did some of the hiring. What did you look for? LYNNE: It’s funny to look back at it. I didn’t have the language at the time, I didn’t have the framework or language to say what we were. And hiring was so new to me, I didn’t have any experience with it, I hadn’t really articulated the actual values we had. It was very [intense], we were not shy about it. Everyone worked really late, really early, and on weekends.it felt really exciting, and I don’t think anyone felt like it was work. We all enjoyed spending lots of time together and had all decided we were willing to make that commitment. At the time, I think I was always looking to hire people similar to the existing team. Q. It seems many companies can’t articulate what they want? LYNNE: They can’t. Many employers and job seekers have not taken the time to evaluate who they are, where they’re trying to go in terms of culture, and how that impacts hiring. I view my job as helping teams articulate values. And not only helping them articulate them and write them, but also to challenge them, asking whether they’re translating them into actions, or whether they’re things they just write on their website or on their walls. Q. One my pet peeves in hiring is the focus on particular technologies. Why do you think hiring managers focus on this so much? LYNNE: In general I think that job descriptions and the way that people are approaching recruiting and sourcing is outdated, given how much information we all have access to now. Previously it was harder to get information about different employment opportunities, so the biggest differentiators were salary, and do you have experience with hard skills we need today. As time has gone by these things are still important, but people have the ability to compare more teams and have more information to compare them by, and job descriptions haven’t reflected this change. Software development has changed over the years. I can’t speak from experience, but it’s easier to build things today than it was 20 years. The ability to learn technologies, it wasn’t the same conversation it was 20 years ago. I don’t think it makes sense anymore to talk about experience with a particular technology. Some companies are happy to have people learn on the job, but people just follow the [job posting] template everyone uses: Generic part about what the company does. Generic part about how much you’ll learn, how much fun it is, how much impact you’ll make. Bullet point with requirements, experience with X, Y, Z technology. And then another set of bullet points about benefits and perks, and not-so-compelling reasons to join the company. Q. Which brings us to Key Values, where you’re trying to do things differently. What exactly does Key Values do? LYNNE: I try to help job seekers find teams that share their values. Q. How did you come up with these values? LYNNE: I interviewed dozens and dozens of engineers. I noticed it’s challenging for people to articulate or identify what they care about most. And I noticed that as people were telling me what they were looking for, it came with a story about a previous experience they had where their job didn’t have that value, and that brought to light why that was so important them. After interviewing lots of engineers, I spent time thinking about values, and phrasing them in ways where they would apply to many teams, but not every team. For example, had I had “Mission driven” every single team would have selected it, and it wouldn’t help people differentiate between different teams. And I didn’t want to include values that were specific to one, or even zero teams. It was about striking the balance between those two extremes. Q. How do you figure out what values the companies have? LYNNE: Initially, I thought it would be more like research, I wanted to interview every engineer on the team, provide statistics. But I realized it’s not scalable, and I didn’t want to force teams to share information they weren’t comfortable sharing. You’ll never find a team that says “we never eat lunch together, we’re not friends, we’re really not social here” or “we have terrible code quality here.” By limiting how many values [a team can choose] it tells you what they prioritize. Being limited and being forced to rank [the values they choose] is very informative, it discloses a lot of information implicitly. Q. On your website you have job listings with these values, and you share with them with world. What can tell you from your data about what engineers care about? LYNNE: The two things visitors pick most are work/life balance and high quality code base. This is both surprising and not surprising at all. [Next is] “remote ok”, although that is is a property, not a value, and I think that makes sense since I still don’t have that many team profiles on Key Values yet. I also think developers are more and more interested in remote opportunities. Close to that are “flexible work arrangements”, “team is diverse”. To me, these are an indication of what engineers are not getting at their current jobs. Q. Why is Key Values the only job board that lets you search based on work/life balance? LYNNE: I don’t think previously there was a way for teams to truthfully tell whether the team really cared. By having a limited list [of values], and priorities, it lets you see who doesn’t prioritize it, otherwise I think most companies wouldn’t volunteer that information. How would you ask? If you poll companies, I can’t imagine any of them wanting to publicly state that they don’t. At the end of the day, how you define work/life balance has implications, it’s difficult to categorize these things. Anyone who is reading about it, or talking about, it’s pretty divisive and polarizing. Some people think if you work more than 40 hours a week you don’t have work/life balance, but I would disagree. My goal is to give companies a chance to tell us how they interpret work/life balance, and expose people to different definitions of that term. Q. What does a sane workweek mean to you? LYNNE: A sane workweek to me wouldn’t be a good description, I’d say i’m looking for a sane work month. I love working, I consider myself pretty industrious, but the flexibility to decide when I work is more important. Sometimes I want to work a ridiculous amount one week, and then take a few days off, maybe have a long weekend. And that’s just in terms of when I’m working, and how much. In general I don’t believe in 40 hours a week, because I don’t operate that way. I don’t have as regular of a schedule, and would 100% rather work 60 hours a week if I could decide when and where I can work, as opposed to a 9-5 at the same physical place with no flexibility. I’d feel much more suffocated with the latter. In terms of a relationship with an employer, I think the most important thing to me is working someplace where they genuinely support and show interest in other aspects of my life. And that they share some of their priorities in life with me. [The means] having a network of people around you who understand who you are as a whole and support all of you, For me, it means a lot to not just talk about work at work, but to really interact with one another as friends too. I know for sure that this isn’t true for everyone, but I prefer to blur the boundary between professional and personal. I don’t like having complete work/life separation. ❧ OK, back to Itamar here: that was my interview, and now I’d like to ask for your help. Key Values is as far as I know the only place where you can search for jobs with work/life balance, or other values you may care about. That’s hugely valuable, and so I want to see Lynne’s project succeed. If you agree, here’s what you can do: Is your company hiring? Get in touch with Lynne and get your company listed. Are you looking for a job, or plan to look for one in the future? Go visit Key Values and sign up for the newsletter: the more people use the site, the easier it’ll be for Lynne to get more companies on board. You shouldn't have to work evenings or weekends to succeed as a software engineer. Get to a better place by reading The Programmer's Guide to a Sane Workweek. You might also enjoy: -- "Via: https://www.eff.org/deeplinks/2017/10/drms-dead-canary-how-we-just-lost-web-what-we-learned-it-and-what-we-need-do-next EFF has been fighting against DRM and the laws behind it for a decade and a half, intervening in the US Broadcast Flag, the UN Broadcasting Treaty, the European DVB CPCM standard, the W3C EME standard and many other skirmishes, battles and even wars over the years. With that long history behind us, there are two things we want you to know about DRM: Everybody on the inside secretly knows that DRM technology is irrelevant, but DRM law is everything; and The reason companies want DRM has nothing to do with copyright. These two points have just been demonstrated in a messy, drawn-out fight over the standardization of DRM in browsers, and since we threw a lot of blood and treasure at that fight, one thing we hope to salvage is an object lesson that will drive these two points home and provide a roadmap for the future of DRM fighting. Here's how DRM works, at a high level: a company wants to provide a customer (you) with digital asset (like a movie, a book, a song, a video game or an app), but they want to control what you do with that file after you get it. So they encrypt the file. We love encryption. Encryption works. With relatively little effort, anyone can scramble a file so well that no one will ever be able to decrypt it unless they're provided with the key. Let's say this is Netflix. They send you a movie that's been scrambled and they want to be sure you can't save it and watch it later from your hard-drive. But they also need to give you a way to view the movie, too. At some point, that means unscrambling the movie. And there's only one way to unscramble a file that's been competently encrypted: you have to use the key. So Netflix also gives you the unscrambling key. But if you have the key, you can just unscramble the Netflix movies and save them to your hard drive. How can Netflix give you the key but control how you use it? Netflix has to hide the key, somewhere on your computer, like in a browser extension or an app. This is where the technological bankruptcy comes in. Hiding something well is hard. Hiding something well in a piece of equipment that you give to your adversary to take away with them and do anything they want with is impossible. Maybe you can't find the keys that Netflix hid in your browser. But someone can: a bored grad student with a free weekend, a self-taught genius decapping a chip in their basement, a competitor with a full-service lab. One tiny flaw in any part of the fragile wrapping around these keys, and they're free. And once that flaw is exposed, anyone can write an app or a browser plugin that does have a save button. It's game over for the DRM technology. (The keys escape pretty regularly, just as fast as they can be revoked by the DRM companies.) DRM gets made over the course of years, by skilled engineers, at a cost of millions of dollars. It gets broken in days, by teenagers, with hobbyist equipment. That's not because the DRM-makers are stupid, it's because they're doing something stupid. Which is where the law comes in. DRM law gives rightsholders more forceful, far-ranging legal powers than laws governing any other kind of technology. In 1998, Congress passed the Digital Millennium Copyright Act (DMCA), whose Section 1201 provides for felony liability for anyone commercially engaged in bypassing a DRM system: 5 years in prison and a $500,000 fine for a first offense. Even noncommercial bypass of DRM is subject to liability. It also makes it legally risky to even talk about how to bypass a DRM system. So the law shores up DRM systems with a broad range of threats. If Netflix designs a video player that won't save a video unless you break some DRM, they now have the right to sue -- or sic the police -- on any rival that rolls out an improved alternative streaming client, or a video-recorder that works with Netflix. Such tools wouldn't violate copyright law any more than a VCR or a Tivo does, but because that recorder would have to break Netflix DRM, they could use DRM law to crush it. DRM law goes beyond mere bans on tampering with DRM. Companies also use Section 1201 of the DMCA to threaten security researchers who discover flaws in their products. The law becomes a weapon they can aim at anyone who wants to warn their customers (still you) that the products you're relying on aren't fit for use. That includes warning people about flaws in DRM that expose them to being hacked. It's not just the USA and not just the DMCA, either. The US Trade Representative has \"convinced\" countries around the world to adopt a version of this rule. DRM law has the power to do untold harm. Because it affords corporations the power to control the use of their products after sale, the power to decide who can compete with them and under what circumstances, and even who gets to warn people about defective products, DRM laws represent a powerful temptation. Some things that aren't copyright infringement: buying a DVD while you're on holiday and playing it when you get home. It is obviously not a copyright infringement to go into a store in (say) New Delhi and buy a DVD and bring it home to (say) Topeka. The rightsholder made their movie, sold it to the retailer, and you paid the retailer the asking price. This is the opposite of copyright infringement. That's paying for works on the terms set by the rightsholder. But because DRM stops you from playing out-of-region discs on your home player, the studios can invoke copyright law to decide where you can consume the copyrighted works you've bought, fair and square. Other not-infringements: fixing your car (GM uses DRM to control who can diagnose an engine, and to force mechanics to spend tens of thousands of dollars for diagnostic information they could otherwise determine themselves or obtain from third parties); refilling an ink cartridge (HP pushed out a fake security update that added DRM to millions of inkjet printers so that they'd refuse remanufactured or third-party cartridges), or toasting home-made bread (though this hasn't happened yet, there's no reason that a company couldn't put DRM in its toasters to control whose bread you can use). It's also not a copyright infringement to watch Netflix in a browser that Netflix hasn't approved. It's not a copyright infringement to record a Netflix movie to watch later. It's not a copyright infringement to feed a Netflix video to an algorithm that can warn you about upcoming strobe effects that can trigger life-threatening seizures in people with photosensitive epilepsy. WHICH BRINGS US TO THE W3C The W3C is the world's foremost open web standards body, a consortium whose members (companies, universities, government agencies, civil society groups and others) engage in protracted wrangles over the best way for everyone to deliver web content. They produce \"recommendations\" (W3C-speak for \"standards\") that form the invisible struts that hold up the web. These agreements, produced through patient negotiation and compromise, represent an agreement by major stakeholders about the best (or least-worst) way to solve thorny technological problems. In 2013, Netflix and a few other media companies convinced the W3C to start work on a DRM system for the web. This DRM system, Encrypted Media Extensions (EME), represented a sharp departure from the W3C's normal business. First, EME would not be a complete standard: the organization would specify an API through which publishers and browser vendors would make DRM work, but the actual \"content decryption module\" (CDM) wouldn't be defined by the standard. That means that EME was a standard in name only: if you started a browser company and followed all the W3C's recommendations, you still wouldn't be able to play back a Netflix video. For that, you'd need Netflix's permission. It's hard to overstate how weird this is. Web standards are about \"permissionless interoperability.\" The standards for formatting text mean that anyone can make a tool that can show you pages from the New York Times' website; images from Getty; or interactive charts on Bloomberg. The companies can still decide who can see which pages on their websites (by deciding who gets a password and which parts of the website each password unlocks), but they don't get to decide who can make the web browsing program you type the password into in order to access the website. A web in which every publisher gets to pick and choose which browsers you can use to visit their sites is a very different one from the historical web. Historically, anyone could make a new browser by making sure it adhered to W3C recommendations, and then start to compete. And while the web has always been dominated by a few browsers, which browsers dominate have changed every decade or so, as new companies and even nonprofits like Mozilla (who make Firefox) overthrew the old order. Technologies that have stood in the way of this permissionless interoperabilty -- for instance, patent-encumbered video -- have been seen as impediments to the idea of the open web, not standardization opportunities. When the W3C starts making technologies that only work when they're blessed by a handful of entertainment companies, they're putting their thumbs -- their fists -- on the scales in favor of ensuring that the current browser giants get to enjoy a permanent reign. But that's the least of it. Until EME, W3C standards were designed to give the users of the web (e.g. you) more control over what your computer did while you were accessing other peoples' websites. With EME -- and for the first time ever -- the W3C is designing technology that takes away your control. EME is designed to allow Netflix -- and other big companies -- to decide what your browser does, even (especially) when you disagree about what that should be. Since the earliest days of computing, there's been a simmering debate about whether computers exist to control their users, or vice versa (as the visionary computer scientist and education specialist Seymour Papert put it, \"children should be programming the computer rather than being programmed by it\" -- that applies equally well to adults). Every W3C standard until 2017 was on the side of people controlling computers. EME breaks with that. It is a subtle, but profound shift. WHY WOULD THE W3C DO THIS? Ay yi yi. That is the three billion user question. The W3C version of the story goes something like this. The rise of apps has weakened the web. In the pre-app days, the web was the only game in town, so companies had to play by web rules: open standards, open web. But now that apps exist and nearly everyone uses them, big companies can boycott the web, forcing their users into apps instead. That just accelerates the rise of apps, and weakens the web even more. Apps are used to implement DRM, so DRM-using companies are moving to apps. To keep entertainment companies from killing the web outright, the Web must have DRM too. Even if those companies don't abandon the web altogether, continues this argument, getting them to make their DRM at the W3C is better than letting them make it on an ad-hoc basis. Left to their own devices, they could make DRM that made no accommodations for people with disabilities, and without the W3C's moderating influence, these companies would make DRM that would be hugely invasive of web users' privacy. The argument ends with a broad justification for DRM: companies have the right to protect their copyrights. We can't expect an organization to spend fortunes creating or licensing movies and then distribute them in a way that lets anyone copy and share them. We think that these arguments don't hold much water. The web does indeed lack some of its earlier only-game-in-town muscle, but the reality is that companies make money by going where their customers are, and every potential customer has a browser, while only existing customers have a company's apps. The more hoops a person has to jump through in order to become your customer, the fewer customers you'll have. Netflix is in a hyper-competitive market with tons of new entrants (e.g. Disney), and being \"that streaming service you can't use on the web\" is a serious deficit. We also think that the media companies and tech companies would struggle to arrive at a standard for DRM outside of the W3C, even a really terrible one. We've spent a lot of time in the smoke-filled rooms of DRM standardization and the core dynamic there is the media companies demanding full-on lockdown for every frame of video, and tech companies insisting that the best anyone can hope for is an ineffectual \"speed-bump\" that they hope will mollify the media companies. Often as not, these negotiations collapse under their own weight. Then there's the matter of patents: companies that think DRM is a good idea also love software patents, and the result is an impenetrable thicket of patents that make getting anything done next to impossible. The W3C's patent-pooling mechanism (which is uniquely comprehensive in the standards world and stands as an example of the best way to do this sort of thing) was essential to making DRM standardization possible. What's more, there are key players in the DRM world, like Adobe, who hold significant patent portfolios but are playing an ever-dwindling role in the world of DRM (the avowed goal of EME was to \"kill Flash\"). If the companies involved had to all sit down and negotiate a new patent deal without the W3C's framework, any of these companies could \"turn troll\" and insist that all the rest would have to shell out big dollars to license their patents -- they have nothing to lose by threatening the entire enterprise, and everything to gain from even a minuscule per-user royalty for something that will be rolled out into three billion browsers. Finally, there's no indication that EME had anything to do with protecting legitimate business interests. Streaming video services like Netflix rely on customers to subscribe to a whole library with constantly added new materials and a recommendation engine to help them navigate the catalog. DRM for streaming video is all about preventing competition, not protecting copyrights. The purpose of DRM is to give companies the legal tools to prevent activities that would otherwise be allowed. The DRM part doesn't have to \"work\" (in the sense of preventing copyright infringement) so long as it allows for the invocation of the DMCA. To see how true this is, just look at Widevine, Google's version of EME. Google bought the company that made Widevine in 2010, but it wasn't until 2016 that an independent researcher actually took a close look at how well it prevented videos from leaking. That researcher, David Livshits found that Widevine was trivial to circumvent, and it had been since its inception, and that the errors that made Widevine so ineffective were obvious to even a cursory examination. If the millions of dollars and the high-power personnel committed to EME were allocated to create a technology that would effectively prevent copyright infringement, then you'd think that Netflix or one of the other media companies in the negotiations would have diverted some of those resources to a quick audit to make sure that the stuff actually worked as advertised. (Funny story: Livshits is an Israeli at Ben Gurion University, and Israel happens to be the rare country that doesn't ban breaking DRM, meaning that Israelis are among the only people who can do this kind of research without fear of legal retaliation) But the biggest proof that EME was just a means to shut down legitimate competitors -- and not an effort to protect copyright -- is what happened next. A CONTROLLED EXPERIMENT When EFF joined the W3C, our opening bid was \"Don't make DRM.\" We put the case to the organization, describing the way that DRM interferes with the important copyright exceptions (like those that allow people to record and remix copyrighted works for critical or transformative purposes) and the myriad problems presented by the DMCA and laws like it around the world. The executive team of the W3C basically dismissed all arguments about fair use and user rights in copyright as a kind of unfortunate casualty of the need to keep Netflix from ditching the web in favor of apps, and as for the DMCA, they said that they couldn't do anything about this crazy law, but they were sure that the W3C's members were not interested in abusing the DMCA, they just wanted to keep their high-value movies from being shared on the internet. So we changed tack, and proposed a kind of \"controlled experiment\" to find out what the DRM fans at the W3C were trying to accomplish. The W3C is a consensus body: it makes standards by getting everyone in a room to compromise, moving toward a position that everyone can live with. Our ideal world was \"No DRM at the W3C,\" and DRM is a bad enough idea that it was hard to imagine much of a compromise from there. But after listening closely to the DRM side's disavowals of DMCA abuse, we thought we could find something that would represent an improvement on the current status quo and that should fit with their stated views. We proposed a kind of DRM non-aggression pact, through which W3C members would promise that they'd only sue people under laws like DMCA 1201 if there was some other law that had been broken. So if someone violates your copyright, or incites someone to violate your copyright, or interferes with your contracts with your users, or misappropriates your trade secrets, or counterfeits your trademarks, or does anything else that violates your legal rights, you can throw the book at them. But if someone goes around your DRM and doesn't violate any other laws, the non-aggression pact means that you couldn't use the W3C standardised DRM as a route to legally shut them down. That would protect security researchers, it would protect people analyzing video to add subtitles and other assistive features, it would protect archivists who had the legal right to make copies, and it would protect people making new browsers. If all you care about is making an effective technology that prevents lawbreaking, this agreement should be a no-brainer. For starters, if you think DRM is an effective technology, it shouldn't matter if it's illegal to criticize it. And since the nonaggression pact kept all other legal rights intact, there was no risk that agreeing to it would allow someone to break the law with impunity. Anyone who violated copyrights (or any other rights) would be square in the DMCA's crosshairs, and companies would have their finger on the trigger. NOT SURPRISED BUT STILL DISAPPOINTED Of course, they hated this idea. The studios, the DRM vendors and the large corporate members of the W3C participated in a desultory, brief \"negotiation\" before voting to terminate further discussion and press on. The W3C executive helped them dodge discussions, chartering further work on EME without any parallel work on protecting the open web, even as opposition within the W3C mounted. By the time the dust settled, EME was published after the most divided votes the W3C had ever seen, with the W3C executive unilaterally declaring that issues for security research, accessibility, archiving and innovation had been dealt with as much as they could be (despite the fact that literally nothing binding was done about any of these things). The \"consensus\" process of the W3C has so thoroughly hijacked that EME's publication was only supported by 58% of the members who voted in the final poll, and many of those members expressed regret that they were cornered into voting for something they objected to. When the W3C executive declared that any protections for the open web were incompatible with the desires of the DRM-boosters, it was a kind of ironic vindication. After all, this is where we'd started, with EFF insisting that DRM wasn't compatible with security disclosures, with accessibility, with archiving or innovation. Now, it seemed, everyone agreed. What's more, they all implicitly agreed that DRM wasn't about protecting copyright. It was about using copyright to seize other rights, like the right to decide who could criticize your product -- or compete with it. DRM's sham cryptography means that it only works if you're not allowed to know about its defects. This proposition was conclusively proved when a W3C member proposed that the Consortium should protect disclosures that affected EME's \"privacy sandbox\" and opened users to invasive spying, and within minutes, Netflix's representative said that even this was not worth considering. In a twisted way, Netflix was right. DRM is so fragile, so incoherent, that it is simply incompatible with the norms of the marketplace and science, in which anyone is free to describe their truthful discoveries, even if they frustrate a giant company's commercial aspirations. The W3C tacitly admitted this when they tried to convene a discussion group to come up with some nonbinding guidelines for when EME-using companies should use the power of DRM law to punish their critics and when they should permit the criticism. \"RESPONSIBLE DISCLOSURE\" ON OUR TERMS, OR JAIL They called this \"responsible disclosure,\" but it was far from the kinds of \"responsible disclosure\" we see today. In current practice, companies offer security researchers enticements to disclose their discoveries to vendors before going public. These enticements range from bug-bounty programs that pay out cash, to leaderboards that provide glory to the best researchers, to binding promises to act on disclosures in a timely way, rather than crossing their fingers, sitting on the newly discovered defects, and hoping no one else re-discovers them and exploits them. The tension between independent security researchers and corporations is as old as computing itself. Computers are hard to secure, thanks to their complexity. Perfection is elusive. Keeping the users of networked computers safe requires constant evaluation and disclosure, so that vendors can fix their bugs and users can make informed decisions about which systems are safe enough to use. But companies aren't always the best stewards of bad news about their own products. As researchers have discovered -- the hard way -- telling a company about its mistakes may be the polite thing to do, but it's very risky behavior, apt to get you threatened with legal reprisals if you go public. Many's the researcher who told a company about a bug, only to have the company sit on that news for an intolerably long time, putting its users at risk. Often, these bugs only come to light when they are independently discovered by bad actors, who figure out how to exploit them, turning them into attacks that compromise millions of users, so many that the bug's existence can no longer be swept under the rug. As the research world grew more gunshy about talking to companies, companies were forced to make real, binding assurances that they would honor the researchers' discoveries by taking swift action in a defined period, by promising not to threaten researchers over presenting their findings, and even by bidding for researchers' trust with cash bounties. Over the years, the situation has improved, with most big companies offering some kind of disclosure program. But the reason companies offer those bounties and assurances is that they have no choice. Telling the truth about defective products is not illegal, so researchers who discover those truths are under no obligation to play by companies' rules. That forces companies to demonstrate their goodwill with good conduct, binding promises and pot-sweeteners. Companies definitely want to be able to decide who can tell the truth about their products and when. We know that because when they get the chance to flex that muscle, they flex it. We know it because they said so at the W3C. We know it because they demanded that they get that right as part of the DRM package in EME. Of all the lows in the W3C DRM process, the most shocking was when the historic defenders of the open web tried to turn an effort to protect the rights of researchers to warn billions of people about harmful defects in their browsers into an effort to advise companies on when they should hold off on exercising that right -- a right they wouldn’t have without the W3C making DRM for the web. From the first days of the DRM fight at the W3C, we understood that the DRM vendors and the media companies they supplied weren't there to protect copyright, they were there to grab legally enforceable non-copyright privileges. We also knew that DRM was incompatible with security research: because DRM relies on obfuscation, anyone who documents how DRM works also makes it stop working. This is especially clear in terms of what wasn't said at the W3C: when we proposed that people should be able to break DRM to generate subtitles or conduct security audits, the arguments were always about whether that was acceptable, but it was never about whether it was possible. Recall that EME is supposed to be a system that helps companies ensure that their movies aren't saved to their users' hard-drives and shared around the internet. For this to work, it should be, you know, hard to do that. But in every discussion of when people should be allowed to break EME, it was always a given that anyone who wanted to could do so. After all, when you hide secrets in software you give to people who you want to keep them secret from, you are probably going to be disappointed. From day one, we understood that we would arrive at a point in which the DRM advocates at the W3C would be obliged to admit that the survival of their plan relied on being able to silence people who examined their products. However, we did hold out hope that when this became clear to everyone, that they would understand that DRM couldn't peacefully co-exist with the open web. We were wrong. THE W3C IS THE CANARY IN THE COALMINE The success of DRM at the W3C is a parable about market concentration and the precarity of the open web. Hundreds of security researchers lobbied the W3C to protect their work, UNESCO publicly condemned the extension of DRM to the web, and the many crypto-currency members of the W3C warned that using browsers for secure, high-stakes applications like moving around peoples' life-savings could only happen if browsers were subjected to the same security investigations as every other technology in our life (except DRM technologies). There is no shortage of businesses that want to be able to control what their customers and competitors do with their products. When the US Copyright Office held hearings on DRM in 2015, they heard about DRM in medical implants and cars, farm equipment and voting machines. Companies have discovered that adding DRM to their products is the most robust way to control the marketplace, a cheap and reliable way to convert commercial preferences about who can repair, improve, and supply their products into legally enforceable rights. The marketplace harms from this anti-competitive behavior are easy to see. For example, the aggressive use of DRM to prevent independent repair shops ends up diverting tons of e-waste to landfill or recycling, at the cost of local economies and the ability of people to get full use out of your property. A phone that you recycle instead of repairing is a phone you have to pay to replace -- and repair creates many more jobs than recycling (recycling a ton of e-waste creates 15 jobs; repairing it creates 150 jobs). Repair jobs are local, entrepreneurial jobs, because you don't need a lot of capital to start a repair shop, and your customers want to bring their gadgets to someone local for service (no one wants to send a phone to China for repairs -- let alone a car!). But those economic harms are only the tip of the iceberg. Laws like DMCA 1201 incentivize DRM by promising the power to control competition, but DRM's worst harms are in the realm of security. When the W3C published EME, it bequeathed to the web an unauditable attack-surface in browsers used by billions of people for their most sensitive and risky applications. These browsers are also the control panels for the Internet of Things: the sensor-studded, actuating gadgets that can see us, hear us, and act on the physical world, with the power to boil, freeze, shock, concuss, or betray us in a thousand ways. The gadgets themselves have DRM, intended to lock our repairs and third-party consumables, meaning that everything from your toaster to your car is becoming off-limits to scrutiny by independent researchers who can give you unvarnished, unbiased assessments of the security and reliability of these devices. In a competitive market, you'd expect non-DRM options to proliferate in answer to this bad behavior. After all, no customer wants DRM: no car-dealer ever sold a new GM by boasting that it was a felony for your favorite mechanic to fix it. But we don't live in an a competitive market. Laws like DMCA 1201 undermine the competition that might counter their worst effects. The companies that fought DRM at the W3C -- browser vendors, Netflix, tech giants, the cable industry -- all trace their success to business strategies that shocked and outraged established industry when they first emerged. Cable started as unlicensed businesses that retransmitted broadcasts and charged for it. Apple's dominance started with ripping CDs and ignoring the howls of the music industry (just as Firefox got where it is by blocking obnoxious ads and ignoring the web-publishers who lost millions as a result). Of course, Netflix's revolutionary red envelopes were treated as a form of theft. These businesses started as pirates and became admirals, and treat their origin stories as legends of plucky, disruptive entrepreneurs taking on a dinosauric and ossified establishment. But they treat any disruption aimed at them as an affront to the natural order of things. To paraphrase Douglas Adams, any technology invented in your adolescence is amazing and world-changing; anything invented after you turn 30 is immoral and needs to be destroyed. Most people don't understand the risks of DRM. The topic is weird, technical, esoteric and take too long to explain. The pro-DRM side wants to make the debate about piracy and counterfeiting, and those are easy stories to tell. But people who want DRM don't really care about that stuff, and we can prove it: just ask them if they'd be willing to promise not to use the DMCA unless someone is violating copyright, and watch them squirm and weasel about why policing copyright involves shutting down competitive activities that don't violate copyright. Point out that they didn't even question whether someone could break their DRM, because, of course, DRM is so technologically incoherent that it only works if it's against the law to understand how it works, and it can be defeated just by looking closely at it. Ask them to promise not to invoke the DMCA against people who have discovered defects in their products and listen to them defend the idea that companies should get a veto over publication of true facts about their mistakes and demerits. These inconvenient framings at least establish what we're fighting about, dispensing with the disingenuous arguments about copyright and moving on to the real issues: competition, accessibility, security. This won't win the fight on its own. These are still wonky and nuanced ideas. One thing we've learned from 15-plus years fighting DRM: it's easier to get people to take notice of procedural issues than substantive ones. We labored in vain to get people to take notice of the Broadcasting Treaty, a bafflingly complex and horribly overreaching treaty from WIPO, a UN specialized agency. No one cared until someone started stealing piles of our handouts and hiding them in the toilets so no one could read them. That was global news: it's hard to figure out what something like the Broadcast Treaty is about, but it's easy to call shenanigans when someone tries to hide your literature in the toilet so delegates don’t see the opposing view. So it was that four years of beating the drum about DRM at the W3C barely broke the surface, but when we resigned from the W3C over the final vote, everyone sat up and took notice, asking how they could help fix things. The short answer is, \"It's too late: we resigned because we had run out of options. But the long answer is a little more hopeful. EFF is suing the US government to overturn Section 1201 of the DMCA. As we proved at the W3C, there is no appetite for making DRM unless there's a law like DMCA 1201 in the mix. DRM on its own does nothing except provide an opportunity for competitors to kick butt with innovative offerings that cost less and do more. The Copyright Office is about to hold fresh hearings about DMCA 1201. The W3C fight proved that we could shift the debate to the real issues. The incentives that led to the W3C being colonized by DRM are still in play and other organizations will face this threat in the years to come. We'll continue to refine this tactic there and keep fighting, and we'll keep reporting on how it goes so that you can help us fight. All we ask is that you keep paying attention. As we learned at the W3C, we can't do it without you. -- "The article is long, but very interesting (and somewhat depressing). I strongly recommend taking the time to read it. -- "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! -- "I'm going to be attending the [NumFOCUS DISC unconference](https://pydata.org/nyc2017/diversity-inclusion/disc-unconference-2017/) in NYC later this week. I'm hoping to work on establishing a program for interested OSS maintainers in NumFOCUS projects to mentor programmers from underrepresented backgrounds. I believe strongly that a key to sustainability in our OSS projects is onboarding new contributors and maintainers, and I don't want our projects to be limited by the narrow demographic pool they are currently drawing new contributors from. -- "Current hobby project is a [Chrome extension called RecipeFilter](https://github.com/sean-public/RecipeFilter). Got tired of reading all the cruft on recipe blogs, so I made this to bring the recipe cards front-and-center. Works on all the worst offender sites I've visited so far thanks to some generic conventions many sites observe. Includes a blacklist so you can prevent it from running on specific domains by clicking a button. Next I will add a way of managing the blacklist and get it into the Chrome Web Store. I showed it to some guy that seemed interested on HN and of course he has [a brilliant plan to monetize it already in place](https://news.ycombinator.com/item?id=15763059) ;) -- "Floorplan designer/drawing tool for a sims-like game I'm working on. Should be job searching but feeling pretty discouraged about it. -- "Same with me. Working on a 15 puzzle solver instead. -- "I started using the Get it Done system (https://hamberg.no/gtd/) to keep track of the various projects I'd like to work on. So, using the lists that that system encourages me to create, I can report that this week, I am going to spend trying to set up a personal Diaspora instance, to use to proxy messages I send to facebook or any of the other social networks they support. I like the idea of being able to use the externally-controlled social media platforms I am used to, but at a remove, mediated by software I control, and allowing me to ensure that I retain a copy of anything I see or write there. I don't know how good diaspora will be at this, but that will be something I can judge, once I get a local instance working. -- "I am working on a proof of concept for GDPR using a graph database and vuejs. Wednesday I will be speaking about API first CMS at WHO in Copenhagen. -- "GDPR is going to be a hot topic next year. Is your idea to demonstrate links between data points? -- "Yes it is! I am preparing a GitHub repo and few blog posts. I will share all when it is ready. -- "Please do, I'm interested on this matter! -- "Hello, as promised I have published the first part here: https://blog.grakn.ai/gdpr-threat-or-opportunity-4cdcc8802f22 the second part is here: https://medium.com/@samuelpouyt/grakn-ai-to-manage-gdpr-f10cd36539b9 and I have yet to publish the api example. Code is available here https://github.com/idealley/grakn-gdpr -- "Are you talking about GDPR at the WHO? Or an actual CMS? -- "At who I am speaking about Cloud CMS an actual CMS we have implemented where I work, but I am speaking generally about API first CMS's and the benefits they can bring to a company, especially if you need to publish to different channels. -- "Have you spoken at any other humanitarian agencies yet or worked at an NGO in a technical capacity before? -- "I am working at an NGO. And we have implemented it. I agree it requires some technical knowledge, but the benefits are huge! I did not speak at humanitarian agencies on this topic, but I have have in other digital circles. -- "Cool, well good luck! I haven't been to the Copenhagen office before, been to GVA and in-country offices, they only let me out of my cage to see the outside world once in a blue moon. -- "I was also in cage. One day I was invited, my boss said no. I took the days off on my extra hours, and financed myself. Like this trip to Copenhagen. :( But all the rest is fun! -- "I've just started writing a [java library for gopher](https://github.com/phikal/gphr) using streams. It really surprised me to see that no such thing existed, at least to my knowledge, not even for basis Java. It's probably tied to the fact that Gopher as a protocol is quite simple. The goal is to use it in a modern gopher client for android. Sadly I don't have the time to work on it over the week too much, so I won't be expecting too much progress too soon - on the other hand, I'll have time to plan it out during my commute to uni. -- "Working on a disease surveillance and alerting system, trying to finish up a new analysis engine and web ui for querying against large varied data sets as well as a proof of concept desktop application in electron (eventually to be refactored into something with a smaller footprint) using a sort of gossip-like syncing mechanism to allow multiple mobile apps and desktop apps to be disconnected from the main servers and still be able to collect and share localised collected data and analysis. Other than that, frontline support and loading up legacy data sets for clients doing some proof of concept work in golang. Outside of work, studying for Life in the UK test that I have to take in order to apply for permanent residence here in the UK and setting up plan b for if I don't get approved (will have to fly back to Canada and start paperwork to get wife and kids into Canada...). Working on an iOS kids game for a change of pace and to try a different style of programming. So, lots.... probably too much. -- "> as well as a proof of concept desktop application in electron > (eventually to be refactored into something with a smaller footprint) This has a tendency to not happen. -- "I'd pay good money for some form of WebRender+Node platform that would run on the big 3 desktop platforms (and stay up-to-date and compilable) -- "I'm actually going to port it over to QTs WebEngine eventually, i'm writing most of the code in node-gyp with C++ so I can pull the library code over to QT and only using JS for the actual UI rendering. So hopefully that will save me a large chunk of time porting it. I'd build it on QT5 directly, but can't get the money together for a licence so that I can statically link QT. -- "I'm currently trying to write my own job description, which you'd not expect to be as hard as it is! My role is Head of Architecture and it takes a similar shape to what I think [Martin Fowler](https://www.thoughtworks.com/profiles/martin-fowler) does at Thoughtworks, but with some different context: - at a startup, so the prevailing æsthetic is \"stop thinking and start doing\", and it can be challenging to introduce more abstract levels of consideration - at a startup, so with a much smaller team - at a startup, so with a large amount of nuts and bolts coding as part of my job - at a startup, so I don't _actually_ know what Martin Fowler does, just what he and some other people claim he does Also we've got a big demo for a prospective client this week on my main project, so I'm uncovering bugs, pushing fixes and uncovering other bugs. Outside work: I did a couple of PRs for GNUstep at the weekend, which I'm hoping will not need much cajoling to get landed, and I'm doing the [blockchain course at Coursera](https://www.coursera.org/learn/cryptocurrency) and have a frustratingly difficult assignment to complete. -- "**Work:** Implementing this [ietf draft][1] on top of this [ieft draft][2] on FreeBSD. If I am really lucky I won't have to deal with any bureaucracy this week. **!Work:** Probably too much. The [GPD Pocket][3] has a whole raft of devices connected to i2c, for some reason I can't figure out [ig4][4] is unable to use the bus. I need to ask for help on a mailing list, but need to find some time to focus my question. I have a review in to support the gpio controller (which the fan is connected to), if there is progress on that it will become the top task. The back light is controlled by pwm, I have written most of a driver for that, but I can't get acpi to probe the hid it should be on. That needs more time to look at. Sick of reading datasheets and linux sources trying to track down the ig4 issues I spent this weekend working on bringing up the mt7610u usb wireless driver. I need to figure out why the usb stack doesn't like my usb descriptors before I can continue. [1]: https://tools.ietf.org/html/draft-fairhurst-tsvwg-datagram-plpmtud-01 [2]: https://tools.ietf.org/html/draft-touch-tsvwg-udp-options-09 [3]: https://mastodon.social/@_tj/12460025 [4]: https://www.freebsd.org/cgi/man.cgi?query=ig4&sektion=4 -- "I usually can't speak about my work, but this week I'm giving a talk to a university robotics club about motion planning. Trying to do more talks in general. -- "> I usually can’t speak about my work Man, that sucks. I hope you're keeping secrets for the right moral reasons. Too often people do unkind things when they have secrecy. -- "Could I get a link to your materials? I've been writing a blog series on control theory, so I'm curious to see how others teach somewhat similar topics. -- "Sure. I don't have them collected yet, but I plan to provide a collection to the students so I'll send it along. -- "This weekend I worked a few hours to catch up on some laziness on my part during the week. I spent the time optimizing my ci / cd. Managed to get a upwards of 45 minutes process down to less than 5. It basically involves compiling a haskell app with a docker build image, copying the executable over to a much slimmer docker image and pushing it to aws ecs. No tests yet. -- "I’m setting up my base station for amateur radio! I just got a power supply and antenna for my IC-7100, and I’ll be listening on the air soon. -- "Nice, I always wanted to get into ham radio but never managed to make enough free time. -- "It’s never too late! http://www.eham.net/newham/ -- "What discouraged me was the sheer amount of real estate a setup would take on my desk. I don't have the luxury of having a free room to dedicate to the hobby, so my study would have to house all the extra kit, which I simply don't think it would! -- "A handheld radio is not much bigger than a cell phone and it’s a good first radio to purchase. No need to buy a huge base station until you’ve gotten more familiar with the hobby! -- "I'm slowly chewing through the Haskell Book (about 200 pages in, 1000 left to go.) My goal is to be done with it by Christmas. In the meantime, work has me simplifying some legacy code. Cruising until the Christmas holidays. -- "What's your review so far? I'm constantly tempted to buy it. -- "Yay, I actually finished porting the Oil lexer to re2c, as I said I would last week [1]. I showed some examples of this here [2]. This 440 line file: https://github.com/oilshell/oil/blob/master/osh/lex.py turned into 573 lines of re2c expressions. That in turn gets converted into 14,429 (!) lines of C code. However, most of it is switch statements with 256 cases (dispatching on every byte). re2c relies on the compiler to do \"switch lowering\" [3], which I didn't know about before a couple months ago (a helpful commenter on Reddit gave some links). GCC and LLVM both do it. In LLVM, they use 3 or more strategies so that a 256-case switch statement isn't a linear search: finding closed-form expressions, jump tables, binary search, and a hybrid of all the techniques. So the object code ends up at 19 KiB. That's probably bigger than it should be, but it's not big compared to the rest of OSH, so I'll leave it for now. It is faster -- 5.2 seconds to parse the largest file (20,000+ lines, 629 KB), down from 8.5 seconds. The unit tests are noticeably faster too! ----- That's good but the parser is still too slow. Now I am working on the third bottleneck mentioned here [4]. Instead of using reflection at runtime to generate Python classes from the ASDL schema, I'm using textual code generation at build time. This sort of \"type-specializes\" the code, which makes it faster. It's also pretty easy, especially since you have the `repr()` function. I'm pretty sure that will be done this week. [1] https://lobste.rs/s/jq1wne/what_are_you_working_on_this_week#c_um4iqg [2] https://lobste.rs/s/cd5lk4/low_hanging_fruit_programming_language#c_pnmweb [3] http://llvm.org/devmtg/2015-10/slides/Wennborg-SwitchLowering.pdf [4] http://www.oilshell.org/blog/2017/10/24.html -- "At work, I have passed my probationary period, and as a reward was gifted with another person to manage (or \"coach\", in Flipp parlance). We have a great relationship already, so this should be pretty painless, but it is time consuming, and my likelihood to be landing patches in our various repositories is diminishing. Oh well -- I took this gig because I had lost the joy in writing software, so it's a bit rich to complain if they take me at my word? Outside of work, we threw an American Thanksgiving party, and 50 people showed up. We're still cleaning the house. #1 Daughter (2 ½ yrs) has decided that she no longer wants to sleep in baby jail, so now her mattress is on the floor, \"like a big girl.\" In-between work, I'm putting together a small group here to go through The Haskell Book, and I'm trying to get more people to do Advent of Code 2017 with me (assuming it shows up). -- "Due to upcoming deadlines at University I've sadly been unable to do much. My small Kernel Project gained a paging system and virtual memory, my blog engine got an overhaul, I'm now aiming for something integrating into Gitea. Otherwise, I'm just way to busy to focus on anything else, sadly. -- "I made my first, very small, Chrome extension which simply adds a repo's creation date as a badge on Github, next to Star, Watch etc. It's only really designed for myself but I figured maybe someone else could get some use out of it too. I gotta get a thumbnail and squish a few minor bugs first but other than that, it's pretty much good to go I think. -- "I got [my implementation of delimited continuations](https://lobste.rs/s/jq1wne/what_are_you_working_on_this_week#c_b7xbiy) to [some sort of closure](http://akkartik.name/coroutines-in-mu). Now it's back to [the compiler for Mu targeting a subset of x86](https://lobste.rs/s/2pw5p7/what_are_you_working_on_this_week#c_l3gln9). Phew, that digression took up a whole month! -- "The subset of x86 sounds cool. How did you choose the subset? Any reason for 32-bit vs. 64-bit? Since I just ported the Oil lexer to re2c, I noticed there are 3 nontrivial compilers: 1. Python regex -> re2c expressions (I wrote this in a few dozen lines of Python, using the undocumented sre_parse module) 2. re2c expressions -> portable C code, with switches and gotos emulating a DFA (this is what re2c does. It's a 20K line C project) 3. The C compiler is necessary to do \"switch lowering\" on re2c output (see sibling comment). Otherwise, it would be much less efficient than a hand-written lexer. This is a bit complex. What I find interesting is that assembly is a better language for DFAs than C ! But it's not portable. Russ Cox's authoritative articles on regular expressions talk about Ken Thompson's paper, where he directly translated regexes to machine code: https://swtch.com/~rsc/regexp/ And now that I look again, there is some short and interesting code which I haven't studied: https://swtch.com/~rsc/regexp/regexp-bytecode.c.txt https://swtch.com/~rsc/regexp/regexp-x86.c.txt These are C programs directly translate regexes to something more like assembly language than C programs. I should try those out and see if they can improve upon my long compiler pipeline. Although I think portability is a strong motivation. I wonder how fast an x86-subset interpreter would be on ARM. I'm not that familiar with assembly language, but this seems like the perfect project to get more familiar with it. I did it in college, but never professionally. Anyway I wonder if the output of these programs could run on your subset? Might be a fun test case. Other examples here: https://lobste.rs/s/cd5lk4/low_hanging_fruit_programming_language#c_pnmweb -- "Fascinating links, thanks! Let me take a look and get back to you. > How did you choose the subset? https://github.com/akkartik/mu/tree/master/subx#readme > Any reason for 32-bit vs. 64-bit? a) It's still easier to find tutorials online for x86 rather than x86_64 :) I started out knowing absolutely zero about this ISA. (My grad school work was with the Alpha 21264, which was a really clean design but is now sadly obsolete.) b) As I said in my link above, inside x86 is a really nice, clean 32-bit ISA struggling to come out. The memory model is flat, no segments. Segments made a comeback in x86_64. 64-bit versions of instructions are often bolted on using a global mode to decide what word length to use. Ugly! c) I still try to create 32-bit VPSs in the cloud these days, because they're a little more memory- and therefore cost-efficient. No acres of bits in wasted in sign-extending addresses. I haven't needed more than 2GB yet in a single program. (And good thing too, because such VPSs get expensive fast!) d) It's not clear to me that there's an exclusively 64-bit ISA inside x86_64. There definitely is an exclusively 32-bit ISA inside x86 that doesn't rely on 8-bit or 16-bit instructions. That means that if I focus on 32-bit instructions now, that doesn't preclude the possibility of supporting 64-bit instructions in future. No work should need redoing. (Except instruction decode for that global mode.) Whereas supporting 64-bit would well involve implementing at least some 32-bit instructions anyway. -- "OK interesting... yeah this is something I have to learn more about. I bought this book recently, and it does cover x64: https://www.amazon.com/gp/product/9332573905/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1 Actually they define something like \"Y64\". But I just got it and haven't gone through it. One annoying thing is that it uses AT&T syntax and everybody says to use Intel syntax. But otherwise it seems to be a good book. But yeah there seems to be a lot more material on 32-bit x86 out there. ----- BTW I compiled and ran both of the examples above now... they don't run! One gives me a segfault; the other seems to hang. I only looked at it for about 5 minutes though. -- "Code samples not working is indeed one of the perennial issues here :/ As is the two syntaxes. I had to gain some fluency with both, because the manuals use Intel syntax, and anytime I want to experiment with `as` I have to use AT&T. But in my code I stubbornly refuse both options and describe instructions in words. Like [the comment on this line](https://github.com/akkartik/mu/blob/ef7d834fdd/subx/011direct_addressing.cc#L7). -- "*Correction:* My reason b) is incorrect. Thanks https://mastodon.social/@vertigo/99097883285637446 -- "> Anyway I wonder if the output of these programs could run on your > subset? Might be a fun test case. No, not as such. Here's the instructions used in https://swtch.com/%7Ersc/regexp/regexp-x86.c.txt static unsigned char header[] = { 0xC8, 0x94, 0x10, 0x00, /* enter $400, $0 */ 0x8B, 0x55, 0x08, /* movl 8(%ebp), %edx */ 0xB8, 0xFF, 0x00, 0x00, 0x00, /* movl $0xff, %eax */ 0x31, 0xC9, /* xorl %ecx, %ecx */ 0xE8, 0x00, 0x00, 0x00, 0x00, /* call _next */ /*_next: */ 0x83, 0x2C, 0x24, 0x05, /* sub $5, (%esp) */ 0xA8, 0xFF, /* test %al */ 0x75, 0x02, /* jnz _L1 */ 0xC9, /* leave */ 0xC3, /* ret */ /*_L1: */ 0xE3, 0x0A, /* jecxz _L2 */ 0x49, /* decl %ecx */ 0xFF, 0xB4, 0x8D, 0x70, 0xFE, 0xFF, 0xFF, /* pushl -400(%ebp,%ecx,4) */ 0xEB, 0xF4, /* jmp _L1 */ /*_L2: */ 0x8A, 0x02, /* movb (%edx), %al */ 0x42, /* incl %edx */ 0xE8, 0x0A, 0x00, 0x00, 0x00, /* call _code */ /*_fail: */ 0xC3, /* ret */ /*_nnode: */ 0x8F, 0x84, 0x8D, 0x70, 0xFE, 0xFF, 0xFF, /* popl -400(%ebp,%ecx,4) */ 0x41, /* incl %ecx */ 0xC3, /* ret */ }; static unsigned char footer[] = { 0x4A, /* decl %edx */ 0x89, 0xD0, /* mov %edx, %eax */ 0xC9, /* leave */ 0xC3, /* ret */ }; enum { CMP = 0x3C, JNZ = 0x75, CALL = 0xE8, JMP = 0xEB }; Extracting just opcodes and deduping, we get: * 0x31 ([xorl](https://github.com/akkartik/mu/blob/30ea2e4522/subx/011direct_addressing.cc#L108)) * 0x83 (sub 8-bit immediate; 32-bit version is [0x29](https://github.com/akkartik/mu/blob/30ea2e4522/subx/011direct_addressing.cc#L45)) * 0x3c (cmp 8-bit immediate with %al; 32-bit version is [0x39](https://github.com/akkartik/mu/blob/30ea2e4522/subx/011direct_addressing.cc#L152)) * 0x41, 0x42, 0x49, 0x4a (incl/decl; use [add](https://github.com/akkartik/mu/blob/30ea2e4522/subx/011direct_addressing.cc#L1) or [sub](https://github.com/akkartik/mu/blob/30ea2e4522/subx/011direct_addressing.cc#L45) instead) * 0x89 ([movl to register](https://github.com/akkartik/mu/blob/30ea2e4522/subx/011direct_addressing.cc#L197)) * 0x8a (movb 8-bit) * 0x8b ([movl to memory](https://github.com/akkartik/mu/blob/30ea2e4522/subx/012indirect_addressing.cc#L276)) * 0xb8 ([movl 32-bit immediate to %ecx](https://github.com/akkartik/mu/blob/30ea2e4522/subx/013immediate_addressing.cc#L331)) * 0xa8 (test; like [and](https://github.com/akkartik/mu/blob/30ea2e4522/subx/011direct_addressing.cc#L66) but doesn't write result, only condition flags) * 0x75 ([jnz](https://github.com/akkartik/mu/blob/30ea2e4522/subx/014jump_relative.cc#L71) to 8-bit offset) * 0xeb ([jmp](https://github.com/akkartik/mu/blob/30ea2e4522/subx/014jump_relative.cc#L16) to 8-bit offset) * 0xe3 [jecxz; jump to 8-bit offset if %ecx = 0; Mu will [rely on previous instruction to set the flag instead](https://github.com/akkartik/mu/blob/30ea2e4522/subx/014jump_relative.cc#L23)) * 0xff ([pushl](https://github.com/akkartik/mu/blob/30ea2e4522/subx/012indirect_addressing.cc#L342) among others) * 0x8f ([popl](https://github.com/akkartik/mu/blob/30ea2e4522/subx/012indirect_addressing.cc#L363)) * 0xe8 ([call](https://github.com/akkartik/mu/blob/30ea2e4522/subx/016functions.cc#L1)) * 0xc3 ([ret](https://github.com/akkartik/mu/blob/30ea2e4522/subx/016functions.cc#L60)) * 0xc8 (enter; CISC instruction now considered inferior to combining RISC pushes) * 0xc9 (leave; CISC instruction now considered inferior to combining RISC pops) The missing instructions aren't difficult to add, and they'd often improve instruction density. But it'd make the compiler a little more complex to worry about instruction density. So they're out for now. -- "I've been working on a new website for the [Code & Supply Scholarship Fund](https://codeandsupply.fund/) ahead of `#givingtuesday` and a holiday fundraising event we're planning for the end of the year. CSSF is a non-profit that funds tech conference experiences for underemployed & unemployed software folks and members of underrepresented groups in the Pittsburgh software community. The site might go live before people awaken tomorrow if my team reviews my code before they hit the hay tonight! While I'm pretty adamant about manually entering transactions into my plaintext accounting system, there are some parts of it I want to automate because of the high probability of error in manual entry. One such area is converting Fidelity's CSV exports from its 401k management tool to ledger format. I've been working on it here and there. It's starting to get to the point of usability. The goal is for it to output a ledger-formatted transaction log given the CSV and require only a little manual tweaking. https://github.com/colindean/ledger-fidelity-401k-csv-parser -- "Increasing my understanding of Jenkins' server-side while I hamfistedly attempt to adapt/re-implement some classic functionality in a way that will play nicely with Blue Ocean. -- "I am working in different open source projects with other members of my small company: - We are writting an erlang's database client [wrapper](https://github.com/lambdaclass/reconnections) that reconnects to the database after a netsplit/database restart/etc. - We are working on a simple drop in WebRTC [server](https://github.com/lambdaclass/webrtc-server) written in erlang. Audio/Video calls are really easy to implement client side using WebRTC. Howeve it is not that easy as it seems to implement server side. You need to implement a STUN/TURN server apart from the signaling server. We are trying to package everything so that you clone it, run it or even download a docker image and you can implement your own WebRTC server for your iOS/Android app or webpage. - We started working on a small Erlang [dependency](https://github.com/lambdaclass/find_peers) that automatically joins erlang nodes to the same cluster if they are in the same subnet. -- "$CLIENT: trying to prioritise a heap of urgent fixes in their old codebase. Errors calling partner API's, SQL Injections up the wazoo, you name it. $INTERNAL: Putting together a minimalist phpDoc to Markdown API generator, after discovering the official phpDoc project is a fucking nightmare to try to fix bugs on. -- "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! -- "@work I talked my company into letting me do a TLA+ workshop for the other engineers, so working out the logistics for that. Also doing a postmortem on a month long fire. I'm pessimistic we'll make take good lessons away but hey, we'll see how it develops. @home I asked Twitter what I should learn and Twitter said haskell so now I gotta learn haskell. I have Twitter my word and I only sometimes go back on my word. -- "What was the month-long fire? -- "A potential PR and HR problem if he describes it here. I'm surprised you asked. Haha. -- "Made big progress on my [solitaire solver](https://github.com/pushcx/shenzhen) thanks to help from another [Recurse Center](https://recurse.com) attendee. It now solves most games, though sometimes it can be very slow. It's doing a naive, exhaustive depth-first search and sometimes can fall into deep branches of the state space where it is uselessly shuffling cards around. This was mitigated by [canonicalization](https://github.com/pushcx/shenzhen/commit/ac187ed668cc6c593a1475adfb7f3667617ff046) of equivalent layouts. This week I plan to do a lot of the fun tinkering items that have been hanging out in the readme. I wrote a [short blog post](https://push.cx/2017/lobsters) about becoming the sysop of Lobsters. This week I'll be doing some Rails work on the Lobsters codebase. I aim to review issues and PRs at least weekly, and I'd like to start on tools for moderator awareness I [mentioned here](https://lobste.rs/s/zsbrjy/why_we_switched_from_python_go#c_lkepiu). And this weekend I'm taking advantage of the density of the Eastern seaboard to visit some high school and college friends living in neighboring cities, which is going to be some really satisfying catching-up. -- "I love the recurse center. Such an awesome program. -- "*[Last week](https://lobste.rs/s/2pw5p7/what_are_you_working_on_this_week#c_acp5po)* I didn't end up having time last week to work on my Insteon controller library, I'm planning on continuing work on that this week. Last time I promise something in this thread. :) This week I'm also working on putting together talk proposals for upcoming conferences: one Go talk and one JavaScript talk. My conference acceptance rate is currently 0%; fill free to poke me if you're good at these things and have useful advice. -- "Work has a release in customer beta and we've found a few bugs, so mainly working on squashing those mixed with triaging other incoming reports, and hopefully squeezing in some cleanup stuff for a later release. I recently found out that https://webscript.io is shutting down, which I think is a really big shame, when I went to go re-enable my account. So despite it probably being a bad plan, I'm working on a \"clone\". Not yet sure if I'm going to try to get money out of it, or just run it for myself and release it as opensource. I had already started working on something like this before I found webscript, so I'm a bit familiar with the idea. I've already got a skeleton of the script runner stuff setup with basic sandboxing. -- "In the last update I said I would run abuild, the build script for Alpine Linux under OSH [1]. Well I was able to run `abuild -h`, so that's good. Also good is that I was able to parse a million lines of shell scripts from dozens of different projects very successfully. The remaining 3 or 4 things that need to be parsed are **extremely rare** (e.g. case terminators like `;&` and `;;&` only appear in one out of dozens of projects -- I suspect few people even know what those are.). But the parser is way too slow. I wrote it in a very abstract style because I wanted to not end up with a mess of ad hoc if statements. But now I am grappling with the fact it's crazy slow, like more than 100x too slow. I worked on some benchmarking scripts, and found three (!) different bottlenecks: 1. Traversal of the AST while parsing to determine which here docs need to be read [2]. The algorithm is correct but inefficient. 2. The Lexer needs to be converted to re2c [3], not use a series of interpreted regexes. This is mechanical as I designed it originally to be converted to re2c (which in turn converts it to a series of C goto statements, where each jump location is a DFA state.) 3. ASDL [4] classes also need code gen. Python generates C code too but I probably won't use that implementation. For productivity/abstractness, I always chose to use the most dynamic form of metaprogramming possible (e.g. with the lexer and ASDL). But now I need to harden it and actually generate code. This is related to the ideas here: https://lobste.rs/s/aqdixr/gentle_introduction_compile_time I think those 3 improvements will result in 2 - 10x speedup. The remaining 10x is probably Python interpreter overhead, so I need a different solution that. [1] http://www.oilshell.org/blog/2017/10/06.html [2] http://www.oilshell.org/blog/2016/10/17.html [3] http://www.oilshell.org/cross-ref.html#re2c [4] http://www.oilshell.org/blog/tags.html?tag=ASDL#ASDL -- "Just added stats that link frontend and backend performance. This is going to be huge for my companies black Friday situational awareness. Can't wait to plug it into https://github.com/nghialv/promviz Also deploying my new container friendly load balancer into an prod. It's container friendly because it sniffs http/sni and passes the FD to the appropriate backend process rather than proxy. -- "Work: we launched so the integration work has finally come to end. Going to be moving on to optimising things. One of the problems we have now is our computations use tons of memory, and AWS only sells VMs with normal CPU/memory ratios so the CPUs are underutilised. We are going to be working on eventually reducing memory usage, and in the short term I'm going to be working on making individual computations multithreaded. The first step though is writing a profiler that we can keep enabled all the time. Perf generates way too much data to run constantly, so I'm writing a sampling profiler that works in a constant amount of space. Basically it's a fixed size hashtable, and when you can't find an empty bucket you overwrite the bucket with the lowest hitcount from the set you looked at while reprobing. It's probably not the best strategy but it was easy and in quick tests it seems to work ok. Home: slow game progress, haven't been programming much. Geometry clipmaps apparently are not a silver bullet. If I draw tiles I have to deal with seams, if I draw a massive mesh I lose frustum culling. Also struggling to get my head around the details of geomorphing. -- "Finalizing backpressure in the Pony runtime. https://github.com/ponylang/ponyc/pull/2264 -- "I'm working on [helmspoint](https://www.helmspoint.com), a way to deploy ML apps. I'll be working on the docker client connection to create images. Before, I was just using popen for running docker on the command line. I'll then need to do authentication for kubernetes and docker REST APIs. I finished a blog post about how Norway got Japan to eat salmon sushi after a decade long campaign. https://medium.com/torodex/salmon-sushi-is-not-a-japanese-invention-9189d9cd78b7 -- "Started a brand new project involving crypto-currencies. Always fun to work on new domains. -- "@work After a surprise restructuring two weeks ago and helping a friend with a college football photoshoot this weekend, this week is trying to identify what work should be now. Looking through Matt Mitchell's Strange Loop keynote for ideas, along with revisiting my professional network. Finishing a SANS course/cert in the meantime, since it was already paid for. @home Sorting through projects to decide which one to spend time on: ongoing research into distributed 3d/content creation, experimenting with [Inferno](http://doc.cat-v.org/inferno/) on embedded/phone platforms, or scratching an itch and building a [PIM](https://en.wikipedia.org/wiki/Personal_information_manager) server in [MirageOS](https://mirage.io/) for use as a cloud/AWS image. -- "Be sure to check out this Inferno project if you havent: https://bitbucket.org/floren/inferno/wiki/Home -- "I'm making it a point to read more lately. I'm currently finishing up \"An Introduction to Error Analysis,\" and I'm excited to move on to \"Music By Computer,\" which I picked up at a used bookstore the other day. It's a collection of papers published in 1969, covering some very early work in programmatic music generation. It even came with a set of \"flexi-disc\" records, which I want to transfer to computer at some point. Other than that I'm working on a graph library in Common Lisp. It's reinventing the wheel, but I couldn't find an existing library that I liked, and it's fun to work through the algorithms. -- "$work: After massive, unbridled failures two weeks ago, and a release last week, and then a couple more bugfix releases, I think we're finally out of the woods. I'm doing paperwork, trying to get back in the groove; and trying to direct whatever resources I can muster towards the project to get us off our old hardware and onto the new environments we have which are much better built and *should* make this sort of thing not so much an issue anymore (and might get us to a nicer deployment model to boot). !$work: Turned another bowl, ambrosia maple, going to be a Christmas present for Mom. Came up with a shop plan, scrapped it, came up with another, scrapped it; this week is more planning. At some point I'm just going to buy a bunch of material and then start doing stuff. I am in an analysis loop; I don't think I'll make it to spring. Put the Plane restoration to the side, until I get the shop set up, it's really hard to do that kind of work efficiently. It was more likely for a father's day present anyway, so it's not the end of the world. -- "I'm adding (what will hopefully be) a smooth history-diving workflow to [vgit](https://github.com/saulpw/vgit), to help track down when sheet joins were broken in [VisiData](https://github.com/saulpw/visidata). If anyone wants to play with an experimental git TUI (or help design), I'd love to get some feedback! -- "I'm been working on a Django app for [Dramatiq](http://dramatiq.io/) and making small improvements to it in the process. -- "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! -- "New job. Full time W2 for the first time in about 10 years. Learning the systems, planning, and whatnot. -- "Work is the same as [last week](https://lobste.rs/s/awl3nr/what_are_you_working_on_this_week#c_b2m0vq). At not work, I'm still mostly focusing on figuring out NixOS. Right now the version if Rust/Cargo is quite old, so I'm trying to learn as much as I can to see if I can help with packaging the latest. I've decided that I'm going to stick with NixOS until at least the end of October to give it a fair chance, and not just drop it because it's unfimilar to me. -- "Profiling a website running Drupal. Attempting to install Prometheus to help with various profiling metrics... Attempt to finish a sync of 2 sites, site migrations woes. Try to stay above water. -- "> Attempting to install Prometheus to help with various profiling metrics… Good luck. From someone who's in a team that attempted to use Prometheus recently, do everything The Prometheus Way. -- "Heading to StrangeLoop. Come say hi! -- "I'm going to be at Strange Loop & PWLConf this week! I did more work on [theft](https://github.com/silentbicycle/theft) this weekend: I'm making progress on adding multi-core support (what's faster than generating and running tests on 1 core? doing it on [40 cores](https://www.techspot.com/review/1218-affordable-40-thread-xeon-monster-pc/) in parallel!). I got theft running property tests on its own concurrent planner/scheduler, which found a couple subtle bugs by generating arbitrary event interleavings. Work: Writing code to compile a huge graph data structure to generated C code. While I can't say anything about what it *represents*, I seem to have discovered some pathological cases in clang related to large switch/case bodies. In particular, changing the formatting was the difference between building in 3m45sec and 7h20m. When my main work is done, I want to write a script that generates similarly structured (but IP-free) C code and post a bug report for clang. -- "> changing the formatting was the difference between building in 3m45sec > and 7h20m. What on earth? I _thought_ I knew how compilers worked. -- "The parser is often the slowest pass - it's the only one that traverses every single byte of the input. I'd love to hear more about what happened here. -- "Parsing isn't the problem -- while it will be clearer when I get around to writing that generator script (which may not be for a bit), the general idea is this: Slow version: There's a switch-case statement, which has about 100,000 cases. Each of the case bodies is braced (i.e., has no variables that escape the scope), calls a function with an ID and a bool that sets or clears one or more flag bits on a struct, and a subset of the case bodies end in a goto that jumps to an earlier case body. (The rest end in a break; there are no cycles or fall-throughs.) The generated .c file is about 125 MB. This version took over 7 hours to compile (on a new MBP laptop). Medium-fast version: There are no gotos, each case body calls a function named \"case_X\" for each case body that it would previously goto, walking up the chain of earlier case bodies (i.e., there is duplication). There are forward references to every function (static) generated at the beginning of the file, the functions all appear after the huge switch-case function. This version took about 75 minutes to compile, and is about 300 MB. (Parsing isn't the problem!) Fast version: Same as the medium fast version, except the switch-case body is broken up into several functions, and there's a wrapper that says `if (id < 10000) { return switch_fun_lt_10000(id); } else if (id < 20000) { return switch_fun_lt_20000(id); } else ... ` up to 100,000. (This could be broken up into a binary tree, but cache locality probably makes up for it. I'll benchmark later.) **I shouldn't need to do that**, but this version only takes 3m45sec to compile. Reducing the number of cases in the switch statement helps quite a bit. Something I haven't tried yet is just indexing into a numeric array of function pointers; it should be functionally identical. I started using switch-case because it's [more declarative](http://prog21.dadgum.com/166.html), and should have the same result. There seems to be something super-linear (`> O(n)`) in the handling of switch-case (probably some sort of analysis, checking everything against everything else), and it gets noticeably worse as the number of case labels increases past 10,000 or so. Adding gotos between them adds more burden to the analysis. It should be able to rule out interactions between them, though. -- "That's fascinating. I look forward to the bug thread when they find the cause. :) -- "Trying to finish up a little utility called [linkview](https://github.com/imwally/linkview) that is similar to [urlview](https://github.com/sigpipe/urlview) but parses only HTML documents to display more context by showing link text or image alt/title tags in the menu instead of just the URL. Also, how to suck less at chess. -- "Meeting up with my colleagues from all over Europe and the Americas in Lisbon, Portugal! My first time here, but we already have a full program so I don’t expect to be able to see many sights. Still, really looking forward to meet up in person again. (Very few of us—none in the tech team—share an office normally.) -- "starting to crank up the rigor of my lock-free algorithm testing on [sled](https://github.com/spacejam/sled) by making a tool for deterministically exploring various interleavings. right now it's just [a python gdb script](https://github.com/spacejam/sled/blob/master/hack/execution_explorer.py) that spits out a seed when it finds interesting invariant violations, but I'm exploring the possibility of integrating more sophisticated schedule exploration based on [BPOR](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/bpor-oopsla-2013.pdf), and maybe eventually something that works with z3 or something for [MCR](https://parasol.tamu.edu/~jeff/academic/mcr.pdf). It's fun to be able to have deterministic testing for lock-free algorithms at last! Exhaustive testing is coming soon, but will really only be practical for trivial stuff until we can prune the executed schedules down a bit. -- "Working on a cli network configuration manager for OpenBSD. So far it can enable/disable/start/stop/restart interfaces as well as create/destroy and switch between locations. Locations are currently limited to just one wap config for wireless interfaces. I'm tidying up the man page later today. I have some older code that will connect to the strongest wap from a group of configurations. I'll integrate that next. It's not a replacement for ifconfig(8)...it's written in pure shell (using no commands outside of shell, /bin and /sbin), modeled after rcctl(8). I think I can get automated wap connecting working at boot time. Keeping it in pure shell (or c) is the only way to ensure it will work at boot time. I'm using it on my my laptop to switch between work and home. I should have a preview ready for general consumption pretty soon. -- "Are you aware of nsh? http://www.nmedia.net/nsh/ -- "No, I don't recall hearing anything about it before. *nsh* looks nice, but it requires changing your system from default. It replaces the functions of netstart(8) and some parts of rc(8). You have to delete things like /etc/hostname.* and /etc/mygate and give *nsh* management of some networking daemons. My project is less ambitious. It's modeled after rcctl(8) and works with netstart(8). Other than creating symlinks to manage hostname.if(5) configuration files, it's bog-standard OpenBSD. Still, very cool stuff. -- "I like the sound of it. Please post a link on the board when you decide to release it. -- "Thanks. I'll definitely post it here, hopefully in a couple of days. I'll also post it to http://github.com/akpoff. -- "Initial version posted on github, and article submitted to lobste.rs. https://github.com/akpoff/netctl https://lobste.rs/s/di8j1j/netctl_cli_network_location_manager -- "Rewriting my (small) initial attempt at a side-project (the equivalent of gitignore.io, but for Brewfiles) from Go to Ruby because there's a readily available DSL, and the Homebrew ecosystem is Ruby. Then, revisiting the design, and hoping to launch something on the weekend. -- "- Finishing up the website for LVDSA - Procedural geometry code for building creation in a sim-like game - Figuring out how to pay rent in a week -- "Small geohash library for scala. There are a few options but all are ugly. I want to do something nicely packaged, maybe with some indexing included. -- "Thinking about security/privacy as it relates to HDD and SSD firmware. They are essentially independent computers complete with processing power and persistence. 1. Search for transparent and auditable storage devices. I did find the [OpenSSD](http://www.openssd-project.org/wiki/The_OpenSSD_Project) project, which seeks to develop open-source SSD firmware. The Cosmos platform has a controller implemented in FPGA, whereas the Jasmine platform uses the Indilinx Barefoot™ SSD controller (some kind of ARM core). I didn't find anything for HDDs. 2. Given untrusted storage devices, mitigate the damage they can do. The [Libreboot project recommends](https://libreboot.org/faq.html#hddssd-firmware) connecting storage devices over USB rather than SATA, to protect against direct memory access from the SATA controller. -- "I'm starting my week by learning Erlang (via LearnYouSomeErlang) and reporting security bugs to RabbitMQ clients. Depending on how the testing goes, I may have 3-5 CVEs come out of it. Carrying on, I'm planning on implementing a message bus like FedMsg for NixOS events. A single message bus to receive events about PRs being merged, commits, issues, channel statuses, etc. The last one in particular (channel status) is to replace the nasty collection of scripts powering https://channels.nix.gsc.io and the corresponding IRC bot (written with echo,sleep, cat, sed, and telnet) with a more proper implementation that can also broadcast git events, and is more usable to consumers of this information than the polling I'm currently asking people to do. -- "Launching my first project since joining my new gig; getting org and JIRA final bits together; finally carving some time out to get into Avro. At home, I'm not going to try living on NixOS any longer -- there simply isn't anything usefully comparable to Lightroom, so it's back to OS X for me. -- "Working on [Helmspoint](https://www.helmspoint.com), which helps people deploy ML models on the web. Just upload the model and the architecture, and it takes care of provisioning the servers and the API. Got chain-able background jobs working with map and and_then semantics. That way, I have composable jobs that can be written in isolation from each other. And I can use composable jobs to write processes that have many steps with side effects. I'll be working on integration with Kubernetes and figure out whether to put it on AWS or GCloud. -- "More development on bee2, a little system of mine for running Docker apps with a VPN/jumpbox type set. https://github.com/sumdog/bee2 Just added a bunch of functionality and am working on a new blog post. I have a feeling this tool is going to be really specific to myself, but I hope the work I've done can help other people build something similar for themselves. -- "Getting ready to open source the product we've been working on for 18 months. -- "I've been working on a [REPL based graphics library](https://github.com/jl2/clgl) using Common Lisp and OpenGL. In some ways it's similar to [CEPL](https://github.com/cbaggers/cepl), but less ambitious. My goal is to make it a quick and easy way to throw 2D and 3D graphics on the screen without re-implementing a bunch of boilerplate OpenGL and GLFW. -- "I made my first hire today! -- "Twiddling my thumbs waiting for a replacement fan for my aging 17\" MBP and pondering what to buy as a daily use machine, as this one is now a business risk given its \"we won't even take your money to fix it\" status with Apple/authorised repairers. -- "Work: Mostly worrying about crypto and key management across our microservice deployments. Non-work: I've got a research library app on the go...very slowly, because aside from Cocoa which I don't want to use for this project, I find that other frameworks don't supply PDF viewers and I've done my own. I'm using Poppler with Qt5 bindings to get page images on the screen, but there's a lot to be done to make it nice and I have to learn a lot about the Qt APIs on the way. Also non-work: I've been thinking a lot about some, well, _disappointing_ features of modern dev, most recently triggered by the [node.js/windows 3.1](https://tomjoro.github.io/2017-02-03-why-reactive-fp-sucks/) article. The problem I have is a cycle of get sad->think about what needs fixing->discover I want to boil the oceans->get overwhelmed->stay sad. To that end, my work on this \"project\" this week is an org-mode document that will let me both scream into the void, and try to prioritise anything I want to do about it. -- "Work 1: Getting our custom install ISO finalized with the bizarre preseed control file. Avoiding any interaction is the goal for manufacturing. Get some stats on our various kinds of boxes. Work 2: Update our web control; see if I can make the move from QWebKit to QWebEngine. Don't want to use Electron, as I hate hate hate npm. Non-Work: Learn [nim](https://nim-lang.org/) -- "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! -- "I am doing some more work on my [music review aggregator](http://www.mjuziq.com/). It's very much a prototype in progress, but I've been using it daily for a while now, it's turning out to be useful, and it's pretty fun. I'm limiting it to a subset of music review sites I trust and follow, rather than making it very exhaustive. Currently, I'm trying to make it a bit prettier by adding cover art using [Cover Art Archive](http://coverartarchive.org/). Less than 50% of the albums in my database have a match there, so I'm contemplating on adding a few more sources in there, e.g. Last.fm. Any tips on good sources for these things are highly appreciated! Some additional items on my roadmap are better artist/title normalization, filtering & searching (e.g. I'd love to be able to see music that's been trending in May 2015), and label information (I'm still not 100% sure on how to do this (semi-)automatically, but I'd love to be able to track new releases from my favorite labels, and enrich that with any reviews that come out). -- "Suggestion: On the front page, I'd consider adding the genre of the albums. That way I can get a general idea if I'd like the album without any clicking. -- "Thanks, noted! One of the goals is to add some more metadata to the review, and exposing a filter to the user. I am working on adding a MusicBrainz ID to every artist/album, which should make features like that way easier. -- "I'm reworking the publishing toolchain I've used to write and publish two ebooks and trying to get it released as a proper Rubygem - [NerdPress](https://github.com/chriskottom/nerdpress). * Generate a project from the command line * Export to HTML, PDF, EPUB and MOBI formats * Manage and store project files in a simple directory structure * Authoring in Markdown and HTML * Styling in CSS and Sass * Built with technical books in mind (command line tools, syntax highlighting and code block formatting) * Modular design so that developers can update the workflow as needed It's still not ready for prime time, but I'd love to hear from anyone who could use something like this. -- "I just got back from the Mathematical Congress of the Americas 2017. Boy, that's a crazy conference that I've never seen in tech circles. 1200 speakers spread out across 80 simultaneous sessions over the course of five days. This occupied a big chunk of all of McGill's downtown lecture rooms. This isn't even the biggest conference; the upcoming International Congress of Mathematicians in Rio de Janeiro is a conference that's been going on for over a century and is much bigger. This really makes me miss being in that mathematical milieu. Maybe I can get back to mathematics slowly again, taking a few afternoon courses. In boring, non-mathematical job work, I have to review our cache architecture. We've got memcached which I need to move to Redis. I also need to figure out how to properly sort our caching and see what should go into Redis and what should be in Postgres tables. With AWS, I'm not even sure which of the two is faster overall, so I guess I'll be doing some benchmarking too. -- "Oh that sounds cool. What sort of stuff do they talk about there? Learn anything cool? -- "Well, they mostly talk about their research, much of which isn't very accessible. I try to follow some number theory talks and sort of get a sense of at least which words they used so I would know what kind of things people are working on and what topics I need to learn. :-) But I did go to a really cool public talk by [this guy](https://mca2017.org/prog/session/pl2#cmspu_sd_p_4242) on paper and glass folding. There was one intro talk to the computational geometry section that also had fun things to say about sphere packing. Ye computery people might also have liked to hear about [this plenary talk](https://mca2017.org/prog/session/pl#cmspu_sd_p_4236) on de-randomizing algorithms. The premise was kind of interesting, you take a random algorithm and you sort of nudge it with a weight function so that it tends to give a particular valid solution in the space of valid solutions more frequently. That way you can have some reproducibility without having to go all the way to a deterministic algorithm. -- "The company I'm under full time contract with is merging with a larger entity at the end of the month. That means the project I'm working on needs to be complete by mid-august to leave enough time for testing. This is going to be an interesting few weeks... I'm also concerned this will mean the end of my contract, as instead of continuing to use the project indefinitly, they will probably start slowly replacing it with their own solutions. -- "Step 1: Merge. Step 2: Trim the fat. This is a common occurrence. Not trying to alarm you so much as say keep networking, make sure you don't depend on them, and so on. Safe way to go in general. -- "On the work side: rewriting the IPC layer of our product to use a faster IPC mechanism where it matters (and also better handle errors when that IPC fails). Reworking the configuration management layer to better handle dynamic configuration updates. On the personal side: I've been reading more and more about Cleanroom software engineering and I got my copy of *Toward Zero-Defect Programming* over the weekend. I've read through about half of it and I'm going to try to do a small project this week using Cleanroom techniques adapted to a team of one. Probably rewrite my little process-manager utility using Cleanroom techniques and see how it goes. (The little utility just launches one or more copies of a given program with varying sets of command-line arguments and then daemonizes, optionally restarting instances if they die or else exiting when all the children die. We use it at work because we have external requirements that forbid us from using a real process supervision framework for political reasons...) Also I gotta finish unpacking from our recent move to the new house and finish putting my desk together so that I have a real workspace again... -- "Definitely write that up or message me when done. Be interesting to see how well he distilled it or just how well it works with common use case. -- "I'm really interested in that process supervisor. I once wrote a toy init after reading through daemontools. I thought it would be a good candidate for some formalism because it has a small state space. What is the larger context of that work, e.g. what industry are you in? -- "> What is the larger context of that work, e.g. what industry are you in? I wear a lot of hats. \"Information security researcher\" or something similar would be my job title, but I've always spent at least 80% of my time writing code (with the other 20% doing signatures, reverse engineering, protocol analysis, exploit writing, whatever...). In this case, it's for an embedded appliance that does high-speed traffic capture and reassembly. -- "My $0.02 - for process supervision *done right*, check out the **s6** suite [over at skarnet](https://skarnet.org/software/s6/). While I understand that *lorddimwit* might not be able to use the code, I found the documentation was great and enlightening. It's everything awesome about daemontools - and more. -- "Got a week before I start my next client project which means it's PROJECT TIME PEOPLE! - probs releasing choo 6 this week. We've had 6 or so RCs so far, think it's good now. - gonna work on the next version of [bankai](https://github.com/choojs/bankai). Figured out a whole bunch of neat browser networking things and oh boy, were going to automate it SO WELL - secret side project. Woah, it's so secret - finally also going to work on my ramen eating skills. Haven't had any ramen in over a week and I'm EXCITED ✌️ -- "First week laid off my job, so time to get serious about my personal server project. Continue learning TLA+ and develop story map for the project. -- "Condolences on the layoff. :( Remember, you're worth more than just your job! :) -- "Sorry to hear about the layoff. That sucks If you're in the US, make sure you grab that unemployment claim. -- "Sort of tossed up my hands with Bluez and then again with its DBus bindings. Been working on a native HCI layer sufficient for full Bluetooth LE support in Typed Racket. Commands, Connect and Event Status/Complete is working, currently in cleanup mode and fleshing out more of the obscure LE commands and events. Then on to ACL (async data) messaging, ATT and GATT layers. On the cusp of flipping light bulbs on and off via my Raspberry Pi 3. -- "Starting a new job tomorrow (1st of August) as one of the first pairs of boots in Europe to setup the technical team in Europe. It’s a security as a service startup which also means recruiting partners as well as identifying customers that might be interested. Exiting times! -- "> security as a service startup I'm interested in what Security-aaS means in this context. Managed security service has typically taken the form of SOC outsourcing, but there has also been some security SaaS, mostly in the authentication space (thinking Auth0, Okta). Do you mind sharing who you're joining? I realize you probably don't want to come across as spamming but I'm legitimately curious what business models people are pursing in the security space. -- "In this context it's Threat Intelligence /TIP on Clear-, Deep-, Darkweb. Which can be also provided as a Managed (Whitelabel) service provided by managed service providers. I can see why you would mention Auth0 and Okta in this case. The company I joined is called IntSights and provides Threat Intelligence/TIP as a cloud based service with remediation integrations back to your own network, it's pretty clever stuff. And you are right, didn't want to mention the company name initially. :) -- "Returned from DEF CON/BSidesLV/BHUSA, so today is for recovery. A coworker has coined the term [NAP CON](https://napcon.org/) which I think captures my feelings very well. 9 days in Las Vegas was far too long but the energy at DEF CON was incredible. I'm glad that was the end of the trip. I wish I would have met more new people, but it is still fantastic reconnecting with old friends and co-workers. I was a first time speaker and things seemed well received. I went over by about three minutes somehow, even though my last practice session left 7 minutes for Q&A! I had to take questions and conversation in to the hallway, which isn't ideal. I love when talk recordings capture the questions. I have client work to wrap up this week, which I spent last week effectively ignoring. Returning to reality is never fun so I'm trying to be gentle with my pace. -- "I continue working on my [Swift port of the Lox interpreter](https://github.com/hashemi/slox), which is written in Java. In my project, I try to go beyond making a straight port to exploring ways in which I could take advantage of Swift's features to make the interpreter work better. I'm documenting the lessons I learned in the readme as I go. The project has helped me get a great appreciation for Swift (and interpreters). The Lox interpreter is written in Java as a demo accompanying the book, [Crafting Interpreters](http://www.craftinginterpreters.com) by Bob Nystrom. Bob is publishing the book one chapter at a time as he completes them. -- "Had a couple of days off last week, so I moved my oldest running web server to a new physical host & newer OS to boot. Won't be the final resting place, the next step is to split the apps on it up into more logical zones rather than having a big dumping ground. Also waiting on a CPU upgrade for my Microserver G8 to arrive, although I'm not hopeful that'll come in this week. Be nice if it did though, takes the box from 1 core/2 threads to 4 cores/8 threads which will be a useful boost for Plex transcoding amongst other things! (Went for an E3-1265L v2 in the end after much research.) And given I'm away in Scotland for two weeks and now have a week off work whilst I'm there, I'm going to cycle to John o' Groats with a wild sleeping overnight stop and also try to ride at least the Speyside Way in the week too. I've got most kit I think I'll need, just ordered a bunch more essential stuff, so will be fitting/trialling that this week as it arrives. Looking forward to it, inspired by watching a friend up the west coast & out to the Hebrides over the last two weeks. -- "I've taken on my first ever client project this week, which is exciting. I've never been paid any serious money to code before now. -- "Flashing a [split keyboard](http://imgur.com/PgWZaWr) -- "Nice! Did you build it yourself? -- "Slow response... but yes! I may put together a build log at some point but it'd be an after-the-fact thing -- "Working on hardening and making my public Multics system more useful. I have a bunch of things like print queue postprocessing with user notification, automatic user creation, and a gopher server that aren't yet public that I need to finish up and get online for public consumption! `mosh dps8@m.trnsz.com` ` ` `ssh dps8@m.trnsz.com` ` ` ` ` if you want to play with it. Use `\"enter YourChosenName Guest\"` for anonymous access, without the quotes. There is more info with some links over at [ban.ai](https://ban.ai) about using the system. *YourChosenName* can be anything you like. Use *cwd [pd]* to access temporary storage - I don't offer any persistant storage for anonymous users. While you *could* just run the emulation yourself, running a large and secure multiuser system, where users can interact with each other and the world at large is a new challenge, for me at least in, and of itself, and one that I find fascinating - the more I learn about administering Multics the more I find it better than Unix in many ways - offering many of the best features of VMS - except in VMS these are features that didn't appear until years later! Subprojects in progress right now: Trek and Adventure ports from the IBM CBT PL/I collections, and my Multics gopher server with interactive web online help browser. -- "Remember that MULTICS inspire UNIX but was too big for their hardware. They literally chopped things off MULTICS as they were trying to fit an OS in their PDP machines. Of course, it's better in a lot of ways. :) Far as security, two founders of INFOSEC, Paul Karger and Roger Schell, did the first pen-test with huge publicity on MULTICS. His compiler attack inspired Thompson's paper as well. Lots of goodies. The original and Lessons Learned are below. https://www.acsac.org/2002/papers/classic-multics-orig.pdf https://www.acsac.org/2002/papers/classic-multics.pdf EDIT: The other neat thing about MULTICS is they envisioned computing being a utility. Many people would use the same hardware with massive utilization, security among untrusted users, and metering to pay for what you use. Damn, that sounds like The Cloud decades before it was advertised. IBM mainframes were trying to do something similar at the time minus the uptime or security. ;) -- "My favorite Multics paper so far: http://web.mit.edu/Saltzer/www/publications/MIT-MAC-TR-196.ocr.pdf So many lessons to be learned (and worse, so many lessons ignored) by systems today! This paper should be a mandatory read by anyone looking to refactor an existing system for security. Nice of you to mention the Multics \"utility\" paradigm - It's really funny to me in Multics to see my charges for almost every action. Login, check who's on, logout - that's usually about $0.05. I made an aborted to modify the system to actually provide \"charges\" that are closer to the reality today, based on current power consumption/costs, and the hosting costs I pay. This failed because I kept running into divisions by zero because of a lack of (unnecessary) precision. It's rather silly to charge $0.0000000000000005 to see who is online, I guess! Rather than try to fix this all over I simply enjoy that these days cloud computing is essentially \"too cheap to meter\" - at least they way Multics envisioned billing. -- "I am starting at a new job. Excitement of the unknown -- "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! -- "Porting [my blog](http://caiustheory.com) from [Middleman](https://middlemanapp.com) to [Hugo](https://gohugo.io), partly because I fancy learning how hugo works but mostly because I can't be bothered installing ruby on my workstation VM, whereas hugo is just a single binary (yay, Golang). Also speeds up build times **massively**, which is nice. Continuing to port workflows from laptop to iPad for personal stuff, I think the only outstanding things currently are talking to my Garmin sports watch and making deploying websites easier (previously I'd just rsync from laptop to server. Need something to act as a build & release server, ideally based on SCM notifications. Lots of prior art here, should be easy enough.) Also decided I should stop procrastinating and start writing proper content for a site idea I've had for a while. Turns out writing content is the hard bit of starting a site, which I'd forgotten. 👻 -- "Been a while since I posted to one of these threads. I'm at the university of Aarhus nowadays working in Iris for the summer so this week I have a lot of writing to do - Writing up a case study formalizing some fine-grained concurrent data structures in Iris. - Writing up the modifications to the Iris base logic I've made for my research. - Writing up more of a blog post on syntactic/computational forcing for proving continuity results about functional programs. But I actually want to do some additional writing so I figured I'd ask, does anyone have any topics in type theory or just functional programming that they would be interested in seeing a blog post about? -- "I’m gradually assembling a pile of libraries and an overall structure to use in my “web” “app”. If anyone has used these and has opinions on them, I’d like to hear them: Quasar; Buddy; Yesql; Joda Money; Liberator; Enlive. -- "Still working on [Hammer](https://github.com/ExHammer/hammer). This weekend I cleared a significant hurdle that had been hindering progress, when I realised I could do the main api as a `use` macro rather than an OTP genserver. -- "I released the initial public version of [elm-sketch-importer](https://github.com/eeue56/elm-sketch-importer), a tool for exporting your Sketch files into Elm. It's a work in progress, but I'm pretty happy with how it's shaping up. I will be converting it to use my elm-html-in-elm AST for Html, which will allow it to be generate straight HTML for free. Check it out if you're using Elm and Sketch, or even just Sketch :) I've recently changed jobs to work at a company called Schibsted. I've been getting familiar with Ramda and compile-to-JS languages which aren't Elm. Out of Flow, TypeScript and ReasonML/BuckleScript, I am most fond of Typescript. They've really put a lot of love into it, and the tooling is amazing. ReasonML is very immature, and the error messages are sub-par. I found them harder to use than GHC's errors. Flow required a lot of set up, and I felt tired by the time I had actually got into writing code. -- "We actually released many awesome updates to the search engine we are working on. https://learn-anything.xyz/ We soon want to add an easy way to contribute to the maps and start working on authentication and maybe make an official release soon too. We think it's pretty awesome already though, just need to bring more awareness to it to see it grow even bigger. 🚀 -- "A couple updates for [theft](https://github.com/silentbicycle/theft): - Switching to a [dynamic blocked bloom filter](http://tfk.mit.edu/pdf/bloom.pdf) for its explored state-space detection. This completely eliminates needing any bloom filter size configuration in the API, and reduces the memory theft uses even further. This is very nearly done, I just haven't updated the docs yet. - Adding optional forking for tests, so it can shrink bugs that cause crashes or timeouts. The main feature is implemented, but it has some subtle interactions with running progress hooks (which may be called on a different process now, and not update user state as expected due to copy-on-write) that I want to think about before merging it. Work: Something really exciting. :D I'm getting settled into my new job and working on substantial stuff. -- "I'm hoping to be able to dive into Sound Pi. At a meetup, someone highlighted how far it has come and they were doing some pretty cool stuff in it. I recently was introduced to https://fo.am/midimutant/ and I think that I develop a cool hobby making some music. -- "[I started streaming myself working on personal projects.](https://www.youtube.com/channel/UCMNqLf5GI6mkAUo-LGS07ig/videos) I did this partly because I think talking out what I'm doing helps me do better work and avoid spinning my wheels. I also started doing this because I think there's a dearth of examples of Haskell applications getting fleshed out properly. I'm working on: Rewriting a Haskell recipe manager to use Persistent/SQLite instead of values serialized and deserialized with Show and Read. An ecommerce app in Haskell. Porting Bloodhound to Rust. I'm planning to stream whenever I work on any of these three. -- "BloodHound the pentesting tool? I would definitely follow that! -- "[Fraid not](https://github.com/bitemyapp/bloodhound) -- "I don't have much time to watch all the streams, but the bits I've seen have definitely been helpful in explaining how to think through Haskell problems. So, thanks :) It would be cool if more devs streamed like this. We usually work in such solipsistic atmospheres (especially those of us working from home) streaming could be a kind of simulacrum of a social work atmosphere. -- "I've been working on a Kafka-like TCP accessible log service. Not distributed. It's an append-only structured (protobuf) log with monotonically increasing message ids behind HTTP/RPC with a basic id/timestamps index. It pushes messages at subscribers rather than forcing them to poll. It also adds a small layer of message filtering to reduce network chattiness for clients that don't care about all messages. It's not designed for massive scale. It eschews some of the peak performance complexity for a simple model. It's written in Go so that way my poor VPS isn't using a lot of resources to run heavier services like Kafka and Zookeeper. Why? Because I wanted to and no other reason. Because NIH is fun when it's your side projects. It'll be the basis of my single node HTTP log analytics system. -- "I'm working on mining dependency activity (dependencies added/modified/removed per commit) from git repositories for https://libraries.io and streaming it all via twitch, code so far is over here: https://github.com/librariesio/repo_miner -- "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! -- "$work: planning the migration of services from CentOS 6.9 servers to 7.1 $not-work: building my [hidiot](https://hidiot.com/) that turned up in the post over the weekend. -- "CentOS 6.x to 7.x doesn't look like any fun! Glad that AWS Linux is based on 6.x ;-) -- "Finally getting around to doing a swing migration of a couple terabytes of data. It's been living on an old NTFS drive, so I'm swinging it over to a new hard drive. I'll reformat the NTFS drive and bring the data back over (I want the new drive for something else because it's bigger). I'm running Arch Linux and was hoping I could format both the drives with ZFS, but it's not supported on my current kernel :( EXT4 it is -- "Which kernel are you running? The zfs-dkms package in AUR might suit your needs. -- "Second: I use `zfs-dkms-git`, `spl-dkms-git`, `spl-utils-git` and `zfs-utils-git` on four kernels. The only caveat is that `pacman`ʼs DKMS trigger doesnʼt always try to build `spl` and `zfs` in the right order, so itʼs important to check that one doesnʼt need to do `sudo dkms install zfs/0.7.0 -k 4.…` by hand. -- "I've been using the standard kernel that ships with Arch. At this time, it's 4.11.7. I remember hearing about those DKMS packages (I think from the Arch wiki for ZFS?) so I may have to give that a shot -- "Bought a secondhand 12.9\" iPad Pro last week and sold my personal 13\" Macbook Pro. Continuing to work out how to use the thing to do things I'd otherwise have done on the laptop. So far it seems like there's an equal amount of things that are easier vs things that are more difficult. (This isn't a standalone device, home server is being leaned on for things too. Hence why it's possible.) So far I'm still happy, regret hasn't set in … yet? 😉 Main job this week on the personal tech is sorting out the pictures of surplus kit I shot at the weekend and putting it all up on fleabay. No point in having it sat around when the monies could be spent on other projects. Such a ballache to do though. Also wrenched a bit on the ProjectBMW replacing the crankcase cover gaskets, only snapped one bolt (which of course is rare & therefore a £20 replacement. Fuck sake Caius.) Decided for sure I'm keeping it & working on it over the winter to get her in a position I can enjoy her properly next year and then decide whether to keep or sell on. Having a mechanical project is just too darn lovely to give up just yet. (She has overheating issues. Going to fit a MASSIVE electric fan to solve that.) This week is keeping an eye out for parts on fleabay and lining them up to do the work later. -- "This sounds interesting to me re: Macbook -> iPad. I sometimes read http://www.macstories.net, Federico Viticci there is very strong proponent of iPad for work, but his work-flow doesn't resemble anything similar to mine. Are you sharing more of your thoughts around this move that I could read somewhere like a blog ? cheers! -- "I’m intending on it, simply because a couple of people at work have been asking as well. I found [Matt Gemmell’s series on going iPad only](http://mattgemmell.com/category/ipad-only/) more useful than Federico’s, simply because it covers things like blogging with a static site generator & touching on webdesign/doing stuff via a server. Also trying to convince a friend of mine to finish up his blog post on coding with an iPad Pro, as he’s had one for a couple of years and loves it still. If/when I do post anything, it’ll be at http://caiustheory.com/ though. -- "Many thanks! You already gave me a lot to read :-) -- "Mostly continuing work on my [MPD client](https://github.com/pjanouch/nncmpp) and [shell directory navigator](https://github.com/pjanouch/sdn). Today I've [fixed Slack a bit more](http://cgit.janouch.name/uirc3/commit/?id=f7dce5e861e90581dd1317847aa4ca6771323150) in my IRC client since seeing :slightly_smiling_face: all over was pretty annoying. As for plans... the navigator needs more work to be actually useful, and then I want to create a system daemon to renice/reionice and oom_score_adj X11, i3wm and compton to a lower priority as soon as it sees them, in hope that I get a tiny bit more responsive system when everything goes to shit. I'd also like to reverse engineer w3mimgdisplay if there's any time left and potentially reuse the concept in the navigator as well. -- "Work's the usual, building a thing to connect one thing to another thing. Lots of Ruby involved. I'm not sure how anyone actually explains work stuff without writing like 10k words to explain what all of their systems are, what they do, and why. I will say though that we use SumoLogic logging there for everything, and I've really come to appreciate how useful it is to have all of the logs from all of our services (we're big on SOA) searchable quickly in one place with a pretty sophisticated processing capability. Last place I worked logged to a table on the main DB. And of course there wasn't a read replica or anything, so the log table gets huge fast and is hard to query well in production without essentially DOSing our main production DB. On personal projects, I've been working on a script to pull all of my comments from various boards I've posted to into a local SQLite database. Kinda handy if you seem to remember writing about something somewhere, but can't remember where and when. Supports HackerNews and Reddit so far. I have found Reddit integration to be a bit finicky, but it seems to be a good API once you get it figured out. I'd like to do Lobsters here too - seems we don't have an API here, but I'm not above a little web scraping. I've also been thinking of setting up my own instance of Lobsters for a group I'm associated with that seems to be in need of a discussion forum. Anyone have any experience with traffic vs server load? Still have some ambitions to spruce up my [DailyNotes](https://www.masongup.com/DailyNotes) site enough that other people might actually want to use it. -- "First day at the new job today. Hopefully some Mesos/Scala work this week. -- "I'm working on a Nim wrapper for libxml2, heavily inspired by lxml. -- "I've put some time into PISC over the weekend, and I plan to have a GopherJS based online playground for PISC in the near future, and if that goes well, an interactive tutorial for it. -- "__Home game stuff:__ The 8bit heightmap has finally been upgraded to 16bit and it looks much nicer than before. Tracking down all the collision detection bugs was quite annoying. It also blew the download size up from 20MB to 120MB, so I've been doing some work on bringing that down again. The biggest savings came from computing normal maps at runtime, cutting off about 50MB. I still save the normals at tile borders, and the code to load and save them is fragile and I don't like it. I've been thinking of doing something like: void pack( v3 * packed, const v3 * orig ) { *packed = *orig; } void unpack( const v3 * packed, v3 * orig ) { *orig = *packed; } template< typename F > void pack_normalmap_border( array< v3 > border, array2d< v3 > normals, F f ) { size_t n = 0; // pack top row for( size_t x = 0; x < normals.w; x++ ) { f( &normals( x, 0 ), &border[ n ] ); n++; } // pack bottom row for( size_t x = 0; x < normals.w; x++ ) { f( &normals( x, normals.h - 1 ), &border[ n ] ); n++; } // pack left/right columns... } // pack with: pack_normalmap_border( border, normals, pack ); // and unpack with: pack_normalmap_border( border, normals, unpack ); which is more DRY than what I have now but I'm not totally convinced it's a win. Next on the chopping board are my horizon maps. Storing the data needed to compute them at runtime would be a bit of a pain and quick testing shows PNG compresses them very well (34MB to 6MB) so I'll probably just do that. After that I want the game updater to be able to update itself, and then I can push a new release, which will include a Linux client for the time. __Work:__ Not happy. It's upsetting to look back at how little I've learned, especially compared with how much I could have learned if I just spent the last 10 months studying, doubly especially since I quit a much better paying job and moved countries because I thought I could find more interesting work here. This seems to happen to me at every job, so I wonder if I'm just doing it wrong? I'm considering moving into contracting. My reasoning being 1. I guess I don't actually like programming very much so I would like the variety and arbitrary amounts of time off and 2. I want to be able to say no to projects that don't interest me which you can't do while employed regularly. My biggest worries are that I have no idea where to start, and that nobody will want to pay for the things I'm good at (computer graphics and optimisation). If anyone has any advice on this I'm all ears! -- "I've been following [@sehurlburt](https://twitter.com/sehurlburt) who set up [bionomial](http://www.binomial.info/) which is a company making a texture compression product - hopefully [her story on starting a software business](http://stephaniehurlburt.com/blog/2017/6/24/on-starting-a-software-business) can help you make that leap to a better job... -- "Still banging away on [Hammer](https://github.com/ExHammer/hammer), a pluggable rate-limiter for Elixir. Progress has been slow (we've got a newborn in the house), but I've got it to the point where it has fully-working backends for both Redis and ETS, so I just need to polish up the API and write some unit-tests before uploading it to hex. I've learned a lot about Elixir, and particularly about OTP in the process of making Hammer, so I think I'm fine with the slow pace of development. -- "Working on a [requestb.in](http://requestb.in)-like service for the trampoline.io domain name I purchased years ago (yay for finally putting it to use!) as part of the Java training course I'm working on, both as an example of a deployed Java Spring service and to help students (new college grads) get a deeper understanding of what's happening underneath the web browser (i.e., HTTP). Slowly working on my online \"Modern\" Java training course, but fear that the kind of online class that I want to run will require a custom-made site (to allow to more interaction, discussion, and code review), so trying not to dive into that right now in order to get the first class out in September. -- "Just started reworking/refactoring [Senseye](https://github.com/letoram/senseye/wiki) after a long hiatus, so with some luck it might actually get a UI that doesn't suck. -- "I'm working on a [Noise Function Composition Application](https://github.com/ameobea/noise-asmjs) using Rust and WebAssembly. It's built on top of the [noise-rs](https://github.com/brendanzab/noise-rs), and the ideas is for it to provide a nice web-based GUI to build complex and dynamic noise functions. The hope is to use it along with a small simulation library that I'm working on to build cool visualizations and generative art kinds of stuff. -- "Getting my teeth into a new React Native app project for a client. Using Redux, redux-saga and some custom FSM reducers to manage all the network activity for the backend, and to keep as much of that as possible hidden behind a module API that my UI-building co-dev can use without having to know too much about's what going on, apart from just asking for data and handling the state-change messages. The redux/saga/FSM combo is starting to come together enough to make it feel like a decent way to manage state properly - even if it takes a *lot* of code to do it. -- "Do you know what the state of interfacing to hardware is for React Native? Last I looked (and checking again now), it was rather limited in terms of getting data from accelerometer, barometer, Bluetooth beacons etc. Is the idea that this kind of stuff should be done in native code on each platform? -- "Yes generally that's the approach - it's pretty straightforward to [expose native code](https://facebook.github.io/react-native/docs/native-modules-ios.html) and I guess the RN team don't think of these as 'core' enough to have made it (or have enough resource to have integrated it) into the platform itself. Generally speaking they seem happy to rely on 'community' modules for things like that, even to the extent of [navigation](https://facebook.github.io/react-native/docs/navigation.html#react-navigation) and [maps](https://github.com/airbnb/react-native-maps). As with a lot of `npm` stuff it's simultaneously a strength and a weakness - there are frequently modules already developed for things you want to do, but often it's hard to tell which is best (or even good) without digging quite deeply into it. For example, I found a [sensor library](https://github.com/react-native-sensors/react-native-sensors) that only does accelerometer and gyroscope, contra [this one](https://www.npmjs.com/package/react-native-sensor-manager) which handles many more sensors but is Android only, and [another](https://github.com/Polidea/react-native-ble-plx) which does BLE. `npm` modules also often very specific slices of functionality, so what I've found in RN so far is that with some digging and experimenting, I can usually get what I want by gluing together a few modules. -- "Thanks, that's good to know. Apparently some people have built bridges for Cordova plugins as well, here is one: https://github.com/axemclion/react-native-cordova-plugin. I suspect that's going to be brittle though. -- "I'm about to start work on a long-overdue redesign of all my websites. Throughout the weekend I've been working on a [Jekyll theme](http://blvd.space/roundabout/) that will become the base of the whole redesign, and the inspiration of the whole design came from [this post](https://blog.mozilla.org/opendesign/arrival/). -- "Working on some blogging software mostly, quite enjoying it. Perhaps starting my first proper piece of contract work as well! -- "I've been collecting information on which c compilers can compile which other c compilers. (spoiler: very very few) -- "Interesting idea! I hope you share your results. -- "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! -- "My fun side project is https://github.com/m50d/tierney , a hybrid free applicative/monad in Scala designed to be explicit about the difference between parallelizable and serial calls. I'm struggling with partial type constructor unification not working as I'd like though ( https://github.com/scala/bug/issues/10310 ). I think I'll have to write old-fashioned `Unapply` instances, or give up and switch to Haskell/Idris/similar. -- "Working on a [PDF parser in Lua](http://cgit.janouch.name/hex/tree/plugins/pdf.lua) which is a misguided plugin for my [highlighting hex viewer](https://github.com/pjanouch/hex), and making some progress with my [MPD client](https://github.com/pjanouch/nncmpp) so that I can finally uninstall Sonata/ario for good. -- "I'd like to get started on a FP PL interpreter, so I am learning the CEK machine. Current plan is to a-normalize and then run that on the CEK machine. Am starting with the semantics first because I've come at interpreters from the down and dirty perspective previously, and I'm ready to learn. Also, keeping the kid alive. Already at 3mos. -- "This thing: http://matt.might.net/articles/cek-machines/ Interesting stuff even though not my area. I like how the progression of concepts is straight-forward except for the Pierce part. I keep thinking that will be a heavy-ass book to read and putting it off. -- "Yep, working off his tutorials on this. It is fun to start with a simple machine that only knows how to halt and then extend it with each form to really grok how it works through computations. It is rather beautiful: it uses continuations to preserve the callstack during evaluation, which lets you (among other things) easily surface first-class continuations. Agree on the Pierce book. I have it on my bookshelf but still haven't made headway on it. I like the idea of it but it feels like it expects a graduate course to accompany it. -- "Yeah, I still dont even know what a type is or how Id build a type system. Most works like Pierce's are really math-heavy or do FP. You know any simple, easy tutorials for imperative stuff? I will say, though, that your description of building up computation from the ground up does seem awesome. I was just studying something like that in the Milawa, verified prover by Davis that works from human-verifiable logic upward in layers to finish at first-order prover. -- "Type systems are completely opaque to me, and I hope to hobble through one. I appreciate them while also recognizing they can be quicksand when tinkering around with a language. Quite interested in trying a layered approach to building a PL as a way to cut down on LoC, which really means multiple languages/IRs involved. I'm also aware this approach is not at all new, but I'm using it as a way to try to think more imaginatively about computing, as opposed to simply throwing more code at every problem that comes along. -- "I remember I know some basics of type systems for imperative languages. For an imperative language, I've always annotated the AST with a type field that I fill out after parsing and before type checking. (You can also transform the AST into a typed variant if your language prefers that). Type checking behaves like evaluation, where you're recursing through the structure of the program, except this time you're verifying that types match up. You can extend this basic system with more capabilities, but from what I can see, the gap between a simple type system and something like System F is...nontrivial. -- "Trying to wrestle [ffmpeg](https://ffmpeg.org/) into our framework, to take advantage of their network video capture capabilities. We've been using it to read/write movie files for a while now, but just beginning to take advantage of the amazing scope of the project. Might even sign on to do some contracting on the side today too. I have my first daughter going to college in the fall so every little $$$$ helps. Any hints on learning [Salt Stack](https://saltstack.com/)? -- "[My programming languages class](http://proglangs.com/) is coming to an end next week. All that's left are the students' final project presentations, the last lab, final exam prep, and the exam itself. So this week is going to be all about grading. I want to have all the grading done prior to the final exam, that way I'm not rushing to grade a bunch of stuff between the exam and the final grade submission date. -- "I'm trying to finalize the scripting interface for [Tulip Charts](https://tulipcharts.org). I really want to release a public alpha soon. I'm trying to find the right balance between brevity and simplicity and elegance fro the API. In the end I guess I'll just need to pick something and go with it. -- "Why wait to open source it if that was your intention from the start? -- "No real reason, other than it's less work to publish it later. I'll probably put it up on Github soon anyway. -- "I am funemployed between jobs this week, so I will be working on a few small projects that I have accumulated through the last approximately 5 to 8 years. One of which is to prepare my home office to be a real home office, as I will technically be a remote employee in my new job. I think the first up is a very simple one day project to create a parser for the [keepachangelog](http://keepachangelog.com) format in a jvm language, probably Java with a Groovy wrapper for Gradle integration. I also want to work on a Reddit bot that will search for meetup.com links and post more information about the linked Meetup as a comment. Another on my list is a informal job offer sharing bot for Slack. People can tell the bought their offer details and then the bought will ask the question to the room so that people can ask for evaluation of an offer's terms anonymously. I might also do some additional analysis of the [Pittsburgh Code and Supply compensation survey](https://medium.com/leaky-abstractions/software-compensation-survey-results-3702037fa451) data. I had thought about working on an Audio over DNS solution, but my preliminary research into it showed it was not something I could probably do inside of a week. -- "I'm working a little bit on [PISC][0], trying to wrap the Key/Value part of Storm into something that would be useful for chatbots of various flavors. I've also been pondering how to take PISC into the multiprocess world in a mostly safe way. Current plan is to have each type indicate if it's safe to send across a go channel, and/or implement copying for types that aren't safe to send as is, and errors for types that can't be sent across a channel at all (These will likely be closures around Go types like file handles that don't have a mutex keeping them go-routine safe). [0]: https://pisc.junglecoder.com/home/apps/fossil/PISC.fossil/ci/d9e7e9e5c58d225d?sbs=0 -- "Had an offer accepted on a house, so full steam ahead with lining up the pieces to make that happen now. Also appear to be doing all-the-things outside of work this week, culminating in a weekend of sporting activities. Friend of mine had the idea of doing a half-ironman-ish distance over three days, so we're sea swimming on Saturday, cycling 65 miles in a hilly sportive on Sunday and then running on Monday. Should be … painfu^Winteresting. For those of you following along with my hetzner-meets-smartos experiments, I solidified the networking & got the load balancer zone up and running via puppet. Now to move actual things like my static & php-driven websites across to it, then I can move sites I host for other people and cancel my other servers! -- "Got a talk accepted at the [AISB Serendipity Symposium](http://ccg.doc.gold.ac.uk/serendipitysymposium/) in London next week. A historical talk on how the word (and arguably sometimes the concept) \"serendipity\" shows up periodically in AI planning systems to mean various things. [Abstract here on Twitter](https://twitter.com/mjntendency/status/870667403881054214) b/c they haven't put up abstracts on the website yet. Finally found a suitably low-tech and cheap backup method I like. I take periodic tar.xz snapshots of directories I want backed up (Maildir, files, etc.), using cron, and push them to [B2](https://www.backblaze.com/b2/cloud-storage.html) using [rclone](https://rclone.org/). Then occasionally manually prune snapshots I don't need anymore (may automate that at some point). I considered a fancier incremental backup method, but I like the fewer moving parts approach of self-contained snapshots like Maildir-20170605.tar.xz, and both transfer and storage are cheap enough these days for the size of data I have that it's fine. In further trivial fiddling with my academic publications page (see [last week](https://lobste.rs/s/iuatjk/what_are_you_working_on_this_week#c_fxuedo)), I've started sticking images on the Abstracts pages to make them less monochromatic and boring blurbs of text. [Example](https://lobste.rs/s/iuatjk/what_are_you_working_on_this_week#c_fxuedo). Welcome 2 the multimedia future of cyberspace! -- "Engaging in a rewrite of a Perl CLI framework to be smaller, simpler, less magical (more explicit), harderfasterbetterstronger, and most importantly of all, [fatpackable](https://metacpan.org/pod/App::FatPacker). It's almost ready for a first release. But sadly, that's mostly last week's work. This week will mostly be spent chasing deadlines on a $WORK project about which I may not speak. -- "I am finishing up an internship in this and the next week. It's been the ground work for my Bachelor's thesis, which will be at the very same institute. The internship was mostly concerned with gathering data but for the thesis I'll get to analyze it with machine learning. I am really excited for that part. Also, since I am about to get my first degree I am thinking about where I am going to do my Master's. I am thinking about applying to the [University of Bonn](https://www.informatik.uni-bonn.de/en) since they supposedly have an amazing theoretical focus in their studies but I am not sure if I am able to keep up, or get accepted in the first place, anyways – I am currently enrolled in a university of applied sciences. Maybe I will enroll in a Technical University in Germany. Currently I am thinking about TU Munich or TU Darmstadt. -- "Wrote a trivial memory leak tracker for a deeply embedded system. Works very nicely. Tried to do it in gdb/guile... * Maybe I should have been on the latest guile, (I'm on latest gdb and 2.0.11 guile) but it seemed a little flaky. * The guile/gdb documentation needs a bit of work to make it a bit friendlier to a noob. Maybe I should submit something. * I had most of the infrastructure I needed in ye olde gdb commands so eventually backed off and used that. * Having been living in the world of Ruby and D and Turtles all the way down languages.... I just expected sort to work on a list of (string.number) pairs. It doesn't. Turtles all the way down languages really are easier. Continuing to wade though Patterns in Network Architecture... it's a hard slog. It needed an editor to whack the author over the head and say, \"Do you really expect your readers to have read and still care about a twenty year old paper!?\" -- "Couldn't complete my distro due to disk space issues. Looking forward to finishing that this week. I believe I've recovered from my knee injury sufficiently to start streaking again. -- "I had same issue albeit slightly different: disc of an old one broke so Im making a LiveCD/USB for it use remaining CPU life for heavy computation. The backup was too full, though. Another day.. -- "I'm working on a side project: https://sftpplease.io/ which will be a super simple and to the point service. At the moment it is not open the the public and there is polishing to be done. On a related note, if anyone here is a Go programmer who is preferably familiar with openbsd and wants a bit of work helping me create a go scp replacement I'd be interested in having a chat. -- "For my job I'm rushing to get a bunch of stuff into [MAGDA](https://github.com/terriajs/magda) for the end of June - primarily and authentication and discussion mechanism for datasets. Also been making a surprisingly large amount of progress towards the first MVP of [my side project NicheTester](https://nichetester.com) - an injured wrist keeping me out of Judo has lead to a bunch more free side project time :). -- "Your project looks great. -- "Thanks :D -- "I can see a paid path for the future to export the fake site to a real one using something like shopify. I'll be curious to see if any companies people validate on your platform take off. -- "Well, as of right now, I'm making an effort to be more involved on Lobste.rs :-) As for what I'm actually working on, it's a couple of things: - I'm continuing the march to at least reach 'useful for my own site' status on my static(ish) site generator. Text based files are handled already (md, scss/sass, template layouts, xml sitemaps etc), currently tweaking the 'configure' subcommand, to generate a working Makefile, so dependency & change related partial builds work as expected. - I've started working on building Debian 9 Vagrant boxes (based on the RC ISOs) for inclusion in https://atlas.hashicorp.com/koalephant. - Trying to find time for two client projects - Applying for a visa extension -- "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! -- "Finally picked up a motorised treadmill last night on fleabay, so this week will be attempting to build and use a treadmill desk. Compounded by the fact I don't have room in the house, so it will be setup in the back yard. I do currently have an [outside standing desk](https://twitter.com/Caius/status/862711146649985024), so it shouldn't be too hard to bodge. I suspect the main issue is going to be dodging the UK's rainy weather to make use of it. Also need to service my bikes, as the disk brakes on both of them are being noisy again. Great stopping power, but require just as much fiddling as cantilever brakes, and replacement pads & disks are way more expensive. Ach well. -- "Arr! My tires are worn to bits, and my brakes need replacing. On top, got a flat this morning... and I've been limping along with a broken spoke for a few weeks now... Haha. I'm ridiculous. Time for a top-to-bottom tune-up for me. I'm told disc brakes don't have as available servicing, but I doubt that's really a problem. Still, I've stuck with traditional pad breaks. :} -- "I've just started a side project with lots of ideas to leverage it. Right now, just focused on writing content but plenty of different directions it can take in the future, as an authority site, with services or products. Still in the \"in love with the idea\" phase, counting the days until I start to see the pitfalls, as usual! I'm working on my \"miracle morning\", that is: getting up at 6AM every day, and write a blog post by 8AM, then walk the dog and prepare for the \"day job\". I used to get up at 8AM in the last 10 years, and waking up earlier is a nice productivity feeling. It's still morning and I feel I did a lot already, which helps mitigate the always present feeling of not being productive enough. Spring is here, so nice walks with the dog and vegetables in the garden are starting to raise, looking forward eating my self-grown food this summer, as usual. -- "What time do you go to bed in order to get up at 6 already? I would really like to do something similar, but I just don't have the energy to stand up once the alarm goes off and I remind myself that I could just as well sleep for another hour or two. What kind of vegetables do you grow? We just bought tomatoes, but mostly grow herbs, where the majority is basil. -- "At 11PM. I try to keep a fixed schedule, 7 hours of sleep should be plenty. Key to me was moving the phone in a place I must walk to turn off. And do the bed as soon as I move away from it. And force me to stay up. I know that if I let me 1 day without this habit, I'll use that as an excuse. I simply decided I have to. And working from home it's easy to just sleep in. I just decide what I want to write about the day before, so I already know what I have to do and I don't just stare at my coffee. In the garden this year I got tomatoes, potatoes, then zucchini, many types of salads, eggplant, strawberries, raspberries, cucumbers, pepperoni, chili pepper, pop-corn, peas, pumpkins and other small plants. It's not a lot, just for personal use, but hopefully we'll get a lot of tomatoes and zucchini this year I can give away to friends and family, as I planted a bit too many :) as last year a thunderstorm destroyed 50% of the ones I had. -- "That sounds good enough, although it's hard to pull through with the bed time on the weekends (for me at least). Also, I do sleep through my alarm clock, it actually works better having the phone in the bed with me as I go to sleep, since otherwise my alarm will wake up other people but not me. I guess it differs from person to person. Still an interesting approach! That's quite a lot of vegetables, do they not take much care? I'm kind of jealous, I'd love to grow more but at the same time I do not want to invest much time into the topic since the gardening aspect isn't all that interesting. Thanks for your reply 😄 -- "Most of those plants need very little maintenance once they are planted, you just go and pick up the result. And I found there's nothing better than listening to a couple podcasts while taking care of removing the weeds, so gardening is not really \"losing\" time and I get away from my computer for a while :) -- "Mentionable within the last week: * a Cairo-based [invoice typesetter](http://cgit.janouch.name/misc/tree/toys/invoice) prototype in C++17 that generates [this](https://p.janouch.name/a/invoice.pdf). I've improved on it a bit and started using it instead of LibreOffice. C++17 is wonderful but good luck finding a working compiler and standard library in your repositories. * learned enough libdbus to add a suspend lock (_insomnia mode_) to my [wmstatus](https://github.com/pjanouch/desktop-tools/blob/master/wmstatus.c). It doesn't warrant the _\"If you use this low-level API directly, you're signing up for some pain.\"_ comment in the documentation at all. Now I don't need to run systemd-inhibit in a terminal when I don't want my closed laptop to suspend once the external screen turns off. Poor program is getting bloated. And since I can't get gnome-settings-daemon to suspend my PC on inactivity, it is likely to get bigger soon (but not by much, I already know how to milk X for idle events and the DBus part for logind's suspend command is already there now). * a [plugin](https://github.com/pjanouch/uirc3/blob/master/plugins/degesch/slack.lua) for my IRC client to work better with Slack's IRC gateway as it was getting on my nerves * trying to finish my professional time tracker so that it can generate simple reports and invoices from the simple text file that I keep, and synchronize it with YouTrack. Go is rather nice for this. Some aspects are super annoying (such as maps and sorting) but the standard library is extensive and makes awesome use of reflection. I've also set up VIM to highlight the database. I think that's enough fun for this month, as I haven't even made enough money yet to cover my expenses. My scripting language interpreter needs to wait (as well as countless other things). I guess I should get Let's Encrypt renewal working again though before my certificates expire. -- "Can you show me something to get me excited about C++17? I'm really happy with D these days. -- "It's mainly about what it [brings](https://en.wikipedia.org/wiki/C%2B%2B17) in relation to previous versions of the standard. I used to have a strong dislike for C++ and that's slowly getting weaker. Lambdas, auto, destructuring, Go-style condition initializers, standardized unused arguments, <optional>, <variant>, <any>, ... -- "Hm, I didn't see anything that immediately grabbed my attention over C++11. I guess finally getting `static if` is nice, albeit with a weird syntax. -- "Support for [unicode output](https://github.com/russellallen/self/issues/113) in Self. -- "I'm working on a video course (for Pluralsight) about dealing with temporal data in PostgreSQL. It's hard going but these things always are, and the topic is fascinating to me. There's a lot of research and I'm learning interesting things about Postgres in the process. -- "I made a Udemy video course a couple years ago, I think one of the hardest things I did, as organizing, scripting, filming all by myself was not an easy task, considering I never did a similar thing, but I read somewhere that the best way to teach something is just right after you learn it. And I found also a big boost to learn new things I would have never found out otherwise. -- "I actually found that it's easier to write a book. It may be longer in terms of word count (a typical course for me would be 30K-40K words which is roughly 120-150 book pages) but it's just writing, whereas a course is writing + recording + editing, with the additional constraints of having to match the video to the narration. -- "I absolutely love PostgeSQL's Range datatype for timeseries stuff. -- "Yes, range support is awesome but one drawback of using ranges for periods is that it's not going to be forward compatible with SQL:2011 temporal features (if/when those get implemented), because the standard is based on a pair of columns denoting the start and end of a period. -- "I'm working on internet access projects in Athens, Greece, half focussed on supporting refugee housing projects, half focussed on building community wifi for residents. Athens is a really exciting place to do this because the city is basically bowl shaped, very uniform rooftop height and surrounded by mountains; it's a great environment for installing wifi antennas. Have a lot of sub projects going including looking at mesh, installing a rooftop WAN with PTP links, figuring out VPNs for external access to internal services and to transparently mask outbound traffic. This week getting a bit more organised, installing some local services, drafting community wifi toolkit, and maybe getting a few more locations hooked in to the network. -- "Sounds like great fun! Have you looked into potentially using cjdns in the mesh network? -- "Nope. Should I? I have a strange memory of seeing someone from the cjdns project talk at a Bitcoin conference in London and for some reason he got laughed off the stage. Is it now a solid project? It's unrelated to DNS, right? -- "I'm not sure why they would talk at a bitcoin conference as it isn't related to bitcoin at all. It does indeed seem pretty solid now. It's an encrypted IPv6 network and routing overlay, so yes, independent of DNS. -- "Yeah, i wasn't imagining it: https://bitcoinmagazine.com/articles/annual-bitcoin-conference-takes-place-in-london-1348247615/ ;-) I'll take another look, thanks for heads up, this is useful as I'm getting stuck in learning about mesh protocols. batman and bmx mostly what I've been reading about so far -- "Is this as part of AWMN [1] or is this a different project/effort altogether? [1]: http://awmn.net/ -- "AWMN is dead, Jim. Unfortunately it's a mostly failed project due to massive internal conflict. We do attempt to interface with what is left of the AWMN infrastructure, but this is a separate project. -- "It used to be huge -- "yeah, it's very sad really, it was really an amazing thing. They [still report 1000's of nodes](https://wind.awmn.net) although it's not clear how many are actually still active and/or taking part in AWMN. The poster-children of community wifi these days are [Guifi](https://guifi.net/en) and [Freifunk](https://freifunk.net/) -- "We are working on a search engine (http://learn-anything.xyz) for user curated mind maps on the web. (https://github.com/nikitavoloboev/knowledge-map) It's going pretty great so far. We just need to think, how can we lower the friction to add content to the mind maps to promote quality content. Think of it like an open index google-like search engine that is improved and edited by users and not algorithms. -- "Learning Angular for a job, and react for fun. First time actually getting into the meat and potatoes of Node as well. -- "# !Work Probably nothing, because... # Work This is going to be my first week of work at SmartThings, ending my 3 month sabbatical, so I'm expecting to be more tired in the evenings than usual. -- "I've been working on a streaming time series service. The client requests a time span, a list of channels, and some resampling parameters, and my service returns resampled waveform data for each channel sent as a stream over a websocket. This week I'm incorporating neural spike events, and working to get streaming input working from a neurostimulation / sensor device. For fun, this weekend I sat down with my daughter and made some silly pictures with the haskell Diagrams library, which I have to say, is the most elegant, well thought out API I've ever seen. We made a big smiley face. -- "**Work** Started a business a month ago, today deploying a distributed system to crawl some stuff. Distributed crawling have been slightly more complicated than I though, especially since the tools (Scrapy and especially Frontera) appears to be less mature than expected. At least I've been able to do a few contribution in the process! **Not Work** Once I'm done deploying, I'm finishing up my [workshop](https://github.com/isra17/mruby-workshop) for [Northsec](https://nsec.io) this week. I feel like 3 hours will be quite a challenge to walk people through scripting exploitation without much background in exploitation. First time doing this, so hopefully will be able to learn a few thing myself and make the workshop better for potentially future conferences/training. After the conferences there's a 48 hours on-site security CTF where we place first last year. Mix all this with speaker/conference/CTF parties on each evening, it's going to be a long long week... -- "I'm working on a new release of [theft](https://github.com/silentbicycle/theft), my property-based testing library for C. This release has been a long time coming -- I've been experimenting with various implementation changes over the last two years, and have a lot more experience using it in production. I'm aiming to get it released out in the next week or two. The biggest changes: - Autoshrinking! There is now generic shrinking that automatically works with any user types. Writing manual shrinkers is still an option, but should be less necessary. (This is experimental, and its heuristics will get tuned more in future releases.) - The progress callback has been significantly expanded -- now you can use it to say e.g., \"run the property with its minimal failing input again -- I'll increase log levels and have a debugger attached this time\" or \"halt shrinking after at most X minutes of wall clock time\". - Test code can request only as many bits as it needs from the PRNG (which pools random bits), because the majority of runtime is spent in the PRNG. - There will be built-in generators for many common types. - Several API changes intended to make it easier to use. (If you've used theft and have any usability feedback, please let me know.) Also, I'm interviewing -- I'm looking for new remote work, with a focus on embedded, Unix systems dev, and/or distributed systems. -- "Strengthening some plot connections in *Farisa's Courage* (which some people are suggesting I rename, but I can't come up with anything better). Taking a break from the MS to think through plot and character. Unfortunately, the scenes I want to add will probably take me back up into 130-140k word territory. No end in sight to the revision process. :) When I finished the rough draft, I figured I was about 30% done. Closer to 15%. Novels are hard, yo. (Actually, it's deceptively easy to write one and not all that hard to get it published. To bring it to its full potential... takes work.) It's a lot of fun, but it's hard to do well. Working through [*Deep Learning*](http://www.deeplearningbook.org/). 97+ percent chance that my transition to research (meaning that I get to leave corporate programming forever, so +1 to that) succeeds this summer. -- "The only interesting thing I did at work this week was try to replace our boxfilter mipmap generation code with a higher quality mitchell filter. It was fun but also a huge waste of time. I can't tell the difference unless I zoom in, and part of the point of mipmaps is that you don't get to zoom in. It's also tens of times slower than the box filter (I think I measured 30x slower), which in practice turns out to be roughly twice as slow because sRGB conversions are so expensive. At home, OpenGL shaders are kicking my ass. I only have like 10 and it's already getting very annoying having to mirror uniforms between host and shader code, and I can imagine it becoming annoying having to mirror largely identical code between small variations on the same shader. (instancing...........) One small but not immediately obvious thing that has helped is putting my vertex and fragment shaders in the same file, so I can use the same struct defintion for vert outputs/frag inputs. So like: ``` struct VSOut { \tvec4 colour; \tvec2 uv; }; #if VERTEX_SHADER out VSOut v2f; void main() { ... } #else in VSOut v2f; void main() { ... } #endif ``` The uniforms thing seems unsolvable (codegen build steps are not a solution, neither is trashing my shaders with huge macros so they also work as C headers), so the best I can do is make it as painless as possible. Roughly, my requirements are: - No runtime strings - Ability to reuse UBOs between shaders - Don't kill any future DX/metal ports and ATM I have a hardcoded list of uniform names which I bind to hardcoded locations with `glUniformBlockBinding` in every shader, and then my rendering code looks like: ``` renderer_ub_easy( ub_view, world_to_view, view_to_clip ); RenderState render_state; render_state.shader = get_shader( SHADER_FLAT_VERTEX_COLOURS ); render_state.ubs[ UB_VIEW ] = ub_view; renderer_draw_mesh( mesh, render_state ); // can reuse ub_view in other shaders without having to rewrite/rebind it ``` `renderer_ub_easy` fills a buffer with everything aligned correctly (once I fix it - that commit is broken!) ([std140 alignment is stricter than C++ alignment](https://www.khronos.org/opengl/wiki/Interface_Block_(GLSL)#Memory_layout)) and uploads it to the GPU. [It's a nasty variadic template](http://git.mikejsavage.co.uk/medfall/commit/d744adf1adf247c5103688e468062d545621198c.html) which makes me worry I've gone off the rails somewhere, but for the most part I think this is pretty good now. God damnit I just realised my hotloading will break when my shaders start using `#include`. Need to think about that one some more. -- "Migrating an app off Heroku to DigitalOcean for an old client. Only now can I see the immense value Heroku offers. -- "Trying to digest \"Patterns in Network Architecture : A return to fundamentals\" by John Day. It's what I'd call \"An Old Man's Book\". It's the sort of book written by someone who has been (too?) long in the business. Full of interesting, but sort of irrelevant details and asides. You know immediately you have one of these books in your hands if it mentions Wittgenstein. Still, I think there are some gems in there.... now just the long slog through it to extract them into my brain. -- "I've been chipping away at the next version of pnut.io, that other other social network you haven't heard about, and catching honey bee swarms. It's that time of year! The current priority is a Files API and a way to pay for it. -- "Been working on learning more of Golang after my refresher on C. Been working on a minimal iftop clone, and have also started preliminary work on implementing a ssh client. Planning to start porting my minimal C compiler clone to Go as welll after my ssh client is done. So much to do, so many rfc's to read. -- "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! -- "Still my Elixir OStatus server. It's now properly federating with Gnu Social and Mastodon, still lots of small problems, though. -- "* a trivial scripting language because there's never enough of those * a sane typesetter for my invoices (just made pango/cairo measure text and output PDF files) I've just managed to stop being too lazy to even live, now where was I with those wheels... -- "I've found the only way I can get myself to do things regularly is to have multiple \"things/projects\" going on at once, so when I'm bored or unmotivated with one, I can switch to another without feeling the time has been wasted. Means I do have a lot of things partly-done at any one point in time though, which apparently works for me. -- "I actually have too many things going on (for a few lifetimes of work, and I'm not very fast). I can't even pinpoint what changed, just that last week I lost any and all sorts of direction, got upset and somehow managed to force myself back on a track, managing to throw away a few time wasting habits like realtime chat and oversleeping. Mind tricks. So far it works. -- "I just recently published the first part of my ongoing MIPS work, you may have seen it here : [mipsdis](http://blog.loadzero.com/blog/announcing-mipsdis/) This week I am working on polishing up the second part for release, which is to do with emulating a MIPS 4Kc processor. I recently managed to get the prototype of my C-based MIPS emulator to boot linux to the prompt, after a lot of blood sweat and tears, so it is time to step back and refine it. This work this week involves neatening up parts of the prototype for release, and extending [mipsgen](http://blog.loadzero.com/blog/announcing-mipsdis/#mipsgen) to generate the core of the emulator for both Javascript and C. I am currently writing a very basic transpiler that will hopefully do the job. -- "Back when I was playing with this, I toyed with the idea of writing the mips opcode descriptions in a DSL I could compile to many languages. My goal was to port to lua and run it inside computer games that use lua as a scripting engine. In the end I wrote luamips, though never finished it completely. -- "Luamips looks interesting. Which games were you targeting? With my mips stuff, I am traveling down a similar path. My goal is to be able to host 'real' C code in weird environments like the browser. My current plan for the DSL for the opcode descriptions will be a subset of C, or as much as I can be bothered to parse and transpile. My target languages for the emulator are currently C, javascript and ruby. I aim to keep the amount of language specific code down to around 500 lines, and autogen the rest. -- "> My goal is to be able to host ‘real’ C code in weird environments > like the browser. Funny, my original goal was to run openssh inside the browser. > Which games were you targeting? At the time it was garry's mod + wiremod which is a sandbox electronics game. -- "Ripped the old thermostat out of #ProjectBMW and tested it on the stove - worked fine. Still going to replace it, but not so sure that was the root cause of the overheating. I'll have to wait and see (my favourite kind of car debugging… not.) Prometheus is happily instrumenting things on my local network, also picked up a ram upgrade for the microserver (from 6GB -> 8GB) by buying some Mac Pro ram sticks on ebay cheaper than I could buy sticks advertised for the microserver. Recognised perfectly fine. This week I need to do some webserver maintenance, couple of sites I run have been a bit unstable recently. Also looking at moving from my puppetmaster-over-ssh thing (back) to `puppet apply`, because that looks like less work than trying to upgrade the puppetmaster-over-ssh work to puppet 4. Also discovered you can have \"masterless puppet\" nodes use puppetdb over the weekend, so you _can_ get exported resources & reports to work without a puppetmaster. Which makes `puppet apply` much more interesting. -- "Outside of work I'll continue to work on [kurly](https://github.com/davidjpeacock/kurly), which launched last week to a very satisfying reception. It has already received a handful of PRs from a couple of people, a few issues reported, and other feedback that has been positive. Happy times. -- "Setting up my new home office in my new home. Just finished moving, so there's a lot of unpacking going on right now. Aside from that, I'm gonna go ahead and try to hack my own brain to build up healthy habits; I've been taking on a bit of flab, and I realized I've stopped learning outside of work, or being motivated to build things that used to be very interesting for me. I think building up good habits will help, I predict myself having a hard time of doing that, but yeah. -- "Got booked in last weekend at [jsday italy](https://2017.jsday.it/) for a 50 minute slot (which is this Wed), so preparing a talk on how to write both a server and client framework from scratch. Thought it'd be fun to talk about the requirements frameworks have to deal with so, and show how to write it using just libraries so that people better understand what core browser / node APIs provide & they can better evaluate frameworks. Yay yay. -- "It's the last week of my microcontroller [kickstarter](https://www.kickstarter.com/projects/2072712581/the-hidiot-card-sized-electronics-learning-for-eve) project. We're fully funded (in fact over 400% funded), so it's definitely happening. Feels a bit unreal though. The 1.0 test boards arrived today. They're white so I can easily see what happens when they're touched with a soldering iron and it looks like I have some rewiring to do to avoid possible bridging risks if people slip while soldering. I also have to do all the necessary continuity tests on the board before we go for the final production run (which will be white on black). This is good though, because it totally justifies doing the test run of 1.0 before we order tons of the things. I'm also working on our [documentation](https://docs.hidiot.com/), last week I got to write up a cool project teaching people how to find secret government messages embedded in colombian pop songs, and some investigations into the sinking of the Titanic using the radio chatter from the time. This week I'm finishing up a Morse messenger project to teach some programming concepts then starting on what we're calling a programmer passport, which is basically a way of generating art through keyboard automation. I was thinking of opening the project up with one of my favourite examples, the music video for [Jed's other poem (Beautiful ground)](https://www.youtube.com/watch?v=hoI4WFpiSH4). -- "Congratulations on your successful Kickstarter. Was it your first one? What did you learn about the process? -- "Yeah it's the first kickstarter and it's the first product (I've worked in services pretty much all my life). I've learned a fair amount about the process. Perhaps the weirdest thing was that we were pretty much ignored by all of the mainstream maker media, which I partly put down to not getting our message right from the start in the kickstarter. I have a lot of media contacts in the information security industry, but none of them bit either (which is understandable, it's hard to pitch teaching kids electronics to wizened cynical security journos). I always knew we'd be able to ship, we were at 0.9 before we started with minor cleanup needed on the hardware and our supply chain is pretty much 99% sorted (although we did have to change PCB fab partway through). I did massively underestimate just how much hard work was involved. I think anyone looking to do a kickstarter needs to think about what they want to get out of it and why before they start. We thought we'd get some interesting coverage and exposure, where in reality it's more about opening up new areas in existing relationships. Also I'd say for anyone doing a kickstarter they pretty much need to have a finished working product before they start. If I was to do it again, I'd have waited longer to launch to finish the documentation, sort the add-ons and get the marketing message sorted. I'd have done some more smaller trial sales (we only did one in the Netherlands and an earlier freebie run in the UK that skewed our view of what people want). One thing I never expected was the sheer volume of crappy spam you get on Kickstarter. The amount of people offering everything from likes to prayers (yes, someone offered to cast a magic spell for money) is insane. -- "Editing *Farisa's Courage*. Down to 120,713 words. Should easily get to my goal of 115,000. This pass, I'm focusing on grammar and character motivation. It's probably the second-to-last before I'm ready to submit it to agents. [1] Still waiting on a start date for my next gig (which'll take me back to the East Coast). There are some macro events that influence when I can start and that might (~5% chance) shut it down, alas. So I have this weird game-theoretic job search going on that would take too long to explain in intricate detail. Blog is back up and running but I refuse to do tech blogging, because I already got one round of death threats from people associated with Y Combinator and I don't need another one. ---- [1] Publishing is a mess. You literally can't submit directly to publishers without an agent. Now, I would get an agent regardless of that requirement. The problem is that, because publishers refuse to accept direct submissions, every yahoo is submitting to agents. That means that even getting an agent is competitive (much harder than getting published once you have one). In essence, publishers have made agents the HR Wall that bounces the unqualified masses. I'm sure that I'll get through it, but it takes a long-ass time (12+ months). Literary agents don't even read most manuscripts anymore; they delegate that to interns, so you have second-order agents. In the long term, trade publishing is doomed to contract as the entrepreneurial publishing (or *self-publishing*) ecosystem grows up. As for right now, though, there are still enough benefits if you win the trade-publishing lottery that it's worth it to try. -- "> Blog is back up and running but I refuse to do tech blogging, because > I already got one round of death threats from people associated with Y > Combinator and I don’t need another one. Wat? Did I miss some kind of tech blog/forum drama? I wouldn't figure on tech incubator people sending a lot of internet death threats. -- "> Did I miss some kind of tech blog/forum drama? You didn't miss much. I wrote a blog post in 2013 that Paul Graham thought was about him (it wasn't) and then a couple of junior YC people attacked me in 2015. I don't know if PG was involved but I blame him for not stopping it. I highly doubt that Paul Graham or Sam Altman (who actually seems to be a decent guy) had any specific knowledge of the death threats. Usually, when you get harassed in the Valley, it's not the bigwigs who do it (they don't have time for petty vendettas) but people trying to ingratiate themselves to the bigwigs. -- "@work: - css reworking - anxiety @home: - working on my homelab. - got a faster cable modem in the mail, gotta install/register it - waiting patiently for my gateway pfsense machine to come in (a pcengines apu2). - booting openwrt on my ubnt ap - building a [Let's Split v2](https://github.com/nicinabox/lets-split-guide) - I'm around 1/4 of the way done harvesting matias quiet click switches from an old broken board - I have some apple extended keyboard ii keycaps I harvested that I need to put through a bath, etc - Waiting patiently for my diodes and other hardware to come in the mail, so I could start soldering on the board - maybe prepping some stickers to decorate the acrylic plate with before I install switches on it - also I'm working on a custom usb mini cable for my ps4 controller (i play rocket league with it quite a bit) but I got the wrong connector in my kit on accident 😩... so I've gotta order a new one of those. -- "> booting openwrt on my ubnt ap Out of interest, why? 🙂 Just not having to run the Ubiquiti Controller software to configure it, or are there other benefits? (I had a quick read of [the wiki page](https://wiki.openwrt.org/toh/ubiquiti/unifi), but that fails to list _benefits_, or I missed it.) -- "- fun - open source that's plenty for me.... except a third \"benefit\" which would be if it doesn't blow up all the time (not that ubnt's software does) but only booting it and using it for extended time will tell us that 😁 Also yeah, I do *not* want to install their software on my computer for configuration. I already have openssh and screen/a serial cable... is that not good enough -- "My ereader broker so I cant read much right now... I'm thinking of trying my hand at the Rust Libz Blitz while I wait for a new ereader. At work I'm doing some testing and bug fixing of work done last week, which mostly consisted of writing functions to overhaul the document upload and viewing process in our app. (And then replacing every call to copy with those functions) -- "This is my last week of my \"[sabbatical](https://lobste.rs/s/lqxa8y/does_your_job_contradict_your_beliefs#c_3o0omk)\" and knowing that it's coming to an end I've been being a lot better about spending my time on projects. Right now I'm working on writing a note-taking app. It's mostly an excuse to learn how to use GTK+ with rust. It's my first non-completely-trivial thing I've done with GTK, so it's been quite a learning experience. However, I'm hoping to also end up with a useful app at the end. Screenshot of what I've got so far: http://tinyimg.io/i/pvIpNm9.png and the super messy code: https://gitlab.com/azdle/onefold Still have a long way to go. -- "https://gitlab.com/azdle/onefold <- 404 error -- "merp. Was set to private, public now. -- "Don't worry. I can relate. I've a lot of projects on gitlab but only a few are public :-) -- "I just finished my 1-week sprint of a plug-n-play comment engine for websites and especially static blogs. - [repo](https://github.com/dyu/comments/) - [demo](https://dyu.github.io/comments/) Now time for some rest :-) -- "Hey I thought about something similar, sounds pretty cool :) what I would personally like is a system that works without Javascript but I am not sure if that is possible at all in a static blog setting. -- "What's cool? The sprint part or the commenting part? Answering you on your other post. -- "Working on getting my first private beta release ready for my Electron-based remote Linux server admin tool (http://www.serverwrangler.com/). -- "Interesting. I subscribed even though I managed all my servers via ssh cli -- "Working on the next big update to Learn TLA+. A lot of small changes, but the main one is that I'm ripping out the current reference section (\"here's the set of all automorphic functions over a set!\" is cool but not very useful) and replacing it with a ton of example specs (\"here's how to simulate a client-server architecture!\" / \"here's how to find bugs in MongoDB!\") and techniques (\"here's how to add cronjobs!\" / \"here's how properly use model values!\"). I think that will make it much more useful to people who know the basics but aren't sure how to apply it. -- "Is the \"HEY\" the part you'll be getting to soon ;)? https://www.learntla.com/introduction/ -- "That part is 1000% perfect and nothing will ever change my mind -- "i've recently joined the [pytype](https://github.com/google/pytype) team, and have been really enjoying getting up to speed on it - it's probably the most fun i've ever had at work. i'm currently working on python 3.5 and 3.6 support, which should hopefully close out a lot of open bugs. -- "At work, I'm getting ready to build a report emailing service, which has involved taking a look at how cron schedules tasks (for a basis), and investigating the [Dispatcher][dispatcher] class which seems like a nice way to take the smallest bare basics from the Actor Model and use it in C#. I realize this missed out on the supervision trees, but it allows me to use an event queue as a poor man's message passing w/o having to bring in a dependency on Akka.NET for a project that won't be a distributed system. For fun, I've finally started investigating [irc bots in PISC][bots]. I'm going to have to start looking into how I'm going to do timers and the like since PISC has been single-threaded so far. I'd like to be able to build an evented bot under the hood. I also recently took part in [Ludum Dare 38][LD38], and I've been polishing it a bit here and there. I've recently mostly graduated, so I'm switching to a different schedule of avoiding computer screens when I'm at home (for the moment, my Kindle is an exception for it's ability to display documents so I can save on printing). I'll be working on establishing a diet and [exercise][exercise] routine over the next 40 days or so, in order to try and keep my body from deteriorating like it'd be apt to do if I continued my college practices. I'll also be working on a small school project to connect an Android phone to an Arduino Nano via Bluetooth over the next few days. We'll see where I am in a week! [bots]: https://pisc.junglecoder.com/home/apps/fossil/PISC.fossil/artifact/40ff8ca3998d3add [LD38]: http://www.andy-rambles.com/post/LD38-one-week-later/ [dispatcher]: https://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher(v=vs.110).aspx [exercise]: http://darebee.com/programs/foundation-program.html -- "**Work** Docs, lots of docs. **Personal** I'm thinking about writing a fuse filesystem that mounts consul key value store. If a key exists with a value of true, then the directory/file exist, otherwise the don't. I'm thinking this could be cool to enable feature switches where software just need to check if a file exists to enable the switch. No fancy api or language integration. most programming languages have an easy way to check if a file exists. Maybe such a project already exists? -- "1) put bells and whistles on the containerized DNA analysis workflow system 2) stand up separate test system for $partner because they have real customers now and production is really production 3) start cycling again? -- "Started writing an interactive blog post about dot products. https://iamwil.gitlab.io/expvis/posts/2017/05/07/dot_product.html It's still in progress, but it's mostly up. Let me know if you have any feedback, or if you have other topics you want to learn about. -- "I've been creating a tabletop RPG - we've had our first play tests and now I'm fixing some of the issues that turned up in it. Aim is to launch around the end of the year. -- "Trying to to see if a Windows video capture library will be easier than maintaining our current video capture code. My boss is all gung ho on it, but if the past is any predictor of the future, it will be more trouble than it is worth. Not only do I have shoehorn their paradigm into ours, when anything breaks I have to hope they can fix it in a timely manner. These black boxes have almost never proven to be worth the grief in the end. -- "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! -- "My main aim this week is to keep hitting my daily exercise goal, which mostly involves badgering my mate to go to the gym (we guilt each other into turning up, until it becomes a habit again) or going for walks and catching up on podcasts. Also away from backlight rectangles of light, I'm also aiming to get the dinghy in the water **and** get the project car back on the road. Car should've been fixed at the weekend but like an idiot I replaced the camshaft sensor when it needs a new **crankshaft** sensor. (Duh!) Successfully segregated my home network onto VLANs last week, now I just need to firewall the \"management\" VLAN from the rest to make use of that segregation. -- "> Successfully segregated my home network onto VLANs last week Nice. How many VLANs have you settled on and have you done anything specific to handle \"IoT\" type devices? I'm using VLANs at home for my DMZ and guest internet access but haven't quite worked out how best to handle things like my set-top box, \"smart\" TV, Sonos speakers, etc. Ideally I'd like to keep all of those on their own VLAN but that stops things like being able to control the Sonos from a machine on the trusted VLAN (it's a nightmare getting Sonos devices working across VLANs). Chromecast and Apple TV have similar problems (although those are a little easier to workaround with some Avahi magic). Argh. -- "Currently I'm up to four VLANs: * 1 - Management. Networking equipment. DMZ I guess. * 2 - Trusted. Things that are trusted to talk to each other/server. (Adult devices, phones, Apple TV, etc) * 3 - Cadets. Kids network, eventually aiming to only allow to talk to trusted network for things they need (media server, apple tv) & filtered internet access. * 101 - Isolated. IoT & Wifi guest network. Internet access, firewalled from everything else internal & each other. The only thing currently firewalled is the Isolated VLAN however, the others can happily reach each other atm. (First step was getting everything on the correct VLAN with the correct DHCP pool assigned.) IoT things have so far been dropped on the Isolated network as they only require internet access, as well as things like my Xbox 360 that needs internet but nothing else internal. -- "The last few weeks I've been working to expand our on-call rota. To avoid dropping people in on the deep end, I want them to to have some training. Since we don't have many incidents, we have to create ones so I've been setting up a weekly training session inspired by [Failure Friday at PagerDuty](https://www.pagerduty.com/blog/failure-friday-at-pagerduty/). To avoid it being too much of a timesink we try to limit it to 1 hour, and we only break one thing at a time. Once people are getting more practice (and we start running out ouf scenarios!) we might break multiple things at the same time. Further, so far we have focused on incidents introduced by operator error or third-party services having a bad day. We've not played with active saboteurs yet, which could be interesting. Supporting this I've been focusing a lot on documenting checklist for the process we want to use when responding to incidents, which resources are available to resolvers, which are critical services, and incident severity levels. For some sections I'm pointing to https://response.pagerduty.com/ but pointing out where we differ due to size. -- "Choosing whether I want to build multi-DC stateful systems full-time, write a book on distributed systems or rust, and/or just travel around and work on [well-specified](http://github.com/spacejam/tla-rust) rusty [high-performance persistent structures](https://github.com/spacejam/rsdb) and [distributed stores](https://github.com/disasters/rasputin). Good times ahead in any case :) But before I have specifics, it's a bit stressful for me to deal with apartment relocation stuff out of NYC without knowing where I'll be in a month, how hard I should be looking for an apartment in Berlin, etc... I don't want to be fully mobile with a full-time gig. Head is spinning, mostly in good ways. -- "If you don't mind, what was your journey like for learning about formal specification/verification (TLA+) to creating projects using it, etc.? -- "I've turned to formal methods in anger after dealing with too much stuff that doesn't work, is hard to debug, and is unclear if it even CAN work. The breaking point for leaning into TLA+ was pretty recent, I've heard about it for years from friends in the distributed systems community, but have never really felt like it was worth the effort for what I'm building. The breaking point came a few weeks ago when I was writing a lock-free log-structured storage mechanism for rsdb. I needed to implement a number of structures from a paper, where they were not very thoroughly specified. I got the thing to pass some simple smoke tests. Then I ran a script that juggled thread niceness and it blew up. I fixed a bunch of bugs, and I've fuzzed tested it, but there is still zero confidence that the thing is correct. At the same time, I saw [hwayne's TLA+ guide](https://www.learntla.com/introduction/) that he posted here on lobste.rs, and finally decided to dive in. TLA+ helps me to know that I'm at least pursuing something that is possible. I also have a consensus algorithm that addresses a livelock issue I don't like about raft, but it would be downright crazy to rely on this without proving that it is correct. I'm still a beginner, but it's helping me to feel better about how I'm spending my time. -- "Brilliant, thank you for the thorough answer. I'm starting to go through something slightly similar ('too much stuff that doesn’t work, is hard to debug, and is unclear if it even CAN work'). After having proved an algorithm for example, how do you ensure that the implementation matches? > I’m still a beginner, but it’s helping me to feel better about how > I’m spending my time. I'm looking forward to this. I feel like there's too much guessing/hacking around in software engineering, DevOps, etc. sometimes. -- "> After having proved an algorithm for example, how do you ensure that > the implementation matches? This is one of the things I'm most interested in right now. I'm totally dissatisfied that people building stateful things are resorting to TLA+, which isn't real code, or black-box probabilistic testing like jepsen, which has very low bug:compute time ratios. The middle ground is simulation. I'm kind of obsessed right now with the idea of \"simulatable systems\" that are also amenable to exhaustive analysis while writing them in non-specialized programming languages. My theoretical knowledge is totally lacking in this space, but I'd basically like to specify things as state machines with certain rigid transitions based on messages that may arrive arbitrarily late. I am very much in the researching what research to research phase of this haha, and I'm almost certainly going to hit some impossibility results or something that will change my goals for what I should aim for, but right now I'm naively plowing ahead :) But I know it won't all be in vain, I've built some probabilistic simulators that vastly outperform black-box partition testing by controlling clocks and delivery times/orders from a simulated transport, but I would like to push this farther into the direction of exhaustive testing. -- "Quite a few of the things you've said align with what I've been thinking about, and I completely understand the 'researching what research to research phase' haha I'll keep tabs on what you're doing (from your GitHub) account and in the odd chance I come across something I think might be useful, I'll shoot it your way. Do you have any links to the probabilistic simulators that you've made so far? Also I couldn't find the TLA+ files in either of the repos you've got up. -- "Hello everyone! I've been learning about [WebRender](https://github.com/servo/webrender/) and started to make some pull requests. I've done a couple of documentation improvements and got a minor API change accepted that makes an important part of the API easier to understand. Learning WebRender has been a good bit of fun and it seems pretty promising. (I'm not interested in using it as part of Servo...) I'm still working on my JavaScriptCore and LLDB bindings for Rust, as well as the digitization of the 1939 book on butterflies in British India. My daughter (6yo) has a 2.5 week break between terms at school, so the next couple of weeks will be interesting. Have a good week! -- "Last few weeks have been wishy-washy waiting for contract stuff to be sorted out, but finally have a contract extension sorted and payments coming through again, so I'm back to working on what I've been working on for the last 5-6 years; building disease surveillance, monitoring and alerts systems in the humanitarian space. Trying to get a first pass at the desktop application going (built on QT using a modified version of the web UI in QWebEngine) and getting syncing and data submissions simplified and compressed enough for the desktop app to be usable in places with extremely bad internet or where they're using tethering. Other than that, starting the paperwork to get citizenship documents ready for Canada for my kids in case my application for ILR here the UK doesn't get approved when I apply at the end of this year! Doing a bit of digging into CMake/CPack for packaging of the web application to make installing easier. And other than that, chipping away at a 100 item long backlog of issues in our mobile and web apps. So yeah, uhm, lots, probably too much. -- "Finally [got back](https://beeminder.com) to Inbox Zero after being at 900+ for a few months. The feed reader's a wreck, but at least now I'm not missing messages from friends and family in the noise. I'm starting a Chicago meetup for saas/online service businesses, probably named something like \"Chicago Online Services\" to broadly catch subscription-based businesses. There's a decent number companies doing things [Chicago-style](http://www.holovaty.com/writing/chicago-bootstrapping/) and I'd like to encourage a healthy ecosystem and community. And I'm doing motorcycle maintenance to take it out as soon as the weather stabilizes a bit (Chicago spring is less of a transition and more of an oscillation between winter and summer). The tachometer stopped working in the last week before I put the bike away - probably I just need to lubricate the cable (rest of the panel + electrical is fine), but there's a chance I'll have to replace the cable or fix/replace the instrument. And a bit of yak shaving, I need to measure some bolts so I can get the right-sized wrench so I can change the oil. Any other riders with spring-prep checklists to share? -- "> Chicago spring is less of a transition and more of an oscillation > between winter and summer) Often true, and apropos. In March, we had a literal 80s-to-30s day with serious rain at the end of it. Went out in shorts, had to get a ride home. -- "I've been working on a Makefile to download and cross-compile a basic busybox and musl based linux system. Target for this is to create static images for random devices of my choice. For the future, i might use the static image for server setups where code, config and data are separated. So for upgrading, you just need to copy over the code section, and the config section can be managed by git. This would allow for reproducible setups and better scalability for big VM farms where most of the machines have similar tasks. To port the system to an ancient Siemens Futro, i need to port a kernel patch made for version 2.6 to 4.4 since the CPU is lacking one single instruction to be i686-compatible. -- "I finally completed my journey of creating a self hosted scheme compiler. -- "Was it from that Incremental Construction paper? -- "it's pretty much all my own ideas with a little help from my friends. -- "Well, that's even better. Much more rewarding experience. :) -- "Have a week to myself and finally figured out how to open the (first) novel I want to write. (I [ended my blog](https://michaelochurch.wordpress.com/2017/01/19/end-of-blog/) with an excerpt.) About 40,000 words toward a target of 120-140k. (I expect the series to come in around 600k-800k.) I've been designing the characters and world for years but it wasn't until last month that I knew how (or I should say, *when*, because it's a more compelling story if I start in the middle when the main character is in her early 20s) to start the damn thing. Finishing up reading the infamous Dragon Book. It gets a lot more interesting once you get through the parsing purgatory in the first third. Compilers are fun. Looking at job opportunities (recently finished a contract). Trying to decide whether I want to move back to the East Coast. Chicago's great, but there aren't as many opportunities out here. -- "On Friday I impulse bought like 10 square feet or so of plain wafers? Not vanilla wafers or wafer cookies, literally just ten square feet of the insides of a KitKat bar. Over the weekend I ran a couple experiments on how they handle moisture migration and they hold up pretty well, so this week I'm going to be turning them into chocolates. First batch will be lavender truffles, second will probably be 'KitKats' made from ganache. Nothing too exciting on the computron side, though. Not all weeks can be computron weeks. -- "Containers on Google; Kubernetes. -- "At $WORK, webdev, ugh. But somebody's got to do it, and my specialty (complaining about technical debt) is in low demand right now because we're working on a new, greenfield project. At $HOME, continuing to plug away at my [toy game engine](https://github.com/whbboyd/gl-demo). This weekend I got clipping against the heightmapped ground mostly working; the next two features in line (not sure of the order yet) are heightmap LoD and per-vertex material properties (so the whole thing doesn't have to be horrible programmer-art barber shop tile). -- "Doctor just gave me two more months on the csst, so no more skiing for me, but that does mean I get a few extra paychecks from the ski school.. At work I'm balancing bug fixes with adding new features and slowly rewritting it to a mix of mvc and functional programming (Full oop is too much for me to handle, but it isnt to hard to rewrite some of the procedural code in a funtional way, which is much nicer anyway) -- "Writing more unrealscript. Begin phasing out my direct-to-blockchain mechanism in my game, and instead integrate MoneyPot. Work. -- "Planning on submitting some tiny PRs to a golang lib we use all over the place at work. I finally launched a tiny [macOS app (open source)](http://jesseclaven.com/projects/AutoVolume/) yesterday so it was a good way to start the week. -- "Dealing with Second Batch, born on Wednesday. So far, so good, although all I have the brain capacity to deal with these days is lousy movies in the middle of the night. Maybe this week I'll spend some more time with my toy project (an MPEG-4/ISO parser in OCaml). -- "I'm building a react native style framework in go. Currently working on the constraint layout system. -- "Digging out some code I wrote years ago [that auto-skins simple videogames](http://www.kmjn.org/notes/auto_skinning_videogames.html), because something along those lines turns out to maybe be useful in my [new-ish job](https://metamakersinstitute.com/). Con: it seems that J2ME apps on featurephones are no longer a contemporary development platform, and even getting that stuff running in a simulator has bitrotted to hell. Pro: it seems possible to excise the core constraint-based skinning logic from the J2ME stuff, in part because this was written early-ish in my PhD when I was apparently quite conscientious about commenting and structuring and such. The code from the last years of my PhD is a mess, but this code comes with installation instructions and a detailed README. Amazing. -- "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! See also last week's new [What did you finish this week](https://lobste.rs/s/yqhqfh/what_did_you_finish_this_week) thread! * * * _Submitted under Culture as well as Ask because only submitting tagged Ask was failing validation this time round._ -- "Spring has apparently sprung in the middle of the UK, so attempting to make the most of it before the April showers arrive:- fettling the convertible; getting out on the bike; and starting training for the town 10km run in May. Picked up a new camera at the weekend (Olympus OM-D E-M10 II), so no doubt getting outside to play with that and learn the menus is on the cards. Need to tidy up my home server a little too, considering running Privoxy for the kids devices to use, so I can filter ads & sites they can access. Feels a little easier to manage than applying a white or blacklist on every device they have. -- "Have you considered DNS filtering like with [OpenDNS](https://www.opendns.com/home-internet-security/) ? -- "I'd forgotten they offered that. I prefer not to be dependent on one set of upstream DNS servers, and run an instance of `dnsmasq` on the LAN as a proxy using it's first-to-respond-wins mode with multiple upstream providers. Means pinning to one provider for their features locks us to those which feels like a step backwards. -- "> Need to tidy up my home server a little too, considering running > Privoxy for the kids devices to use, so I can filter ads & sites they > can access. Depending on what you'd like to filter, [DansGuardian](http://dansguardian.org/) or the fork [E2guardian](http://e2guardian.org/) may give you more control than Privoxy on its own. -- "Hello again! Hope that you've all had a good week since last week. I'm working on a couple of different things in typical programming land ... * Improving and extending my Rust [bindings for JavaScriptCore](https://github.com/endoli/javascriptcore.rs). * Improving and extending my C and Rust [low level bindings for LLDB](https://github.com/endoli/lldb-sys.rs). This is a precursor to extending the high level bindings. As some of you know, I have an interest in photographing insects, lizards and other creatures, which I post [a lot on Instagram](https://instagram.com/bruce.mitchener/). This weekend, I got a [great capture of a jewel bug](https://www.instagram.com/p/BSGL0GQFp3y/) and had a small photo shoot with it. Also got a praying mantis last week that was [wearing a hat made of sticky seeds](https://www.instagram.com/p/BSC_RXQlPg0). I also observed and photographed a wild bee nest and learned about blue-banded bees (which perform [buzz pollination](https://en.wikipedia.org/wiki/Buzz_pollination)). Well, along that line of thought, I've taken an OCR of a book from 1939 about lepidoptera (butterflies, moths) that is in the public domain and am cleaning up the output and converting it into ReStructuredText (for now). I'm hoping to make a lot of progress on that this week. This will probably lead to a blog post or two about some interesting issues that arise in digitizing this sort of material and presenting it to readers. Have a great week! -- "I'm working on a refresh of my [`csv` library](https://docs.rs/csv/0.15.0/csv/), which I initially wrote quite some time ago, and is therefore using the old `rustc-serialize` serialization infrastructure. The key motivation for the refresh is to use [serde](https://serde.rs/). As an initial first step, I decided to make a new more fundamental library called `csv-core`, which doesn't use Rust's standard library (and also doesn't do *any* allocation). Which means you can parse CSV entirely on the stack, which is kind of cool. The more interesting bit is that I translated the finite state machine in the existing `csv` library from an NFA to a DFA, which is compiled in exactly `364` bytes on the stack. This gets a nice performance boost for the typical reasons, and also because it reduces any overhead associated with disabled CSV parser options. (The size of the DFA could be further reduced, but I'm not quite sure how to do it without negatively impacting parse performance.) My initial bit of code is here: https://github.com/BurntSushi/rust-csv/blob/rewrite/src/reader.rs -- "A technology \"bake-off\" selecting which front-end stack we'll be using going forward. -- "Implementing a QBE back end for Myrddin. -- "I'm probably going to help with a Go note-taking open-source project written by one of the Lobste.rs members, implementing a few features on top. I hope I can use it as a hassle-free engineering log. I'm also going to finish up my communication book, I'll skim through it again to take important notes and then lend it to someone else. For monies, I'm going to be learning about our stack in more details, get my bearings, contribute more stuff to the code. -- "Fixing a few bugs with a rewrite of a section of my new job's in house app, and finishing up the last part of that rewrite (generating csv in php). Also setting up the groundwork to be able to slowly transform said php app from a very procedural architecture to a mvc based style. My goal is to write any new sections in MVC and any major rewrites in MVC as well, since the current procedural code works, but is a mess to refactor. I'm also gearing for my level 3 ski instructor exam (out of 4 levels) next week. I still have to do one more two day course and I'll have the prereqs for the exams. Though this is dependent on if my shoulder heals in time, I unfortunately pulled my tendons falling in a cliff/run last weekend. -- "Going to prototype some GUI libraries to use for [Firestr](https://github.com/mempko/firestr) including electron and QtQuick. My goal is to build a phone UI. I haven't touched firestr in a while (it just works 24/7 for me) and would like to get back into it and make it more exciting. -- "I'm trying to work on more interesting stuff during my free time. But also something beneficial, that I myself would use. Since I'm a fan of statistics and various metrics AND trying new stuff (Go this time), I've started working on this server status service - https://github.com/andriussev/server-seer. The basic functionality is.. 1) Define commands you want the information from (numbers); 2) Run the application to gather the data. Everything is saved onto an SQLite database. Trying to make it as simple and as readable as I can. I'm currently working on making a simple local viewer of that data so the data could be actually used somewhere. At some point, when I'm done with making the server-seer stable, I plan on making a small SaaS to show everything on there (with alerts and whatnot). So I have things to do, which is good for the mind! --