|
63691
|
alarm by @shinde | Stardance
|
shinde
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: alarm by @shinde | Stardance
|
1793663608.2171524
|
1794268408.2171524
|
|
72610
|
peanut by @shinde | Stardance
|
shinde
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: peanut by @shinde | Stardance
|
1793540841.84649
|
1794145641.84649
|
|
31351
|
My awesome macropad! by @shincha_9767 | Stardance
|
shincha_9767
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @shincha_9767 | Sta Title: My awesome macropad! by @shincha_9767 | Stardance...
|
1793354179.478535
|
1793958979.478535
|
|
48408
|
lol by @shimijakrishnan | Stardance
|
shimijakrishnan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: lol by @shimijakrishnan | Stardance
|
1793969632.639652
|
1794574432.639652
|
|
9313
|
My first slack bot! by @shilpasmi31 | Stardance
|
shilpasmi31
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @shilpasmi31 | Stard Title: My first slack bot! by @shilpasmi31 | Stardance...
|
1793379041.0672593
|
1793983841.0672593
|
|
68530
|
My awesome macropad! by @shiloh | Stardance
|
shiloh
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @shiloh | Stardance
|
1793742808.902747
|
1794347608.902747
|
|
68531
|
slack bot by @shiloh | Stardance
|
shiloh
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: slack bot by @shiloh | Stardance
|
1793742811.5228324
|
1794347611.5228324
|
|
36589
|
Untitled project by @shilarani028 | Stardance
|
shilarani028
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @shilarani028 | Stardan Title: Untitled project by @shilarani028 | Stardance...
|
1793541010.6718085
|
1794145810.6718085
|
|
37260
|
My own site! by @shiki | Stardance
|
shiki
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @shiki | Stardance
|
1793361331.9058535
|
1793966131.9058535
|
|
72671
|
search-it by @shikhar-jadav | Stardance
|
shikhar-jadav
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: search-it by @shikhar-jadav | Stardance
|
1793562447.7859623
|
1794167247.7859623
|
|
16526
|
Frictionless by @shikha_parijaat | Stardance
|
shikha_parijaat
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @shikha_parijaat | Stardanc Title: Frictionless by @shikha_parijaat | Stardance...
|
1793969414.2468626
|
1794574214.2468626
|
|
65160
|
My own site! by @shikap666 | Stardance
|
shikap666
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @shikap666 | Stardance
|
1793696125.174082
|
1794300925.174082
|
|
65495
|
Project 1 by @shikap666 | Stardance
|
shikap666
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Project 1 by @shikap666 | Stardance
|
1793702871.6453562
|
1794307671.6453562
|
|
64193
|
BLARE by @shijinraj | Stardance
|
shijinraj
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: BLARE by @shijinraj | Stardance
|
1793670617.974761
|
1794275417.974761
|
|
17321
|
My very own WebOS by @shijia | Stardance
|
shijia
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @shijia | Stardance
|
1793364580.0395398
|
1793969380.0395398
|
|
39447
|
interactive portfolio! by @shijia | Stardance
|
shijia
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: interactive portfolio! by @shijia | Stardan Title: interactive portfolio! by @shijia | Stardance...
|
1793508789.3726792
|
1794113589.3726792
|
|
53204
|
3am cafe by @shijia | Stardance
|
shijia
|
0
|
0.93
|
0
|
[]
|
[{"post_id": 52877, "ts": "202 [{"post_id": 52877, "ts": "2026-08-23T07:59:06Z", "hours": 0.9278, "text": "finished the intro + mini_game page! first time using godot and it was hard to navigate through all the controls at first.. did take quite a bit of time to get it to work! will work on debugging the “not-working” scripts soon!"}]...
|
Title: 3am cafe by @shijia | Stardance
Devlogs:
f Title: 3am cafe by @shijia | Stardance
Devlogs:
finished the intro + mini_game page! first time using godot and it was hard to navigate through all the controls at first.. did take quite a bit of time to get it to work! will work on debugging the “not-working” scripts soon!...
|
1793476270.943341
|
1794081070.943341
|
|
53206
|
funlexia! by @shijia | Stardance
|
shijia
|
0
|
9.02
|
0
|
[]
|
[{"post_id": 52880, "ts": "202 [{"post_id": 52880, "ts": "2026-08-23T08:04:05Z", "hours": 9.0153, "text": "blending system + tutorial finished! working on minigames to test user’s blending next!"}]...
|
Title: funlexia! by @shijia | Stardance
Devlogs:
Title: funlexia! by @shijia | Stardance
Devlogs:
blending system + tutorial finished! working on minigames to test user’s blending next!...
|
1793476281.097629
|
1794081081.097629
|
|
53255
|
What Cat Am I? by @shijia | Stardance
|
shijia
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: What Cat Am I? by @shijia | Stardance
|
1793479962.4449923
|
1794084762.4449923
|
|
38859
|
personal website ! by @shiji | Stardance
|
shiji
|
0
|
0.49
|
0
|
[]
|
[{"post_id": 34366, "ts": "202 [{"post_id": 34366, "ts": "2026-07-25T00:42:58Z", "hours": 0.4858, "text": "I’ve ported over a neocities page I made a year ago that remains unfinished to this day. hopefully it won’t remain so 4 much longer c:"}]...
|
Title: personal website ! by @shiji | Stardance
D Title: personal website ! by @shiji | Stardance
Devlogs:
I’ve ported over a neocities page I made a year ago that remains unfinished to this day. hopefully it won’t remain so 4 much longer c:...
|
1793523340.1639752
|
1794128140.1639752
|
|
39636
|
My own site! by @shiinn | Stardance
|
shiinn
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @shiinn | Stardance
|
1793991069.5955615
|
1794595869.5955615
|
|
7707
|
Untitled project by @shiguang_bp | Stardance
|
shiguang_bp
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @shiguang_bp | Stardanc Title: Untitled project by @shiguang_bp | Stardance...
|
1793893722.7215652
|
1794498522.7215652
|
|
65125
|
My awesome macropad! by @shifin481 | Stardance
|
shifin481
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @shifin481 | Starda Title: My awesome macropad! by @shifin481 | Stardance...
|
1793696042.5563073
|
1794300842.5563073
|
|
36619
|
My first slack bot! by @shifaluck | Stardance
|
shifaluck
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @shifaluck | Stardan Title: My first slack bot! by @shifaluck | Stardance...
|
1794030480.7895017
|
1794635280.7895017
|
|
22186
|
Untitled project by @shifa_ | Stardance
|
shifa_
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @shifa_ | Stardance
|
1793638142.1493034
|
1794242942.1493034
|
|
130
|
Frictionless by @shiekhuu | Stardance
|
shiekhuu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @shiekhuu | Stardance
|
1793346746.7420301
|
1793951546.7420301
|
|
46784
|
My very own WebOS by @shibin | Stardance
|
shibin
|
1
|
1.54
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-20T14:01:57Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built snOS, a dark glassmorphic browser personal web OS-draggable floating windows, desktop app icons, a live clock, window depth layer-ing, and a handful of functionally in-built apps: About snOS: A window with system info. Notes App Pro-a very simple notepad that saves your notes to local storage, so they don’t vanish when you refresh. Weather Forecast App: Create a live weather widget using the Open-Meteo API that allows you to search any city in the world and see live temperature, humidity, wind speeds, with dynamic condition icons. Web Browser: An inbuilt mini browser frame so you can search and browse using live web pages directly inside the desktop view. I’m a total beginner coder, so creating this without any starting point was a huge learning challenge for me. Making the window drag function feel fluid without messing up the layout was difficult. Integrating to the live weather API, processing the search box inputs, and debugging weird code errors took countless iterations. With all the times I was stuck I spent hours watching coding video tutorials, reading docs, and getting AI helpers like ChatGPT and Gemini to explain everything to me and fix my code until I finally understood how it all works. Honestly I’m just glad I didn’t give up! As a zero experience beginner seeing a blank screen turn into a functioning desktop with apps and movable window boxes was a really rewarding experience. It took patience but learning how JS, API fetching, and CSS combine to make something tangible was totally worth it. You don’t need a username or password! Open any of the desktop icons (About, Notes, Weather, or Web Browser) and use an app. Click and drag the top header of any window to move it anywhere on your screen. Click in any open window to put it on top. Other quick options: if you want to do a quick check on the current conditions for your city, try searching for your hometown in the Weather App (just hit Enter or click Search) and receive live forecast updates. Put a note in the Notes App-it auto-saves locally, so your note won’t disappear when you refresh!", "repo": "https://github.com/mshibin04/snOS", "demo": "https://sn-os-beta.vercel.app/"}]...
|
[{"post_id": 53598, "ts": "202 [{"post_id": 53598, "ts": "2026-08-24T06:52:22Z", "hours": 0.2767, "text": "upgrade!"}, {"post_id": 53587, "ts": "2026-08-24T06:13:23Z", "hours": 0.2683, "text": "My OS has one more function"}, {"post_id": 50959, "ts": "2026-08-20T13:01:07Z", "hours": 1.2217, "text": "Hey guys, I am working own my first webos"}]...
|
Title: My very own WebOS by @shibin | Stardance
D Title: My very own WebOS by @shibin | Stardance
Devlogs:
Hey guys, I am working own my first webos
My OS has one more function
upgrade!
Ships:
I built snOS, a dark glassmorphic browser personal web OS-draggable floating windows, desktop app icons, a live clock, window depth layer-ing, and a handful of functionally in-built apps: About snOS: A window with system info. Notes App Pro-a very simple notepad that saves your notes to local storage, so they don’t vanish when you refresh. Weather Forecast App: Create a live weather widget using the Open-Meteo API that allows you to search any city in the world and see live temperature, humidity, wind speeds, with dynamic condition icons. Web Browser: An inbuilt mini browser frame so you can search and browse using live web pages directly inside the desktop view. I’m a total beginner coder, so creating this without any starting point was a huge learning challenge for me. Making the window drag function feel fluid without messing up the layout was difficult. Integrating to the live weather API, processing the search box inputs, and debugging weird code errors took countless iterations. With all the times I was stuck I spent hours watching coding video tutorials, reading docs, and getting AI helpers like ChatGPT and Gemini to explain everything to me and fix my code until I finally understood how it all works. Honestly I’m just glad I didn’t give up! As a zero experience beginner seeing a blank screen turn into a functioning desktop with apps and movable window boxes was a really rewarding experience. It took patience but learning how JS, API fetching, and CSS combine to make something tangible was totally worth it. You don’t need a username or password! Open any of the desktop icons (About, Notes, Weather, or Web Browser) and use an app. Click and drag the top header of any window to move it anywhere on your screen. Click in any open window to put it on top. Other quick options: if you want to do a quick check on the current conditions for your city, try searching for your hometown in the Weather App (just hit Enter or click Search) and receive live forecast updates. Put a note in the Notes App-it auto-saves locally, so your note won’t disappear when you refresh!...
|
1793955367.3995445
|
1794041767.3995445
|
|
55538
|
calculator by @shibin | Stardance
|
shibin
|
1
|
1.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-28T17:50:41Z", "hours": 1.0, "multiplier": 1.0, "payout": 1, "blessing": "neutral", "text": "so this is a calculator I am learning Python And I am just new to the coding world and so I was trying to make a Python function then I thought why shouldn’t I make my first project as a calculator so I created a calculator from Python and I don’t know about HTML so I have to use some other tools to make the HTML and the UI but the Python function is completely made by me you guys can access through the version URL and you guys can access to this website and you guys can use my calculator Feel free to use and give feedback", "repo": "https://github.com/mshibin04/calculator", "demo": "https://sn-calculator.vercel.app/"}]...
|
[{"post_id": 56773, "ts": "202 [{"post_id": 56773, "ts": "2026-08-28T17:48:20Z", "hours": 0.7514, "text": "my own calculator"}]...
|
Title: calculator by @shibin | Stardance
Devlogs: Title: calculator by @shibin | Stardance
Devlogs:
my own calculator
Ships:
so this is a calculator I am learning Python And I am just new to the coding world and so I was trying to make a Python function then I thought why shouldn’t I make my first project as a calculator so I created a calculator from Python and I don’t know about HTML so I have to use some other tools to make the HTML and the UI but the Python function is completely made by me you guys can access through the version URL and you guys can access to this website and you guys can use my calculator Feel free to use and give feedback...
|
1793940676.6538346
|
1794027076.6538346
|
|
63965
|
personal web by @shibin | Stardance
|
shibin
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T16:12:26Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I was making my own personal website like a portfolio and I was also learning HTML and CSS I was learning for a long time so I learned it pretty much and I still had a confusion on you know changing you know like the size of it and changing the position of it like the I want to please like I want to place the the wherever wherever I wanted So I had a problem with that like the placement of it so I used AI to not write goat tell me how to do it and when it asks like it is still to me like how to do it when I try to do it it did not work so I just you know remove that code I just use on my original code in that and that’s it", "repo": "https://github.com/mshibin04/portfolio-website", "demo": "https://mohammed-shibin-pt.vercel.app/"}]...
|
[{"post_id": 71027, "ts": "202 [{"post_id": 71027, "ts": "2026-09-20T07:06:10Z", "hours": 1.0203, "text": "my own personal website"}]...
|
Title: personal web by @shibin | Stardance
Devlog Title: personal web by @shibin | Stardance
Devlogs:
my own personal website
Ships:
I was making my own personal website like a portfolio and I was also learning HTML and CSS I was learning for a long time so I learned it pretty much and I still had a confusion on you know changing you know like the size of it and changing the position of it like the I want to please like I want to place the the wherever wherever I wanted So I had a problem with that like the placement of it so I used AI to not write goat tell me how to do it and when it asks like it is still to me like how to do it when I try to do it it did not work so I just you know remove that code I just use on my original code in that and that’s it...
|
1794052441.563935
|
1794138841.563935
|
|
24163
|
Frictionless by @shiapatel | Stardance
|
shiapatel
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @shiapatel | Stardance
|
1793436750.1283576
|
1794041550.1283576
|
|
13282
|
My first slack bot! by @shiam48 | Stardance
|
shiam48
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @shiam48 | Stardance
|
1793324872.6155305
|
1793929672.6155305
|
|
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....
|
1793868600.920374
|
1794473400.920374
|
|
45663
|
My awesome macropad! by @shgam | Stardance
|
shgam
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @shgam | Stardance
|
1793346864.4920278
|
1793951664.4920278
|
|
45666
|
Solar Powered Weather Tracker for my Plant by @shg Solar Powered Weather Tracker for my Plant by @shgam | Stardance...
|
shgam
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Solar Powered Weather Tracker for my Plant Title: Solar Powered Weather Tracker for my Plant by @shgam | Stardance...
|
1793346869.0635803
|
1793951669.0635803
|
|
58275
|
My awesome macropad! by @shezakamran | Stardance
|
shezakamran
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @shezakamran | Star Title: My awesome macropad! by @shezakamran | Stardance...
|
1793483365.188509
|
1794088165.188509
|
|
26438
|
My awesome macropad! by @sheza | Stardance
|
sheza
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sheza | Stardance
|
1793893826.77408
|
1794498626.77408
|
|
31974
|
Rov by @shevontech101 | Stardance
|
shevontech101
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Rov by @shevontech101 | Stardance
|
1793497862.9338324
|
1794102662.9338324
|
|
47055
|
My awesome macropad! by @sherrys | Stardance
|
sherrys
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sherrys | Stardanc Title: My awesome macropad! by @sherrys | Stardance...
|
1793832492.1963995
|
1794437292.1963995
|
|
5500
|
My awesome macropad! by @sherri16212345 | Stardanc My awesome macropad! by @sherri16212345 | Stardance...
|
sherri16212345
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sherri16212345 | S Title: My awesome macropad! by @sherri16212345 | Stardance...
|
1793433319.2628043
|
1794038119.2628043
|
|
9076
|
Untitled project by @sherlockholmes | Stardance
|
sherlockholmes
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @sherlockholmes | Stard Title: Untitled project by @sherlockholmes | Stardance...
|
1793929994.3106809
|
1794534794.3106809
|
|
15200
|
Grazestarkick by @sherin | Stardance
|
sherin
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Grazestarkick by @sherin | Stardance
|
1793396876.6510584
|
1794001676.6510584
|
|
33654
|
Frictionless by @sheraztariq356 | Stardance
|
sheraztariq356
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @sheraztariq356 | Stardance
|
1794005455.9161732
|
1794610255.9161732
|
|
66244
|
Hehe boi by @sherans479 | Stardance
|
sherans479
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Hehe boi by @sherans479 | Stardance
|
1793714013.66272
|
1794318813.66272
|
|
3887
|
Lumina Piano by @shenk | Stardance
|
shenk
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Lumina Piano by @shenk | Stardance
|
1793537704.1804767
|
1794142504.1804767
|
|
27485
|
My first slack bot! by @shenhan2014 | Stardance
|
shenhan2014
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @shenhan2014 | Stard Title: My first slack bot! by @shenhan2014 | Stardance...
|
1793397059.5177703
|
1794001859.5177703
|
|
27492
|
My awesome macropad! by @shenhan2014 | Stardance
|
shenhan2014
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @shenhan2014 | Star Title: My awesome macropad! by @shenhan2014 | Stardance...
|
1793418435.9562685
|
1794023235.9562685
|
|
27493
|
My very own WebOS by @shenhan2014 | Stardance
|
shenhan2014
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @shenhan2014 | Stardan Title: My very own WebOS by @shenhan2014 | Stardance...
|
1793832797.6321528
|
1794437597.6321528
|
|
27497
|
Untitled by @shenhan2014 | Stardance
|
shenhan2014
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @shenhan2014 | Stardance
|
1793321287.9770803
|
1793926087.9770803
|
|
44213
|
My awesome macropad! by @shenchii | Stardance
|
shenchii
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @shenchii | Stardan Title: My awesome macropad! by @shenchii | Stardance...
|
1794001856.7519658
|
1794606656.7519658
|
|
13099
|
My awesome macropad! by @shemishaijupk | Stardance
|
shemishaijupk
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @shemishaijupk | St Title: My awesome macropad! by @shemishaijupk | Stardance...
|
1793491038.7713313
|
1794095838.7713313
|