I’ve been tidying up and improving http://directingmind.com over the weekend. This week I want to get started on an old idea I’ve had floating around: A browser that can only load and display markdown pages.
Do you have the data for Directing Mind somewhere? I’d like to do something with the text and was wondering if you had the chapters handy in some sort of programmable format (e.g. JSON).
Moderately excited about visiting my first datacenter with work this week, to install some new hardware in our racks. (Amusingly my first technical job was for a hosting company, but I never made it over the Pennines to our DCs. Sadface.)
Outside of work I have a few car-related things to investigate/fix, as well as getting quotes for things like a wing respray. Should probably wash & seal the convertible’s fabric roof at last too, as I’ve been putting it off for a few months now.
Taking my last little trip around .eu before moving back to NYC. Currently in Lisbon, then moving out of Berlin on Thursday. Working on void, a mind-mapper for the terminal. Talking to companies to work on reliable distributed stateful systems, dusting off old algos for interviews, it feels like a silly dance but I enjoy it slightly.
It feels really important to fight fascism exploding in the US right now, so I need to figure out how much time I’ll have for a real job. Feel free to reach out if you are involved in economic empowerment somehow, I’d love to get more involved!
For paying work I’ve got to set up and evaluate an ELK stack or an InfluxDB/Prometheus-based stack; then finish a implementation proposal for an already completed routing assessment. You’d think when the results are “you have zero redundancy. none. a third of your sites have two internet connections, but there is zero configuration to utilize them whatsoever” would bring any sense of urgency. I do not understand how large corporations function and most likely never will.
on the fun/personal side of things – I’m reading the OpenBGPd code to see if I can add draft-ietf-idr-shutdown-00. I have much loftier programming goals but not yet the ability to realize them…and phessler@ is a good friend…so, now is the time to start!
After a particularly fun conversation at the RIPE DIY Social event, I’ve been slowly working on turning Job Snijders IXP pricing sheet into something more visual instead of the spreadsheet http://peering.exposed/ currently points to.
In the realm of half work half personal, I’m trying to understand how parsers actually work and how to generate context-sensitive grammars. Batfish is very, very cool but the first step – parsing network configurations – is seriously tripping me out, man. If I could “conquer” that step it’d open the floodgates of things I’ve been hoping to do for a decade. Time to get over my serious aversion to any Java and figure out how Batfish uses ANTLR…
Ansible SCP’s one file per task to the host and then runs it - so N tasks, N SCP+SSH commands. We SCP one binary, so 1 SCP+SSH command. This should be a lot faster, though there are tradeoffs involved.
Enjoying Advent of Code 2016 for Haskell practice. I’m punting on parsing, just pasting the input into my scripts and lightly massaging until it’s valid Haskell syntax. It’s great practice for thinking in types, and I really love how the second parts of the puzzles force me to re-evaluate my code.
Getting the barnacl.es tech entrepreneurship news site moved from Heroku to NirdHost. I’ve been helping the the CEO with copywriting and conversion optimization, and he’s happy to comp hosting to exercise the new platform (basically Heroku + that one random customization any site needs + optional HIPAA/PCI). Speaking of which…
Best for last: I’m standing up a solo consulting service to help mid-sized online businesses ($5-50M revenue) ratchet up yearly revenue by scientifically improving conversion, onboarding, and engagement. I’ve been doing this a few years at a dev consultancy but it didn’t mesh well with the business model of hourly billing for a month or two. That’s near the minimum amount of time to produce results, and definitely not enough time to establish repeatable processes. This service is a quarterly retainer to run improvement tests and standardize practices, with the goal that clients “graduate” in 6-18 months with a permanent 10% lift in revenue and stable process to continue improvement. I’m still building out the sales site, but catch me on irc or email my handle @valent.io if you know a business that could benefit.
More on my lisp compiler - working out some bugs with closures right now.
Realized that I’d need to eventually write an assembler for my compiler, so I started to work on an x86 assembler, and will probably build it out into a bit more of an IR (mainly for optimization purposes) that my lisp compiler can target. Looking for books on compiler optimizations if anyone’s got recommendations :)
Making the Elm HTML testing package that we use at NoRedInk available to everyone via elm-html-test. We’ve been using for a year or so internally, and now it’s available to everyone finally. It was open source previously, but due to the Native code required to access the HTML representation Elm’s VirtualDom implementation uses, it could not be published as a package.
Making elm-static-html support formatted output to files, along with being able to choose which function should be called to generate a given file.
For my common lisp learning hobby I’m going through the advent of code exercises using Lisp, but I’ve come up on a psychological block. I am, most likely, “writing PHP in Lisp”. And I’m very uninspired and a little demoralized, because I don’t want to learn yet another language, but an interesting language - which I expect Lisp is. But I can’t find out where. Folks talk about macros. Is this what I need to get at - learn macros? Thanks!
It helps if you pick a book that gradually builds up to the more complex features with interesting applications. Here are two that readers say do that:
The second one is pretty goofy along with giving you information by helping you build games of increasing complexity. They throw in a goofy comic on the website for free about LISP techniques. Practical Common LISP can be had free online but I think Land of LISP is still paid-only. On Amazon, it goes for as little as $3 if you want to risk coffee spills on the pages. ;)
Very welcome! Only complaing I saw was it moves fast occasionally. Just remember there’s a helpful article on about any LISP topic a Google away if that happens. :)
Thanks @hga. The advent of code may actually be a good learning bed for this. Problems have two related parts. You get the first part, then the second part is revealed. The second part has some specifications changed, usually requiring a surgical change to the code - for example, unpacking a computation you collapsed together in the first part. The resulting code looks tantalizingly in need of a common abstraction.
I got restricted channel types that throw compile time errors in the right places, with a complication for ‘scase’ blocks because those are transformed by a macro before compilation.
The good news was that Nim has a compiles() function that takes arbitrary expressions and tells you if they compile. The bad news was that it doesn’t work for assignments and some ‘select’ cases feature assignments. Turns out that just checking if the right-hand side compiles is good enough.
Next, I’m looking for a way to make anonymous procs work as goroutines.
Over break, I’ll probably update watchexec to handle SIGSTOP/SIGCONT and other little things.
I’d like to also look into writing bots for SC2 or Dota 2, since both games have announced support for that. The problem space is very interesting to me and I’d get a big kick out of watching my bot duel another one while heckling it on Twitch.
Have been thinking a lot about the time I spend in tech, and trying to get better at making it something that is positive and affirming for me and others. I’ll likely downshift for a bit and continue on the hobbyist track, consciously opting out of the “make something of yourself” track that is easy to fall into. Guitar feels like a more fruitful use of my time, oftentimes. I appreciate the analogness of the experience of practicing, and re-learning to focus on things that aren’t glowing screens.
Most interesting task this week is exploring options for interfaces reminiscent of Excel in a browser (e.g. cells that can be edited and saved), but without having build the entirety of Google Sheets. Only major requirements are dressing it up with some minor business logic (e.g. which cells appear for which user), and to not load the entire database into the browser.
So far I’ve come across Shiny and Handsontable. Both are awkwardly priced. Not expensive, just the way their pricing scales doesn’t reflect how our needs for it would scale.
My pet project recently has been learning the system architecture of the SNES, with the ultimate goal of writing a 65816 assembly backend for LLVM, hooking it into the rust compiler, and writing a SNES game in Rust. So far I’ve written a custom pure assembly SNES Rom that can display a tile on the screen. Which is some progress.
As mentioned last week, I took part in Ludum Dare this weekend. You can see/play my daft entry here: Bathroom Break Manager
Had an absolute blast, and did not completely kill myself. Got a full 8hrs of sleep on of the nights. Definitely the most complete game I’ve submitted out of my three attempts. Spent a reasonable amount of time laughing childishly at variable and function names relating to toilet activity.
This week I will be attempting to get enough work done that I can happily relax for the holiday period. This mostly means tidying up a kubernetes setup and helping team members get set up and running with it.
If you have some spare time or particular pain points, please feel free to PM me with any feedback around getting devs set up with kubernetes. I work on local kubernetes developer velocity.
Nice! Thank you, I will definitely ping you if I have questions / come across a problem etc. I’ve been using minikube extensively to get setup and build out our developer workflow, and it’s been a treat to work with, so thanks for all your work
I’m working on moving minikube [0] to use a custom buildroot [1] ISO. Minikube runs a local kubernetes cluster on your laptop. We use a lightweight VM to run docker on windows or mac, but also run all the kubernetes components as goroutines. Since its cross platform, we need to make sure that all our integration tests pass with all the VM drivers (xhyve, kvm, hyperv). Right now there’s only one remaining blocking issue with the KVM driver I’m trying to debug.
We had a hackathon at work last Thursday/Friday, which I used to learn a little bit about data compression. I implemented coders/decoders for LZ4 and chameleon, and I read a few papers on LZP. I was surprised at how silly simple these algorithms are, and then I was surprised again at the depth of what you can do to make them go fast.
In my own time I got my game 90% working on AMD, all I need to do is remove every single call to glDeleteBuffers. Amazing! Another spanner in the works is that my Windows install nuked itself so I can’t test on that either. (my SSD is faulty and my EFI partition keeps getting corrupted. If I wait until I get back to the UK to replace it I can save 30 euros which is obviously stupid but I’m still doing it)
I did manage to get ray vs terrain collision detection and collision geometry paging in, which works by using a quadtree per tile and a slightly modified Bresenham’s to decide which quadtrees to traverse. The logical next step is of course to add shooting and explosions.
Finally, today was Syysgraph, and there was a very cool talk on using tech to solve cultural heritage problems. It wasn’t so much focused on the tech as the human side: your solutions have to be cheap, they have to solve the problem people are trying to solve, and they have to be usable by people with no interest in computers. You can find some papers on it on the guy’s homepage.
I’ve been tidying up and improving http://directingmind.com over the weekend. This week I want to get started on an old idea I’ve had floating around: A browser that can only load and display markdown pages.
I want to use this browser.
I’ll be sure to post it here once it’s done :)
Do you have the data for Directing Mind somewhere? I’d like to do something with the text and was wondering if you had the chapters handy in some sort of programmable format (e.g. JSON).
Yup, the web-server and data are open-source: https://github.com/ShaneKilkelly/marc (yay for elixir/phoenix!)
You’d most likely want the
./resources/meditations.json
file: https://github.com/ShaneKilkelly/marc/blob/master/resources/meditations.jsonThanks. Nice to see another Elixir enthusiast here.
Moderately excited about visiting my first datacenter with work this week, to install some new hardware in our racks. (Amusingly my first technical job was for a hosting company, but I never made it over the Pennines to our DCs. Sadface.)
Outside of work I have a few car-related things to investigate/fix, as well as getting quotes for things like a wing respray. Should probably wash & seal the convertible’s fabric roof at last too, as I’ve been putting it off for a few months now.
Taking my last little trip around .eu before moving back to NYC. Currently in Lisbon, then moving out of Berlin on Thursday. Working on void, a mind-mapper for the terminal. Talking to companies to work on reliable distributed stateful systems, dusting off old algos for interviews, it feels like a silly dance but I enjoy it slightly.
It feels really important to fight fascism exploding in the US right now, so I need to figure out how much time I’ll have for a real job. Feel free to reach out if you are involved in economic empowerment somehow, I’d love to get more involved!
only looking at the animation for void and it looks great. I will be trying it out this week.
best of luck on your move back to the US. keep fighting the good fight.
For paying work I’ve got to set up and evaluate an ELK stack or an InfluxDB/Prometheus-based stack; then finish a implementation proposal for an already completed routing assessment. You’d think when the results are “you have zero redundancy. none. a third of your sites have two internet connections, but there is zero configuration to utilize them whatsoever” would bring any sense of urgency. I do not understand how large corporations function and most likely never will.
on the fun/personal side of things – I’m reading the OpenBGPd code to see if I can add draft-ietf-idr-shutdown-00. I have much loftier programming goals but not yet the ability to realize them…and phessler@ is a good friend…so, now is the time to start!
After a particularly fun conversation at the RIPE DIY Social event, I’ve been slowly working on turning Job Snijders IXP pricing sheet into something more visual instead of the spreadsheet http://peering.exposed/ currently points to.
In the realm of half work half personal, I’m trying to understand how parsers actually work and how to generate context-sensitive grammars. Batfish is very, very cool but the first step – parsing network configurations – is seriously tripping me out, man. If I could “conquer” that step it’d open the floodgates of things I’ve been hoping to do for a decade. Time to get over my serious aversion to any Java and figure out how Batfish uses ANTLR…
We have a mutual friend! Peter stayed at my flat for a few months after moving to Berlin.
Feel free to Cc me on your bgpd diffs. I will try to help where I can.
you have come up once or twice while we drink and chat at that bar on (near?) your street :)
Give me a shout next time you’re there.
Working on https://github.com/kevinburke/ansible-go , which tries to use Ansible’s APIs, with the following changes:
I’m still not sure it’s a good idea but I’m trying to write enough commands to provision one server with it and see how it goes.
Enjoying Advent of Code 2016 for Haskell practice. I’m punting on parsing, just pasting the input into my scripts and lightly massaging until it’s valid Haskell syntax. It’s great practice for thinking in types, and I really love how the second parts of the puzzles force me to re-evaluate my code.
Getting the barnacl.es tech entrepreneurship news site moved from Heroku to NirdHost. I’ve been helping the the CEO with copywriting and conversion optimization, and he’s happy to comp hosting to exercise the new platform (basically Heroku + that one random customization any site needs + optional HIPAA/PCI). Speaking of which…
Best for last: I’m standing up a solo consulting service to help mid-sized online businesses ($5-50M revenue) ratchet up yearly revenue by scientifically improving conversion, onboarding, and engagement. I’ve been doing this a few years at a dev consultancy but it didn’t mesh well with the business model of hourly billing for a month or two. That’s near the minimum amount of time to produce results, and definitely not enough time to establish repeatable processes. This service is a quarterly retainer to run improvement tests and standardize practices, with the goal that clients “graduate” in 6-18 months with a permanent 10% lift in revenue and stable process to continue improvement. I’m still building out the sales site, but catch me on irc or email my handle
@valent.io
if you know a business that could benefit.[Comment removed by author]
Got a contract to set up a VPN and migrate a PHP application.
I also have two job interviews.
Personally working on a new design for my blog.
[Comment removed by author]
Currently its set up on WordPress and I primarily talk about office politics and PHP: https://davesmithhayes.com/
This is the current work I’m putting together for the new blog: https://github.com/dsmithhayes/blog
Making the Elm HTML testing package that we use at NoRedInk available to everyone via elm-html-test. We’ve been using for a year or so internally, and now it’s available to everyone finally. It was open source previously, but due to the Native code required to access the HTML representation Elm’s VirtualDom implementation uses, it could not be published as a package.
Making elm-static-html support formatted output to files, along with being able to choose which function should be called to generate a given file.
[Comment removed by author]
For my common lisp learning hobby I’m going through the advent of code exercises using Lisp, but I’ve come up on a psychological block. I am, most likely, “writing PHP in Lisp”. And I’m very uninspired and a little demoralized, because I don’t want to learn yet another language, but an interesting language - which I expect Lisp is. But I can’t find out where. Folks talk about macros. Is this what I need to get at - learn macros? Thanks!
It helps if you pick a book that gradually builds up to the more complex features with interesting applications. Here are two that readers say do that:
https://lobste.rs/s/yktsdu/practical_common_lisp
http://landoflisp.com/
https://www.amazon.com/gp/offer-listing/1593272812/ref=dp_olp_used?ie=UTF8&condition=used
The second one is pretty goofy along with giving you information by helping you build games of increasing complexity. They throw in a goofy comic on the website for free about LISP techniques. Practical Common LISP can be had free online but I think Land of LISP is still paid-only. On Amazon, it goes for as little as $3 if you want to risk coffee spills on the pages. ;)
Ordered Land of Lisp! Thanks for the hints @nickpsecurity!
Very welcome! Only complaing I saw was it moves fast occasionally. Just remember there’s a helpful article on about any LISP topic a Google away if that happens. :)
[Comment removed by author]
Thanks @hga. The advent of code may actually be a good learning bed for this. Problems have two related parts. You get the first part, then the second part is revealed. The second part has some specifications changed, usually requiring a surgical change to the code - for example, unpacking a computation you collapsed together in the first part. The resulting code looks tantalizingly in need of a common abstraction.
I finally got back to tinkering with my gccgo-Nim chimera: https://github.com/stefantalpalaru/golib-nim
I got restricted channel types that throw compile time errors in the right places, with a complication for ‘scase’ blocks because those are transformed by a macro before compilation.
The good news was that Nim has a compiles() function that takes arbitrary expressions and tells you if they compile. The bad news was that it doesn’t work for assignments and some ‘select’ cases feature assignments. Turns out that just checking if the right-hand side compiles is good enough.
Next, I’m looking for a way to make anonymous procs work as goroutines.
Outside of my work hours, I’m putting the finishing touches on my simplenote API crate for rust: https://crates.io/crates/simplenote. Also trying to get some work done on my jupyter kernel for rust: https://github.com/pwoolcoc/jupyter-rs
Over break, I’ll probably update watchexec to handle SIGSTOP/SIGCONT and other little things.
I’d like to also look into writing bots for SC2 or Dota 2, since both games have announced support for that. The problem space is very interesting to me and I’d get a big kick out of watching my bot duel another one while heckling it on Twitch.
Have been thinking a lot about the time I spend in tech, and trying to get better at making it something that is positive and affirming for me and others. I’ll likely downshift for a bit and continue on the hobbyist track, consciously opting out of the “make something of yourself” track that is easy to fall into. Guitar feels like a more fruitful use of my time, oftentimes. I appreciate the analogness of the experience of practicing, and re-learning to focus on things that aren’t glowing screens.
Hope you all have a wonderful holiday.
Most interesting task this week is exploring options for interfaces reminiscent of Excel in a browser (e.g. cells that can be edited and saved), but without having build the entirety of Google Sheets. Only major requirements are dressing it up with some minor business logic (e.g. which cells appear for which user), and to not load the entire database into the browser.
So far I’ve come across Shiny and Handsontable. Both are awkwardly priced. Not expensive, just the way their pricing scales doesn’t reflect how our needs for it would scale.
Edit: Oh and I’m attending a meetup entirely about to writing good documentation this week!
My pet project recently has been learning the system architecture of the SNES, with the ultimate goal of writing a 65816 assembly backend for LLVM, hooking it into the rust compiler, and writing a SNES game in Rust. So far I’ve written a custom pure assembly SNES Rom that can display a tile on the screen. Which is some progress.
As mentioned last week, I took part in Ludum Dare this weekend. You can see/play my daft entry here: Bathroom Break Manager
Had an absolute blast, and did not completely kill myself. Got a full 8hrs of sleep on of the nights. Definitely the most complete game I’ve submitted out of my three attempts. Spent a reasonable amount of time laughing childishly at variable and function names relating to toilet activity.
This week I will be attempting to get enough work done that I can happily relax for the holiday period. This mostly means tidying up a kubernetes setup and helping team members get set up and running with it.
If you have some spare time or particular pain points, please feel free to PM me with any feedback around getting devs set up with kubernetes. I work on local kubernetes developer velocity.
[0] https://lobste.rs/s/d4ben6/what_are_you_working_on_this_week/comments/qpcive#c_qpcive
Nice! Thank you, I will definitely ping you if I have questions / come across a problem etc. I’ve been using minikube extensively to get setup and build out our developer workflow, and it’s been a treat to work with, so thanks for all your work
Built a Reddit-Telegram bot which uploads images from /r/gentlemanboners to a Telegram channel/group - Wutong
I’m working on moving minikube [0] to use a custom buildroot [1] ISO. Minikube runs a local kubernetes cluster on your laptop. We use a lightweight VM to run docker on windows or mac, but also run all the kubernetes components as goroutines. Since its cross platform, we need to make sure that all our integration tests pass with all the VM drivers (xhyve, kvm, hyperv). Right now there’s only one remaining blocking issue with the KVM driver I’m trying to debug.
[0] https://github.com/kubernetes/minikube [1] https://buildroot.org/
Work:
Fun:
We had a hackathon at work last Thursday/Friday, which I used to learn a little bit about data compression. I implemented coders/decoders for LZ4 and chameleon, and I read a few papers on LZP. I was surprised at how silly simple these algorithms are, and then I was surprised again at the depth of what you can do to make them go fast.
In my own time I got my game 90% working on AMD, all I need to do is remove every single call to glDeleteBuffers. Amazing! Another spanner in the works is that my Windows install nuked itself so I can’t test on that either. (my SSD is faulty and my EFI partition keeps getting corrupted. If I wait until I get back to the UK to replace it I can save 30 euros which is obviously stupid but I’m still doing it)
I did manage to get ray vs terrain collision detection and collision geometry paging in, which works by using a quadtree per tile and a slightly modified Bresenham’s to decide which quadtrees to traverse. The logical next step is of course to add shooting and explosions.
Finally, today was Syysgraph, and there was a very cool talk on using tech to solve cultural heritage problems. It wasn’t so much focused on the tech as the human side: your solutions have to be cheap, they have to solve the problem people are trying to solve, and they have to be usable by people with no interest in computers. You can find some papers on it on the guy’s homepage.