I’m in training this week leading up to REcon Montreal this weekend. It is my first REcon and I certainly do not consider myself a full time reverse engineer, but I do dabble. The training I’m in is relevant to my day to day work so while I’m wiped out from my red-eye flight out here I’m very exciting for the week ahead!
I’d absolutely take you up on that. I’m here through Sunday and am staying right next to where Jazz Fest is happening. I’m in training every day until 5pm until Thursday, then my schedule is a bit more flexible during the day Friday through Sunday. If you have any recommendations especially for things to do in the evening downtown (don’t have a car) I’d really appreciate it!
This will let you take the public transit anywhere for the whole weekend.
Popular tourist attractions include the Olympic Stadium/botanical gardens on Pie-IX and Viau metro stations (pronounced “pee-nuff” and “vee-ow” respectively), Parc Jean Drapeau on the yellow metro line, and our namesake Mt Royal, our little version of Central Park. There’s also the Old Port in Old Montréal with cobblestone streets and waterfront attractions.
Do you like video games? We have a pretty cool arcade bar I like going to, ArcadeMTL.
You already know about the jazz fest, which has lots of free shows, all within walking distance of downtown.
I’m always down for meeting new people, so if you’d like to hang out for any of these things, I can probably join you.
Studying decorators now. Really exciting having the opportunity to ‘burn in’ these concepts that I had either vague or no understanding of.
I’d be curious to see whether or not courses like this exist for other programming languages - just a little bit of conceptual learning and then a bunch of practice problems to grind the knowledge into those neurons and put it into practice. I personally find this to be a much more effective learning technique than say just reading a book.
A streaming processor in Faust. Crazily productive compared to my experience in Spark and Flink. I know it’s gonna explode eventually but for now I’m enjoying the ride.
A distributed streaming processing engine is just a way to hide a lot of stuff from the programmer. It works perfectly until it works anymore. If I feel like it’s working like a charm, it just means it’s hiding more stuff from me and if I’m doing anything wrong, this will stay hidden for longer and create even bigger problems when it comes out.
I picked up an ESP32 handheld computer (e.g. this photo) that I want to do a bunch of things with, but first I have to write a basic UI for it. I got a LoRa module for it, but I haven’t gotten around to resoldering the radio’s CS pin (which is on the same pin as the keyboard’s interrupt pin). Ideally, I’ll get a basic scheme running on it, and maybe a Forth. This week, I’m just trying to get some basic functionality like a virtual console (for scrolling text and collecting user input) done.
I just joined a small team that I’ll be building custom internal tooling for. Really excited to amplify the productivity of all the developers/designers on the team!
I’ve been making great progress on my first serious foray into mobile development. I’ve gotten my feet wet with Nativescript Vue, and also introduced myself to pusher.com for avoiding a pull/poll system architecture. Would recommend Pusher over Google FCM purely on the basis of Pusher being very easy to get going with, vs. what appeared to be rather complex stuff described in FCM’s documentation (not to mention needing a Google account for it).
I’ve been enjoying Nativescript, and also am a bit excited thinking about the possibilities that are opening up to me now in terms of mobile development, being able to leverage the web development background I already have. I tried Kotlin and Android Studio in the past, but it’s not as easy to work with as NSV.
I’ve been working on a ports system for the IRIX operating system for around 10 days. Here’s the repo. It’s designed to work on a fresh IRIX install after running the bootstrap.sh script. Right now there are only 11 ports. I’d appreciate PRs if anyone writes some more! There’s no documentation on writing port scripts yet but it should be easy to figure out by looking through the current scripts. Port scripts are very simple, and in most cases you won’t even need to include any of your own scripting. If you need to overwrite a default function (configure(), build(), install(), etc.), it’s easy to do so. Please check out .port.sh if you want to know how this works in more detail! Ports are installed into a local prefix, which can be edited near the top of .port.sh if you want to use a non-default prefix.
I have a certain nostalgic fondness for Irix, which was the first Unix I used in anger. If I still had a Power Challenge or a Crimson around, I’d certainly pitch in.
Sure: I want to write a language that’s based on running some other type of command that can produce errors, and using the errors to control or produce the behavior of the program.
A straightforward way to do this might be using exit codes of commands to generate source code that you then run, but I’d really love to do something based on compiler errors from a different programming language.
I’d like to spend time on it, but I really don’t know. I have several other projects in various states of active work/neglect. I say go for it if you’re interested: there’s probably more than one way to make something out of the bare idea.
Building an app to turn audiobooks into private podcast feeds. Also taking this chance to work to learn golang. I’m still undecided. Most of it is pretty simple, but I’m still trying to find a good golang libaries for:
Editing ID3 tags
Parsing ID3 including chapter metadata
Splitting audio on timestamps.
If anyone has any suggestions, I would be very grateful for it.
ID3 is a pretty dead-simple “standard”, IIRC. I wrote an MP3 metadata editor in Emacs 19 elisp at one point, so I can’t imagine that Go wouldn’t be a more amenable environment to do this in.
After fighting some burnout I want to regroup and keep working on making a simple but functional SAAS business.
Would a blog about progress be something people are interested in? I was thinking about a weekly series “Let’s build a business” where I can do retrospectives and share progress and thoughts.
I’m playing with implementing a server for the Gemini protocol (a lightweight document protocol positioned in between gopher and http). I’m implementing it in Common Lisp, a language I don’t know that well, for educational and fun purposes. I’m writing it bit by bit..right now I have an echo server on TLS implemented to teach myself how to write a simple server.
I’m taking off July 2-29 to through ride the Colorado Trail with a friend, so this week at work I’m tying up some loose ends so I leave things in a good spot. I’m going to get a pull request opened for the feature I’ve been working on, and then get that pushed to master. Other than that I’ll be working on some shorter tasks, like code reviewing and testing.
Outside of work, I need to do a final tuneup on my bike, swap in larger tires, run through my gear a few more times, and ride my bike a lot.
I might also squeeze in a little work in on some Lisp projects.
I just added (fixed) player names to my browser-based multiplayer snake game, https://alpha.sneakysnake.io/! Next steps are a scoreboard and player name customization (the back-end for player name customization is mostly done—just need the front-end)!
I have a lot of plans, but can’t really find time for them. I started a new job and this is the first time I am working full-time. I also have quite a long commute (one-way takes about 1 hour, but when public transport is not functioning properly, like today, it takes 2 hours) and usually work out in the evening. Anyway:
I want to write an article about the conjugate gradient method
I want to write about Hermitian matrices and the singular value decomposition
I might write about a simple technique for filling in boxes in Nonograms (I see the technique is explained here)
I also want to start coding the basis of an x86-64 assembler. It is easy to encode some instructions in a semi-fixed format (for example, where you only vary the destination register), but doing a fully general assembler is hard, since the general encoding is so complicated. I also want to learn some ARM. Maybe an ARM assembler will be easier…?
A longer-scale project I am working on is building a nixie tube clock. I have made a LED matrix before, but this is more complicated (the tubes require quite a much higher voltage than the chips and I am not familiar with systems which use multiple voltages, also I have no idea how to reliably check time).
If I make some progress on just one of these things I’ll be happy.
On the conjugate gradient method, I’ve always wondered why they don’t use this more often for neural networks. The first thing I did in my optimisation class in school was steepest descent just to see how much it sucked and how slow it was. It seems to me a version of conjugate gradients, (say, Polak-Ribière) wouldn’t be that hard to implement for neural networks.
That’s an interesting point, on which I can’t really comment, since I have only used linear conjugate gradients. I’m having a hard enough time wrapping my head around the linear version of conjugate gradients (there is no particular difficulty, but I keep forgetting important details).
Edit: One guess is that momentum-based methods might work better with stochastic gradient descent? I guess that the benefit of conjugate gradient would vanish if you use a different function at each update (which is what stochastic gradient descent does, if my understanding is correct). Still, it would be interesting to see the difference in performance. Maybe some hybrid forms are feasible if you have some mechanism that ensures that your function doesn’t change completely at every iteration. For example: compute the gradient for a small subset of training samples, and replace one sample in the subset by a random other sample (so the function you’re minimizing doesn’t change too fast, but you don’t have to evaluate the gradient of every single training sample at each iteration - I guess this is much like mini-batch stochastic gradient).
You could play around with the size of the subset as well. I would guess that a bigger subset would be better for networks which are more fine-tuned already.
Anyway, I’m not much of a neural networks guy, so my intuition could be way off.
I adopted a cat on Friday, and I’m spending the week making her feel comfortable in her new home.
Also Haskell stuff.
Why does that monitor stand have eyes?
… ohhhhhhhh!
I’m in training this week leading up to REcon Montreal this weekend. It is my first REcon and I certainly do not consider myself a full time reverse engineer, but I do dabble. The training I’m in is relevant to my day to day work so while I’m wiped out from my red-eye flight out here I’m very exciting for the week ahead!
That sounds amazing! Enjoy!
(Montreal is a fun city. Always wanted to go back as an adult!)
Oh, hey, welcome to Mtl. If you need any ideas on what to do or information about our town, I’d be happy to help.
I’d absolutely take you up on that. I’m here through Sunday and am staying right next to where Jazz Fest is happening. I’m in training every day until 5pm until Thursday, then my schedule is a bit more flexible during the day Friday through Sunday. If you have any recommendations especially for things to do in the evening downtown (don’t have a car) I’d really appreciate it!
You probably want a weekend STM pass for Friday-Sunday, so you can move around a bit:
http://stm.info/en/info/fares/transit-fares/unlimited-weekend
This will let you take the public transit anywhere for the whole weekend.
Popular tourist attractions include the Olympic Stadium/botanical gardens on Pie-IX and Viau metro stations (pronounced “pee-nuff” and “vee-ow” respectively), Parc Jean Drapeau on the yellow metro line, and our namesake Mt Royal, our little version of Central Park. There’s also the Old Port in Old Montréal with cobblestone streets and waterfront attractions.
Do you like video games? We have a pretty cool arcade bar I like going to, ArcadeMTL.
You already know about the jazz fest, which has lots of free shows, all within walking distance of downtown.
I’m always down for meeting new people, so if you’d like to hang out for any of these things, I can probably join you.
Days 23-28 of 100 days of code in Python
Studying decorators now. Really exciting having the opportunity to ‘burn in’ these concepts that I had either vague or no understanding of.
I’d be curious to see whether or not courses like this exist for other programming languages - just a little bit of conceptual learning and then a bunch of practice problems to grind the knowledge into those neurons and put it into practice. I personally find this to be a much more effective learning technique than say just reading a book.
A streaming processor in Faust. Crazily productive compared to my experience in Spark and Flink. I know it’s gonna explode eventually but for now I’m enjoying the ride.
What do you mean by that?
A distributed streaming processing engine is just a way to hide a lot of stuff from the programmer. It works perfectly until it works anymore. If I feel like it’s working like a charm, it just means it’s hiding more stuff from me and if I’m doing anything wrong, this will stay hidden for longer and create even bigger problems when it comes out.
I picked up an ESP32 handheld computer (e.g. this photo) that I want to do a bunch of things with, but first I have to write a basic UI for it. I got a LoRa module for it, but I haven’t gotten around to resoldering the radio’s CS pin (which is on the same pin as the keyboard’s interrupt pin). Ideally, I’ll get a basic scheme running on it, and maybe a Forth. This week, I’m just trying to get some basic functionality like a virtual console (for scrolling text and collecting user input) done.
I just joined a small team that I’ll be building custom internal tooling for. Really excited to amplify the productivity of all the developers/designers on the team!
This is the last thing that someone in the US should have to worry about. :(
I’ve been making great progress on my first serious foray into mobile development. I’ve gotten my feet wet with Nativescript Vue, and also introduced myself to pusher.com for avoiding a pull/poll system architecture. Would recommend Pusher over Google FCM purely on the basis of Pusher being very easy to get going with, vs. what appeared to be rather complex stuff described in FCM’s documentation (not to mention needing a Google account for it).
I’ve been enjoying Nativescript, and also am a bit excited thinking about the possibilities that are opening up to me now in terms of mobile development, being able to leverage the web development background I already have. I tried Kotlin and Android Studio in the past, but it’s not as easy to work with as NSV.
I’ve been working on a ports system for the IRIX operating system for around 10 days. Here’s the repo. It’s designed to work on a fresh IRIX install after running the bootstrap.sh script. Right now there are only 11 ports. I’d appreciate PRs if anyone writes some more! There’s no documentation on writing port scripts yet but it should be easy to figure out by looking through the current scripts. Port scripts are very simple, and in most cases you won’t even need to include any of your own scripting. If you need to overwrite a default function (configure(), build(), install(), etc.), it’s easy to do so. Please check out .port.sh if you want to know how this works in more detail! Ports are installed into a local prefix, which can be edited near the top of .port.sh if you want to use a non-default prefix.
I have a certain nostalgic fondness for Irix, which was the first Unix I used in anger. If I still had a Power Challenge or a Crimson around, I’d certainly pitch in.
Mixture of work and not-work: learning about all the weird aspects of Java serialization.
I also had a really cute idea for an esolang, but it’s more of a big picture idea than something I can implement yet.
Curious if you’d elaborate!
Sure: I want to write a language that’s based on running some other type of command that can produce errors, and using the errors to control or produce the behavior of the program.
A straightforward way to do this might be using exit codes of commands to generate source code that you then run, but I’d really love to do something based on compiler errors from a different programming language.
Oh… do I have ideas here. This is incredibly interesting! Any plans to actually spend time on this? I don’t want to step on your toes…
I’d like to spend time on it, but I really don’t know. I have several other projects in various states of active work/neglect. I say go for it if you’re interested: there’s probably more than one way to make something out of the bare idea.
Fair enough! My idea is effectively a commentary on error handling in Go. I’ll see if I can find some time to play with it.
Scratching an itch.
Building an app to turn audiobooks into private podcast feeds. Also taking this chance to work to learn golang. I’m still undecided. Most of it is pretty simple, but I’m still trying to find a good golang libaries for:
If anyone has any suggestions, I would be very grateful for it.
ID3 is a pretty dead-simple “standard”, IIRC. I wrote an MP3 metadata editor in Emacs 19 elisp at one point, so I can’t imagine that Go wouldn’t be a more amenable environment to do this in.
After fighting some burnout I want to regroup and keep working on making a simple but functional SAAS business.
Would a blog about progress be something people are interested in? I was thinking about a weekly series “Let’s build a business” where I can do retrospectives and share progress and thoughts.
I am interested! The projects on your site look really interesting BTW.
Thank you :)
This is something I am always interested in, and you would also find lots of interest here.
Thanks for the link, I will make an account over there.
I’m playing with implementing a server for the Gemini protocol (a lightweight document protocol positioned in between gopher and http). I’m implementing it in Common Lisp, a language I don’t know that well, for educational and fun purposes. I’m writing it bit by bit..right now I have an echo server on TLS implemented to teach myself how to write a simple server.
For
$CLIENT
:I’m taking off July 2-29 to through ride the Colorado Trail with a friend, so this week at work I’m tying up some loose ends so I leave things in a good spot. I’m going to get a pull request opened for the feature I’ve been working on, and then get that pushed to master. Other than that I’ll be working on some shorter tasks, like code reviewing and testing.
Outside of work, I need to do a final tuneup on my bike, swap in larger tires, run through my gear a few more times, and ride my bike a lot.
I might also squeeze in a little work in on some Lisp projects.
I will try to finish coding my tech blog in GatsbyJS. I bought a .dev domain this year but haven’t able to finish it due to one thing or the other.
I just added (fixed) player names to my browser-based multiplayer snake game, https://alpha.sneakysnake.io/! Next steps are a scoreboard and player name customization (the back-end for player name customization is mostly done—just need the front-end)!
I have a lot of plans, but can’t really find time for them. I started a new job and this is the first time I am working full-time. I also have quite a long commute (one-way takes about 1 hour, but when public transport is not functioning properly, like today, it takes 2 hours) and usually work out in the evening. Anyway:
I also want to start coding the basis of an x86-64 assembler. It is easy to encode some instructions in a semi-fixed format (for example, where you only vary the destination register), but doing a fully general assembler is hard, since the general encoding is so complicated. I also want to learn some ARM. Maybe an ARM assembler will be easier…?
A longer-scale project I am working on is building a nixie tube clock. I have made a LED matrix before, but this is more complicated (the tubes require quite a much higher voltage than the chips and I am not familiar with systems which use multiple voltages, also I have no idea how to reliably check time).
If I make some progress on just one of these things I’ll be happy.
On the conjugate gradient method, I’ve always wondered why they don’t use this more often for neural networks. The first thing I did in my optimisation class in school was steepest descent just to see how much it sucked and how slow it was. It seems to me a version of conjugate gradients, (say, Polak-Ribière) wouldn’t be that hard to implement for neural networks.
That’s an interesting point, on which I can’t really comment, since I have only used linear conjugate gradients. I’m having a hard enough time wrapping my head around the linear version of conjugate gradients (there is no particular difficulty, but I keep forgetting important details).
Edit: One guess is that momentum-based methods might work better with stochastic gradient descent? I guess that the benefit of conjugate gradient would vanish if you use a different function at each update (which is what stochastic gradient descent does, if my understanding is correct). Still, it would be interesting to see the difference in performance. Maybe some hybrid forms are feasible if you have some mechanism that ensures that your function doesn’t change completely at every iteration. For example: compute the gradient for a small subset of training samples, and replace one sample in the subset by a random other sample (so the function you’re minimizing doesn’t change too fast, but you don’t have to evaluate the gradient of every single training sample at each iteration - I guess this is much like mini-batch stochastic gradient).
You could play around with the size of the subset as well. I would guess that a bigger subset would be better for networks which are more fine-tuned already.
Anyway, I’m not much of a neural networks guy, so my intuition could be way off.