1. 19

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!


  2. 13

    I wrote a script that makes my twitter avatar spin as an hour clock. I’m going to open source it this week.

    It’s completely pointless and I’m absolutely delighted by it :D

    1. 2

      I think you managed to upload a broken image (which to me is even cooler!)


      (edit: it now appears to be working as you intended)

    2. 10

      This week, I’m enjoying being unemployed, I finally left a soul crushing corporate financial services job to move into another financial services job in a few weeks time. On the plus side its a much smaller company and I’ll be developer number 9 or 10. They also seem like genuinely nice people which is another plus. Planning on spending a bit of time playing with django rest framework as a possible future extension for a side project I worked on previously and spending a bit of time brushing up my C# skills.

      I’ve had a basic blog/site for years so also planning on actually fleshing it out with details of what I’ve worked on in the past. Non technically I’m going to be doing a lot of reading, its a great feeling being out of an office and sitting in the park with a book!

      1. 5

        I’ve almost finished moving my domain and converting my site/blog to be generated via org-mode. If anyone has any tips on what’s not working, feel free to message me.

        This week, during my downtime between jobs, I’m going to fire up SBCL and get to work on my UNIVAC I emulator. I have a physical manual from 1953 that details the instruction set and inner workings. I’ve started this before but never found the time to finish it.

        1. 1

          Nice! I’m guessing it’s generated only by Org mode itself (html export)? Have you looked into org-page or org-webpage? emacs-el.com is currently generated using org-page, but I may be migrating to hugo soon.

          1. 1

            I have looked into those, but I’m not keen on all the dependencies that need to be installed. If RSS turns out to be a real pain, I may use them, though.

            1. 1

              Right. RSS feed for the episodes is actually why I’m considering hugo.

          2. 1

            http://whitane.com/ is authored by writing org mode documents that are then exported to markdown for subsequent hugo rendering.

            My coworker recently added direct hugo org mode support, but I haven’t gotten around to switching over yet.

          3. 5

            At home, I added trees to my terrain renderer. It’s a bad model with bad lighting and no shadows, but it’s a start. I plant them by sampling from a hammersley set, discarding trees that land in the sea or on steep slopes.

            Performance is simultaneously disappointing and impressive. Even with instancing, I only get 20FPS for 300k trees + terrain, but that’s still 1.42 billion verts per second on a cheapo GPU with almost no effort put into optimisation. I expect some kind of tiling scheme would help out a lot, but for now I’m just going to plant less trees.

            Next up is probably going to be player movement physics, and some better terrain LOD system so walking on the ground doesn’t look so bad.

            For money, I’m still doing shitty integration work. I haven’t used C# in a long time and trying to get things done is annoying. It’s difficult to get good information out of google because the stuff I’m trying to do is not entirely trivial (async HTTP, JSON parsing, simple threading, etc) but still easy enough that stupid people can answer questions about it.

            Not being able to inspect HTTPS requests on Windows is very annoying. Stuff on Linux mostly respects http_proxy so I can mitmproxy it, but that doesn’t seem to be the case for Windows. I’d love to have a router on my desk that I can ssh into and mitmproxy everything with, but I imagine nobody will sell me one that works like that out of the box.

            1. 3

              Over the last week I’ve:

              Today I’ve been examining some immediate mode GUI stuff and I’m somewhat hyped to write it from scratch soon (well, with Xlib only).

              1. 1

                Interesting scripting language since Im collecting tiny, powerful ones in recent weeks to add to list for bootstrapping or trust reduction. How many lines of code are in your interpreter total to run the base language with basic I/O?

                1. 2

                  Well, even list operations are missing so far but the absolute core is under 1000 lines of C, then there’s a runtime library that’s around 300 lines currently and mostly it’s just trying to validate the core. You could get something really useful at around 2000 lines, including variable scoping, which I’m trying to avoid for as long as I can as an exercise. You can also remove memory management–that shrunk it roughly by 1/5 when I tried it.

                  The original idea was to write a portable build system–just compile this tiny program that is possibly included directly within the distribution of some software, and it will do everything itself, including the Make step. The language followed the size requirement, heavily borrowing from my previous attempt but offering a syntax you don’t have to wrap your head around and doing away with numeric types (so much stupid type handling!). Maybe I’ll return to it someday.

                  Anyway, you would have to mold it so that it can handle your use cases. It’s partially the point of this concept, to include just that which is needed.

                  1. 1

                    Appreciate the details. That sounds decent for the requirements I listed. I might add it to the list.

              2. 3

                Motivated for financial reasons, I’m finally getting around to solving the networking on my hetzner box with SmartOS. Yesterday I got both the networking sorted for zones with external IPs, and an internal private network with NAT to the internet through the global zone. Currently that’s all in-memory, needs the configuration splatting out to come up when the machine boots.

                Then it’s on to spinning up a some sites on there and consolidating various sites from other services. (The main one is a wordpress.com blog that I’m currently paying for various addons, which I no longer need to do.)

                The walking desk is working beautifully (I’m writing this comment on it in fact.) Have stuck with gutting the control board that comes with the treadmill and using that for now. Controlling a DC motor from Arduino or Raspberry Pi is more complex than I’ve done with motors so far, and couldn’t figure out the controls with a voltmeter attached so far. Deciding using the thing is more important than hacking the thing ?

                1. 3
                  • Helping the writing-focused Lobste.rs clone Write.Narwhal.Space get off the ground. If you want an invite, let me know!
                  • Writing the next section of Prose for Programmers
                  • Working on an internal presentation about Webpack
                  1. 3

                    I’m rewriting my collection of tiny, personal scripts in Rust (envangelion notwithstanding).

                    I’m hoping to see how difficult it is to write a standard Unix-style “read bytes”, “munge bytes”, “print bytes” utility in Rust, and I’m so far feeling positively about it. It’s not as effortless as shell (duh), and there’s more ceremony to it than in C, but it’s also very easy to get to the point where you’re reasonably sure the code is correct. I’ll be exploring property-based testing and/or fuzzing once I’ve completed some of these, mostly as an excuse to learn them.

                    Notably, the strong type-level distinction between UTF-8 strings and “OS” strings (&[u8], basically), has been really nice. For the scripts I wrote in shell, things were basically fine, since it’s just bytes all the time. The scripts I wrote in Python, however, were definitely incorrect with respect to handling input and output encoding properly. I just never bothered to fix them, because, uh, Python.

                    1. 3

                      I’m working on a space physics simulator. Thus far I have gravitation and a scale model of the earth/moon/sun system. It uses velocity verlet integration with linear and rotational physics with arbitrary tetrahedral meshes. With three bodies, it’s pretty fast; about 60,000 time steps per second. Visualization rendered using GLUT. All written in Haskell.

                      The two goals are to A) learn about quaternions (very successful so far; I’ve really learned a lot about Lie groups and algebras. I didn’t recognize them before, but now I see them all over.) and B) set up a system where I can test physical control algorithms. I want to become proficient in rigid body control systems, and what better way to do that than to create the universe the rigid bodies live in?

                      I found a bug in the Haskell Linear library’s Quaternion code and submitted a fix.

                      Up next is adding support for sensors and actuators (like gas thrusters).

                      1. 2

                        2 things:

                        1. VR motion capture. First, add a robot toaster character that you can move around. Will record the motion of the character and be able to play it back from the beginning. And will need to record the audio and play it back at the same time also.

                        2. I’m writing the 3rd blog post on math and psychology in games, due in the middle of the week. https://www.tetracasa.com

                        1. 2

                          Same as last week

                          Trying to digest “Patterns in Network Architecture : A return to fundamentals” by John Day.

                          It’s a hard chew, and life keeps happening.

                          Some key take aways from the first part of the book….

                          • Computer Science is different to other disciplines, because we build what we measure.

                          And that is quite a tangled chain of thought. What we measure is usually something we have built, conversely if the numbers come up shite, we frantically build (or rebuild) to make the numbers better.

                          I really like his N levels of Protocol Machines world view…. but feel the implicit FSM view will lead to single thread / single core thinking.

                          I like having the generalized notion of a PDU (Protocol Data Unit), the thing that an Nth level Protocol Machine exchanges with the N-1th level Protocol Machine below.

                          The Nth level PDU is composed of user data and PCI (Protocol Control Information) for the Nth level Protocol Machine.

                          An SDU (Service Data Unit) is the packet the Nth level Protocol Machine exchanges with the N+1th level Protocol Machine above.

                          I really like his synthesis of connection oriented and connectionless networking.

                          It’s about allocation of a shared resources.

                          The less variance there is in demand for a resource, the more it looks like a connection, static allocation of a resource.

                          The more variance there is in demand, the more it looks like it’s connectionless dynamic allocation of resources.

                          1. 2

                            Trying to choose which of my side-project ideas to work on next. I’m thinking of starting to tackle my offline-first approach for everything I currently use an online service for (e.g. Pinboard for bookmarks, and another site for inspiration/moodboards). A core part is basically being able to define ‘views’ of the file system to give a lot more flexibility than having 1 pre-defined folder structure—this would use extra metadata that I record.

                            Or, I might try and finish off an annoying bug in another, tiny, side-project: shell-safety-check.

                            1. 2

                              I’m also getting excited about reducing my dependency on offline services. Just think: by downloading a wikipedia dump or a Stack Overflow dump I can ensure that for the rest of my life I will have access to wikipedia, no matter what happens.

                              We need to re-federate the web post-haste, or we are going to find a surprising amount of institutional knowledge evaporating due to link rot and business failure.

                              1. 2

                                Exactly. There’s been more and more instances of previous content disappearing (articles on a news website, repository on GitHub, an album on Spotify) on me that it’s been prompting me to speed this up.

                                For each of those instances, it’s pretty easy to preserve the content. The main thing is that with moving away from Spotify, is that instead of a relatively small monthly fee, to purchase all the albums I listen too, it’s simply not possible. This is a good and a bad thing!

                            2. 2

                              Project 1: Documenting and diagramming to get up to date with current state of things

                              Project 2: Starting to write a functional spec to match up with vague product requirements

                              1. 1

                                Sorting out the final PCB run for the HIDIOT, kickstarter surveys and getting things ready to ship.

                                1. 1

                                  This week I’m enjoying my newly found unemployment. I’m completing Death’s End by Cixin Liu, and a book by Dr Barbara Oakley