This is the weekly thread to discuss what you have done recently and are working on this week.
Please be descriptive and don’t hesitate to champion your accomplishments or ask for help, advice or other guidance.
This week I have two C64s coming for use in a project. We’re building an alternate reality game set in the Blade Runner universe for 44CON. Attendees can register as blade runners, build their own portable Voight-Kampff machines, and by connecting attendee badges and interviewing other attendees determine whether or not the attendee is a replicant.
Their devices give the blade runners a code they can enter into C64-based Citizen Database terminals to determine whether or not the person interviewed is a human or a replicant. We’ll have a mix of Nexus 6s (who’ll know they’re replicants), and Nexus 7s (who won’t).
It is distinctly possible some replicants will also register as blade runner units.
We’ve got some lovely people in California working on the badge and PVK units. I’m working on the C64 terminal code, so lots of 6510 assembly for me this week.
Epic. Too bad I am on the other side of the planet.
That is incredibly cool!
I sometimes wish I’d bought a C64 rathan than an Atari as my initial 8 bit computer back in 1980.
But then if I had I’d never have fallen in love with Atari LOGO and would have never had the experience of having my mind blown and experiencing the fireworks someone likes me who loves high levels of abstraction can get from a really finely crafted programming environment :)
My 8-bit experience is almost all Z80 and 8086 (which is almost the same) aside from microcontrollers. 6502/10 is a weird beast for me. I’m finding C64 asm architecture incredibly obtuse thanks to the custom chips and kernal functions, but it’s all part of the fun.
Yeah there’s certainly a lot of quirky in the C64 and Atari 8 bit lines! It’s one of the reason I still have a soft spot for them :)
It’s story time!
Exactly a week ago today, my wife and I took our puppy, a black goldendoodle aptly named Vader, to get neutered. The day before his operation (so Sunday, 02 Jun 2019), I took my dog on his “last adventure” before becoming a eunuch. We usually walk every day around five to ten miles. Half way through, it starts to rain. Not much, just a few sprinkles. We continue walking, thinking this was as bad as it was going to get. I couldn’t have been more wrong.
The heavens opened. Things got moist. Drenched from head to toe in less than one second–it looked as if we had dunked ourselves, clothing and all, in a pool of water of the wettest kind. And we still had two miles to go to get back to our car.
I’m happy to report that my dog LOVES the rain! I cannot wait to take him camping and hiking with me. I’m going to train him to run next to me as I bike.
This experience reminded me back when I hiked the Bob Marshall wilderness as an eleven-year-old pipsqueak who weighed only eighty pounds. We hiked fifty miles in five days; ten miles per day. We had to carry everything in our packs. My pack started out forty pounds, but with a devious older brother, ended up being around fifty after he continuously snuck small rocks in to my pack each day. An eighty-pound weakling with a forty-to-fifty pound backpack. Four out of the five days, I always brought up the rear, sobbing and crying the entire way.
It rained four out of the five days straight. We pitched our tents in the rain, slept in the rain, woke in the rain, hiked in the rain. You get the deal. On day five, the rain stopped. What a relief! However, the non-aqueous environment was now filled with mosquitoes as big as your thumb’s last knuckle. The bringer of death travelling from miles. I’m sure that ten boys and three adults not showering for five days brought a stench that would even offend Sam. You’d wipe a death herd of twenty mosquitoes off your arm, and twenty more would immediately replace them.
I broke down. I had enough. My entire body ached. The only way backwards was forwards. So I marched on, faster than even the sixteen-year-olds with their long strides. My dad had a hard time keeping up with me. He and I were the first to the cars. But neither of us had car keys. And the last mile stretch was through desert…
I looked back at that experience as my seven-month-old puppy and I walked and had fun in the rain. The winds picked up to around fifty miles per hour as we got closer to our car. I thoroughly enjoyed this experience at thirty-three years old. Why is it that my seven-month-old puppy enjoyed walking two to three miles in this torrential downpour, yet I hated a similar experience at eleven years old?
At just seven months old, my dog is teaching me more about life than I ever thought possible.
So, I tell those two stories to set the stage for this week:
It’s gonna be a crazy week!
This was a great story, paired with an incredible link. Thank you. Makes me jones to camp again, fall asleep to trees rocking with wind and rain, waves crashing, that sorta thing. Eat bean salad.
This morning I got a TaTaCon in the mail, so the plans are as follows.
Continuing to chillax but also working on some fun things.
At work I gave up on making my own subcommand routing system and have been using cobra for some stuff.
I added a bunch of libraries to within.website’s front page as well as making it the new home for my bot info page.
This week I hope to take a closer look at this Semantic Parsing using Lojban paper and implement a few of the things in it, specifically the algorithm alluded to on page 67 where it simplifies parse trees. I hope to implement a logic engine (kinda like prolog or tersmus I guess) with the results of this work eventually powering my long-term “shitty Alexa clone” project. I might end up using Lua for parts of this.
Computational linguistics is a rabbit hole and a half.
I’ve been working on lasso, which started as an excuse to play with Phoenix LiveView. Starting to feel pretty good about it, might even upgrade to a non-free tier at gigalixir.
lasso looks really cool, I’ve built something similar for my company but it isn’t nearly as cool as yours. I looked into liveview for something else and it looks like a good alternative to just pass JS around for some things.
We’ve been hard at work on SweetieKit (NodeJS on iOS). We have a few demos to show: https://test-sweetiekit-ios-embed.now.sh/
These demos are rough and unpolished, much like me. Some of them require an actual device, like the AR demos. But as a proof of concept, you can already do more than React Native with a fraction of the effort.
The most impressive demos right now are probably MiniApp and Platformer. But you’ll notice one named Full React. That one is interesting and deserves further explanation.
First, it won’t work here. Why? Because when you try to launch it, it loads the app from localhost:8080. Normally on our dev boxes this points to a local Webpack server. When we ship this app live, it’s going to point to a website.
This means (a) yes, you can build apps in React; we already do, (b) you get full hot reloading during development, and (c) when you push your app live, you have the option of the app being served the same way a website is served: via HTTP. Bug fixes are instant, for example, because there’s no need to go through the app store just to ship a bug fix.
The primary concern was whether the App Store itself would be ok with this. Technologies such as Code Push indicate that yes, they’re fine with it as long as you don’t change the primary purpose of your app.
Oh, yeah. The code is open source now: https://github.com/sweetiebird/sweetiekit No README yet.
The code for all of those examples is at https://github.com/sweetiebird/sweetiekit/tree/8d3a434cecac70600667d51e8456bcc01a20bac4/Scripts/examples
What made you start your focus on mobile, where RN and Flutter are well established, rather than desktop, where they’re not? There’s a boatload of people like myself who hate everything written in Electron (except VSCode) and would love to get rapid iteration and InterfaceBuidler-free desktop dev.
Good idea! You’re the first to suggest desktop dev.
We started on mobile because we wanted to be free of the React Native bridge and to get better performance than RN. But you’re right, SweetieKit should support desktop dev too. Most of the bindings are identical on macOS vs iOS, and the rest can be #ifdef’ed easily.
Let me know if you’d be interested in testing out the bindings when we get desktop working.
Hell yeah I would.
Mostly model fine tuning: we made some really nice progress in dependency parsing (>96% in labeled attachment score on our German treebank), but I am still doing some hyper parameter exploration.
Last week I also built Docker images of our sequence labeler with my part-of-speech tagging, topological field labeling, and dependency parsing models for German. I generate the Docker images from Nix derivations for the models using dockertools.buildLayeredImage. The Docker images have one very large layer storing a 3GB word embedding matrix (embeddings + subword embeddings). Luckily, this layer is shared between the images (in order to do so, I had to fix a small bug in buildLayeredImage – the fix is now upstreamed in nixpkgs).
I recently worked a bit on quantization of embedding matrices (optimized product quantization). The 3GB word embeddings are compressed to ~400MB using quantization, while almost completely preserving the vector directions of the original vector space. This week I am planning to retrain the models with the quantized embeddings. If their performance does not decrease (significantly), I will probably re-roll the Docker images with quantized embeddings.
I sent emails this weekend offering more than $7,000 USD in assistance to attend Abstractions this summer. This week, I’m receiving acknowledgements and submitting the next round of applicants to our selection committee. We could use your financial help. Click that link for more info on a previous comment.
At work, I shipped my first Kubernetes-deployed service on Friday and I’m adding some metrics this week so I can know when it’s actually done something!
Attempting a complete replacement of a Node web service with a Python web service. It’s an alert web console that starts to “poll” when an alert comes down the wire. Right now the node service feels and looks as if it was written in a week a few years ago. I am using Flask.
Yesterday I discovered that Udemy has big discounts on a lot of courses, so I’ve just gone through a gRPC Go course and am planning on going through a data structures & algorithms course next.
Going back to working on SDL2 stuff now I’ve migrated from OpenBSD to Void Linux again. Thinking of downscaling and throwing my desktop into the sea, just working on the Chromebook C720 I got a few years ago. Life feels claustrophobic. Life feels claustrophobic.
I didn’t finish the blog post from last week, so I’m requesting an extension for this one.
Oh, and I’ll be at this Snapcraft thing this week. Any of you showing up too?
One of these days I want to rub enough seconds together to make Audacity and Fugio snaps that actually work :)
It hasn’t been too hard so far! Maybe I can help other people build snaps with the stuff I’m learning here.
That is a positively splendid idea!
Perhaps consider focusing on some of the corner cases that trip people up, like audio integration and the like.
There are a bunch of “This is how you build a Snap” tutorials out there already.
Just a thought, glad you had a good experience with Snapcraft!
Update: it wasn’t as easy as I thought. Built a snap, yes, but not one that works. Now I’m just wondering why is this so much more complicated than building debs, waaaah.
Distributed P2P key/value stores, more efficient distributed pub/sub multicast replication for virtual networks, boring corporate accounting junk.
For my employer (GitLab):
We are working towards merging the EE and CE codebases. The two separate products will continue the exist, but development will be done in a single repository. A bit challenge is to port all EE specific database changes to CE. EE not only has additional tables, but it also adds columns and in some cases changes existing ones.
For the past two months I have been working towards making all of this work in CE. Having finished this work last week, this week I have to review it together with my colleagues and respond to any feedback. Due to the large list of changes (somewhere around 15 000 lines have been changed/removed/moved around), we will probably do this via a video call.
Outside of work for my employer:
This week I am working on the lexer for the Inko programming language. I thought it was going to take a while, but porting the Ruby lexer has proven to be easier than anticipated. After that I will start on the parser.
Very cool! You could perhaps post some of the past experiences you’ve had so far with writing the Inko language. Would definitely read it.
I posted a bit about Inko on Reddit in the past. Some of the following might be interesting:
Heck of a write-up in the M:N thread. Thanks for all that info!
I need to implement some kind of document editor, so that my users can type up a Word document type of thing (with some formatting, like a custom letterhead) and then this will be persisted as a template, some values will be swapped out, and rendered as a PDF on the server.
I still haven’t found a good way to do this. I’m thinking about Pandoc on the server, but I don’t know any good candidates yet for the client-side editor.
If anyone has good suggestions, please let me know. Would also be happy to hear of a PDF rendering library for the server, ideally in Haskell since that’s what everything else is written in.
Check out CKEditor for the front end. Should be a good candidate for you. It also has a pretty rich API
Is this question automated ?
Nope, just very well-organised :)
Typycal rationalization. 🤔
if it’s not posted by 09:00 GMT then @caius is busy and another crustacean usually posts the weekly thread ;~)
I only took the defacto flag from someone else because they’re further west than me I think. 🙃
This week I’m working on advanced transitioning with React alongside some voice over stuff that our app has to interact with. It’s fairly challenging to me but I’m excited for it because of that.
I got a wild hair this weekend and started building Notational Velocity as a go cli ui app. So between a new job and that I should be busy enough this week.
ooo yes please on the Notational Velocity app!
This week I’m improving virtual machine for my little programming language written in Go for expression evaluation https://github.com/antonmedv/expr
Not doing anything special. Pretty much out of time at the moment, trying to make some fun projects to remotivate myself programming.
So in work - working on some load test scripts to test new infrastructure that I’ve rewritten that is more central cache based than before. So far we had a very simple in memory cache in our api that basically meant the cache wasn’t centralized, so users on different servers appointed by our load balancers had to sometimes refetch data requested by users from other servers. Due to lack of any DBA support at the moment I am playing around to see if Mongo (yes, it’s a terrible idea) could be decent for low tier caching with TTL indexes to expire them by their expiration time. Basically caching data that doesn’t change before its expiration time, meaning no updates to the cache are required.
Outside of work - trying to play around my small RGB app that syncs all my smart RGB peripherals that have APIs and SDKs. At the moment - my Razer Chroma keyboard, my Yeelight light bulbs, my RAM, MOBO and CPU AIO fan and my logitech mouse. Pretty simple and fun and gives people a good laugh, joy or epileptic attacks - not in this particular order. (when the colors are synced to the playing music). In addition - getting closer to finishing my degree by presenting our final project at our academic hall.
Working on our Android plugin to speed up load times of large portable globe files. Initial results are good, and load time for a 16 gb file went from 11 seconds to ~2 ms. There’s some concurrent work going on with vector layers, so I may need to make some changes based on that work.
Outside of work, I started reading Let Over Lambda, but don’t plan on doing much coding.
Well, to follow on from last week:
I haven’t had any response yet from the author, but I got my PR filed. If anyone has any hints on getting more timely responses on things like this, I’m all ears. (Or if anyone at Percona is reading, please give Max a nudge!)
Still waiting to hear more details about the new client
Got caught up making short-term fixes to the currently-mysql-based app so it can be used in the short term to capture data while we work on the not-mysql data model concurrently.
So this week will be mostly about:
Continuing testing of the previously mentioned payments/purchasing change
Moving more cron-based “jobs” into the qless job system so they can be better distributed as the app expands beyond a single web/app server.
Maybe even a start on a better invoicing/billing solution internally. I opened up the current app on two machines, which both show “synced” (to the server component) but one machine had a discrepancy of -80K in total billed amounts, and showed $7K as “outstanding”, when none are unpaid. Right now my plan on this is to focus on the invoicing/billing part, and rely on a more simplistic existing desktop “time tracker” that can just provide blocks of time in CSV export (rather than trying to integrate heavily as the current app, or e.g. Toggl does). I’ve tried to look for good existing OSS invoicing/billing systems to use, but none have quite ticked all the boxes for me. Any suggestions for good options I might have missed?
Second week at a new job. They make tools for microcontrollers, cool stuff. Things are still going pretty slow. I can’t work indepently yet and notice I have some anxiety to ask stuff, as it’s a pretty quiet open workspace, and the guy who’s assigned to help me doesn’t seem to be very thrilled to help me (of course it’s still my own fault in the end).
Also, I barely slept last night for some reason and was totally exhausted today. Public transport is a total disaster. It’s suppose to take 1 hour, but the way back usually takes about 1.5 to 2 (so bye, bye, free time…).
Plan for tomorrow: Ask things more quickly and thoroughly, so I don’t have to go back and ask a question about the same subject.
Finishing up a side project in Ballerina (the programming language) that I’ll release to the public next week.
More 100 days of code, coming off an evening oncall shift at work, and fighting crushing allergies. Woo.