TL;DR I launched Freebies Hunt, a website that lists out free and open source tools for design, general programming, music, game dev't, open educational resources and many others that I personally use (if not watch out for). Oh and there's some challenges along the way.
Ahha^hahahahaha! April FOOOOO^OOOOOO OOOOOOOOOOO^OOOOO OOOLS!! You blew it! You totally screwed yourselves for walking into my trap... of setting you up to visit my newly launched site!
Hello, everybody! Let me introduce you to Freebies Hunt, a glorified resource list of free and/or open resources and tools from programming, music, and mathematics (and so much more). Also built with Gatsby.
But the main inspiration is the state of free and open content from what I've seen. It's absolutely amazing that free and open content, tools, and educational resources such as Visual Studio Code, MuseScore, and the OpenStax textbooks to be in a high standard when it comes to quality competing with the ranks of premium products. And so I compiled a list of it.
I initially made this to celebrate Open Educational Week (from March 4 to 8) starring the free quality tools that aids students in a developing world but due to difficulties and limitations (I'm just a student with a low budget doubled with an almost constant flaky internet connection), I didn't make it. 😓
However, this made me encounter more opportunities to learn which I'll make some details. Also, I made it to be an open content list, instead.
As a student running on a budget of few hundred of PHP (or < $10) and maybe a bunch of tokens you can find at the arcade, there are a few obstacles before I was able to tackle the problem:
Like any other
troublemaking good programmers, I created my own database system instead (with JSON, of course) for my specific need.
And the result is this abomination named
jayson-db, a JSON database management system with a built-in schema validation based on JSON schema spec. Though, at the end, I should've probably used a production-ready JSON database plugin combined with a JSON schema validator, instead.
The biggest bonus I get from creating my own DBMS (if you can call it that) is I could use it for other projects which more than likely. Still, it's a thumbs up for me.
Now that I have created my own little database system. It's time to get some data and build a schema around it. Fortunately, I already have my own resource list at the time but the problem is getting it.
I absolutely don't want to manually add each item by looking at the markdown list and putting it into the database system. So I programmed a way to parse through it. First, I go through my go-to solution for string parsing: regexes! I know it's not a one-for-all solution but I tried and it didn't work – and it was absolutely stupid of me.
So I decided to create a lexer instead and defined a bit of a syntax for my Markdown list. This enables me to create a consistent interface with my data and avoid the manual and error-prone labor of entering the data myself.
A week later as I create my first lexer in a valid use case this time and I was able to create it. It goes smooth sailing from there as I smoothly created the parser.
Now to enter the data, it has to go from a Markdown list with a specific subset of syntax, lex through it, parse through it,
jayson-db through it, and export it as a JSON. Then voila! You have the data!
Ask me: is this worth it? I think from a production viewpoint, absolutely not. Just to get around not using free database services with limited support? No... Absolutely horrible. Just pay up, damn it! It's worth the price (if you choose the right one, of course). ;p
Personally though, I think it's worth it especially as a student trying to learn and implement something. I also realized from this case that I suck at designing programs so after this happened, I decided to take some time to review on how to effectively design one, starting this April. Doubly so after seeing the discussion of learning how to balance side-projects for learning and creating useful products in this specific post.
OK! The API is generated and ready. Time to find a site to generate it. Since the data is rarely changing and the site is basically a bunch of links, I think a static site generator is the best tool for this.
I chose a SSG from a list of SSGs. Even though I mainly use Vue as my front-end framework, I chose Gatsby instead because I heard it's easier to get started with.
Since Gatsby mainly uses React, I took some time familiarizing with React. The basic common concepts between Vue and React is pretty glaring (at least that's what I thought) so I was able to have a slightly smooth transition from it. The official documentation is really good if you want to get started on it.
Next is the tool itself: Gatsby. Just like the process with React, I took some time familiarizing with it by navigating through the official docs and fiddling around with the example repos I found throughout GitHub.
I ditched the GraphQL part though since I just want to get done with it. Also, my API is not GraphQL though I can make it into GraphQL API but I don't think it's worth the trouble.
After creating the components, styling the styles, debugging the develop build, and frustratingly have trouble producing the production build (and getting back to fiddling example repos again), I've done it. A month has been spent creating this simple project mostly from creating my own version of things (which is always fun).
Anyways, enough about my personal experiences (and I hope you don't mind). Let's go through the site itself.
It's just a static website built with Gatsby, a static site generator backed up by React. The list is, of course, made up of categories for you to choose. The site offers resources for different kinds of stuff like game dev't, music (composition and theory), mathematics, design, research, and open educational resources (OER, for short) that I personally used (or used to use, anyway).
I also threw a list of blogs, newsletters, podcast series, and YouTube channels that I personally tune in and can easily recommend it to others because of its quality.
And also some other stuff including:
- operating systems
- communities (including this community, of course)
- student packs (for fellow students who are in need of student benefits)
- practice sites (or programming katas)
- ... a lot more that I didn't mentioned, just get in there!
In the spirit of free and open content, I made the website to be open sourced. You can visit the repo on GitHub.
It's a collection of freebies that I found all over the internet from online courses to open educational resources.
Want to find some free stuff? I've compiled a list of freebies that accumulated for almost a year now and there's no better way of sharing it than making it as a fully fledged website, of course.
Recently, I'm really getting enthustiastic about free and open software (or FOSS) and open content, in general. With some of the products are going competitive with the premium products such as MuseScore, Visual Studio Code and OpenStax, I'm really thrilled looking into the future with these open content floating around. So why not bundle them up and compile them in a list.
If you want to explore into the world of open content, here's a bit of a gateway for you. It's not complete compared to other resource lists but I tried to keep it small (saying while sitting at a count of 250 resources, lol).
Want to contribute…
And if you're looking for an API (for some reason), you can install it through npm. You can also visit it in a separate GitHub repo for the source code.
API for the digital freebies from Freebies Hunt as an npm package. It's my personal list of digital freebies that I found quite useful. Of course, why not share it in a JSON file.
This also serves as a production use case for my JSON database system,
jayson-db (and also save some money by creating my own little database management system thingamajig
It's expensive relative to my budget, OK?). Also, it's actually fun.
Anyways, this also represents the tools and resources that I personally use (or previously used) though I admittedly don't all of them at least just yet. If you want to send me feedback whether it regards to the resources or to the site, feel free to do so. Just make sure the suggested resources are legally free
If you're looking for the database, the "database" is simply a Markdown list (lol) so at least you could see Freebies Hunt even in textual form.
Being an open source project, feel free to contribute to it whether by code or suggestions (design, resources, etc.). I would be very glad to welcome you for the betterment of the project.
If you read through the entire post, I would like to thank you for spending a bit of your day to read through. 🙂 It could've really just be condensed into "Hey! I created a website that contains a list of free and open content and resources. Go check it out! Pls comment, like, share, and subscribe. Kthxbai!" What do you think of my project reveal written in this way?
Of course, don't forget to share this site with others and I hope you find this project useful as much I as did have.
Cheers from an open content enthusiast. ☕