-
25 votes
-
Weathering software winter (2022)
26 votes -
I tried to build a WhatsApp bot. Meta banned me before it left the drawing board.
20 votes -
I created my own audio player, here is my experiences with the process
Overview If you want to see just the final result, check out my TiMaSoMo showcase post. This post does minimal amount of showcase of the final project, although it does include some pictures. If...
Overview
If you want to see just the final result, check out my TiMaSoMo showcase post. This post does minimal amount of showcase of the final project, although it does include some pictures. If you want to see a showcase of the software, the original author has made a great video showcasing it that is worth checking out: YouTube videoBlogpost for those who prefer reading. Instead, this post is more a discussion of my experience developing a device.
Initial Planning
The goal of this project was to create a dedicated audio player, to separate that capability from my phone. The main source of audio will be streaming Spotify, not local files. Although unfamiliar with them, I felt that a Raspberry Pi was a good baseline device. For audio, I had an old USB DAC/amp that I wanted to repurpose. Using this DAC/amp would allow for some of my harder to drive headphones to work, as well as just getting cleaner audio. Then, I was planning on just using an eInk touchscreen. The rationale for eInk was so that it would feel different than my phone, and just feel like it was intended for music instead of scrolling. The logic was if I put a regular LCD screen on, it would not differ from a smartphone, and therefore I might as well just connect my DAC to my phone and use that. For software, the plan was to just use either Android or some lightweight linux distro. The initial plan for batteries was to just use rechargeable AA batteries, so that I can easily swap them out. One major reason I wanted to go with the DIY route was for repairability, especially with batteries. If I got an existing Digital Audio Player (DAP) on the market, I knew that the Li-Ion battery would eventually go bad, and existing devices on the market may not be easily repairable.
Hardware Sourcing
My hardware approach was to buy one component at a time. That way, if I ran into an issue with the feasibility of the approach, I could pivot without having wasted money on all the components ahead of time. This approach did slow down development as I was frequently waiting on hardware, but was more fiscally responsible. In January I got a Raspberry Pi 3a+, and played around briefly with some different operating systems. The next part that was needed was to source the screen.
Initial Plan for eInk
The original goal was to try and get a touch eInk screen, roughly 5” for a reasonable price. I spent a few weeks trying different places to try and find one, but could not find one. Since I could not find one I started thinking about pivoting to an LCD screen. With this pivot, I started defining goals of the project more. If I were to just use an LCD touchscreen potentially running Android, what makes it different from using my phone? I spent a few weeks trying to define the goals of the project, and was not able to come up with satisfactory answers if I went with an LCD screen.
Clickwheel design pivot
In the process of trying to figure out my approach, I stumbled across this YouTube video. I felt like this would be a good starting point. It seemed to solve the issue of it not being another Android device, which was my main problem I was trying to solve. However there were a few parts of the implementation that I did not like:
- It relied on using old used Apple hardware. This works for now, but over time it would become harder to source replacement parts.
- I did not already have the hardware, so I would have to buy an old used iPod and strip it for parts
- It was a bluetooth implementation, so I would have to figure out how to fit my DAC into an old iPod, which seemed unrealistic
- The battery while replaceable, was a non-descript battery so getting a new replacement with the same form factor would be harder.
Luckily, for the clickwheel, someone on the weekly programming project on Tildes pointed out this new clickwheel. Since that seemed to be a reasonable approach I ordered one and also got a small LCD screen from Amazon. Unfortunately, the screen used up all the GPIO pins and had non-existent documentation or drivers. I was unable to get the screen to work, so I returned it and ordered a Waveshare 2” LCD. I was intentional on finding one that could be a regular display without using too many GPIO pins. The Waveshare screen had significantly better documentation, and with a bit of work I was able to get it working. With that solved, I started wiring in the clickwheel, and creating basic code to detect basic inputs, which I then used to modify the original code for the Spotify player to handle my clickwheel (see below for comments on code modification). Once I had the screen and clickwheel, I could also develop the software while waiting for parts. Image showing the early iteration of the device
The last main part I had to solve was batteries. Another helpful comment on the weekly programming thread on Tildes told me about 14500 and 18650 batteries. I sourced a 14500 charger and some 14500 cells from Amazon. I had some issues with the first charger I got, and since they were shipping directly from China, it meant the second one would take another few weeks. Picture of using the 14500 battery. The cells I sourced said they were 2500 mAh. I tried one out, and had playtime of about 30mins, not enough to even listen to a full album on a single charge, which is inadequate. I used a portable battery bank rated at 10000 mAh to set a benchmark, and that lasted significantly longer (I was probably around 50% after about five hours or so of playback). This indicated that the 14500 cell was falsely claiming capacity, which is apparently a common issue on Amazon. It also seemed like 14500s rarely have capacity above 700mAh, so I realized that a 14500 would not work. So I decided to upgrade to an 18650 cell, which I could source the actual battery locally from a reputable vendor, with a capacity of 3400mAh. Since I realized that small hobbyist electronics like this on Amazon were shipping directly from China, I started ordering from AliExpress for the charger, which saved me some money for the same part (and even picked up a spare just in case). Picture of me using the 18650 to listen to music on my balcony during the summer. Since I did not need the extra power of the RPi 3a+, and the battery was taking more space, I ordered a RPi Zero 2w+. I also ordered some micro USB ends to solder to to make internal cabling, as well as a USB-C port to use for charging. By May I had all the hardware parts I needed, and all that was left for hardware was to design a case to 3D print, which is detailed below.
Software Development
The first thing I tested was installing Raspotify which this project used, and set it up with my DAC. Since that worked, I started to program the clickwheel using GPIO pins. I had never used a RPi before, but found some easy tutorials on programming the buttons of my clickwheel in Python. Once the buttons were programmed, I had to figure out the rotary encoder, but was able to find a Github repo that had a working Python code to process the inputs. I was able to add that, and created a Python class that would handle all the inputs of my clickwheel. Once that was coded, I just had to incorporate that into the code for the Spotify player frontend. I forked the repo, and was greeted with at the top of the main file this comment:
# This code is a mess. # This is me learning Python as I go. # This is not how I write code for my day job.”This was not an encouraging comment to read, as at the start my Python skills were relatively low. I was able to quickly find where the inputs from the clickwheel were being handled. The original code had clickwheel inputs being handled in a separate C program and then communicating to the Spotify frontend via sockets. Since my clickwheel code was handled via a Python class I was able to simplify it, and not require sockets to be used. With that working, I just had to set up all the required steps to get the project working. Unfortunately, the documentation for deployment was extremely lacking. I was able to find a Github issues post that provided instructions so was able to get it all set up. I was able to get to this phase by the end of March.
Once I had it all working, I could start on expanding the software to fit my use case as well as start working on any bugs I encounter. I felt a good starting point in handling this was to start addressing the issue of “this code is a mess.” Cleaning up the code would be a good way to gain familiarity with the code as well as make it easier for me to address any bugs or future enhancements. I started work on creating a class diagram, but it was really tedious to do it from scratch with such a large codebase, so I deserted that plan quickly. I am thinking of creating some sequence diagrams from some features I implemented recently, which would help in general documentation to refer back to in the future. I did find some classes that would make more sense in separate files, so did do that. I also started adding in new features as well. The first was to implement a “hold switch” which turns off the screen and disables the clickwheel input. Before, the screen would be on a 60sec timer to turn off, but I felt that sometimes I would want to have the screen stay on (like if I am just sitting in a chair listening to music). This was a relatively easy feature to implement. One bug that kept on appearing is that the screen would frequently freeze on me, normally about 60sec into a song, but would update once the next song started playing. I spent several weeks tracking down this issue, thinking it was software related, as the screen used to timeout after 60sec. I also thought it might be a configuration of my OS, so did some debugging there as well. Finally, I plugged in my main desktop monitor, and realized when the small 2” screen would freeze, my desktop monitor would not. This lead me down to investigating the driver for my screen. I found an issue with someone having similar issues with the original driver that Waveshare forked. I then realized that there was a setting that the screen would stop updating if less than 5% of the pixels were changing. Once I changed that in the config file, the screen freezing issue stopped. I was able to solve this major issue by late July.
The last major feature I have implemented is to create the ability to add new WiFi networks from the app itself. This was a needed feature if I wanted to bring it anywhere outside of my home, since 3rd Party Spotify apps cannot download music. Luckily, there was a search feature, which gave me a baseline for text input using the clickwheel. I was able to create a basic page that prompts for the input of a SSID and the password, and then adds that to /etc/wpa_supplicant/wpa_supplicant.conf and then restarts the wireless interface. I added this feature into the overall settings page I added, which also included other useful dev options, like doing a git pull for me to avoid having to SSH into the Rpi to do it. The settings page features were a part of my project for TiMaSoMo.
Case Design
I started work on the case in late May roughly. The plan was that I was going to design the case and have my friend who owns a 3D printer print out my design for me. To continue with the project goal of repairability, I wanted to avoid using glue for the case. Instead, I wanted to use heated inserts to hold all the components. I had not used any 3D modeling or CAD software before, so it was a learning experience. I settled on using FreeCAD, which I was able to learn the basics of what I needed relatively quickly. I started with a basic case design for a prototype, to help plan out how I would lay things out. On my computer screen, having the device be 40mm thick sounded fine, but after receiving the prototype I realized I would need to be aggressive in thinning out the design. However, this protoype in early June was very helpful in getting a better understanding of how I needed to design it. Case prototype pictures.
The first iteration I was able to get down to 27mm, which was a significant improvement. I received this iteration in mid July. However, there were parts that did not fit properly. Most of the mounting holes were not aligned properly. However, the bigger issue was that at 27mm the device would not be thick enough to hold the DAC and screen stacked on top of each other. This iteration still had the DAC keep the original metal housing, so that I could easily remove it and use it as originally intended if I did not want to continue using my audio player. First case iteration pictures.
The second iteration I decided to remove the metal housing of the DAC, which freed up a lot of internal space, with the main limiting factor of thickness being the 18650 battery. So I kept the thickness around 27mm, but had more internal space. Removing the metal case of the DAC was relatively straightforward, except figuring out how to secure it to the print. Luckily, there were two roughly 2.5mm holes in the PCB, that I was able to use to secure it. I also started to do a more complex design, since I was getting more experienced with FreeCAD. I also moved the RPi to the top of the case, so that the two parts of the case could easily separate, with only micro USB connectors being used between the parts in the top and bottom part of the case(Picture of third iteration showing this feature). For anyone who has had to repair electronics that did not fully separate due to ribbon cables (laptops are the worst for this it seems), you understand the quality of life improvement of having the two parts easily separate. I got this iteration of the case in early September, and found a few issues of parts conflicting. However, with the use of a dremel, I was able to modify it to get it to roughly fit (although janky in some parts).In this picture you can see the power switch, which I had to modify to sit outside the case. I wanted to fully assemble it, so that I could start using it and figure out where it needs to improve. The biggest issue aside from conflicting parts was that the top of the case was bulging, so I wanted to add another point of connection to prevent it. This bulge was partly caused by the screen cutout causing a weak point in the top of the case. Second case iteration pictures.
The third iteration was part of my TiMaSoMo project. This was a relatively simple minor tweaks, as well as fix some minor pain points of the previous iteration. I reinforced the top significantly to prevent bending, as well as add a fifth point to secure it. I also added a recess to make accessing the switches for power and hold easier to use (although I think I messed up the hold switch one). Overall, this print worked well, and there is currently no plans for a fourth iteration. Fourth iteration pictures.
Here is all four cases compared side by side
What I learned
The first lesson I had to learn was how to define project goals. Not being able to source an eInk screen had caused me to pivot, and in doing so I had to reflect on what truly mattered for my project. I knew that DAPs existed, so why build my own rather than buy one? Most DAPs on the market seem to be Android devices where they removed the phone functionality and added in quality audio components. Part of a dedicated audio device was to not have my phone be the everything device that they are, but a second Android device with an LCD screen and better audio components is not the solution. Luckily, I encountered the clickwheel based approach, which did solve that issue (and probably better than an eInk would have). Also, I wanted the device to be easily repairable. Li-Ion batteries go bad, which was another major concern for me with the current options of DAPs. Repairability was something that mattered to me, but I had to embrace what that meant for the form factor. If I went with a non-descript Li-Ion pillow battery, I could probably significantly reduce the size. Understanding that I wanted to avoid just being another Android device and have repairability and replaceable parts as the defining features were useful to keep in mind. That approach did result in compromise though, primarily in physical size at the end.
The second big thing I learned was just the process of sourcing parts for a project like this. The closest project to this that I have done in the past is create a DIY cable tester. That simply just involved some switches, resistors, LEDs, and some AA batteries that I could all source locally. So having to buy more complex electronics where the documentation mattered was a learning curve for me. Luckily, early on I was ordering from Amazon, where returns were relatively easy. The problem with Amazon though was false advertising for batteries and some components were shipping directly from China. So, switching to AliExpress saved me money without adding any additional in shipping.
Learning 3D modelling and getting stuff 3D printed was also a huge learning curve for me. I am glad that I got a very rough prototype printed early on in the process. In designing the prototype, I just was not concerned about saving space. However, once the prototype was printed and off my screen and into my hand, I realized how aggressive I needed to be in compacting things. The other thing with using FreeCAD is I learned too late in the process about part hierarchies, and I still do not fully understand them. Not using part hierarchies properly led me to have to do a redesign on each iteration, as moving mounting holes over a few mm would shift every part added after it. Luckily, my designs were relatively simple, but having hierarchies handled properly would have helped me iterate quicker. On top of getting prototypes in hand quickly, using imperfect prints and just adjusting the parts that didn’t work with with a dremel was useful. If I didn’t do that with the second iteration, I would not have dealt with the issue that the top of the case would bend out over time. Spending time using the imperfect device helped me figure out the issues to make the next iteration better.
Future Goals
The first goal I will add in future expansion is to add better documentation and create a better development workflow. Right now, my process includes pushing any changes I do (luckily I am using Github branches now), then pulling the updated repo and starting it on my Pi. However, I never test if it compiles properly before pushing, so I end up sometimes doing five pushes in ten minutes, playing whackamole with compilation errors. Being able to run a dev version on my desktop with keyboard emulation for inputs would be beneficial.
Another big issue that I want to solve is that I need to clean up the audio on lower resistance headphones like my IEMs. There appears to be some electrical noise, that only sensitive devices like IEMs detect. The solution I am currently considering is to add in a capacitor on the voltage rail between the Pi and the DAC to hopefully get cleaner power.
Another issue is that I currently have no indicator of battery life. Since it is an 18650 Li-Ion battery, I should be able to just detect the gradual decrease in voltage, and calculate battery percentage. However, GPIO pins appear to be unable to do that natively, so I may have to add in a small controller board to do it. I have not looked too much into this.
There are a few UI/UX decisions that do not match my preferred way of listening to music. So over time I plan on gradually tweaking the UI/UX to match what I want it to be. A prime example of this would be that when I select an artist, I want it to present a list of their albums, instead of playing their most popular songs.
I want to be able to use Spotify Lossless, since that has rolled out near the end of this project. Unfortunately, it seems that currently it will not be supported. Seems like Librespot (which is the basis for Raspotify) does not currently have a solution that does not involve working around Spotify’s DRM.
Conclusion
Overall, I am really glad I took on this project. It took a long time for me to get it to a finished state. However, the experience has been really fun, and I have learned some new skills. Also, having a dedicated device that all it does is stream Spotify is really nice. I always found myself whenever I was listening to music ending up scrolling on my phone for a bit more stimulation, and then realized I have not been paying attention for the past couple of songs. Having a device where all I do is just listen to music and leave my phone behind has been nice. Also, modifying the code to fit my preferred use case has been nice. There are points where I realize I do not like how something is laid out, but then I have agency to change the layout. Here are some pictures of the final device.
If you want to build the device yourself, I will warn you that it has some rough edges. Also, the DAC/amp is discontinued, so sourcing that to fit inside the case would be tricky. However, my Github repo has all hardware listed, the code needed, and easy to follow software deployment instructions.
30 votes -
What broke the quarterback pipeline?
16 votes -
Development of the Paradox Interactive-owned IP Cities: Skylines will shift from Colossal Order to Iceflake Studios
18 votes -
Google backpedals on new Android developer registration rules
45 votes -
Need pixel art software recommendations (it can be free or paid)
I've been learning Godot for the past few months and I'm happy to report that it's been going well. Little by little, things are clicking into place. (I hugely, highly, undoubtedly, recommend...
I've been learning Godot for the past few months and I'm happy to report that it's been going well. Little by little, things are clicking into place. (I hugely, highly, undoubtedly, recommend GDQuest courses)
I'm ready to start working on a small project to test out my skills, and it's going to be a top down pixel art game.
But to be completely honest, I suck at drawing. I suck at drawing as in, I can make stick figures at best. So forget any fancy software for drawing in general like gimp or photoshop.
What I'm looking for is a software meant for pixel art and that makes my life easy, in both drawing and animating. Bonus points if it allows me to trace (I'm not planning to copy/steal art, but I do need reference points, at least for now)
Do you guys have any recommendations? It can be free or paid. I don't mind paying as long the software is worth it.
15 votes -
Google will require developer verification for Android apps outside the Play Store
83 votes -
How should open source software projects handle AI‑generated code?
8 votes -
Square Enix says it wants generative AI to be doing 70% of its QA and debugging by the end of 2027
17 votes -
What we talk about when we talk about sideloading
63 votes -
The best Steve Yegge posts (2015)
7 votes -
New World is dead: Amazon ends new content updates following massive layoffs, says 'servers will be live through 2026'
32 votes -
LOADMORE - Creative mobile websites
8 votes -
Return of the Obra Dinn - narrated modeling mega timelapse
24 votes -
Microsoft pushes Xbox studios to hit higher profit margins
25 votes -
Remedy Entertainment CEO Tero Virtala steps down after nine years – developer appoints co-founder and chief product officer Markus Mäki as interim CEO
15 votes -
Grand Theft Auto made him a legend. His latest game was a disaster.
34 votes -
Most games want you to save the world. The stop-motion adventure Out of Words wants you to hold someone's hand.
14 votes -
Introducing Beads: A coding agent memory system
23 votes -
Remedy Entertainment issues profit warning after FBC: Firebreak's big overhaul fails to turn things around
29 votes -
Silksong should’ve came with a guide from developers
Warning: this post may contain spoilers
This post is full of spoilers of Silksong
I’m a married, working person so the time I can allocate for gaming is not much. I’ve been enjoying silksong very much and tried a spoiler free gameplay, having played hollow knight before and knowing how much team cherry loves secrets.
I’ve followed the normal gameflow and beat the boss. After that I wanted to keep playing and following leads I had before the ending.
Investigating missing parts, the boss runback in bilewater destroyed my nerves so I looked up if there was a bench closer to the fight - there had to be one since this was outright ridiculous. Turns out there’s a secret bench that’s so hidden I don’t know if anyone other than the most determined secret hunters could find. The boss was also as hard as it gets, felt kinda unfair.
Looking up bilewater opened a can of worms for me. I kept seeing spoilers and continued looking up info. After a day I found out there are 3 other endings, a whole another act, and bunch of unlockables.
I love when a game doesn’t handhold you and forces you to enjoy it. I get it. But I think this is too much, too obscure. It requires meticulous backtracking and there’s never an indication when you’re capable of taking on a new quest. Finding new items, you don’t know who should it be given to. You don’t even know if there are still areas you haven’t been to.
I guess team cherry wanted the player to have a play log each session and we should’ve kept logs of weird stuff we’ve seen along the way so that we remember to go back. Well, as fun as that might’ve been, I did not keep a log and forgot a lot of early game stuff.
I believe they should’ve prepared a guide themselves, spoiler free, which could include some info the game does not offer so the player can keep unlocking new stuff and would’ve known generally what to expect. Existence of act 3 honestly shocked me, and I don’t think I’m someone who doesn’t pay attention.
In their quest to be anti-handholdy gaming, I believe team cherry went too far. Onerous backtracking and note taking shouldn’t be the solution.
I loved the game and it’s easily GotY for me. I’ll keep playing it even after seeing spoilers but I can feel half the fun being gone now that I’ll just be chasing objectives I’ve seen online. If I hadn’t looked stuff up, I’d have switched to bananza or hades 2.
11 votes -
Ten years after it was founded, Metal: Hellsinger studio The Outsiders is closing – fallen victim to the Funcom layoffs announced last week
6 votes -
Google details Android developer certification requirement, and it’s as bad as we feared
76 votes -
How we're designing Audacity for the future
41 votes -
Developer Starbreeze Studios announced Thursday it had canceled its co-op Dungeons & Dragons game – re-focusing on its Payday franchise
13 votes -
Funcom, the Oslo-based studio behind the recently released Dune: Awakening, has announced it will be laying off staff
17 votes -
Avalanche Studios' UK office is set to be closed as part of a workforce restructure – will also impact their Swedish studios in Stockholm and Malmö
11 votes -
Show Tildes - Gametje V2
Hi All, It's been coincidentally EXACTLY 1 year since my previous post about Gametje. I've been busy creating some new games and re-designing all the main pages with the help of a UI/UX designer....
Hi All,
It's been coincidentally EXACTLY 1 year since my previous post about Gametje. I've been busy creating some new games and re-designing all the main pages with the help of a UI/UX designer. I have posted a few updates in the weeklyWhat programming/technical projects have you been working on?threads but I thought this milestone deserved its own post. I published the new site earlier this week and also migrated to a new backend server. Here's a refresher of what it is for those that may have missed my previous post a year ago. I also recently started working on it full-time last month after not really working on it much from January-June this year. You can read more in my recent blog post.What is it?
It's a set of online games that can be played in person with a central screen (like a TV) or remotely via video chat. It's also available directly in Discord as an embedded activity. It is playable in 9 languages and doesn’t require any downloads. Most games revolve around creativity in some form. None of the games require fast reflexes and can be played by just about anyone.
Where can I try it?
https://gametje.com and directly on Discord
You can use the "quick play" option to launch directly into the game as a guest.
What's different from last year?
There are 2 new games (
Sync ThinkandHide & Peek) and the main pages have been redesigned. I also implemented a game room concept which allows you to bounce between games without having to recreate it each time. I also integrated with Discord, which means you can play directly in their interface and also use Discord as an Identity Provider when logging in. The games themselves need a bit more polish (especially the two new ones) but overall they should work.What am I looking for?
I'm trying to gather some feedback about the games and the overall concept. Are the games fun? Is this something you'd try with your family? What could be improved? Is the site clear about what you can/should do? Should I add some gameplay videos to give you a quicker feel for the games?
I'm also open to game ideas, I have a few in the backlog already but need to focus more on the business side at the moment. Any advice on the games/marketing etc would be highly appreciated.
Side note: I'm probably going to rename the whole site soon since the name Gametje doesn't exactly roll off the tongue and has caused some debate with Dutch speakers. The branding for the new name isn't quite ready. I am considering calling it
GameBuffetas my avatars are all food related and its more of a "all you can play" offering for any games added to the platform.Thanks for reading.
10 votes -
Godot 4.5, making dreams accessible
23 votes -
Would someone be willing to help me with a Godot project? (4.4.1)
14 votes -
Silksong’s real final boss: The translator who broke his NDA and wrote like a dead poet
57 votes -
Over 50% of the job cuts in video games are in California
28 votes -
The evidence that AI is destroying jobs for young people just got stronger
35 votes -
DreamSDK release 4 now available for Dreamcast development on Windows
9 votes -
Brat
17 votes -
I had an idea for a Crusader Kings, but about rich families in Victoria-Modern Era. What could go wrong?
I had an idea for a game some weeks ago, just as the title says. It would be something like Crusader Kings, it's all about dinasties and roleplay, but set in more modern eras, from the beginning...
I had an idea for a game some weeks ago, just as the title says. It would be something like Crusader Kings, it's all about dinasties and roleplay, but set in more modern eras, from the beginning of the industrial revolution until today, or maybe the future, we'll see. And instead of kingdoms, it's all about businesses. It's all about owning global company empires. Being a kind hearted local chain owner, or a sociopathic cutthroat in the 1% that owns the world. Up to you.
And this idea is still stuck with me, and I wanted to get back into game development, so I might as well just try it for fun and see what happens.
I picked Godot, 1) because it's open source, 2) it's going to be fun to see how much it developed in the last decade and 3) it's free, and especially 4) I don't want to use commercial engines and risk being affected by something similar to the runtime fee fiasco
I still have to finish some tutorials and make some simple games to get a grip on the engine and see how everything works, but as a data analyst I already have programming foundations and, I think, this project is monumental for someone like me, but I also think it's doable.
I have a very rough idea of how the code will work for the AI. It will incorporate "ticks" like CK, each tick being a day, and some events fire weekly or monthly, where based on the stats and traits, each individual character will calculate how likely they are to accept or reject that event. This event can be about buying shares, accepting proposal marriages, going on a trip, etc.
My main worry here is if GDScript is good enough to handle "intensive" algorithms. If not, I can always use C#, or C++ if I really have to, and adapt the problematic algorithms.
Another is what would be the best database manager for this, but I'll cross that bridge when I get there.
As for the world, initially I was thinking about being about the real one, but I realized that I may not want to deal with... Well, accuracies. For example, I don't want these businesses to exist in a vacuum, I'm going to try to make a system that interacts both the world's political events and these businesses. I want to create events, like, a country invades another, which creates demands for weapons, and if you own a weapon factory, good news for you! If you own businesses in the invaded country, well, sucks to be you.
So, I want to do those kind of events, but without needing to worry about things like "Portugal would never invade Japan. What is your AI thinking!?" or "Why is Greece an industrial power house?". If a big studio like Paradox has trouble fine tuning their hundreds of nations in their games, me by my alonesome certainly will not be able to do it.
So I'm thinking just making a fictional world, populated by several countries and empires but not as many as the real world. This way I can fine tune it to my liking and without worrying about being accurate with the real world. This is another challenge by itself, with its own cliffs, but it's more doable.
And so far, that's it. After I'm done with the learning phase, I'm going to start a proper planning phase, lay down some key mechanics and develop a prototype.
I wrote this post as a way to put my thoughts down, double check with myself if the idea is good.
But also, to check with the tildes community if you have any inputs. It can be anything: ideas, suggestions, warnings, problems that you know that I'll face, etc. I'll appreciate anything that you can give me
22 votes -
Remedy Entertainment will be blowing out thirty candles on the birthday cake in August – celebrating thirty years of independently making video games
15 votes -
Tim Rogers - The best games I never made (2018)
6 votes -
Optimizing our way through Metroid
10 votes -
Kenshi - Meet the makers
12 votes -
The enterprise experience
33 votes -
How do you manage separate development environments on your computer?
Hello Tildes! There's an open-source app I would like to work on and contribute code to, but it uses a toolchain that I'm not terribly familiar with (Deno), and I'm not a huge fan of letting tools...
Hello Tildes!
There's an open-source app I would like to work on and contribute code to, but it uses a toolchain that I'm not terribly familiar with (Deno), and I'm not a huge fan of letting tools like this have full access to my system and files.
Do any of you use a system to containerize different development environments for software development? I could definitely use a standard Docker/Podman container to run the app, but I'm not aware of a good system where you can edit a program's source in an IDE, make changes, build the app, open a local port, and save your new code, all within a sandboxed environment.
If anyone uses a system like this or something related, I would love to hear about it and share ideas.
14 votes -
If you're a programmer, are you ever going to believe an AGI is actually 'I'?
First, I am emphatically not talking about LLMs. Just a shower thought kinda question. For most people, the primary issue is anthropomorphizing too much. But I think programmers see it...
First, I am emphatically not talking about LLMs.
Just a shower thought kinda question. For most people, the primary issue is anthropomorphizing too much. But I think programmers see it differently.
Let's say someone comes up with something that seems to walk and talk like a self-aware, sentient, AGI duck. It has a "memories" db, it learns and adapts, it seems to understand cause and effect, actions and consequences, truth v falsehood, it passes Turing tests like they're tic-tac-toe, it recognizes itself in the mirror, yada.
But as a developer, you can "look behind the curtain" and see exactly how it works. (For argument's sake, let's say it's a FOSS duck, so you can actually look at the source code.)
Does it ever "feel" like a real, sentient being? Does it ever pass your litmus test?
For me, I think the answer is, "yes, eventually" ... but only looong after other people are having relationships with them, getting married, voting for them, etc.
31 votes -
Remedy Entertainment is "unsatisfied" with the sales of its live-service shooter FBC: Firebreak, as the game underperformed on Steam
19 votes -
Sony has seen enough: Three years after acquiring Bungie, Sony says the days of independence are 'getting lighter' and its future 'is to become part of PlayStation Studios'
28 votes -
Is AI actually useful for anyone here?
Sometimes I feel like there's something wrong with how I use technology, or I'm just incredibly biased and predisposed to cynicism or something, so I wanted to get a pulse on how everyone else...
Sometimes I feel like there's something wrong with how I use technology, or I'm just incredibly biased and predisposed to cynicism or something, so I wanted to get a pulse on how everyone else feels about AI, specifically LLMs, and how you use them in your professional and personal lives.
I've been messing with LLMs since GPT-3, being initially very impressed by the technology, to that view sort of evolving to a more nuanced one. I think they're very good at a specific thing and not great at anything else.
I feel like, increasingly, I'm becoming a rarity among tech people, especially executives. I run cybersecurity for a medium sized agency, and my boss is the CIO. Any time I, or any of her direct reports write a proposal, a policy, a report, or basically anything meant to distribute to a wide audience, they insist on us "running it through copilot", which to them, just means pasting the whole document into copilot chat, then taking the output.
It inevitably takes a document I worked hard on to balance tone, information, brevity, professional voice, and technical details and turns it into a bland, wordy mess. It's unusable crap that I then have to spend more time with to have it sound normal. My boss almost always comes up with "suggestions" or "ideas" that are very obviously just copy pasted answers from copilot chat too.
I see people online that talk about how LLMs have made them so much faster at development, but every time I've ever used it that field, it can toss together a quick prototype for something I likely could have googled, but there will frequently be little hidden bugs in the code. If I try to use the LLM to fix those bugs, it inevitably just makes it worse. Every time I've tried to use AI in a coding workflow, I spend less time thinking about the control flow of the software, and more time chasing down weird esoteric bugs. Overall it's never saved me any time at all.
I've used them as a quick web search, and while they do save me from having to trawl through a lot of the hellhole that is the modern internet, with blogspam, ads, and nonsense people write online, a lot of times, it will just hallucinate answers. I've noticed it's decent at providing me results when results exist, but if results don't exist, or I'm asking something that doesn't make sense, it falls flat on its face because it will just make things up in order to sound convincing and helpful.
I do see some niches where the stuff has been useful. Summarizing large swathes of documents, where the accuracy of that summary doesn't matter much is a little useful. Like if I were tasked to look through 300 documents and decide which ones were most relevant to a project, and I only had an hour to do it, I think that would be a task it would do well with. I can't review or even skim 300 documents in an hour, and even though an LLM would very likely be wrong about a lot of it, at least that's something.
The thing is, I don't frequently run into tasks where accuracy doesn't matter. I doubt most people do. Usually when someone asks for an answer to something, or you want to actually do something useful, the hidden assumption is that the output will be correct, and LLMs are just really bad at being correct.
The thing is, the internet is full of AI evangelists that talk about their AI stack made up of SaaS products I've never even heard of chained together. They talk about how insanely productive it's made them and how it's like being superhuman and without it they'd be left behind.
I'm 99% sure that most of this is influencer clickbait capitalizing on FOMO to keep the shared delusion of LLM's usefulness going, usually because they have stake in the game. They either run an AI startup, are involved in a company that profits off of AI being popular, they're an influencer that makes AI content, or they just have Nvidia in their stock portfolio like so much of us do.
Is there anyone out there that feels this technology is actually super useful that doesn't fall into one of those categories?
If so, let me know. Also, let me know what I'm doing wrong. Am I just a Luddite? A crotchety old man? Out of touch? I'm fine if I am, I just want to know once and for all.
80 votes -
No, AI is not making engineers 10x as productive: curing your AI 10x engineer imposter syndrome
27 votes -
The web could be so much more beautiful
Back in high school when I was writing essays, my teacher always demanded to use justified text, because simple left aligned or right aligned text looked ugly. Even back then as a totally...
Back in high school when I was writing essays, my teacher always demanded to use justified text, because simple left aligned or right aligned text looked ugly. Even back then as a totally rebellious teenager, I agreed with her. Print has used it for hundreds of years, why shouldn't we?
The web has always resisted this development because it was difficult. Yes, the css property
text-align: justifyexists, but browser were always missing the crucial functionality of hyphenating words. That led to very ugly justified texts and so called "rivers" of whitespace because the spaces got so large. Begrudingly, I got used to it.I was surprised to learn that all major browsers support the new
hyphenscss property since late 2023. This one adds exactly that crucial functionality. I was stunned and immediately tried it out and oh look, the web is so much more beautiful now.You can try out yourself here on Tildes! Just right click a comment, click "Inspect" and then when the dev console pops up, add
text-align: justify; hyphens: auto:to
p, which stands for the paragraph html tag and in which all text posts are rendered on Tildes.It looks so much better! But I do wonder why it hasn't spread around more in the web. Am I the only one? Am I nitpicky? I feel like the improvement is stark and very good for functionally no extra work. I even installed a browser extension which augments a website's css so I could automatically do it on most websites.
31 votes