|
25200
|
Chair Mouse by @Entity404 | Stardance
|
Entity404
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Chair Mouse by @Entity404 | Stardance
|
1793177658.082739
|
1793782458.082739
|
|
23053
|
Judo Championship management by @moki | Stardance
|
moki
|
0
|
4.14
|
0
|
[]
|
[{"post_id": 12624, "ts": "202 [{"post_id": 12624, "ts": "2026-06-20T16:58:29Z", "hours": 4.145, "text": "Updated to 1.8.0, the first version with Windows .exe and macOS .app. There are also plenty of improvements"}]...
|
Title: Judo Championship management by @moki | Sta Title: Judo Championship management by @moki | Stardance
Devlogs:
Updated to 1.8.0, the first version with Windows .exe and macOS .app. There are also plenty of improvements...
|
1793177657.1858172
|
1793782457.1858172
|
|
37418
|
Sovereign Lightning by @nickolas | Stardance
|
nickolas
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Sovereign Lightning by @nickolas | Stardanc Title: Sovereign Lightning by @nickolas | Stardance...
|
1793177656.2808895
|
1793782456.2808895
|
|
20827
|
Mini QBoard by @Kaorii | Stardance
|
Kaorii
|
0
|
0.26
|
0
|
[]
|
[{"post_id": 14368, "ts": "202 [{"post_id": 14368, "ts": "2026-06-23T14:04:13Z", "hours": 0.2617, "text": "Done all the wirings for the PCB. Currently trying to install fusion onto my linux (Zorin - Ubuntu) right now. If anyone knows how to do it please let me know."}]...
|
Title: Mini QBoard by @Kaorii | Stardance
Devlogs Title: Mini QBoard by @Kaorii | Stardance
Devlogs:
Done all the wirings for the PCB. Currently trying to install fusion onto my linux (Zorin - Ubuntu) right now. If anyone knows how to do it please let me know....
|
1793177655.3539188
|
1793782455.3539188
|
|
7970
|
CosmicAI by @deyraya7 | Stardance
|
deyraya7
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: CosmicAI by @deyraya7 | Stardance
|
1793177654.4205675
|
1793782454.4205675
|
|
35867
|
Gaming emulator for group by @Harp | Stardance
|
Harp
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Gaming emulator for group by @Harp | Starda Title: Gaming emulator for group by @Harp | Stardance...
|
1793177653.5363767
|
1793782453.5363767
|
|
40121
|
Untitled by @pardaboyevdiyorbek774 | Stardance
|
pardaboyevdiyorbek774
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @pardaboyevdiyorbek774 | Starda Title: Untitled by @pardaboyevdiyorbek774 | Stardance...
|
1793177652.667561
|
1793782452.667561
|
|
27900
|
Shooter Game by @Josh_C | Stardance
|
Josh_C
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Shooter Game by @Josh_C | Stardance
|
1793177651.8022904
|
1793782451.8022904
|
|
18963
|
Zenith by @Zhiyuan | Stardance
|
Zhiyuan
|
0
|
26.55
|
0
|
[]
|
[{"post_id": 28065, "ts": "202 [{"post_id": 28065, "ts": "2026-07-14T02:48:23Z", "hours": 26.5486, "text": "Devlog #1 This is the first devlog for my space shooter game Zenith. It’s completely coded in Python using Pygame, and it’s basically space invaders, but you are the only invader and have different objectives and 2 axis of motion. (Yes, it’s a top-down game) I have the basics for it down, just have to do a lot of work on other things like sounds, animations, design, etc. I’m hoping to be able to incorporate some lore into this thing. This is the Github link"}]...
|
Title: Zenith by @Zhiyuan | Stardance
Devlogs:
De Title: Zenith by @Zhiyuan | Stardance
Devlogs:
Devlog #1 This is the first devlog for my space shooter game Zenith. It’s completely coded in Python using Pygame, and it’s basically space invaders, but you are the only invader and have different objectives and 2 axis of motion. (Yes, it’s a top-down game) I have the basics for it down, just have to do a lot of work on other things like sounds, animations, design, etc. I’m hoping to be able to incorporate some lore into this thing. This is the Github link...
|
1793177650.8969727
|
1793782450.8969727
|
|
6197
|
Untitled project by @Inosuke | Stardance
|
Inosuke
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Inosuke | Stardance
|
1793177650.0120804
|
1793782450.0120804
|
|
1934
|
My awesome macropad! by @oats | Stardance
|
oats
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @oats | Stardance
|
1793177649.0820963
|
1793782449.0820963
|
|
6070
|
My awesome macropad! by @SiddharthVrm | Stardance
|
SiddharthVrm
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @SiddharthVrm | Sta Title: My awesome macropad! by @SiddharthVrm | Stardance...
|
1793177648.1597595
|
1793782448.1597595
|
|
3992
|
Balsa Plane by @hrishikesh_nadgouda | Stardance
|
hrishikesh_nadgouda
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Balsa Plane by @hrishikesh_nadgouda | Stard Title: Balsa Plane by @hrishikesh_nadgouda | Stardance...
|
1793177647.2677488
|
1793782447.2677488
|
|
15106
|
My very own WebOS by @Hirvita | Stardance
|
Hirvita
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Hirvita | Stardance
|
1793177646.345876
|
1793782446.345876
|
|
26617
|
My awesome macropad! by @zaid1 | Stardance
|
zaid1
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @zaid1 | Stardance
|
1793177645.4508052
|
1793782445.4508052
|
|
12017
|
My awesome macropad! by @Ltcoder | Stardance
|
Ltcoder
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Ltcoder | Stardanc Title: My awesome macropad! by @Ltcoder | Stardance...
|
1793177644.5491612
|
1793782444.5491612
|
|
24031
|
Steady by @darshg321 | Stardance
|
darshg321
|
0
|
15.6
|
0
|
[]
|
[{"post_id": 47177, "ts": "202 [{"post_id": 47177, "ts": "2026-08-14T21:33:17Z", "hours": 1.0897, "text": "since the build in its current form did not work bc the motor/gearing is underpowered, i need to design this part. i found the masses of everything by assigning materials in onshape/manually adding stuff up. then i found the max torque and rpm of the motor, and the 26t mod1 gear i use, this combination is underpowered. need to use a new motor to achieve the acceleration i would need :("}, {"post_id": 18525, "ts": "2026-06-29T18:22:45Z", "hours": 2.27, "text": "done! i finished the BOM, then did wiring. decided on a teensy 4.1 for its very fast loop speeds and because its a cool mcu. found a motor driver and made a wiring diagram in kicad with custom symbols. i will run the encoders through i2c because the spi ones are rather massive. then figured out blender and rendered my assembly, fixing up a few things. vibecoded the minimal firmware, hopefully it works a little."}, {"post_id": 18124, "ts": "2026-06-29T04:13:12Z", "hours": 2.5833, "text": "finished the cad! added stands to the cad that are dimensioned and fastened them, and fixed the rack and pinion relation. found a tof sensor and made a mount for that too. found a good absolute position magnetic encoder. added mounts for it on the two joints. made all the assembly relations work! next up is figuring out the hardware and wiring, and roughly the code."}, {"post_id": 17980, "ts": "2026-06-28T22:51:16Z", "hours": 2.45, "text": "almost done cad! figured out the motion of the arms, which is with a bunch of bearings and dreams. i found out people in the real world dont actually use hex shafts but im going to stay in my fake world as long as possible so i will custom 3d print some hex shafts to work. the assembly works, and the motion all makes sense. whats left is to redo the arm part with shaft collars because those are kinda necessary, create a shorter hex shaft, create a proper stand, fix the rack and pinion relation, and then i can finally think about the electronics."}, {"post_id": 17796, "ts": "2026-06-28T18:44:11Z", "hours": 1.4167, "text": "figuring out the arm attachment. its inspired from the youtube video, but mine will be all 3d prints so i can skip out and simplify a little. the idea is two brackets with a hex shaft between them and bearings. one end has a magnetic encoder to detect hex shaft rotation, and the other end will attach to a 3d print with a hex slot that will rotate. then, in the joint between arms, it will be a bearing and encoder on one end, and another 3d print with a hex slot on the other end."}, {"post_id": 17324, "ts": "2026-06-28T01:37:38Z", "hours": 1.4167, "text": "cad ed the motor, the holder for the motor (press fit), added both to the assembly, and figured out the relations. it now has a rack and pinion relation! need to figure out the rotations thing but thats for a later time. next up is adding the rod which is going to need figuring out encoders, bearings, and the rod itself."}, {"post_id": 16736, "ts": "2026-06-27T06:04:23Z", "hours": 1.0003, "text": "finished the gear rack and gear cad on the assembly. did this by learning how iso standards work to be able to replicate the dimensions in cad (except the circular radius which seemed to be different but idk??). was going to figure out the rack and pinion relation in the assembly but i actually need the motor for that. so next up is cad ing the guide mount and motor, and i guess the rod too."}, {"post_id": 16625, "ts": "2026-06-27T01:22:25Z", "hours": 0.85, "text": "figured out how to use a linear mate with the rail and guide so that part of the assembly is done. made a stand with random dimensions that ill change later. going to start cad a 400mm gear rack (dont know how to do this)"}, {"post_id": 14639, "ts": "2026-06-23T20:27:02Z", "hours": 1.9397, "text": "finished researching and started the cad! looked into types of linear actuators (transmission systems) and found that only two were really viable: racket and pinion system, or timing belt. the con of the timing belt was that cad-ing it would be more difficult and the belt would need to be tensioned, so i decided on racket and pinion, with the con being higher inertia of the carriage. then i looked into rail types, with aluminum extrusions with v-rails vs linear rails. linear rails are a lot more expensive ive found but it fits into budget and are more rigid and more common on designs i see, so i will go with that. after a lot of hunting and fumbling with trying to look at products on misumi, i found that hgr20 rails are the cheapest rigid rails to get. also looked into encoders and decided that my requirements for an encoder would be an absolute magnetic encoder that’s at least 12 bit. i think designing my own custom esc is rather unnecessary for this project, so i’ll stick with finding one probably. found a lot of important resources for this design: https://www.drdflo.com/pages/Guides/How-to-Build-a-3D-Printer/FFF.html https://www.youtube.com/watch?v=7eIE23vJcI4 http://willbeattie.ca/post/engineering/pendulum/"}, {"post_id": 14025, "ts": "2026-06-23T00:22:49Z", "hours": 0.5831, "text": "started the planning! it will be a linear double inverted pendulum controlled by bldc motor. i choose this because its the most common setup in youtube videos, where there is a frictionless linear rail powered by a motor, with encoders on the pivots. i also decided that if i can fit the system and a custom esc in under $180 ill do just that otherwise ill just buy an esc."}]...
|
Title: Steady by @darshg321 | Stardance
Devlogs:
Title: Steady by @darshg321 | Stardance
Devlogs:
started the planning! it will be a linear double inverted pendulum controlled by bldc motor. i choose this because its the most common setup in youtube videos, where there is a frictionless linear rail powered by a motor, with encoders on the pivots. i also decided that if i can fit the system and a custom esc in under $180 ill do just that otherwise ill just buy an esc.
finished researching and started the cad! looked into types of linear actuators (transmission systems) and found that only two were really viable: racket and pinion system, or timing belt. the con of the timing belt was that cad-ing it would be more difficult and the belt would need to be tensioned, so i decided on racket and pinion, with the con being higher inertia of the carriage. then i looked into rail types, with aluminum extrusions with v-rails vs linear rails. linear rails are a lot more expensive ive found but it fits into budget and are more rigid and more common on designs i see, so i will go with that. after a lot of hunting and fumbling with trying to look at products on misumi, i found that hgr20 rails are the cheapest rigid rails to get. also looked into encoders and decided that my requirements for an encoder would be an absolute magnetic encoder that’s at least 12 bit. i think designing my own custom esc is rather unnecessary for this project, so i’ll stick with finding one probably. found a lot of important resources for this design: https://www.drdflo.com/pages/Guides/How-to-Build-a-3D-Printer/FFF.html https://www.youtube.com/watch?v=7eIE23vJcI4 http://willbeattie.ca/post/engineering/pendulum/
figured out how to use a linear mate with the rail and guide so that part of the assembly is done. made a stand with random dimensions that ill change later. going to start cad a 400mm gear rack (dont know how to do this)
finished the gear rack and gear cad on the assembly. did this by learning how iso standards work to be able to replicate the dimensions in cad (except the circular radius which seemed to be different but idk??). was going to figure out the rack and pinion relation in the assembly but i actually need the motor for that. so next up is cad ing the guide mount and motor, and i guess the rod too.
cad ed the motor, the holder for the motor (press fit), added both to the assembly, and figured out the relations. it now has a rack and pinion relation! need to figure out the rotations thing but thats for a later time. next up is adding the rod which is going to need figuring out encoders, bearings, and the rod itself.
figuring out the arm attachment. its inspired from the youtube video, but mine will be all 3d prints so i can skip out and simplify a little. the idea is two brackets with a hex shaft between them and bearings. one end has a magnetic encoder to detect hex shaft rotation, and the other end will attach to a 3d print with a hex slot that will rotate. then, in the joint between arms, it will be a bearing and encoder on one end, and another 3d print with a hex slot on the other end.
almost done cad! figured out the motion of the arms, which is with a bunch of bearings and dreams. i found out people in the real world dont actually use hex shafts but im going to stay in my fake world as long as possible so i will custom 3d print some hex shafts to work. the assembly works, and the motion all makes sense. whats left is to redo the arm part with shaft collars because those are kinda necessary, create a shorter hex shaft, create a proper stand, fix the rack and pinion relation, and then i can finally think about the electronics.
finished the cad! added stands to the cad that are dimensioned and fastened them, and fixed the rack and pinion relation. found a tof sensor and made a mount for that too. found a good absolute position magnetic encoder. added mounts for it on the two joints. made all the assembly relations work! next up is figuring out the hardware and wiring, and roughly the code.
done! i finished the BOM, then did wiring. decided on a teensy 4.1 for its very fast loop speeds and because its a cool mcu. found a motor driver and made a wiring diagram in kicad with custom symbols. i will run the encoders through i2c because the spi ones are rather massive. then figured out blender and rendered my assembly, fixing up a few things. vibecoded the minimal firmware, hopefully it works a little.
since the build in its current form did not work bc the motor/gearing is underpowered, i need to design this part. i found the masses of everything by assigning materials in onshape/manually adding stuff up. then i found the max torque and rpm of the motor, and the 26t mod1 gear i use, this combination is underpowered. need to use a new motor to achieve the acceleration i would need :(...
|
1793177643.3279335
|
1793782443.3279335
|
|
10610
|
MINI SFX machine by @WillSpice | Stardance
|
WillSpice
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: MINI SFX machine by @WillSpice | Stardance
|
1793177642.4037805
|
1793782442.4037805
|
|
32514
|
Mar rover V1.0 by @Mattew | Stardance
|
Mattew
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Mar rover V1.0 by @Mattew | Stardance
|
1793177641.521181
|
1793782441.521181
|
|
28927
|
IOMessage by @shi | Stardance
|
shi
|
0
|
39.48
|
0
|
[]
|
[{"post_id": 40924, "ts": "202 [{"post_id": 40924, "ts": "2026-08-04T19:18:49Z", "hours": 14.2408, "text": "Hi! finally finished making TUI menus for my app. I had some difficulties with menu sizing and accounting for borders and style while making it but when I finally figured out that issue it was pretty straightforward to implement everything. What was interesting about all of this In this part of development I’m really understanding the difficulties of creating things we take for granted, like menus or just simple boxes of text, implementing menu scrolling and other types of utilities to make them usable was a pain for sure, but it was also interesting to see my changes in code affecting something as immediate as graphics (well TUI graphics but still graphics non the less). This is the first time i programmed something that could be seen and used and it’s honestly pretty sweet. The stars of the show All this time I spent working on this was to implement mainly three functions: create_menu_handle, draw_menu and menu_driver, those three functions regulate how the menu looks, feels, and takes input: menu_handle_t* create_menu_handle(WINDOW* parent, const char* menu_label, point_t pos, int max_height, int pad_y, int pad_x, int n_options, const char** option_labels, void (**opt_funcs)(void*), void **opt_args, chtype menu_attrs, chtype menu_color, chtype highlight_attrs, chtype highlight_color, int inside_shading, enum MenuBorderTypes border, int mouse_enabled); this is a beefy boy (look at all those parameters) but it’s pretty configurable and allows some real customization of your menu! It calculates available option space from the max height, and implements scrolling automatically int draw_menu(menu_handle_t* menu); Pretty much self explanatory, draws the menu and its borders. int menu_driver(menu_handle_t* menu, int input_type, MEVENT* mouse); Really cool function that given an input handles option selection/scrolling mechanics and highlighting of the selected option."}, {"post_id": 39015, "ts": "2026-08-01T17:50:12Z", "hours": 15.3456, "text": "Hi there guys! These are a lot of hours to log i know, but I swear I have a reason!! The main problem that took so long When I started to work on the client I came accross the problem of making a stable and working UI for it , and because I’m one of the cool kids developing in C (this is me -> 🤓) I obviously had to go for a TUI ( Text User Interface ) for street cred. Nerdy stuff about library searching and linking There i came accross the first real problem of the journey, wich library do I use (because no way im gonna code all of that myself)?? While searching i came accross a second problem: NOBODY USES A TUI , there are 0, and i mean 0 multi-platform libraries that work for linux and windows because of console shenanigans. I spent 2 hours + another 2 hours of changing the build pipe COMPLETELY (goodbye MSVC, hi there gcc and ninja) to find something. At last i went with NCurses for linux and PDCurses for windows, and the coolest thing is that they have ( almost ) the same exact API, so i just need to link them conditionally. Now out of the way with nerdy stuff and hi there cool TUI graphical stuff. Hi there graphical elements!! Now NCurses and PDCurses are mainly low level console libraries, in short they allow you to manipulate the console and cursor however you want (with some utility stuff). but we need a good old UI, so we need textboxes , menus , input fields , etc. while some of these exist for NCurses as addons, they dont for PDCurses, so i went with the bob the builder approach. I’m spending this much time writing the UI elements, for now the only thing I can show for my work is a textbox element that with a couple of lines of code can display text with: padding, colors and eventual attributes ( bold , italic , etc…). other than that i made some changes to utils and added a really cool split_lines function that makes splitting on newline in C pretty easy. Here’s a little preview of the textboxes! the code: init_pair(1, COLOR_RED, COLOR_BLUE); textbox_t* my_txt = create_textbox(stdscr, POINT(0,0), PAD(1, 1, 1, 1), str, A_BOLD, COLOR_PAIR(1)); if(!my_txt) { error(\"hell naw\"); return 1; } point_t centered = get_centered_pos(stdscr, my_txt->h, my_txt->w); move_text_box(my_txt, centered); if(draw_textbox(my_txt) == -1) error(\"ERR\"); getch(); destroy_textbox(my_txt); the result:"}, {"post_id": 26648, "ts": "2026-07-11T16:13:39Z", "hours": 4.3872, "text": "Hi! Finished working on an interface beetwen the database and my server code, it was really too messy earlier. So i made an interface that manages caching and retrieving the data, the only downside is that the data it returns (pointers to the cache) is completely immutable outside of the interface, so for every update you necessarily need to call update_user or update_channel or appropriate caching functions, other than that it should work pretty well and i made my previous example 1000 times simpler (in the photos I’ll provide a before and after). How i made it So while coding this new interface I encountered some problems, first of all I’m gonna remind myself to never use databases in C, i really hate all that boilerplate :d. I decided to make the interface pretty specific on users and channels, if i ever need to add anything to my database it’s gonna be a pain but I dont plan to do that (outside of files but those will come later), I also decided to use arena’s to manage memory in the cached user and channel struct because it’s cleaner cleanup. For last I was going to make a check_credentials function for log in but i decided to do that later as I need to implement hashing and md5 and that will be another dependancy. I think the next feature I’m gonna work on is probably making a decent client, if I continue the server I’m gonna have a functioning server without a client to serve. Later guys!"}, {"post_id": 21175, "ts": "2026-07-02T23:56:24Z", "hours": 5.5089, "text": "Hi there! This is my first devlog ever, so bear with me. It’s gonna be kinda long since this is a WIP project and I want to walk you through the codebase. This first devlog covers the pre-existing code and what I did in the ~5 hours I logged. Overview IOMessage is a centralized messaging CLI platform built entirely in C. Server and client are both meant to be multi-platform. The app will implement: channels (groups where users can share messages) moderation capabilities (kick, mute, …) file sharing (maybe other things in the future) Architecture CommunicationManager: this module handles I/O for each connected client ServerManager: this module handles requests and allows client communication ThreadManager / NetworkManager: modules that handles OS abstraction Thread communication: CommunicationManager and ServerManager talk through shared queues. Each CommunicationManager pushes incoming requests to a shared request queue, ServerManager pops them, processes them, and pushes responses back to that specific client’s response queue in a consumer-producer model. What I’m working on Done: CommunicationManager, ThreadManager, NetworkManager. WIP: ServerManager mainly the channel and messaging feature so i can ship a demo. Right now I need auth and channels working. I was facing the problem of storing user data past program exit. I considered files/folders, but linking data got messy fast, example: channels need to reference actual users by id so the server can identify the allowed users, and once channels and members live in separate files with changing data, it turns into a mess. So I choose SQLite: i choose because it stores data in just a file (minimum complexity) and as solid C API. Spent a good two hours designing the schema (it was the first time I used a DB lol). Then the hard part: seed the DB with some info, get the server to open it, print the channels, exit and read a looooot of docs. then after I started coding, i read the documentation bit by bit and slowly became horrified… THE BOILERPLATE WAS ABSOLUTELY GRUELING : 5 function calls per query, each one can fail, so for each function there are 5 lines of code Handling the error and freeing memory. I tried wrapper functions, I really tried, but it didn’t help much. Still need to find a way to cut the boilerplate down. I’m a bit of a perfectionist and it’s killing me. But after a lot of fighting, reading, and debugging, it finally works and displays the seeded info about channels.(the code I’m showing is basically 70% boilerplate for sqlite, btw the i swear the application can talk to clients, handle bad client behaviour and serialize the protocol, i have it turned off for testing so the app quits immediately after reading data from the database tho)."}]...
|
Title: IOMessage by @shi | Stardance
Devlogs:
Hi Title: IOMessage by @shi | Stardance
Devlogs:
Hi there! This is my first devlog ever, so bear with me. It’s gonna be kinda long since this is a WIP project and I want to walk you through the codebase. This first devlog covers the pre-existing code and what I did in the ~5 hours I logged. Overview IOMessage is a centralized messaging CLI platform built entirely in C. Server and client are both meant to be multi-platform. The app will implement: channels (groups where users can share messages) moderation capabilities (kick, mute, …) file sharing (maybe other things in the future) Architecture CommunicationManager: this module handles I/O for each connected client ServerManager: this module handles requests and allows client communication ThreadManager / NetworkManager: modules that handles OS abstraction Thread communication: CommunicationManager and ServerManager talk through shared queues. Each CommunicationManager pushes incoming requests to a shared request queue, ServerManager pops them, processes them, and pushes responses back to that specific client’s response queue in a consumer-producer model. What I’m working on Done: CommunicationManager, ThreadManager, NetworkManager. WIP: ServerManager mainly the channel and messaging feature so i can ship a demo. Right now I need auth and channels working. I was facing the problem of storing user data past program exit. I considered files/folders, but linking data got messy fast, example: channels need to reference actual users by id so the server can identify the allowed users, and once channels and members live in separate files with changing data, it turns into a mess. So I choose SQLite: i choose because it stores data in just a file (minimum complexity) and as solid C API. Spent a good two hours designing the schema (it was the first time I used a DB lol). Then the hard part: seed the DB with some info, get the server to open it, print the channels, exit and read a looooot of docs. then after I started coding, i read the documentation bit by bit and slowly became horrified… THE BOILERPLATE WAS ABSOLUTELY GRUELING : 5 function calls per query, each one can fail, so for each function there are 5 lines of code Handling the error and freeing memory. I tried wrapper functions, I really tried, but it didn’t help much. Still need to find a way to cut the boilerplate down. I’m a bit of a perfectionist and it’s killing me. But after a lot of fighting, reading, and debugging, it finally works and displays the seeded info about channels.(the code I’m showing is basically 70% boilerplate for sqlite, btw the i swear the application can talk to clients, handle bad client behaviour and serialize the protocol, i have it turned off for testing so the app quits immediately after reading data from the database tho).
Hi! Finished working on an interface beetwen the database and my server code, it was really too messy earlier. So i made an interface that manages caching and retrieving the data, the only downside is that the data it returns (pointers to the cache) is completely immutable outside of the interface, so for every update you necessarily need to call update_user or update_channel or appropriate caching functions, other than that it should work pretty well and i made my previous example 1000 times simpler (in the photos I’ll provide a before and after). How i made it So while coding this new interface I encountered some problems, first of all I’m gonna remind myself to never use databases in C, i really hate all that boilerplate :d. I decided to make the interface pretty specific on users and channels, if i ever need to add anything to my database it’s gonna be a pain but I dont plan to do that (outside of files but those will come later), I also decided to use arena’s to manage memory in the cached user and channel struct because it’s cleaner cleanup. For last I was going to make a check_credentials function for log in but i decided to do that later as I need to implement hashing and md5 and that will be another dependancy. I think the next feature I’m gonna work on is probably making a decent client, if I continue the server I’m gonna have a functioning server without a client to serve. Later guys!
Hi there guys! These are a lot of hours to log i know, but I swear I have a reason!! The main problem that took so long When I started to work on the client I came accross the problem of making a stable and working UI for it , and because I’m one of the cool kids developing in C (this is me -> 🤓) I obviously had to go for a TUI ( Text User Interface ) for street cred. Nerdy stuff about library searching and linking There i came accross the first real problem of the journey, wich library do I use (because no way im gonna code all of that myself)?? While searching i came accross a second problem: NOBODY USES A TUI , there are 0, and i mean 0 multi-platform libraries that work for linux and windows because of console shenanigans. I spent 2 hours + another 2 hours of changing the build pipe COMPLETELY (goodbye MSVC, hi there gcc and ninja) to find something. At last i went with NCurses for linux and PDCurses for windows, and the coolest thing is that they have ( almost ) the same exact API, so i just need to link them conditionally. Now out of the way with nerdy stuff and hi there cool TUI graphical stuff. Hi there graphical elements!! Now NCurses and PDCurses are mainly low level console libraries, in short they allow you to manipulate the console and cursor however you want (with some utility stuff). but we need a good old UI, so we need textboxes , menus , input fields , etc. while some of these exist for NCurses as addons, they dont for PDCurses, so i went with the bob the builder approach. I’m spending this much time writing the UI elements, for now the only thing I can show for my work is a textbox element that with a couple of lines of code can display text with: padding, colors and eventual attributes ( bold , italic , etc…). other than that i made some changes to utils and added a really cool split_lines function that makes splitting on newline in C pretty easy. Here’s a little preview of the textboxes! the code: init_pair(1, COLOR_RED, COLOR_BLUE); textbox_t* my_txt = create_textbox(stdscr, POINT(0,0), PAD(1, 1, 1, 1), str, A_BOLD, COLOR_PAIR(1)); if(!my_txt) { error("hell naw"); return 1; } point_t centered = get_centered_pos(stdscr, my_txt->h, my_txt->w); move_text_box(my_txt, centered); if(draw_textbox(my_txt) == -1) error("ERR"); getch(); destroy_textbox(my_txt); the result:
Hi! finally finished making TUI menus for my app. I had some difficulties with menu sizing and accounting for borders and style while making it but when I finally figured out that issue it was pretty straightforward to implement everything. What was interesting about all of this In this part of development I’m really understanding the difficulties of creating things we take for granted, like menus or just simple boxes of text, implementing menu scrolling and other types of utilities to make them usable was a pain for sure, but it was also interesting to see my changes in code affecting something as immediate as graphics (well TUI graphics but still graphics non the less). This is the first time i programmed something that could be seen and used and it’s honestly pretty sweet. The stars of the show All this time I spent working on this was to implement mainly three functions: create_menu_handle, draw_menu and menu_driver, those three functions regulate how the menu looks, feels, and takes input: menu_handle_t* create_menu_handle(WINDOW* parent, const char* menu_label, point_t pos, int max_height, int pad_y, int pad_x, int n_options, const char** option_labels, void (**opt_funcs)(void*), void **opt_args, chtype menu_attrs, chtype menu_color, chtype highlight_attrs, chtype highlight_color, int inside_shading, enum MenuBorderTypes border, int mouse_enabled); this is a beefy boy (look at all those parameters) but it’s pretty configurable and allows some real customization of your menu! It calculates available option space from the max height, and implements scrolling automatically int draw_menu(menu_handle_t* menu); Pretty much self explanatory, draws the menu and its borders. int menu_driver(menu_handle_t* menu, int input_type, MEVENT* mouse); Really cool function that given an input handles option selection/scrolling mechanics and highlighting of the selected option....
|
1793177640.29188
|
1793782440.29188
|
|
39891
|
My first slack bot! by @WolfFoxHare | Stardance
|
WolfFoxHare
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @WolfFoxHare | Stard Title: My first slack bot! by @WolfFoxHare | Stardance...
|
1793177638.1800454
|
1793782438.1800454
|
|
39964
|
Untitled by @Nicholas34 | Stardance
|
Nicholas34
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Nicholas34 | Stardance
|
1793177637.2609274
|
1793782437.2609274
|
|
31033
|
Untitled by @divyakishor0 | Stardance
|
divyakishor0
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @divyakishor0 | Stardance
|
1793177636.4019635
|
1793782436.4019635
|
|
23853
|
"Forvis" Iron man Helmet by @advit791 | St "Forvis" Iron man Helmet by @advit791 | Stardance...
|
advit791
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: "Forvis" Iron man Helmet by @advit7 Title: "Forvis" Iron man Helmet by @advit791 | Stardance...
|
1793177635.519172
|
1793782435.519172
|
|
27675
|
Untitled by @TADSTech | Stardance
|
TADSTech
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @TADSTech | Stardance
|
1793177634.6502762
|
1793782434.6502762
|
|
5175
|
Untitled by @melz | Stardance
|
melz
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @melz | Stardance
|
1793177633.7398655
|
1793782433.7398655
|
|
13241
|
personal website by @vorixx9850 | Stardance
|
vorixx9850
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: personal website by @vorixx9850 | Stardance
|
1793177632.8801975
|
1793782432.8801975
|
|
14845
|
My awesome macropad! by @Juwon | Stardance
|
Juwon
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Juwon | Stardance
|
1793177631.9152408
|
1793782431.9152408
|
|
4711
|
2d Portal-Fangame by @GriboX | Stardance
|
GriboX
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 2d Portal-Fangame by @GriboX | Stardance
|
1793177630.4363997
|
1793782430.4363997
|
|
20226
|
Untitled, game by @braelolbit10 | Stardance
|
braelolbit10
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled, game by @braelolbit10 | Stardance
|
1793177628.892319
|
1793782428.892319
|
|
15530
|
My very own WebOS by @challadhruvreddy | Stardance
|
challadhruvreddy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @challadhruvreddy | St Title: My very own WebOS by @challadhruvreddy | Stardance...
|
1793177626.6257603
|
1793782426.6257603
|
|
5672
|
Board games by @spainpreston | Stardance
|
spainpreston
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Board games by @spainpreston | Stardance
|
1793177625.7554579
|
1793782425.7554579
|
|
8951
|
Domain Purchase by @lidorb98 | Stardance
|
lidorb98
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Domain Purchase by @lidorb98 | Stardance
|
1793177624.8477209
|
1793782424.8477209
|
|
114
|
114 by @Rupnil | Stardance
|
Rupnil
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 114 by @Rupnil | Stardance
|
1793177623.938934
|
1793782423.938934
|
|
13367
|
Nova Trap (working title) by @Matt_of_Tau_Ceti | S Nova Trap (working title) by @Matt_of_Tau_Ceti | Stardance...
|
Matt_of_Tau_Ceti
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Nova Trap (working title) by @Matt_of_Tau_C Title: Nova Trap (working title) by @Matt_of_Tau_Ceti | Stardance...
|
1793177623.0367641
|
1793782423.0367641
|
|
28302
|
SL CREATIVES by @rkhack | Stardance
|
rkhack
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: SL CREATIVES by @rkhack | Stardance
|
1793177622.119621
|
1793782422.119621
|
|
8486
|
My awesome macropad! by @kevin2505 | Stardance
|
kevin2505
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @kevin2505 | Starda Title: My awesome macropad! by @kevin2505 | Stardance...
|
1793177621.2531223
|
1793782421.2531223
|
|
13148
|
Open source custom UAV by @alexanderkotcharian | S Open source custom UAV by @alexanderkotcharian | Stardance...
|
alexanderkotcharian
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Open source custom UAV by @alexanderkotchar Title: Open source custom UAV by @alexanderkotcharian | Stardance...
|
1793177620.3826666
|
1793782420.3826666
|
|
32444
|
Untitled by @thanuflora | Stardance
|
thanuflora
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @thanuflora | Stardance
|
1793177619.496904
|
1793782419.496904
|
|
31557
|
MP3 player by @axolotl683 | Stardance
|
axolotl683
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: MP3 player by @axolotl683 | Stardance
|
1793177618.5478723
|
1793782418.5478723
|
|
30474
|
WarioWare Game by @brlin888 | Stardance
|
brlin888
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @brlin888 | Stardance
|
1793177617.5863872
|
1793782417.5863872
|
|
25525
|
Yazza's own personal macropad! by @yazza1024 | Yazza's own personal macropad! by @yazza1024 | Stardance...
|
yazza1024
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Yazza's own personal macropad! by @yazz Title: Yazza's own personal macropad! by @yazza1024 | Stardance...
|
1793177616.6464002
|
1793782416.6464002
|
|
39944
|
Mini Keypad by @LeSON | Stardance
|
LeSON
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Mini Keypad by @LeSON | Stardance
|
1793177615.708619
|
1793782415.708619
|
|
26324
|
algo by @Diwash | Stardance
|
Diwash
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: algo by @Diwash | Stardance
|
1793177614.792501
|
1793782414.792501
|
|
35668
|
My own site! by @NorthStar | Stardance
|
NorthStar
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @NorthStar | Stardance
|
1793177613.8522422
|
1793782413.8522422
|
|
16367
|
My first slack bot! by @Liel | Stardance
|
Liel
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Liel | Stardance
|
1793177612.9229617
|
1793782412.9229617
|
|
24943
|
Aula M15 Pad (Concept) by @dhrruva | Stardance
|
dhrruva
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Aula M15 Pad (Concept) by @dhrruva | Starda Title: Aula M15 Pad (Concept) by @dhrruva | Stardance...
|
1793177612.0514982
|
1793782412.0514982
|
|
2643
|
Dropper Drone by @Matthieu | Stardance
|
Matthieu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Dropper Drone by @Matthieu | Stardance
|
1793177611.1954796
|
1793782411.1954796
|
|
39045
|
Small C++ game with networking by @rivergiancola | Small C++ game with networking by @rivergiancola | Stardance...
|
rivergiancola
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Small C++ game with networking by @rivergia Title: Small C++ game with networking by @rivergiancola | Stardance...
|
1793177610.3415976
|
1793782410.3415976
|
|
7119
|
My first slack bot! by @Luci | Stardance
|
Luci
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Luci | Stardance
|
1793177609.4094877
|
1793782409.4094877
|