July 03, 2025
This was mostly just fixing some bugs, but also added post categories to the DoubleFloat home page, which... is a bug (or something I forgot to implement—left hanging).
(Okay, now I think that because most of my users are probably not going to care whether the admin site title uses an en or an em dash (– vs. —) as they're not twonum, it's just a waste of time?)
Aside from CI/CD shenanigans, I fixed the infamous Martor dark mode! Which was really just (again) copying files from ClubFeed and wonder why a library I used in ClubFeed didn't work in twonum.org. It was rather hard in ClubFeed, and I ended up overriding some Martor GPL source code.
Worked on a bit of CI/CD (to decrease the chances that my website breaks itself). Also crafted a rather minimal README (it is minimal, because twonum.org is not ClubFeed). Speaking of ClubFeed, it was rather easy considering my CI workflow for ClubFeed.
While working on card layout for my projects, I forgot that Masonry existed! All this time, I was trying to fix the layout I decided to just copy-paste.
It's online!
(The Nest domain creation command had a bug so I filed a PR to fix it)
A less organic but still organic method of finding websites is through this thing called Google, and you must do SEO to even have a chance of your website being in the first page.
As any SEO professional would do, I added sitemaps! They're not going to be as useful to humans as RSS or Atom feeds, but still, I kinda want to get on Google.
While fixing RSS and Atom feeds for DoubleFloat, I decided to add feeds for Projects too! This is so that users can find my projects more easily, just like what feeds for DoubleFloat do.
After some time of only existing in model form, I've finally added categories (tags) to DoubleFloat posts. All DoubleFloat URLs have been moved to /doublefloat/.
I've been working on a homepage (more of a GitHub-style dashboard thing), again, inspired by other websites. I also included twofetch because why not!
Today has mostly been me trying to figure some HTML/CSS stuff out, as well as bits of the home page. I'm also taking inspiration (w/o stealing code) from other personal websites (like others submitted to the Summer of Making).
Implementing the DoubleFloat home page was rather easy, considering my existing knowledge with ClubFeed. I also implemented RSS and Atom syndication feeds for a way to check DoubleFloat posts without the twonum.org website.
Just some style changes, namely making <section> elements cards.
Decided to use Catppuccin slightly to make it look less like stock Bootstrap. It's not really Catppuccin—I left out the body text to avoid conflicts with Bootstrap.
First part of the make twonum.org aesthetically pleasing unplan.
Decided to add even more <main> padding and changed the bottom of <h2> bar thing to solid Catppuccin Mocha.
Inspired by the other personal sites I've seen
A few things regarding the about page.
I added a My projects section that highlights some of my projects, as well as icons (mandatory for any portfolio website). The new CSS logo (the rebeccapurple one) wasn't in Devicons, so I ended up spending some time submitting a PR to the project (not tracked here, because of fraud accusation prevention).
Starting to make it look fun now!
Started working about the About page. The guestbook I talked about earlier? I decided to implement it with a model called TimeMachine, as well as the hit counter. I have some plans with this about page (e.g. prettification) but also modernize the old web elements.
Comments on blogs now!
Might go the old web route and add a guestbook. django-comments-xtd seems like an option (use same stuff for commenting, simplicity) but it will be hard to implement.
Using xtd with JavaScript required React and I don't use it (I plan to keep it simple and just use server-side rendering)
The last two hours was mostly me working on the Projects functionality of the website. Every portfolio site must show off its projects, but I'd rather just use an admin panel to manage them rather than working on each source file individually.
Projects can also be commented on to let others share feedback. Users can use their forum account or (if it's suitable) post without one.
After some more technical bits, the prettification can begin.
Blogging so far.
I'm finally doing my long-overdue personal website.
This codebase will power both twonum.org and df.twonum.org (DoubleFloat, my blog) using the same database. They'll use the same database, so some noteworthy DoubleFloat blog posts can be crossposted on twonum.org.
I got a base boilerplate working by copying some settings code from ClubFeed.
Inspired by the Club Fair Attention Monopoly project used to make other clubs' booths stand out, this uses WebSockets to allow multiple users to point with a "laser" with their phones on a slideshow display. Note: While I do intend for this to be used for my own club, this was entirely made by myself (not club members). Demo instructions: Use your phone as a pointer and your computer/tablet as a display. Try touching and holding on your pointer's screen and see how it moves on the display. There is only one "group", so you might see others' pointers!
My long-overdue personal website, built with Python and Django and hosted on Nest. Features DoubleFloat (the twonum blog), twonum projects, and yes, a guestbook and commenting functionality. There is only a single site (contrary to my first devlog), unifying both the technical aspects of me (Projects) and my life (DoubleFloat).
Okay, media update!
I added the club image upload by using a centralized media manager, and from there, you can choose to show it on a carousel on the club page or paste the Markdown code into posts. These create ClubImage objects associated with the club and can only be managed by club owners and posters.
. A Django app for distraction-free club communication, combining the power of other school communication apps with the flexibility of social media. ClubFeed is designed for school clubs and other club-style groups to post on a school ClubFeed site (installation) and people can share their opinions by upvoting and commenting, as well as following clubs to add to their home page feeds (ClubFeeds). . . Note: This is based on an old project for a school class. . . Note 2: Disclosure of minor use of GitHub Copilot for code completions and Google AI Overview for docs. . . Note 3: Registration is open (hosted on Nest), but unfortunately can't provide admin credentials for the demo site. You can also use Hack Club Slack login. Even though email was working, per Nest's request (and so I don't overload their servers and make email providers think it's spam and not let better projects use Nest email), they are disabled on the demo. If you want to try them out, you'll need to set up your own installation (but the one on Nest has almost all features enabled). . . Demo instructions: First, try using the Clubs tab to find clubs and posts. You can register for an account for some features. . . Since my last submission, I have fixed the Nest issue. I chose not to post this as a devlog as this would count my "twonum" Hackatime project (which I did as a workaround to count ClubFeed time while WakaTime CLI was only installed on Nest but has since counted time for other, unrelated projects as I installed it on my local machine since approximately my last devlog). There is no way for me to see the specifics on Hackatime, and I apologize if there's any fraud implications. . . Hackatime disclosure: PyCharm was used for local development, zsh was used on Nest (and possibly on host; see previous point), and Neovim was used on Nest and for minor dabbles on my local machine. Some development was also done on macOS with PyCharm and zsh. My stats are public under the user 13137 and Slack ID U094NTBR1S5.
This was widely regarded as a great move by everyone.