1. 14

What are you doing this week?

Feel free to share!

  1.  

  2. 9

    Working on a flask app that allows you upload and download data from s3

    1. 9

      Trying to keep my father alive and well (stage IV cancer), and thinking is there a way to help not get into the same situation for the others. That is, is there a technological solution to fundamentally a sociological problem, where in poor societies doctors are overworked and forget how to interact with patients and clearly state outcomes and process. Something like that recent service that helps with parsing ToS, just for diagnoses, to digest them to human, simple, and understandable form.

      1. 6

        A variety of threads have led me to wonder how to build ergonomic typesafe state machines.

        I made a reasonably complex one last night in Rust that follows this pattern [1]. While I think I could do more with it, the macro system made the final product look pretty clean. Stepping through state transitions with the guarantees that setup gives I’m sure will come in handy.

        [1] https://hoverbear.org/blog/rust-state-machine-pattern/

        1. 4

          I’ll be scanning the barcode/ISBN/EAN of my books (~200 left) with an iOS shortcut that calls a URL with this scanned ISBN/EAN number, and uses it to pull the book data from the Bol.com API and from there add the book (and its details/image) to my personal book collection. As described here: https://j11g.com/2019/11/16/foster-how-to-build-your-own-bookshelf-management-web-application/

          1. 1

            I was going to write my own library manager but then I discovered LibraryThing and it’s everything I ever wanted, except OSS.

          2. 4

            Hopefully getting if/else and while compiling for my pet language. This part is hurting my brain, and it runs very slowly, but it’s a joy to throw little snippets of code at it and watch them turn into a completely different language.

            1. 3

              Regardless of how fast or slow it runs, creating your own language is very cool! It’s something I’d like to do myself, but I’ve got other projects on my plate for now.

              1. 3

                Oh sweet! I’m working on a tiny compiler too. What are you compiling to?

                1. 3

                  Lua! Mostly so I can tell at a glance whether it’s outputting the right thing. JVM is after that, all going well.

                  1. 2

                    Noice. I’m doing x86, which means it’s a hell of a time…

                    1. 2

                      Oh boy! Hope it goes well. I like the little community of language developers on lobste.rs. It’s fun to watch everyone’s progress. Keep it up!

                2. 2

                  Do you have a sample of this language? What did you use to write it?

                  1. 1

                    Glad you asked! It has a homepage with a couple of samples on it, and there’s some working code in the lib/ directory in the repository, but it’s still got some very rough edges and I don’t necessarily expect anyone else using the language to write anything resembling what I’ve got so far. I’m still learning it myself.

                    It’s written in Typed Racket (rendered), although it should be simple enough to implement in a weekend in any language. For example, the compiler is backed by this interpreter (WIP) and it’s this Matryoshka of interpreters that goes some way to explaining its lacklustre performance.

                3. 3

                  Writing a Rust build script that compiles a library, then creates an additional library on the fly with a single function that returns the original compiled library in byte form.

                  1. 1

                    That sounds fun and cool! What kinds of applications do you envision it will be used for?

                    1. 1

                      I’m trying to come up with a more efficient build system for WebAssembly binaries that are executed in an interpreter. The way I have been handling it is via makefiles, but I feel like compiling the project to wasm and injecting that binary as a static function in a library will significantly increase the usability as I’ll only need to import the crate! I’ve got an MVP working now :-) https://github.com/quilt/umbrella/tree/master/contracts/wallet

                  2. 2

                    Working on getting snapcraft, homebrew, and docker releases for http://kushtaka.org.

                    1. 2

                      I taught myself about the RDF ecosystem and took some data from work and dumped it into Apache Jena to analyze using SPARQL queries. I’m really enjoying building my OWL ontology and doing analysis through SPARQL. The ecosystem is fantastic and the technologies easy to learn and ramp up with, if lacking in introductory material. If only WHATWG spent a fraction of the time they spend on the application web on ideas for the semantic web, I think we’d be living in a much richer world.

                      1. 2

                        Working with motion and some cheap Chinese cams.

                        1. 2

                          Trying to make a Surface Pro X into a development machine… argh. I love the machine but the developer ecosystem is still catching up to it.

                          1. 2

                            I’m hoping I can find enough time to work on, and possibly cut a new release of, my service manager Dinit.

                            I recently had some time off work and (while I was not doing other holiday stuff) I managed to do a little more work on it. I’d set myself some target features for the next release but the two main features I’ve been working on have proven complex and time-consuming to implement so I think I’ll push the other targeted features back. Then I might be able to release this weekend, if I’m lucky. Still a way to go before 1.0, though.

                            1. 2

                              Well, my Rust-on-wasm 2D graphics library works well enough to have a particle demo you can click on, though there’s still some bugs with mobile browsers and some weird color effects. So, I should work that out and see how it goes.

                              Instead I seem to be wanting to make a GLFW-equivalent in Rust, due to frustration with the current de-facto standard, winit. I really, really shouldn’t bother.

                              1. 1

                                There are Rust bindings for GLFW though, right?

                                1. 1

                                  There are, but vendoring C/C++ libraries with Rust and making your own libraries depend on building them is a great way to generate lots of bug reports from stuck newbs.

                              2. 2

                                Started my new job, so getting used to bank infosec (perfectly reasonable and somewhat welcome after startup land), Outlook (less good) and the godawful Apple keyboard. Who on Earth thought that this piece of garbage was ship-able? Good lord.

                                1. 2
                                  1. 2

                                    Trying to learn Haskell, for the third time. It’s hard for me :P

                                    I think I’m good with the syntax all up to Monads/Applicative. I understand the concept and use of Monads, but now I’m stuck on understanding “Applicative” and how they differ.

                                    1. 3

                                      Possibly useful: Applicative is less powerful than Monad. (Every Monad is Applicative, not every Applicative is a Monad.)

                                      Compare the types of (<*>) and (=<<) ((=<<) = flip (>>=)):

                                      (<*>) :: Applicative m => m (a -> b) -> m a -> m b
                                      (=<<) :: Monad m => (a -> m b) -> m a -> m b
                                      

                                      If you look at the first argument of each, Applicative has a function inside the m, whereas Monad has a function that can see the a and then choose which m b to return. That is, Applicatives can’t have dependencies where you choose a later effect based on the data in an earlier effect. Monads can.

                                      I wound up working through the examples from Applicative programming with effects with pencil and paper, and that really helped my understanding.

                                      There’s another procedure for learning a typeclass that I find useful:

                                      1. Work out what things you have that fit the abstraction. What types have an Applicative instance? (e.g., Maybe, (->) r, [], Const r (needs Monoid r), …). Implement the instances. Look for things that are Applicative but not Monad.
                                      2. Working with only the tools provided by the typeclass, work out what the abstraction allows you to say (e.g., liftA2..liftAN, (<*), (*>), sequence :: Applicative f => [f a] -> f [a], …)
                                    2. 2

                                      A “ghetto hack” to workaround this limitation in the PayPal subscriptions API.

                                      1. 2

                                        I finished the landing page for my first SaaS: https://www.keepmeon.top/ Now I’m polishing the backend and I hope to start marketing soon enough :)

                                        1. 1

                                          I make progress on my search engine. Today and next few days I will work on the crawler.

                                          1. 1

                                            Playing with a number of things, but mostly looking into Standard File and potentially implementing a similar API along with a simple todo app based on this framework.

                                            1. 1

                                              I’ve been playing with Pulumi and getting back into the habit of building small things. So much of my programming lately has been Serious Business high volume processing systems or giant deployments that I’ve lost the fun part of building things.

                                              I’m building a little dictionary web app first. Very basic stuff - mostly to play with new tech and try coming at ideas from new angles.

                                              1. 1

                                                Hopefully, I’ll finally be migrating all the user data over from the current https://paramorphism.serenity.enterprises to the new, staging https://paramorphism.dev.

                                                Then, I can release my ‘2.0’ release and be glad I’m out of beta

                                                1. 1

                                                  Just finished the first part of an article on/against hacker culture. I’m working on dockerizing a scala/sbt app written by developers that disappeared long ago. At work I’m doing mad tricks with pytest.

                                                  1. 2

                                                    Against hacker culture? That sounds like an article I’d love to read. Where’s it published?

                                                    1. 3

                                                      This is a semi-complete draft of the first part: https://write.as/simone-robutti/work-notebooks-against-hackerism-pt

                                                      The requisite reading should be expanded but the content should be fine. If you’re completely lost at some point, let me know because it can help me with the list.

                                                      1. 1

                                                        I find the introduction a little bit confusing, it doesn’t really seem support the main argument on hacker culture (but maybe my current state of tiredness is affecting my clarity of thinking).

                                                        It seems to me that the hackerist perspective finds the use of things like Mastodon by nazis an unfortunate but necessary side-effect; you can’t selectively “liberate” groups of people from Big Tech’s control (which includes censoring) while banning others from using or setting up new systems for their own uses. This is exactly the type of argument that politicians like to use when discussing a ban on encryption (“think of the bad guys using this technology”), and which hackers explicitly reject.

                                                        There’s a certain naivety in this attitude, but it’s inseparable from the ideology, IMO. Funny, it just now occurs to me that this is exactly the type of reasoning that right wing gun activists in the USA use in their “right to bear arms”: freedom at all costs.

                                                        EDIT: Anyway, thank you for posting. This was definitely thought-provoking!

                                                        1. 1

                                                          That’s the point: you cannot selectively empower people with technology released into the commons. Empowerment and change in general should be operated a systemic level, removing the structural problems that generate the fertile ground of poverty, exclusion and spiritual emptiness in which the right wing thrives.