1. 11

What are you doing this week? Feel free to share!

Keep in mind it’s OK to do nothing at all, too.

  1. 8

    I’m building little prototypes with my language that’s implemented in machine code and mostly translates 1:1 to machine code (paper [pdf; 12 pages]; repo; blog post). It still has some rough edges, and does zero type-checking. But I’m sick of compiler-writing and the language is at some minimal level of ‘working’. Examples so far:

    Now I’m working on a more serious app: a multi-column paginator for reading text files. I’d like to now extend it for some basic markdown-like notation. Then add support for hyperlinks and voila, a simple browser for a subset of the web that’s bootstrapped out of machine code. And no images or javascript. I’ll claim that’s for privacy, yes.

    Then again, I may well just go back to Mu hacking. I’ve already found one bug in Mu so far. And a few instances where the lack of checks is likely to bite anyone building apps, particularly since you have to juggle registers as part of types.

    1. 2

      Your work continues to impress. Seriously love the factorial example.

      1. 1

        Then again, I may well just go back to Mu hacking. I’ve already found one bug in Mu so far. And a few instances where the lack of checks is likely to bite anyone building apps, particularly since you have to juggle registers as part of types.

        Thanks for this. Mu is being offered as a super tool for beginning/newer coders, so every rough edge we can file is good for everyone.

        1. 2

          That is still a distant goal, but you’re right that I’m aiming towards it.

          Right now programming in Mu requires a willingness to learn about the internals of processors, and the persistence to debug problems all through the still-immature tooling. I think this way has promise in time to be a better experience than conventional software, but for now it’s quite rough. Anybody trying it out should liberally pepper me with questions. I can’t yet guarantee a smooth experience, but I can guarantee I’ll be right there on the road beside you if you will ask questions. And together we’ll make things a little bit better for the next traveler.

          1. 2

            This makes me wonder if we’re talking about the same Mu.

            Mine is a Python editor for beginning programmers with excellent support for CircuitPython

            1. 2

              Oh jeez, I hadn’t seen this one before. I’ve clarified above which Mu I mean.

              1. 2

                Neat! I’d not heard of this before. Do you have an end use case in Mu in mind or is it just an educational experience for you?

                1. 2

                  Not a use case, exactly, but I go into the motivations in the paper. The abstract/intro/conclusions in particular should be a quick read on the goals and belief system behind the project.

      2. 7

        Trying to keep my head afloat at work and make sure my family and I are good.

        Checking in on my black and other POC friends and seeing what I can do.

        Social distancing still, although a bit relaxed, because I’m so tired.

        Checking in with family affected by the floods in Michigan last week.

        Finishing up slide changes and prepping for a webinar I’m giving in a couple weeks in lieu of a conference talk that got cancelled and then went virtual.

        But mostly checking in with people and trying to take care of myself and my family.

        1. 6

          I’m working on adding filesystem extended attribute support to tmpfs in HardenedBSD. We use extended attributes to toggle exploit mitigations on a per-binary basis. Our package builders use tmpfs, which doesn’t currently support extended attributes.

          1. 6

            Creating consolidated legal texts with nearley.js.

            1. 5

              Continuing to work on a Go parser library for GNU recutils

              1. 1

                Huh, first time I hear of recfiles. Very interesting, thanks!

              2. 5

                Working on a Breakout clone in Monogame and C#. A bit stuck on collision resolution, the sister to collision detection.

                Collision resolution is quite tricky for an arcade game: in the event of a collision, you need to displace one or more objects so they are no longer in a colliding state, which involves displacing one of them until this is no longer the case. The direction and choice of objects to displace can be subtle. You might ask, “aren’t there physics libraries for this?” There are; I’m not 100% sure they’re suitable for this genre though.

                1. 2

                  Awesome! What made you choose Monogame as your framework? Do you have a strong preference for C# or are the tools that much better than any other platform like Pygame or Python Arcade?

                2. 5

                  On my own time I’m writing a racket-based gemini browser. It is early days and at the moment it is quite unfinished and unpolished but it is growing.

                  1. 5

                    mostly watching the USA devolve into a military dictatorship

                    1. 4

                      Packing and moving tomorrow. Hopefully the new place and taking the whole week off will do some good for my mentality.

                      1. 1

                        Moving is a pain. I just finished a move recently. Are you doing everything yourself or using movers?

                        1. 1

                          Everything myself. I don’t get to take much so I’m basically starting from scratch save for smaller things. Moving out from home for the first time drains one’s wallet real fast.

                          1. 1

                            Agree… but later when you have a bunch of stuff, it still drains your wallet, just, differently. (Paying to move all the stuff rather than get it the first time,)

                      2. 4

                        Drowning in academic stuff.

                        1. 4

                          Continuing to slowly work through The Nature of Code - current chapter is on randomness, probablity and distributions.

                          This book has been really great balm for the mild case of language mastery study burn-out I was experiencing. Turns out writing small programs that draw stuff on the screen is a great source of instant gratification :)

                          1. 4

                            Working on my magic: the gathering EDH board state tracker www.edhgo.com www.github.com/dylanlott/edh-go

                            1. 3

                              My motivation has been low lately.

                              At work I’ve been toiling away fixing STIG vulnerabilities. We finally have some more interesting tasks (actual coding!) in our backlog, so I’m hoping to grab one of those this week.

                              I’m going on my first bikepacking trip of the season next weekend, so I need to go through my gear and get ready for that. I’ll ride out of Boulder and camp somewhere off the Peak-to-Peak highway. The first trip of the year is always fun, even if the location is a bit mundane…

                              Lack of motivation’s been really affecting my coding outside of work. I have two projects that I’d like to move forward on (a Spotify client and an OpenGL/3d graphics framework), and I feel like each of them has good groundwork laid, but I can’t decided where to go with them.

                              1. 2

                                This is likely “day work burnout” causing your fun coding to take the backburner. (Obviously, I’m just being explicit)

                                I suggest you don’t focus on coding at all after work, just don’t think of those projects. Instead focus on activities that make you happy, and you will feel the urge to code after work come back. When that feeling comes back, do not over do it: set a time to code, maybe 1-2 hours, and then skip a day or two and repeat. You’ll touch your projects more frequently, and keep your brain thinking about them while doing other things. :)

                                1. 1

                                  Are the projects browsable somewhere, or are you keeping them private? This way or another, would you be willing to tell a bit more about both? Also, did you have some further-reaching ideas for them before you started writing them? My motivation/willpower is also mediocre recently 🙄 so I have time and would be more than happy to listen to some stories :)

                                  1. 1

                                    They are browsable!

                                    https://github.com/jl2/newgl

                                    This one is a re-write of an older project that I used to learn shader-based OpenGL. The idea was that I’d have a basic 3d viewer that handled boiler plate, like handling buffers and compiling shaders, and then I could sub-class an object and focus on writing shaders and creating objects. It does work, and I used it to write a fractal viewer, but after that I’ve been stuck deciding how to implement other objects and where the boundaries will be between this project and the projects that use it as a viewer.

                                    https://github.com/jl2/cl-spotify

                                    This one started on a whim when I learned Spotify had an API and I thought it’d be neat to control it through the Lisp REPL, so I wrote this library. It handles all of the authentication and authorization (it’s a pain because Spotify auth tokens expire after 60 minutes), and will make put/get/post requests, but I’d like to have a nicer API on top of it. I’d like to generate it automatically from an API description, or even the documentation, but I wasn’t able to find anything that was easily parse-able.

                                    After I switched to FreeBSD and found out Spotify’s web player doesn’t work here, I decided to make it into a full REPL based Spotify client, with spotifyd as the audio backend. Using my phone as a remote is actually almost easier, though, so I don’t know if I’ll go that route.

                                    1. 1

                                      Not knowing nearly anything about OpenGL, two thoughts crossed my mind:

                                      As to boundaries, in this case you might want to try and build at least 1 more project (if not 2) with the library (can be something quick & one-off, some demos or whatever), ideally with conscious brutal style-defying copy-pasta & ad-hoc tweaking of code, and only afterwards take a step back and start fleshing out the boundaries. Some people seem to call this a “Rule of Three” (though personally I am wary of becoming too religious about any “rules”). This is an investment, but I believe it to be a good and practical one — as long as you care enough to take it. This kinda makes you your own client and gives you some perspective & real experience on where the seams in the API start to naturally show up :)

                                      The 2nd random thought is maybe you could experiment with trying and writing a more detailed readme for your lib? I’ve seen this idea of “Readme driven development”; it doesn’t exactly apply here, as you’re at a very different stage of the project, but I think it could still have a chance at giving you some benefits. Basically, I would think of it as kinda “rubber-ducking” yourself :) with a cool & palpable side benefit of producing a more meaty readme that might potentially help other people use your lib? (I’ve seen the project.org file, but it still looks rather curt to me.)

                                      As to Spotify, all that comes to my mind is to maybe try and not overthink it, and just crudely hack towards the goal, taking any shortcuts you like. First of all this is the way I found to be most practical when doing PoC/MVP projects; secondly, I’d personally think maybe to not overinvest in a commercial API? Companies like to change their API randomly every now and then anyway, and 100% not care about clients, so why care much about them either, and give them too much of our precious free time, methinks? :)

                                      But please remember that advice is cheap, that’s just my $0.02, sent mostly in hope to try and trigger or annoy or stimulate you some way enough to nudge you out of balance! :)

                                      edit: Also, hoped that writing to you might help me get some inspiration how to get out of my own dilemmas — and indeed, I seem to have actually stumbled upon a thought that has some chance to work as a path out for me — so, thank you for taking your grumbling here! :)

                                2. 3

                                  Work:

                                  • Last few weeks I’ve been very busy with Jira upgrade at work. Now that I’ve completed upgrade successfully last Thursday, this week I want to focus on some of pending support cases to help our users.

                                  Personal

                                  • It’s been exact one month that I’ve started this fun experience with four CS undergrad students from Stony Brook University, called Uncle and Us. Here is first blog article on what are our plans to achieve in next 4 months and how we are going to validate our learning.
                                    • And I must say month of May has been very exciting. Everyone: Avik, Atharva, Gaurav and Sam are really staying on track. They completed first course on Linux fundamentals and few interesting projects to backup their understanding.
                                    • My this week’s plan is to write a detailed blog summary to some of our achievements and learning.
                                  • Also I’m planning to write blog entry on how one can access Jira during upgrade process while access is disabled for normal users. It involves using Apache SetEnvIf and setting up HTTP header along with ModHeader extension. Hoping it will be useful for other Admins to do application upgrades without user intervention.
                                  1. 2

                                    I’m working in a tool to improve the documentation process, check it out https://github.com/JpOnline/Blog/blob/master/documentation_sprint.md

                                    1. 2

                                      I’m working on a new knob for the Beast DAW, with bidirectional and unidirectional modes, for e.g. panning and volume.

                                      The updates may only use “transform:rotate(angle)” CSS statements to utilize GPU acceleration during automation.

                                      Sadly, Chrome/Electron cannot compose inside an SVG, so I have some nasty splitting and layering of the #SVG elements going on, to apply only one transform per SVG.

                                      Here is an animated GIF: https://social.tchncs.de/@timj/104275988982564877

                                      1. 2

                                        Taking a week off, catching up on cleaning + finishing up smaller projects.

                                        1. 2

                                          Trying to get back to a PR that’s lingering in one of my open-source projects for over a year now… (uh oh…) to try and split it into smaller bits and merge at least one of them… the worst thing is I should really add some tests to the project, esp. to make future PRs easier and faster for both sides, but even thinking about this kinda road-rolls over my motivation… so I’m thinking to merge it still without tests, to push through… but then I’m not sure if this won’t break the project in some area and I won’t even know, without tests… and I don’t want to break it for people… gnarrrrrghhhh….

                                          1. 2

                                            I should be getting my hard drives and dual-drive enclosure, so setting up my backup system will be a big job. The plan is to follow the 3-2-1 rule: 3 backups, 2 local, 1 remote. I’ll be using BackBlaze.

                                            I did more 3d work on the weekend, sculpting a brick (lol), to practice sculpting and normal baking. Unfortunately Blender didn’t want to bake. :(

                                            I’m trying less to “program for programmers” and instead start using a computer as a regular person. It’s hard to describe exactly what this is, probably because I’m a programmer first before anything, but what I mean is rather than invent new formats, new tools, or anything else “meta”, let’s start using things. I think that’s a slogan that could catch on: “let’s start using computers”. Let’s not make a new project, instead, use and improve the current ones. And if they don’t exist, start a new one with a specific goal which can be used with the others.

                                            A good example of “programming for programmers” which I plan to do this week is more assembly technique exploration. It’s essentially not useful to anyone outside our domain, which goes for nearly anything else, and essentially, I think most of the projects we do are more personal research projects than anything.

                                            So yeah, that’s my week “plan” :p

                                            I want to also join the web ring of blogs.