Welcome to MittalDev!

Voluntime Launch Web App Store Google Play
Voluntime Voluntime is a volunteer hour tracking service focused on community service and organized volunteer efforts. Anyone can create an organization and volunteers can join and begin logging hours immediately. Voluntime was created as a solution to the complex problem of recording volunteer hours over multiple volunteers and organizations, so that nonprofits can focus more on helping their communities.

With Voluntime, you can create organizations to manage your volunteers with the click of a button. Volunteers and administrators have hour logs always on hand in one place instead of dozens of loose spreadsheets and texts. Voluntime offers powerful data analytics and visualization tools to help you achieve the most with your volunteer hours.

  • Organization roles (Owner, Administrator, Volunteer)
  • Shareable organization join link
  • Approve/deny hour logs
  • Export hours for sharing or submission
  • Data visualization & calculators
  • Mobile app & website
  • All features free of charge

Click here to launch Voluntime!
Scheduler Launch Web App Store Google Play
What does Scheduler do? Scheduler helps people schedule appointments and events. No more tedious Google Forms and back-and-forth emails to tell your clients available time slots and get their information. Scheduler provides a centralized, end-to-end platform to quickly and easily set up an appointment system. Who should use Scheduler? Scheduler can serve a wide variety of people, including school teachers, counselors, private tutors, coaches, and even large event organizers. Teachers can simplify Office Hours for both themselves and the students by centralizing the entire sign-up process. Counselors and tutors can arrange 1 on 1 sessions with pupils without back-and-forth communication and potential time conflicts. Recent COVID-related regulations make Scheduler even more valuable to sport coaches, as group class attendance may need to be confirmed beforehand. Event organizers can set a maximum number of attendees for each event and collect and view information from attendees with a few clicks. How is Scheduler unique? While related utilities exist, Scheduler is a unique service because it offers much more control and centralization throughout the entire process. Users can customize their events to precisely match their needs, and manage everything down to individual clients. Also, once clients have an event link, everything is done through Scheduler, rather than an unholy mixture of different services. Furthermore, Scheduler is in active development, meaning that it is constantly being improved and listening to feedback from users. Finally, I created Scheduler not with the goal of making money, but simply to help my users. So, all of Scheduler's features can be accessed for free, without ads or selling your data.

Click here to launch Scheduler!
ML Race Launch Web
Machine Learning (ML) Race The moving circle with the arrow is called the agent. The dark green circle is the target.

The agent uses Reinforcement Learning which is a type of machine learning, to get to the target as fast as possible. With Reinforcement Learning, the agent receives a state and a corresponding reward. The state is the state of the simulation, which is the location of each circle and the velocity of the agent. The reward is calculated based on the agent's distance to the target. The closer the agent is to the target, the higher the reward. If the agent touches the target, it will gain 1 point and receive a large reward. The agent learns over time as it collects more data that reaching the target first is good, and will act accordingly to get the maximum reward.

The brown circle does not use machine learning to move. Its instructions are hardcoded to simply move in the direction of the target, so it does not improve. When the simulation starts, the brown circle is generally much more consistent and reaches the target first most of the time. The agent's moves are mostly random as it explores the simulation and gathers data. However, if you let the simulation run for a while, the machine learning agent will start improving exponentially until it is reaching first almost every time. The harcoded ball's performance stays mostly linear and does not catch up to the machine learning ball.

Progress of the simulation can be observed through the line graph below the simulation, which shows the number of points that each player has and updates every 5 seconds. The lesson from this experiment is that machine learning and hardcoded instructions perform best under different conditions. Machine learning greatly outperforms hardcoded instructions once enough data is collected. However, without large amounts of data, machine learning is not reliable or "smart", and shouldn't be used.

Click here to launch ML Race!
MazeMaker Launch Web
What is MazeMaker? MazeMaker generates mazes with specified dimensions through a method called recursive backtracking.

Recursive backtracking is one of the handful of maze generation algorithms that creates a perfect maze, which is a solvable maze with no unreachable areas or loops.

Here's a high level view of the recursive backtracking algorithm:
  1. Choose a starting cell in the maze
  2. Randomly choose a wall of that cell and remove it, connecting the starting cell to a neighbor cell, but only if that neighbor cell has never been visited. The neighbor cell becomes the new current cell.
  3. If all neighbor cells have been visited, back up (backtrack) to the last cell that has unvisited neighbors and repeat.
  4. The algorithm ends when it has backed up all the way to the starting point.
The program needs to remember where it has gone to know where to backtrack to. I simply used a JavaScript array to store these cells, which are colored red during generation.

In the worst case scenario, this method would need to be able to store every cell in memory, but the real amount is usually much less. For normal-sized grids, it wouldn't be a problem either way.

At first, I was clearing the canvas and redrawing the entire grid at each frame, which worked fine for small mazes but noticeably slowed down large mazes. I realized that since only 1 to 2 cells actually changed each frame, I only needed to redraw those changed cells. After the change, mazes are generated at about the same speed, regardless of size.

Users can try solving the maze by dragging their mouse to color cells, and shift+dragging to erase. Erase on mobile devices by tapping on colored cells. The Start and Finish of the maze are marked with green and red respectively.

Click here to launch MazeMaker!
Sheep Defense Launch Web
What is Sheep Defense? Sheep Defense is a tower defense game featuring sheep, zombies, and cool towers! When you press "Start", green zombies will start moving along the orange track. If a zombie gets all the way across the track and escapes, you lose one sheep. When you run out of sheep, it's game over! Defend your sheep by placing towers. Select a tower (e.g. Machine Gun) from the menu at the right and click where you want to place it along the track. Read about each tower type by selecting it from the menu. You can upgrade or sell individual towers by clicking on them and pressing a button on the right. There are different types of zombies and towers, and each have unique properties and abilities. A yellow box at the top left of the screen gives you tips and hints to help you learn the game. If you just want to experiment and play around, switch to Sandbox Mode, where you get infinite gold and pretty much become a god. You can manually send any combination of zombies you want as well. Zombies include Normal, Regen, Group, Lead, Flying, Boss, Blimp, Zeppelin, and Virus.

Click here to launch Sheep Defense!
Minesweeper Launch Web
What is Minesweeper? The classic Minesweeper, but you can play it online anytime you want! When you load the page, a 15x15 grid of squares appears. A random 30 squares will be bombs, or "mines", and if you click one, you lose. However, clicking a square that is not a mine will reveal a number. That number represents the number of mines that square is touching (corners count). Using these numbers and some logic, you can figure out which squares are mines and flag them. Flag a square by right clicking it, and reveal a square by left clicking it. At the beginning, choose any square to start. You may have to try a few times until you get a large opening. If you click a mine, the game ends and shows you where all the bombs were. The mines that were flagged turn green, while any wrongly placed flags turn red. When all of the mines are flagged and every other square is revealed, you win!

Click here to launch Minesweeper!
ExploreLand Download
What is ExploreLand? ExploreLand is a two-dimensional exploration game made with Java! Think of it like a 2D Minecraft. ExploreLand offeres infinite world generation, random terrain, caves, ores, oceans, biomes, and trees. You can move around and interact with the world, including collecting resources, placing blocks, and crafting/smelting resources into tools. Build a house with wood or brick aboveground, or dig deep underground to find valuable gems to make stronger tools!

You can customize your experience by setting the size of your worlds and even using a custom player sprite to play as yourself!

Since ExploreLand is made with Java, you'll need to be able to download and run .exe files on your device to play.

Click here to download ExploreLand!
Game of Life Launch Web
Conway's Game of Life Conway's Game of Life, also known simply as Life, is a grid of squares called "cells" that each either live or die depending on a set of rules. The rules are applied each frame, which is called a "generation". Create a starting grid by choosing the size of the grid and drawing on the grid, or alternatively clicking Random to create a randomly populated grid. Interesting patterns can emerge depending on the starting grid. Once the grid is ready, just click Start and watch it come to life.

Click here to launch Life!
About Us

MittalDev is a collection of apps and online tools built by Aryan M.
Contact Us

If you have questions, concerns, or feedback, feel free to email us at contactus@mittaldev.com.