28
votes
What are you working on this weekend?
This is a thread to discuss the projects you have planned for the weekend.
Previous threads:
This is a thread to discuss the projects you have planned for the weekend.
Previous threads:
I've been working on PR for Tildes that keeps getting more involved (not your fault, Deimos :P), so I'll likely be spending time on that. I want to try out Go modules now that they're almost out. Other than that, I have some ops-ish stuff to do for some long-running apps that aren't needed anymore, so I'll be taking and storing backups of their data and decomming them.
Yup, totally agreed. Deimos just recently called out a great opportunity for a refactor for better future sustainability, so we're moving in the right direction.
I'm working on installing arch. I know it's not a big project for most people here, but last time I tried I had a lot of issues. So far I have a mostly working install, but no usb 2.0 ports work, only 3.0s, and I can't get sound working, but I've learned a lot.
Well that's a new one, USB 2 has never been a problem for me. If anything, USB 3, because I updated my kernel, then plugged something in a USB 3 port, for which drivers weren't loaded and couldn't be loaded because the old (running) kernel's modules weren't on disk anymore. Reboot fixes that though.
And pulseaudio/ALSA is a pain in the butt, it not working is basically the norm.
I've had this issue in Ubuntu too. Basically there's a setting in bios and when it's one way my 2.0s work, and the other way my 3.0s work. Apparently my motherboard hates Linux and other people have had issues as well.
In Ubuntu I would always have to unplug and replug my headset to get any sound.
All my usb ports worked in fedora, but I would have lots of static in my audio when joining a discord call untill I rapidly muted and unmuted my headset five times.
Basically, I need a new mobo.
Edit: it's a
Gigabyte - GA-970A-UD3P
Yeah, weird motherboards suck. Took me well over a year to find out why any Linux would freeze hard when it played sound for more than a second (even with all sound drivers blacklisted, go figure). Turns out that if I disable Intel TurboBoost in setup it's fine. Not sure if it's the CPU or the mobo that's bad, but at least I found a decent workaround.
AsRock H97 Anniversary in my case, it was the cheapest around when I bought it.
I got Arch working on my Macbook last year and haven't looked back. I love it, it really suits my tinkering habits and desire for a minimalist system, and allows me to easily use a TWM without hassling with a larger environment.
I am however scared that I'll struggle to reinstall it if/when that need arises (hopefully not before I buy a new laptop!). I've got all my dotfiles nicely organised into a Git repo, but my personalised installation instructions got forgotten about until it was too late and I'd forgotten all context for even needing it. At least the Arch Wiki is bloody fantastic.
I've been running i3, it's my first time with a tiling wm. I really enjoy it, I'm a vim fanboy and I feel like it follows the same philosophy.
I also like how I can setup whatever interface I want and then swap to a different one later. I know you can change DE's on any distro, but sometimes things won't work quite right since they were made with a specific one in mind.
Likewise. I initially wanted to use Sway, but there were some known issues with input lag so I installed i3 and Sway is always one-line away. It feels very liberating.
An arch build has been on my bucket list for a while now. That sounds like very frustrating fun!
What's the most key thing you've learned so far?
I mostly just have a clearer picture of all the pieces that make up an operating system. Before I had a general idea, but Arch requires you to manualy setup and configure many of them, so I have a clearer picture of how it all fits together.
I've been slowly reading through os01
I've been making a minigame for my discord bot. I've got this ~300 server that loves the idea of factions on the server. They kept trying it when the server was young but it would never work as an idea and the channels would always become inactive and become clutter.
But i think i figured out a candybox-esque implementation of the factions idea so now im just prototyping different styles of it. The twist is, though. To avoid all the clutter I'm just gonna have it all work on a server the bot owns. You join the server and if your character dies, you get kicked from the server.
They can go out gathering berries, fruits, and whatnot in the forest (Just 2x10 of tree emotes that a man emote pacmans across). The loot pops up as reactions for you to pick up, and there'll be animal encounters where you need to scare them off. If you don't, they'll hit you and you'll drop some loot and take some damage.
Each faction gets a stockpile to store their food in, and a farm to plant seedlings they gather in. They'll need to check up on their plots every once in a while to clear pests and leaves that might be giving it trouble. And that'll work the same as the gathering loot, just popping up as reactions for you to tap away.
I've got a lot of other, vague-er, ideas but I think if I aim to implement this much I'll have a decent picture of if its actually fun or not. But I think it'll be quite engaging for my little server for a bit, which is nice for something I'm only doing to stop being rusty at programming.
A modern MUD, cool.
Enjoy Vue! After trying to learn Angular and React, I personally found Vue very approachable and I still use it for most of my frontend projects. The docs are excellent, so I didn't feel any of the pain that some complain about with the library being less used than alternatives, resulting in fewer SO/forum question/answers.
Vue is definitely a wonderful option for those who like to get things working quickly. It's very friendly for iterative feature development, and especially for a gradual migration from an existing project. I was using it for my previous work and it was a godsend.
I love Vue, it’s simple, powerful, and isn’t as massive as React.
Have fun, it feels like magic when you’re getting started! It’s especially awesome when you use a transport (like Webpack) so that you can use .vue template files!
If Friday night counts as the weekend, then my project is building Linux From Scratch. I tried it last weekend and underestimated how much space I would need, so I tarballed what I had (chrootable temporary build with everything up to binutils built but not tested, as I ran out of space halfway through those tests).
Most of it is compiling though so, aside from fixing random issues, I'm also probably gonna be working on learning how to use wireshark for another project I hope to work on over the next month or so.
Fun! My LFS experience was a big ball of waiting, waiting, waiting, and excitement when everything finally comes together. I don't plan on doing it ever again, but I'm glad I did.
That's pretty much my feeling, too. Having gone through roughly half of the process, I'll happily leave it to distro maintainers in the future. However, I'm super glad I'm doing it at least once because I'm picking up a better knowledge of how an OS is put together and a healthy dose of additional respect for those who do this all the time.
Marketing for a side-business I run doing continuing education and painting trim along the stair case I just refinished. And lot's of family time :)
I have a project I want to work on but this is also a good chance to ask some advice from Tildes users. I'm learning Java and quite enjoying it. I learned some JavaFX and wanted to develop an application with it. Is it worth learning FXML or is that useless? Is JavaFX even that useful?
Maybe look at Spring too, in my area there are a metric shitton of Spring/ASP.Net jobs. I know, it's rather heavyweight and not that flashy and new, but for some reason quite in demand.
There is nothing wrong with JavaFX. It's probably the best way to generate GUIs for desktop applications with Java.
That being said, I wouldn't bother with learning FXML. Scene Builder makes it simple enough that you don't really have to know it. But you should probably at least learn the different layout models.
Split-evil-olive-tips is at least partially right; most applications are being built as web apps now. But there are still some programs that work better on a local computer.
If I'm working on anything and not just being a lazy fuck, I'll probably work on a sudoku solver implemention that I started dabbling with recently after being inspired to best my first-year CS student self on the subject (thanks to a small discussion of another user's sudoku-related program on a programming challenge).
So far it's going well enough. I had some difficulty at first trying to debug a problem, but after I got it out of the way I managed to get naked/hidden singles as well as arbitrary-sized naked and hidden subsets. If I get back into it this weekend, I'll likely work on pointing pairs/triples and box line reductions. Later on I may end up working on X-wing and swordfish strategies.
I’ve been reading Elemental Design Patterns, it’s pretty good so far, I’m probably going to finish it this weekend. I’m already fairly knowledgeable with design patterns (Game Programming Patterns is an amazing book), but this book is more of a framework to help you understand design patterns.
I plan to work a bit on Tildes, as well as some other side projects.
Nice. How would you compare notabug to gitea in terms of free software friendliness?
notabug.io is a P2P link aggregator. Maybe you're thinking of notabug.org?
That is absolutely what I'm thinking of, thanks for the correction.
I will always upvote anything to do with Swartz, especially a site devoted to his legacy.
Learning the basics of natural language processing using the NLTK book (https://www.nltk.org/book) to get a head start on my undergrad independent work in the fall!
I built vegvisir.space this weekend, a music theory reference website. It does things like calculate likely chord names for a series of notes. I find it useful for analysing pieces.
It was pretty cool doing music engraving in the browser, even if VexFlow's documentation is sorely lacking.
You can see the source code on GitHub if you're interested.
Ooo this looks fun! About to go work on recording some music, I think I'll message around with this. Thanks for sharing!
Sure thing! Let me know if you think anything's missing and I can add it.
Learning about PWA's and finding a jump off project to use. Also getting acquainted with ~tildes code base, so I can help with the front end.
Don't hate me when I make a change :)
I’m in the same boat. Currently work in web Hosting on the server side and working on learning full stack. Got HTML and CSS feeling pretty friendly but now is the JS venture which I’m enjoying even more. Good luck!
I've been working on an algorithmic trading program for a while now, and we are switching up how we do our databases. We decided that MySQL doesn't have the greatest C/C++ documentation, they keep updating the interface which makes it more confusing, and the methods that connect with the database need work anyway. Plus, our replacement is SQLite, which stores databases as single files you can copy, so we should be able to just copy over complete databases to get new people up and running. I want to see if I can finish up the transition to the SQLite interface this weekend, at least on the code I understand.
If there's anything I've learned about working with 3rd-party software libraries, it's to always wrap that functionality in an object. Better to spend your time updating the internals of the one object than to spend forever pulling your hair out trying to update your entire code base.
I had the misfortune of learning this lesson the hard way. My previous work involved a legacy code base using version 1.3.7 of the MongoDB PHP driver extension. Not the current one, mind you, but the legacy driver. Yeah, it was that old. Anyway, the
MongoId
class was required to generate anObjectId
for database use, and this class was directly called throughout pretty much the entire code base. This wasn't a problem until we decided we wanted to separate our application and database so that they would run on separate servers, which made TLS/SSL an important requirement. This required that we upgrade the driver to at least version 1.6.x of the legacy driver extension.Well, as it turns out, someone decided that passing an empty string into the old
MongoId
constructor was perfectly fine and that a new ID should be generated in such cases, but then someone else came along later and decided it was a terrible idea and decided to make this a failing error. So when I upgraded the driver, guess what ended up happening? That's right. The code base was littered with instances of empty strings being passed in as default behavior. And I had to fix all of them.It was on that day that I finally started to understand and truly relate to this piece of programming gospel.
Even after "fixing" the code base during the upgrade, it turned out that there were still unhandled cases of invalid strings being passed into the constructor that would ordinarily just be ignored and return a valid, new ID, and that we managed to allow it through QA not knowing that those problems existed. We had some pretty unhappy clients when we rolled out the update.
Luckily I was marginally more proactive than my predecessors and replaced every single
MongoId
constructor call with a function call that wrapped the constructor itself when I was fixing everything the first time around, so when I found the offending string in the error logs, all I had to do was add an extra case in the function definition to handle it, so instead of drinking my sorrows away as I dug through the entire code base once again to find out where any of those edge cases might exist, I only suffered a minor headache.And yet I still love programming. I swear I must be a closet masochist.
That article was a really fun read - although all of my work has involved programming as only an ancillary responsibility, I can see enough truth in it that I'm not sure if I should be laughing along or seriously reconsidering my life.
Quick tip: If you type some text like
> your text here
, then you can create quoted text blocks like this:As for the truth in that article, basically just consider it a cautionary tale of what we call "technical debt". You can minimize the amount of technical debt in your projects if you're proactive about these problems. Technical debt itself isn't 100% avoidable--you'll always have some amount of it--but you can at least prevent some problems from becoming nightmares if you know what to look out for.
Unfortunately you don't really learn what to look out for until it smacks you in the face and you end up fully relating to that article. Worse still, even if you learn what to look out for, you'll likely change jobs any number of times over the years and end up maintaining projects written by people who haven't yet learned. If you enjoy programming, then consider it a rite of passage. Whether or not it becomes your life's story is a matter of discipline, both in preventing those problems in your own code and in reducing them in others'.
Already knew that, but forgot to add it in. Thanks for pointing it out.
That article was really entertaining and harshly, brutally relatable. The writing style was a joy to run thru. Thanks
I was introduced to that article during my first year of CS studies. At the time I didn't fully appreciate it, but some parts got a chuckle out of me. Eventually I was re-introduced to it, however, and now and then I end up recalling it because of how relatable it is. I like to recommend it as reading material whenever I think to do so :)
I’m not much for longer articles really at all but the writer had such a modern Hunter S Thompson-esque writing style that the read was awesome. The subject was so pointedly verbose in imagery and accuracy. Found myself revisiting a couple old files that I used as “examples” of code/script to aspire to haha. Thanks again :)
I'm lucky that we don't have a lot of code yet. I think my plan right now is to switch everything over as is so I understand what is actually happening in the different parts of the code. Then, follow the object model you suggested, which is already present in some parts that we borrowed from elsewhere. The thing I'm not sure how to do is our reading from the database. Most of our reading has been so we can process entire tables as quickly as possible, so we query the whole table and then pull out each row with a step() function or equivalent. Maybe I need to give each database object an internal variable that holds the query results.
Anyway, thanks for the tip, and the cautionary tales!
EDIT: I think I am again going to copy the parts I didn't write and make a vector of result structs. That should solve my caching problem just fine.
I've been working on making a torrent client that works 100% in the browser and was going to add it to my web apps project but hit a pretty big roadblock after I realized that browsers have no support for making UDP requests. So for now, it's indefinitely on the shelf. On to the next app..
WebTorrent might be of interest to you. It's the regular torrent protocol, but over WebRTC.
WebTorrent is only able to connect to other WebTorrent peers and not the main BitTorrent network when used in the browser. WT is more designed as a node module for embedded JS apps like Electron, React Native, etc.
I just signed up for a server on Linode and have moved the Discord music bot onto it to get an idea of how Linode works to one day move my web scraping tools to it instead of on my local machine.
I was going to start work on a Discord bot but I quickly realized after 30 minutes that I did not want to work with Discord's API and I wouldn't get enough satisfaction to see it through to completion.. So now, I am back to the drawing board to see where I can begin practicing my Python self-teaching. I spent a day or two scraping Metacritic but stopped moving forward on it since legally, that data belongs to Metacritic and I couldn't release what I worked on without the fear of DMCA.
My roommate just got a heartrate monitor. Apparently a pretty good one - basically the same EGG tech used in hospitals on "the machine that goes beep."
He wants the raw data off it so that he can do some kind of analysis on it. I figured, how hard can it be? Well, luckily, it's a standard Bluetooth Low Energy device that sends its data as a standard GATT heartrate service/characteristic, so in theory this should be very easy.
I started off by trying some nodejs programs to dump data to a CSV file. I immediately ran into problems finding the UUID of the service. The example code for finding it didn't work. The UUID it gave me looked way different than the ones in the documentation. Mine had many, many consecutive zeroes, which doesn't sound much like a real UUID to me, and didn't work. The example code in the "noble" npm ble package gave strange numbers, like 4 digits instead of like 24. I tried using hcitool and gatttool to find the UUID, but that didn't work for various reasons. Reading forums it seems like there's a debate over whether those tools are deprecated or not, so I should be using bluetoothctl instead. That didn't work for another reason, so I tried some android BLE tools to see if I could find the UUID of the service. Those also gave the 4-digit number. Eventually I downloaded some sample code from the manufacturer that seemed to suggest the UUID I got from the first test actually matched what was in the example code, even though that means they're not unique, which I thought was a fundamental property of UUIDs. Oh well.
So, with the example code in hand, and having more confidence in android to have a working bluetooth stack than my debian install, I figured what the hell, let's try to compile this android example code.
And that's where my real problems started. I realize I don't actually know much about java, and far less about android. I've played around, created a hello world app, etc. But I'm at the point where I have no idea how I'm going to get data from this java class they've given as example code.
The class has a few functions, but I can't figure out how I can call them. They seem to be overrides for existing android functions. There's some callback that sets some variable called hrValue, which seems like it would contain the thing I want, but there's not like any return value or anything I can use, and that variable gets flagged by the IDE as unresolvable or something.
I've tried creating a constructor of the class. I can only hope that sets in motion the sequence of events that pairs the device and starts collecting data, but I'm still at the stage where I have no idea if that's the case or if it is, how I can collect said data.
*sigh*... I get the impression this will be a frustrating weekend as I come to grips with my own ineptitude. I might just make him something with an arduino. That'd probably be easier. I have a HM-10 BLE module based on the cc2541 chip, so I could probably just dump the heartrate data to a CSV file on a SD card and have him figure out what he wants to do with the data from there.
Well among other projects, I'm finishing up some utilities to convert mp3 phone calls to text, format them and then archive them in an apache solr instance. Along with that I'm writing a simple web page with flask and jinja to take search queries and output paginated results from solr to have a minimal personal search engine finally. Aside from that I'm finishing up a youtube meta data archival utility as part of a archival project with the archive team. And finally I'm adding some finishing touches on my assembler and my init system. So got a bit of a full weekend. :)
Mostly overdue data processing to add a new vocabulary source to a simple Japanese flashcard generator I threw together at the start of the year. So, not actual work but rather stuff that makes me feel productive while watching twitch streams and youtube documentaries.
I've got another project I've been working on but I got interrupted a few weeks ago now and I'm finding it hard to motivate myself to re-familarize myself with the existing spaghetti and start work again.
I found a crasher on machine learning, so I’m going to give it a go.
After painting of interior rooms of our house...
Working at my "actual" job at Walmart, mostly. In what few hours I have outside of that I am emailing people to notify them I'm no longer planning on going to grad school, finishing some edits on a blog post about the rise of Blue Wave Democrats and a story I was working on about a local street paper, and trying to teach myself basic Java. Whole lotta fun thus far.
Made chocolate-covered bacon and ginger for a friend's going-away party; having returned from the party, it's going to be a day of laundry, virtualizing the latest Hackintosh version, and nursing a hangover.