Skip to content

Commit 7c750ea

Browse files
committed
new post: tasker
1 parent 8605b0e commit 7c750ea

File tree

6 files changed

+62
-2
lines changed

6 files changed

+62
-2
lines changed

.eleventy.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ module.exports = function (eleventyConfig) {
3030
excerpt_separator: "<!-- excerpt -->",
3131
});
3232

33+
eleventyConfig.addCollection("tools", function(collectionApi) {
34+
return collectionApi.getFilteredByGlob("content/tools/*");
35+
});
36+
3337
return {
3438
dir: {
3539
input: "content", // Root directory

_includes/layout.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ <h2 class="visually-hidden" id="top-level-navigation-menu">Top level navigation
1616
<li class="nav-item"><a href="/">Home</a></li>
1717
<li class="nav-item"><a href="/posts/">Blog</a></li>
1818
<li class="nav-item"><a href="/cv/">Curriculum Vitae</a></li>
19-
<li class="nav-item"><a href="/file-indentifier/">File Type Identifier</a></li>
19+
<li class="nav-item"><a href="/tools/">Tools</a></li>
2020
</ul>
2121
</nav>
2222
</header>

content/cv.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ University of Maryland Global Campus (UMGC) – **GPA: 3.93**
8181
- <u>Relevant Coursework:</u> Intermediate Programming, Relational Database Concepts & Applications,
8282
Introduction to Linux, Red Hat Linux System Administration I, Ethical Hacking, Penetration Testing & Cyber
8383
Red Team, Threat Management & Vulnerability Assessment, Advanced Information Systems Security.
84-
- <u>Dean's List:</u> 5 consecutive semesters (Summer 2023 - Fall 2024)
84+
- <u>Dean's List:</u> 6 consecutive semesters (Summer 2023 - Spring 2025)
8585

8686
## <u>Awards and Accomplishments</u>
8787

content/posts/taskerbot.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
title: "How I built Taskerbot"
3+
date: "2025-06-27"
4+
tags: "discord"
5+
---
6+
7+
Developing my latest project, a Discord bot called [Taskerbot](https://github.com/rsomonte/taskerbot), has been an interesting journey full of unexpected turns. The inspiration came from a bot I saw during an event on a Discord server that gamified tasks, and I decided to build my own version. This project quickly evolved into a valuable lesson in modern bot development, especially after a five-year hiatus from the Discord API.
8+
9+
---
10+
11+
### The Initial Spark
12+
13+
The concept for Taskerbot came to me a few months ago, inspired by a server event where users submitted tasks for points. Having built bots before, I thought it would be a walk in the park, but I quickly realized my expectations were a bit unrealistic given how much the landscape had changed.
14+
15+
---
16+
17+
### From Memory to Persistence: A Hosting Hurdle
18+
19+
One of the first hurdles I encountered after the initial release was finding a place to host it. I started with Railway, but I'll likely be migrating to a different host soon. Their free plan doesn't support volumes, which became essential for the bot's functionality.
20+
21+
In the first version of Taskerbot, all tasks and objectives were stored in memory. This meant that every time I pushed an update, all that data was wiped. To solve this, I integrated SQLite for persistent storage, which required a volume to hold the database file.
22+
23+
---
24+
25+
### Adapting and Evolving Features
26+
27+
Persistent storage hasn't been the only major change since the first release. I've also implemented a streak system to encourage consistent participation and a delete command for easier task management. To help users stay on track, I recently added a feature where the bot sends a direct message if it notices an objective has been available for over 24 hours without a submission. Another key feature is a 22-hour submission cooldown. This gives users a flexible two-hour window to submit their tasks each day without breaking their streak, accommodating for slightly off-schedule days.
28+
29+
Of course, not every initial idea made it into the final product. I had to adapt. For instance, I originally wanted users to select their objective from a dropdown menu. Unfortunately, the current Discord API doesn't support that in the way I envisioned. My workaround was to have the user type the objective's name, and the bot then verifies if the objective exists in the database and is available for submission. It’s a practical solution that works well.
30+
31+
---
32+
33+
### What's Next?
34+
35+
Since I use Taskerbot daily, I'm constantly finding new things to improve and features to add. I have a few ideas that I plan to implement in the coming weeks, though I am also balancing this with another projects that I'll be sharing here soon.
36+
37+
I'd love for you to check it out and let me know what you think! Any feedback or suggestions for improvement would be greatly appreciated.
38+
39+
You can add Taskerbot to your server using [this link.](https://discord.com/oauth2/authorize?client_id=1378919723189932124)

content/tools.html

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
layout: commonlayout.liquid
3+
title: "Tools"
4+
permalink: "/tools/"
5+
---
6+
7+
<p>Here you will find a list of tools I've developed using different technologies such as Wasm:</p>
8+
{% assign tools = collections.tools %}
9+
{% for tool in tools %}
10+
<div class="tool-entry">
11+
<a href="{{ tool.url }}"><h2>{{ tool.data.title | default: tool.fileSlug }}</h2></a>
12+
{% if tool.data.description %}
13+
<p>{{ tool.data.description }}</p>
14+
{% endif %}
15+
</div>
16+
{% endfor %}

content/file-indentifier.html renamed to content/tools/file-indentifier.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
layout: layout.html
33
title: File Type Identifier
4+
description: Identify file types in the browser using Rust and WebAssembly.
45
---
56

67
<h1>File Type Identifier</h1>

0 commit comments

Comments
 (0)