Trovedex remade

A couple weeks ago I remade my web app Trovedex from scratch. It’s private for now, only for my own use; if you go there, it’ll ask you for a password. You’ll have to settle with this impressive screenshot:

It’s now a simple document manager. You can create documents (HTML pages) and put them in folders. That’s basically it. I wanted something like a wiki, but I wanted to use HTML instead of markdown, and I wanted to see folders and files on the side for easy navigation between pages.

I created the app with the help of AI, which was a fun experience (Claude to be exact). While AI doesn’t do all the work for you, it definitely makes things a lot easier. For instance, I had trouble figuring out React before (a javascript library for building interfaces), so the AI was able to show me how it’s done. Adding some features was also breeze. I could tell the AI: “Let’s add the ability to delete documents.” And it would respond: “Sure, paste this code to your frontend and this code to your backend.” Done! Of course, that’s an easy feature to add. Some features caused a bit more trouble. Trovedex is using the Jodit Editor to edit the HTML on the documents / pages, which Claude had some trouble with now and then, forcing me to do my own debugging.

Claude also had a habit of choosing annoying tools and frameworks. It recommended I use PostgreSQL for the backend database, and Prisma to connect to it. No! I had to tell it to use MongoDB and Axios instead, which seem a lot simpler to me.

Overall though, using the AI made me much more productive.

There are still plenty of features I’d like to add to Trovedex eventually, including the ability to make pages or folders public. That way I can use it to replace “Hanniwiki”, which was a MediaWiki site containing the catalog of all my music and stuff. But the software (which was more sophisticated than I really needed) went out of date, so “Hanniwiki” has been missing for a while now.

I’ll probably open-source the project to GitHub at some point.

TuneSage progress update 1

There’s still lots of work to do on TuneSage. I’m hoping if I regularly blog some short progress updates, it may encourage productivity, as it did last year with Trovedex.1

Right now I’m working on the front-end. As always, it’s a bit of a balancing act deciding what features need to be included and what features can wait to be added after launch. So far, the completed features include:

  • Load a MIDI from file
  • Mute / solo tracks
  • Change track colors
  • Show / hide tempo marks (from MIDI)
  • Edit / delete tempos
  • Show / hide measure lines
  • Show / hide pitch lines
  • Play MIDI

Features on the to-do list:

  • Playing features
    • Play from a selected position
    • Play or loop a selection
    • Show play location in minutes / seconds
    • Pause play (saves play position)
  • Move / create tempos (or tempo groups for accelerandos?)
  • Note editing
    • Move / create / delete / edit notes or note groups
    • Copy / paste notes or note groups
    • Edit note velocities
  • Track editing
    • Load track instrument from MIDI file
    • Edit track instrument
    • Edit track volume / stereo positions
  • Load / display / edit key signatures
  • MIDI loading
    • Load note velocities from MIDI
    • Fix MIDI loading bug: Extra note at end of file
  • Saving / exporting
    • Save / load music pieces to / from personal database
    • Export music to MIDI
    • Export music to WAV or MP3
  • Bookmark sections of a piece
  • Zoom in and out (horizontally)
  • Account
    • Confirm email (if necessary)
    • Log in / out / reset password
    • Edit optional personal info
    • Usage stats
  • Final design pass (make everything look good)

That’s not counting the further work of integrating the back-end with the front-end.

Anyway, my goal is to finish all the above before the end of this month (April 2021), and then I can move on to integrating the back-end (which still needs a good bit of work itself).

Feel free to suggest any features you’d like; though, like I said, I’m only trying to do the minimum needed to launch.

War and Peace vs Dune, and stuff

Reading

I finished reading Dune last week. I didn’t much like it. I thought it was boring. So if the soon-to-be-released new film adaptation isn’t great, a big reason is probably that the source material isn’t that great. I recently started reading Tolstoy’s War and Peace, and in doing so I realized one big reason I found Dune so boring: there’s no humor. Or at least there’s very little humor that I noticed. The book, and the characters in it, took themselves too seriously. Too me, lack of humor makes stories feel too fake. Not enough emotional contrast I guess.

War and Peace, on the other hand, has a good amount of humor sprinkled in, sometimes from characters, sometimes in just the way Tolstoy describes things. I’m only on page 250 of 1000+, but the reading itself is not very daunting. Tolstoy’s prose (at least the translated prose; I’m reading the Maude translation) is very dry. This happened, then this, and this. Straight to the point. No long flowery ambiguous descriptions. No Dickensian run-on sentences. (Though Dickens at least wasn’t too flowery either, for the most part. At least, as far as I remember; I haven’t read Dickens since high school, which was sixteen years ago.) So it’s very approachable, despite its age. It’s just really long. It feels very analagous to a modern TV show; it jumps around between a lot of different characters. It began as a serial back in the day, so I guess that makes sense.

One archaic phrase in this translation that annoys me though is when people “screw up their eyes.” I guess that means something like squinting or furrowing one’s brow? Definitely not something people say (or write) nowadays.

I’d like to finish the book by the end of the month, but I’m probably too slow of a reader.

TuneSage

Still working on TuneSage! I would definitely love to release the first version of it before the end of the year, even as soon as the end of September if I can. A lot of that will depend what “features” I include in the first version. It probably won’t be much at first, because I just want to get it out there. Anyway, I’m finally returning to work on the front end. There’s still a lot of stuff to do on the back end, but working on the front end will probably help me decide what features I want or don’t want for the initial release as I try to design a possible “workflow” for users.

Whatever else

I’ve uploaded more “thrift store finds” videos on my second YouTube channel; eBay flipping has been a fun side-hussle, easy and addicting. Just keep a social distance and wash your hands constantly. (And wear your mask, even though they fog up your glasses and then you have to take your glasses off and you can’t see anything.)

Note-taking app launched at Trovedex.com!

I spent Friday and Saturday launching the first version of the note-taking app I’ve been working on, live now at trovedex.com. Woohoo! I’m glad I was able to get it up just before the end of May.

As stated before, there are still quite a few features I’d like to add. But even before I go about adding new features, there are a number of glitches that need fixing. It’s really annoying how some things that work fine in production (when running on my computer) suddenly stop working or glitch out when live on a server.

Deploying the Vue app wasn’t too difficult in and of itself, though I will need to develop a more efficient deployment strategy than just uploading files. The trickiest part for me was getting the API back-end server, which manages requests from the app to the database, to use the more secure “https” protocol. The front end, built with Vue, was easy; you can just set a variable in its config file and *poof* it works. The back-end API, however, needed info about a valid SSL certificate to be recognized as secure. Googling around, just about all the info I could find involved creating a self-signed certificate, which most browsers won’t trust, so that didn’t help me much. I finally figured out how to get the “key” and “cert” files from my server’s certificate. A simple solution, but difficult to find. Also, if you know how to look at your browser’s javascript console, you’ll see that my implementation of firebase, which I’m using for user authentication (hence why you can log in with Google or Facebook without having to create a new account), outputs a warning about my code using a “development build” of the SDK. I couldn’t figure out how to get rid of that. It probably also has a simple solution I just haven’t found yet.

At the moment, I know this note-taking app is nothing amazingly innovative, but it’s been great for learning “the stack” (the layers of tools used to build a web app) and I think continuing work with it (and on it) will be fun. Now that this is up, I’m going to switch my focus back to TuneSage, my in-development music-writing app. I’ll still work on Trovedex to fix the current glitches, add features, and make improvements, but I’d like to launch TuneSage before Christmas and there is a ton of work to do on that.

Happy note-taking!

Note-taking app update 5

My note-taking app is almost ready for release! Upon release it will support the following:

  • tag notes and filter by tags
  • embed html
  • create todo lists
  • create timers
  • create info tables
  • insert or embed images (from url or upload)
  • create flashcards (for self-studying, e.g. language learning)

My current todo list before release includes:

  • Design for mobile (make it responsive to browser width)
  • Get links to other notes working
  • Finish basic search functionality
  • Create a “reminders” icon (which only works with the reminders set by the flashcards widget at the moment)
  • Add click & drag to re-order stuff functionality
  • Create a “storage space” check (so limits can be set)
  • Create an “about” landing page / log in page
  • Create a sign-out button
  • Finalize API back-end settings

So quite a bit still to do. Some of that stuff won’t take long, but some stuff may (like designing for mobile, especially since design work tends to be slow and tedious for me; I’m not so great at it). I still hope to launch it before the end of May.

Of course, even after launching there are quite a few features I’d like to add, but I want to launch it first and see if anyone else even finds it at all useful. (I definitely want it for myself though, so I’ll be using it regardless.)

1 Second Everyday : April 2020 & App update 4

1 Second Everyday

Here’s my 1 Second Everyday for last month. Lockdown made for another boring month with mostly programming and cats (though I guess most my months are pretty boring anyway). But I did buy a used 3D projector from eBay which is great. It’s too bad 3D blu-rays (and 3D movies in general) are quickly becoming a thing of the past just as used 3D projectors become actually affordable. Oh well.


Quick note-taking app update 4

I’m just about done the functional programming for the initial release of my note-taking app:

  • Complete functionality of the sub-menu
  • Allow attaching or inserting media (at least images) to notes
  • Sort / search notes by tags
  • Create note with tags pre-filled (like adding a post to a category)
  • Allow some js widgets in notes, at least checkboxes and timers
  • Allow creation of new notes with bracket links (e.g. “[[]]”) as in MediaWiki (standard wiki feature)
  • Open related notes by clicking on these bracket links (without opening a new page)
  • Search and sort notes by content / data / date (only basic queries for now)
  • Create user login / registration system
  • Create user stats page (notes created, storage space available, etc.)
  • Collect user usage stats (for studying how users use the product)
  • Overhaul / finalize designs, make responsive and usable on mobile
  • Write Terms of Service, privacy, cookie use policies
  • Offer subscriptions, launch!

I mostly just have to work on the design and then the final launch preparations! There are plenty of features I’d like to add after launching, of course, but development will probably slow so I can get back to work on TuneSage. Building this note-taking app has been a great experience for learning how to develop a web app using Vue and MongoDB, which I can definitely use while continuing to build TuneSage. (Plus I hope to use this note-taking app for my own note-keeping purposes.)

Quick note-taking app update 3

Made some decent progress this week and knocked out a few of the todo’s; here’s what the list looks like now:

  • Complete functionality of the sub-menu
  • Allow attaching or inserting media (at least images) to notes
  • Sort / search notes by tags
  • Create note with tags pre-filled (like adding a post to a category)
  • Allow some js widgets in notes, at least checkboxes and timers
  • Allow creation of new notes with bracket links (e.g. “[[]]”) as in MediaWiki (standard wiki feature)
  • Open related notes by clicking on these bracket links (without opening a new page)
  • Search and sort notes by content / data / date (only basic queries for now)
  • Create user login / registration system
  • Create user stats page (notes created, storage space available, etc.)
  • Collect user usage stats (for studying how users use the product)
  • Overhaul / finalize designs, make responsive and usable on mobile
  • Write Terms of Service, privacy, cookie use policies
  • Offer subscriptions, launch!

Working on a simple user login / registration system now, so that should be done soon. After that, the last piece of actual functionality to add will be some sort of usage-data gathering system. The rest of the todo list mainly concerns design and content.

And it definitely needs some redesign because it looks very bad at the moment. I’ve been much more focused on coding functionality than finding visual appeal. Ultimately I want it to look as minimal, simple, and intuitive as possible, on both desktops and smartphones.

I will have to go back and polish some functionality though; I’ve been skipping over some of the finer details.

Anyway, I’m guessing it may only be two or three more weeks before the app is ready to debut!

Quick note-taking app update 2

Been a while since I gave an update on my note-taking app progress, so I shall proceed to do so.

I’ve been able to knock some things off the to do list:

  • Complete functionality of the sub-menu
  • Allow attaching or inserting media (at least images) to notes
  • Sort / search notes by tags
  • Create note with tags pre-filled (like adding a post to a category)
  • Allow some js widgets in notes, at least checkboxes and timers
  • Allow creation of new notes with bracket links (e.g. “[[]]”) as in MediaWiki (standard wiki feature)
  • Open related notes by clicking on these bracket links (without opening a new page)
  • Search and sort notes by content / data / date (only basic queries for now)
  • Create user login / registration system
  • Create user stats page (notes created, storage space available, etc.)
  • Collect user usage stats (for studying how users use the product)
  • Overhaul / finalize designs, make responsive and usable on mobile
  • Write Terms of Service, privacy, cookie use policies
  • Offer subscriptions, launch!

Not nearly as much as I’d’ve liked to have finished by now, but progress is being made. Uploading files turned out to be a bit tricky (and there are still some small issues with it to work out), as was supporting javascript in each note. And looking ahead, I’m thinking everything else will also be tricky. But we’ll get there!

Note-taking app update

Fortunately the nightmares have stopped and I’ve managed to get on a more regular sleeping schedule, going to bed at about 1 AM or so and waking up at about 9:30 AM. So that’s good.

Programming-wise, I spent much of last week just learning more about modern web tools; I’ve been away from web development for a while, so there’s a lot to learn. I switched from Feathers and React to what’s called a “MEVN” stack, which consists of MongoDB for the database (which I find easier than MySQL1), Express.js for the back-end framework, Vue for the front-end (which I find easier to learn than React), and of course Node.js for the back-end platform. In particular, this little tutorial on setting up a MEVN stack was super helpful.

Beyond that I’ve only just started programming some actual functionality. At the moment, you can create a note and delete it. And that’s it. Pretty boring. Much left to do.

As seen above, when you hover over a note, you get that little side-menu with edit, copy, and delete options. Looks a bit bland, but the design is definitely not final. Here’s my current todo list before making the app public:

  • Complete functionality of the sub-menu (the delete works, but the edit and copy buttons don’t yet)
  • Allow attaching or inserting media (at least images) to notes
  • Sort / search notes by tags
  • Create note with tags pre-filled (like adding a post to a category)
  • Allow some js widgets in notes, at least checkboxes and timers
  • Allow creation of new notes with bracket links (e.g. “[[]]”) as in MediaWiki (standard wiki feature)
  • Open related notes by clicking on these bracket links (without opening a new page)
  • Search and sort notes by content / data / date (only basic queries for now)
  • Create user login / registration system
  • Create user stats page (notes created, storage space available, etc.)
  • Collect user usage stats (for studying how users use the product)
  • Overhaul / finalize designs, make responsive and usable on mobile
  • Write Terms of Service, privacy, cookie use policies
  • Offer subscriptions, launch!

I have some other big features I’d like to add, but I’d like to launch it first, just to get it out there. So how long will all that stuff take to do? Assuming I can tick one off every day, only two weeks. But some will be easy and some will be difficult, and you never know what task you might get stuck on. So we’ll see. I’m going to aim for two weeks. Though I do have some family stuff going on that will likely also get in the way.

Plus this really awesome guy sent me the PS4 game Dreams that I’m eager to try…

Startup programming update

Here’s a quick update of what I’m working on…

First I’ll admit that I’m in a bit of a mess sleep-schedule wise; I don’t know what’s going on with my brain. I’ll sleep for 10 hours then stay awake for 10 hours or less, getting suddenly really tired at seemingly random times, constantly out-of-whack with a 24-hour schedule. And I keep having weird nightmares so my subconscious must be a bit anxious about something. (Part of what makes them weird is that they’re often emotional nightmares; I’ll be really angry or sad or depressed in the dream, rather than just having bad stuff happen to me in the dream. But I can’t find much information about emotional distress within dreams; most articles talk about emotional distress in life causing nightmares, but I’ve got the opposite problem. It’s bizarre.)

Anyway, I’m taking a short break from working on TuneSage to work on a quick related project. I’m not sure what I’ll call it yet, but it’s a note-taking / note-organizing web app. I mostly just want it for myself. I know there are already dozens out there (like Evernote), but none of them work quite the way I want them to. Specifically I want an app in which I can:

  • Keep and organize random notes / ideas
  • Keep todo lists and reminders
  • Keep and organize bookmarks (similar to what I use Pinterest for)
  • Keep and organize timed sessions (such as for freelancing)
  • Keep logs of stuff (such as books owned & read, movies owned & watched, TV shows watched, etc.)

All these things can already be done with existing tools, but again, not in quite the way I want.

Anyway, the tools I’m using to create this app are tools I want to learn for use with TuneSage, so it will ultimately help with TuneSage’s development too. Plus the app itself will help me organize my notes regarding TuneSage. So I’m trying to kill a bunch of birds with one stone.

I’ll of course release it and if it gains any traction, so much the better. If no traction, it’s still something I want for myself.

As far as TuneSage goes, I’ve stopped using Rust for now, and instead switched to the older but more popular Node.js. Node.js is mainly Javascript for back-end, and it’s much easier for me to program in an easy language I already have experience with than learn a new more complicated language like Rust. (For instance, I love not having to worry about variable types… most of the time.) And since Node.js has been around for a lot longer, there are a ton of resources out there for it, which is also a huge plus.

For this new mini-sidequest of a note-keeping app, I’m learning some other tools that I think I’ll need for TuneSage anyway, so the note-keeping app will be a good learning experience. I’m currently learning React for the front-end, which helps with creating user interfaces, and Feathers for front-end to back-end communication, which is what I’m finding more confusing at the moment, mostly because it seems to have a lot of “parts”.

So that’s what I’m up to at the moment! Stay tuned for the release of the first version of the note-keeping app!