1. 16

Feel free to tell what you plan on doing this weekend and even ask for help or feedback.

Please keep in mind it’s more than OK to do nothing at all too!

  1. 12

    2D C99 Game Engine. Now 5500 LOC (1100 of that is comments, descriptions and documentation). It took four (maybe more?) weeks of nights and weekends, but last night, I finally got the entire pipeline of UTF-8 strings -> grapheme cluster -> glyph mapping -> bitmap font glyphs drawn using a texture atlas to work, with 1 draw call per string of up to 160 glyphs (right now). I’ll be cleaning that up, maybe doing some text layout work, and proceeding to simple games like the twin stick shooter I was doing in C++ before I hitched the magical carpet ride into C.

    1. 3

      Awesome. Would love to check it out if you ever open source it.

      1. 2

        What has surprised you most in moving from C++ to C99?

        1. 4

          I’d never really done any projects in only C before. C is so much simpler than C++, I may be writing more verbose code, but I move through tasks much faster and the solutions seem to be simpler.

          I used to be a major C++ devotee (I have a printed C++14 language spec), but the language has gotten so ridiculously complex in C++17 and C++20, that just writing C professionally is very, very appealing to me.

      2. 9

        womens day demonstration baybee

        1. 5

          Planting some chillies. Looks like they’re going to take a few months to grow, that’s even longer than it takes to compile Firefox from source which I didn’t know was possible :’(

          1. 1

            I wonder, is this due to Servo being written in Rust or was it always slow to begin with?

            1. 1

              Worst case is around 80 minutes on my Lenovo x series laptop. You can get it down to 10 with a regularly updated tree, a decent machine or an sccache cluster.

              Good luck with your chili project. Sounds like a better plan than compiling Firefox Ina weekend for sure :-)

            2. 5

              I’m headed on a week-long vacation somewhere not in my city of residence. After my first vacation time in years during the winter holiday season – I completely tuned out work for 2+ weeks, but stayed home – it seems quite novel to be going on vacation again so soon given my past several years of having… friction… in the way of taking vacation time.

              Take your vacation time. Don’t allow yourself to be burned out. It sucks.

              1. 5

                Probably staying indoors since mass hysteria is gripping the Seattle-area.

                Otherwise, trying to start If on a winter’s night a traveler or rooting myself in an armchair to make some headway in You Can’t Go Home Again. So, lots of reading unrelated to programming whilst still thinking of programming.

                1. 4

                  Going skiing! And, as usual, hopefully writing… If I’m not too burned out.

                  1. 4

                    I plan to do some more front-end work on Tabula Scripta. Now that I’ve landed on gotoB as a front-end JS framework, actually getting some of the things I have in mind done seems a lot more approachable than it did a few weeks ago.

                    But we’ll see how it all plays out. There are some medical things in the family that take precedence.

                    1. 2

                      A spreadsheet written in Nim? Very cool!

                      1. 2

                        Server in Nim and client in gotoB.js is the plan for now.

                        1. 1

                          Why did you decide to not use Nim for frontend/client as well? Genuinely curious, as I was hoping I’d be able to use Nim in place of JS in my hobby usage.

                          Also, did you consider Lua or NimScript for the scripting part?

                          1. 3

                            You can use Nim in place of JS, it you want. But when I was trying out Nim instead of JS earlier, there was still some overheads in place that I wasn’t a huge fan of. It’s super light compared to say, the Go to JS compilation I’ve seen, so if I decide to make client-side parts of TabulaScript, I will likely use Nim to JS for that. But I was still running into 20k of extra stuff around different conversations getting bundled on when I tried using it last. That’s tiny compared to a lot of things, bit it’s code I still have to wade through or ignore when I’m debugging things. That, and I had a lot of trouble figuring out how to use Karax right.

                            JS is a language I know well enough, and chrome is a far better debugger than what I’ve seen available for Nim this far, provided you don’t gunk up your source with lots of extra noise.

                            I also like to try to reduce build complexity where I can, which is why I went with gotoB. If having JS build complexity was more up my alley, I’d have probably switched to Vue or React by now. GotoB, while not written by me, is a strong example of the minimalism I’d like to try to embrace.

                            Lua did bounce across my mind for the scripting part, I have used it for scripting other things in the past, and it might become a scripting option later. But I wanted the flexibility to make a language that aids in analysis of spreadsheet dependencies. I have a loose idea of being able to detect cycles in formulas using a data flow pass over the code. I haven’t given the matter a large amount of consideration as of yet, but one core idea for this is for people to be able to make their own formulas for the spreadsheets, rather than relying only on a built-in set. And having a language built to facilitate that, rather than one that has to be bent into that, could be very helpful.

                            All that being said, it’s still very early days for Tabula Scripta. I just decided on a front-end framework last week. Life is busy enough that progress on it won’t be super fast. But I do think it’s an idea well worth pursuing, of nothing else, I’ll learn a lot.

                            1. 1

                              As far as NimScript goes, I hadn’t seen any examples of using it embedded in a Nim program a la Lua in C, or the various Go-based Luas in Go programs. So the possibility of using it in my server as a scripting language hadn’t really struck me.

                              I’m still planning on having Tabula Script be it’s own thing. I know a few things about writing a minimal language, and Nim’s metaprogramming should make it super easy to extend Tabula Script as there’s a need for formulas or other things that need to be quick.

                              1. 1

                                When I was searching around, I found one project that was claiming to be NimScript extracted to library form. So, not much, but something. OTOH, you now reminded me that I think NimScript is not really super stable yet, so until at least all stdlib is verified to run correctly in it, probably could be risky to use in production seriously. Also don’t want to distract you, was just asking out of curiosity :) thanks for the answers! :)

                        2. 1

                          I’m opening those links to see the idea, not convinced by your choice in technology so looking to be pleasantly surprised by having fun

                          1. 1

                            gotoB is genius I am going to buy lots of alcohol this weekend

                          2. 3

                            Teaching my girlfriend to write Elm.

                            It’s so much easier than JavaScript.

                            1. 3

                              Trying to convince people to get out and actually vote for Bernie Sanders.

                              In between that, I’m integrating my terminal user library with my terminal emulator library, to help existing terminal-based programs bridge over to becoming GUI applications. By integrating my own custom terminal emulator, they get the full features it provides (including inline images) anywhere, plus setting the default size and color (where in a normal terminal program you must use what is offered), while also giving a hook to get right into the gui and add stuff like custom menus.

                              Recompiling for a gui does mean potential loss - now it requires X on Linux, isn’t as ssh friendly, etc., and if you already use my terminal emulator those special features are mostly already available anyway (and if not it gracefully degrades), so on Linux, it is probably more lost than gained…

                              But on Windows, even if you are already using my TE not all features are available (the new conpty thing strips unrecognized sequences… so no magic extensions :( ), so integrating gains that plus a bit better, more customized UX, so there is a good amount to gain. And since win32 gui libs are always available and ssh isn’t as important, not as much to lose.

                              So probably pretty niche in the end but not a huge amount of work since I already wrote all the pieces.

                              1. 3

                                I’m going to a comedy show at a local bar, going to see Aesgir live, and then playing DnD all day on Sunday

                                1. 3

                                  Experimenting with some of the concepts from userland. People musing about the various CLI benefits in recent threads should definitely take a look at hisham’s work (and thesis) the infrastructure itself is a dead end but the rest holds some promise.

                                  When dull from that I’ll dust off some input device work, currently on the lookout for an (time, two or three analog axes, 1..5 digital inputs) trainer + classifier that does not rely on throwing numbers at (A)NNs but actually has thought put into it ..

                                  1. 3

                                    Why do you think the infrastructure is dead end? I tried to get through the source but the lack of comments makes it slow for me, and haven’t properly read the thesis yet.

                                    OTOH, I’m mulling over an idea of adding a feature that would make it possible to write userland modules controlled over a pipe-based interface (akin to language server protocol), to make it possible to write them in any language. I’d love to be kept in loop with your experiments if somehow possible, by the way. Also, I’d love even more if you could consider including a pipe-based plugins interface in them! Though I’m not sure if it can work with the “flow” ideas from the thesis, esp. as I only skimmed it…

                                    1. 2

                                      The cool thing with this, in my opinion, (warning, my academic former self talking) is the whole spatial-modelling processing chains in multiple dimensions; how ‘spreadsheets’ are used as a language to cross-reference and stitch data flows together, and modify/run/repeat workflow. That it also lends itself well to a ‘zooming’ WM is just icing on an already delicious cake.

                                      As to why I consider the infrastructure a ‘dead end’ comes with how poorly the data processing scales, how frail it is, and the division of responsibility. All real processing and computation is done within the UI process - this will be janky like nothing else when you dip into 2-3 digit number of steps.

                                      ( For background / bias, though don’t punish yourself by reading through it, just showing that I’ve done my homework: https://github.com/letoram/arcan/wiki )

                                      Now, way before all that, I had pretty much the same engine / processing structure, and a marginally less terrible API/rendering model than Love2D (resource management was at least asynchronous, GPGPU not an afterthought, and the Lua-VM price isn’t payed ‘per frame’). The wall I hit (2006-2007ish but things have not changed) is that reliable/portable GL forces you to do much on the main thread (context juggling was/is just inviting driver bugs), image parsers are crashy garbage and the multimedia side exponentially so. You really want process separation here, and a lot of it. Which means there need to be an IPC system that can juggle multimedia, interactively. Fsck, that’s a “display server”. Then the world got much darker.

                                      As for being kept in the loop, First as a standalone WM that can be integrated in my bigger one as a plugin. That’ll likely just be in the open as a git. As for a pipe based interface, there already is. Poke me on IRC/Wire if you want a solution, for hints, read the ‘writing a WM’ article, and look at the documentation for the ‘bond_target’ lua api call.

                                      1. 2

                                        Oh my, I didn’t have a slightest suspicion you’re the author of Arcan! That puts things in a very different perspective :) I don’t use Wire and rarely connect to IRC (and I already have Keybase, Signal, and a few others on my phone…), so maybe I’ll try pestering you on private lobste.rs messaging, FWIW…

                                    2. 2

                                      Wow wow userland looks AWFULLY cool. It’s like somebody took the ideas behind Jupyter notebooks and went 4D :)

                                      When I first saw that I wondered if it was Dave Winer’s “Userland Frontier” which I can’t even find references to on the web anymore. Needless to say this looks much more interesting :)

                                      1. 2

                                        the spreadsheet tactic has quite a lot of merit to it, with some zoom in/out controls, paging etc. it can likely be quite effective - it gets a bit grittier when the input outputs aren’t 1:1 though, don’t immediately see how that doesn’t devolve into a ‘graphedit’ of win32 media-fame.

                                    3. 3

                                      Preparing for a trip to Yosemite next week! It’s my first time at the park. If anyone has any trails/things to do that they would recommend, I’d be happy to hear it.

                                      1. 3

                                        Panicking from coronavirus. (I’m in Seattle.)

                                        1. 3

                                          I’m in Bellevue (practically on the border with Redmond). I’m not really panicking, but trying to be prudent. I work for Microsoft, and AFAIK everyone on my team is working from home. I’m tempted to go out and do some karaoke this weekend, but the King County public health recommendations say to avoid gathering large numbers of people together if at all feasible. So I think I’ll be in my apartment for a while.

                                        2. 2

                                          I am writing in Rust as fast as I can a command-line application to perform genome annotation [1]. An opportunity appeared to go to a conference with everything paid if I have a project to show, then here I am.

                                          [1] Genome annotation is the process of parsing a genome, which is usually in FASTA format (text format), and detecting the genome features, such as coding regions, introns, exons, and other genome features. Then, output these detected features to a text file, usually in GFF3 format, which is a merely a table. The big deal here is the part of detecting the features.

                                          1. 2

                                            Will try to write a Flappy Bird game in Nim, as a demo and non-trivial testbed for my no-JVM-dependency toolchain for writing Android apps in Nim (https://github.com/akavel/hellomello)

                                            1. 2

                                              Working on openparlour - adding simple username/password authentication.

                                              One of the things I’m trying to figure out is how to allow different openparlour back-ends share posts. I suppose the easiest route is to simply have the admins of each coordinate and create a username/password pair that would be used to do the crossposting.

                                              Been really enjoying this project since now that I have a viable test corpus going I can implement the test for some small bit of functionality, make it pass, and walk away until I next get a chunk of time. This makes it a lot easier to fit in between a very full time job :)

                                              1. 3

                                                Got a kick out of this:

                                                logging.info(f"About to take off and nuke {db_uri} from orbit. IT'S THE ONLY WAY TO BE SURE!")
                                                
                                                1. 2

                                                  Thanks! :) Gotta have fun with things, especially for a hobby project :)

                                              2. 2

                                                Probably digging out my motorcycle and cleaning it up so I can ride on Sunday. It’s warming up in Wisconsin, and I’m eager to go out for my first ride of the year!

                                                Also probably put new mudflaps on my car, hopefully my friend will let me use his lift…

                                                1. 2

                                                  Cleaning my study. It’s sort of been a storage room for a few months now, but since I’m stuck working from home for the next month, it’s time to make sure I can actually work comfortably in here.

                                                  Also, I’ve been playing more with porting my IRC bot to rust (got some good feedback from my post here) so I’m hoping to have a working version by the end of the weekend.

                                                  1. 1

                                                    Are you using the irc crate? I’ve been a happy consumer with my bot, but I’m also tied to an old Tokio version for my builtin http things, that I’m somehow blocked from updating to an async/await world since I can’t get the reactors to play nicely with each other in newer versions.

                                                    Anyway, have fun! :)

                                                    1. 2

                                                      Yeah, I used it originally (actually ended up opening a PR against it to fix handling of the trailing argument), but ended up writing my own (https://docs.rs/simple-irc) to simplify handling. I’ve got a few weird things I wanted to play with which were much easier to do without having the transport bundled in with the parsing code.

                                                  2. 2

                                                    Working on a book about Facebook Libra - a really big dumb and bad idea in cryptocurrency. Resisting the urge to compile LibreOffice git HEAD yet again, one of my favourite displacement activities.

                                                    Might stop down the local CEX and see about an 11” laptop - it’s time to go back to a netbook. A writing device that’s mine. And cheap enough that if it breaks, I can just get another one.

                                                    I have a very powerful Lenovo X390 for work - 4-core/8-thread i7, 32GB RAM, compiles LO in 90 minutes! … and a fragile screen. I’m hell on laptops anyway, but I already broke the screen on this one previously, and I now regard this £1000 corporate beast machine as a fragile toy I don’t want to risk using.

                                                    Probably one of the underpowered Windows 10 Chromebook competitors - I traveled a couple of weeks ago with the loved one’s Chromebook, and while I wholeheartedly recommend Chromebooks as travel laptops precisely because it’s not a disaster if it’s lost/stolen/broken, it turns out I really like having PgUp/PgDown keys.

                                                    Though I’d accept a sufficiently ’l33t Chromebook. And then put GalliumOS on it.

                                                    I thought I wanted a Surface Go - I am deeply impressed by a 10” tablet that is genuinely a proper PC, and apparently they Linux surprisingly well - but the form factor isn’t quite right for what I want, which is sitting on the couch and typing a lot. I want a laptop, not a tablet that sorta does being a laptop.

                                                    And if I want literally today’s build of LibreOffice, I can build it on the work laptop and copy over the instdir :-D

                                                    1. 1

                                                      I ended up buying the Hypa Flux. I had an authentic early-2000s Linux experience with the crappy Realtek wifi, but I’m otherwise delighted with it. Review: https://reddragdiva.dreamwidth.org/608064.html

                                                    2. 1

                                                      Contributing to a programming language – this time I’m working on allowing methods to be defined and called without the ().

                                                      The idea is to allow implementers to freely exchange such functions with values (or the other way around), while not breaking the code of users.

                                                      1. 1

                                                        I’m staying inside for the weekend. I will spend the time preparing to work from home full-time. Every day is “take your cold to work day” at the office and I’m tired of getting sick.

                                                        1. 1

                                                          Driving range, going to tour some new places to live.

                                                          1. 1

                                                            I’m going to try my hand a bit at gtk programming, in OCaml :o

                                                            1. 1

                                                              NaNoReNo has started, but I haven’t had a chance to actually start my entry, so I’m going to do that. (Something short, surreal, and non-branching – I’m so busy at work that I have no time for my 2 existing VN projects, so I’m definitely not doing anything complicated for a jam.)

                                                              I’m also going to be continuing to slowly work my way through mount tsundoku. I added a bunch of books to my to-read stack during February, when I realized it was women in horror month and then realized, upon scouring my shelves, that I had something like 90% male-authored books in all genres. Since I generally try to read widely and variously, this prompted me to push the handful of books not written by straight white men to the top of my queue, and I knocked out four and a half of those during February proper (leaving me with maybe six more, out of my ~1000 already-purchased, currently-unread books). I’ll try to finish the one I’m most of the way through this weekend (Interview with the Vampire – which, while clearly a first novel, is a lot better than its reputation makes it out to be, probably because its biggest audience during its peak popularity was the 80s equivalent of fujoshi).

                                                              I’m also attending a double feature at the local video store on Saturday – John Carpenter’s They Live, followed by The Hidden (starring Kyle McLachlan of Twin Peaks fame as an alien parasite police officer pretending to be a human FBI agent). I’ve seen both of these movies, but only once, years ago, and never with an audience. It’s great to see a good movie for the second or third time surrounded by 20 or 30 pleasantly-drunk film buffs – especially a weird, funny, gory, over-the-top flick like The Hidden.

                                                              1. 1

                                                                About a month ago I had wanted to do a video series on what I call “Incremental Strong Typing”, which also might be called “Better FP”. My friend was willing to come along for the ride, so I waited until we were both available to do some skying and walking through a sample project.

                                                                Well dang, my friend never was available, so I’m just going to write up a long essay covering what we would have done with the videos and including a lot of code. I really wish he would have the time. I tend to skip over things that I know that the average reader might not, and having another set of eyeballs, forcing yourself to explain what you’re doing and why? Content is always better like that.

                                                                It should be fun. Nice to kick around some F# again.

                                                                1. 1

                                                                  Tinkering with my first python plugin and some house work.

                                                                  1. 1

                                                                    The Golden Ears Winter Club 2020 ‘Sci Fi Mixed Spiel’ (A curling competition for the un-initiated). Co-organizer and playing.

                                                                    1. 1

                                                                      Framing on the 3rd floor!

                                                                      Maybe integrating Paypal (finally).

                                                                      1. 1

                                                                        Improving a compiler. It’s self-hosting and I managed to bootstrap it yesterday, after months of trial and error. I’m super glad but there is an endless list of things to improve on it, the most important one being probably error reporting. All I want is printing backtraces on stderr actually, I don’t need a complex C++-like exception mechanism (panics are always fatal and not recoverable in the source language). I’ll have to choose between __builtin_return_address and libunwind.

                                                                        1. 1

                                                                          Working on a better onboarding experience for Encore. I’ve gotten feedback that the product is really simple to use, but many people never actually try it out because you aren’t guided through the process.