Hi everyone - I'm an 8th grade student. I recently created iDMS for the students at my school. I've also created CiteIt (http://citeit.mihirgarimella.com) and a handful of other applications.
I know it's kind of useless for everyone else, but any feedback on iDMS would be great. Thanks!
Thanks - it looks cool. However, at this point, iDMS is supposed to be an organization tool, as opposed to a note-taking tool. It's meant to replace these agenda books that we get.
Again, thanks for the link. I'll take a look at it...
Hopefully we can look at great, precocious coders like you as an example for teaching others - even if other kids only get to 20% of your coding ability in middle school, it'll be a huge step forward for our education system and society.
Good job on your previous work and on this project. I made an app for my school district when I was in high school and it was great to create something that I felt was useful.
If there are other students trying to learn iOS reading this, there are a lot of resources on the internet. Specifically for games: www.makegameswith.us
Nice! I like the logo (maybe your school's mascot?). Keep making apps like this and there's a good chance you could have your own business and work schedule after your schooling.
My high school didn't allow students to use cell phones in class and they were frowned upon being visible at all. I can't remember anyone in middle school having a phone although I'm sure people did.
Your school allows you to just use your iPhone willy nilly?
Not really - before, the policy was that a student could have a phone on them, as long as they weren't using it.
I had to present to the principal and pitch it to a district committee before the policy was changed. Even now, students are allowed to use their phones in class only with this app (or another teacher-approved app).
Well done! Congrats on getting this built, but also approved by the school officials. Coding is hard, and it's great that you can do that, but the key development here was convincing the principal to change the policy so well done on that!
I like the idea of the electronic hall pass that changes colour -- probably helped convince the principal to change the policy since that's a direct benefit to the school admin.
What concerns did they raise, and what do you think helped convince them?
Wow, you're really young! When I was in high school, being caught with a cell phone was grounds for immediate expulsion. It meant you were a drug dealer. There was no other possible explanation.
This is brilliant! How did you get access to your school's data? I'm assuming the bell schedule is hard coded, but what about the events schedule? I would be surprised if your school provides some sort of developer API, so are you scraping it? When I was in high school, I remember scraping our bell schedule to create Dashboard and Konfabulator widgets. This is much higher quality than anything I made back then!
In a related note, my startup (https://tabuleapp.com) is working on improving managing homework due dates for college students. I guess my itch to collect school data and make it more organized never left me.
Nice work! I played around with it a bit, and couldn't get it to crash. It seems like a genuinely useful app and you focused on building things that people could and would actually use, and that's a great skill to have and a lot of people could learn from it.
I'm worried however that everyone here is not being critical enough since you are an 8th grader. The only way you will get better is to get honest feedback, so here's mine. Most of my feedback is design oriented, since I can't see your code.
First up is calendar tab. First issue is that tapping on the table cells do nothing, but give me a blue highlight. You should disable selections on these since they do not actually drill in anywhere. Your choice to split the events into Today & Upcoming is a good idea. For Today events, you put the time, for upcoming events, you put the date in the secondary info, which makes sense. I would suggest for upcoming events, you look into making the dates more readble. For example, instead of "12/13/12", it would be useful to say "Tomorrow". Or instead of "12/15/12", say "Next Wednesday." This is more work for the computer, but less work for your users to do in their heads. (Anytime there is something you find like this, do it!) For farther out things, include the day of the week, since (as far as my dusty middle school memory goes) the day of the week really matters a lot as far as your schedule goes. Finally, the Feedback button doesn't really belong here. I realize there is currently not a better place to put it, so I don't really have a good answer for you, but usually Feedback is not on the first screen of an app since it is a secondary or tertiary function and that real estate is primary real estate.
Next up, schedule. I like your choice of using the segmented controls for grade selection, but here's something to think about: how often does your grade change? Only once a year. Segment controls are useful if you need to continually switch between things. I noticed you do save the selection, which is really smart! But, a better approach might be to ask the user when they first visit this tab what grade they are in, save that, and then provide a button in the navigation bar to change that setting. (You can try using an action sheet for this.) This way, you free up that real estate on the screen to show more information instead of having the segmented navigation taking up precious space.
Also, in the schedule tab, you have a really, really long list of stuff. In fact, you realized this, so you added a Jump button! Along the way, if you are building something like this, and it feels like you need to build something clever like that, it usually is a sign there might be a way to simplify things. Here's what I would to do start. First, you can get rid of the segmentation control like I mentioned above. Now, you could use a segmentation control instead to choose the type of schedule you are in. The problem with that though is that there are five types of schedules, and that's a pretty large number of choices for a segmentation control. But, even more importantly, just like your grade, you probably don't change your schedule type very often! In fact, as you noticed since you put it at the top, unlike your grade (where everyone is probably evenly split between grade), most people all are on a normal schedule, and then everyone changes to weird ones once in a while.
A better format for your schedule screen might be something along the lines of the weather app, where you flick to page between the different schedules. You can start off on the Normal schedule, and then swipe between pages. This is a pretty intuitive interface and makes it so the user can jump right to the information they need on the rare occasion they are not in a regular schedule, and removes the need to scroll very far. And it also gets rid of the need for that "Jump" button, which is taking up a very useful slot in the nav bar for future features!
Next up is assignments. First, lets talk about the "Manage" button. When I go into manage, there seem...
Now lets talk about Hall Pass. This is a pretty neat thing and I first want to point out that this is really innovative work and could actually be a very useful thing for your school. Hell, I could see some people starting companies around such a simple but obvious idea that technology could improve, so hats off!
A few points on the design though. First, my guess is most of the time, people are going to get hall passes for one of the options in the "List" view. So, instead of having the "Where to?" selection be a text box, you can make it a spinning selector (like the date selector in Calendar, or the time selector for an Alarm.) I like the design of your custom "List" box, similar to your "Jump" view, but it's very different than the rest of the app and remember: if you're being clever like this, you probably need to simplify! iOS already has controls for this type of problem: the spinner. You can still customize the look of the spinner a bit if you want to add some flash, but you should start there.
If you are really worried about people needing to specify one-off destinations that are not on your list (and so the spinner will not have their choice), you can always include an "Other" selection in the spinner and then let them type something. If you go with the spinner route, you should change the field on the form from a text-box to a nice, large, tappable button that lets you click to open the spinner and then the label is replaced with your destination. In general, you should always do what you can to make it so people do not have to type on their phone, unless they really, really have to.
The minutes thing is rigged up very well, though I would suggest perhaps also going for a spinner here since that is the standard way to input time duration. Here's the reason: most of the time people do not need minute-level precision (like say 17 minutes or 29 minutes) Instead, they need things at 5-minute precison. For a hall pass, which is probably no more than 2 hours long, that's only 60 minutes / 5 minutes * 2 hours = 24 choices, which is a perfectly fine number of choices to put in a spinner.
So, for Hall Pass, you can have two buttons, "Where to?" and "For how long?" that open spinners, one with a list of places (and maybe "Other") and one with a list of 24 time intervals ranging from 5 minutes to two hours (there is actually a built in iOS spinner mode to select time intervals I believe, search around the documentation.) Your two buttons in hall pass are a little weird since your other tabs follow the style of most iOS apps and have buttons in the navigation bar. I would move "clear" and "submit" to the left and right corners of the navigation bar. Also, its weird that you have two ways to "clear" a hall pass, though this might be a quirk with your school.
The Edline tab is totally fine :)
Finally, some high level points on the design. One of the things about iOS design is you should generally tend to be subtle. First on color. Your app has highly saturated red navigation bars, mixed with bright blue buttons and segmented controls, and the Hall Pass has red and green buttons for clear and submit. First, you need to choose a color scheme. Red isn't bad, but I'd dial down the saturation a bit since bright red is a danger color. (In users' minds, red means "Be careful!" So, you should only create red buttons when important things are going to be destroyed.) If you are going to choose red as your main title bar color, your segment controls should complement it. When designing an app, you generally choose a palette of colors that complement each other. (Google color palette or color scheme) So, I would change your segmentation control (if you keep it) to be a lighter tone of red or a grey in order to match the background of the table view. Also, your instructional banners are cyan -- they should also match the main palette of the app. Blue and cyan can complement red if they are used in very small amounts, but usually it's a bad idea.
Also, you need to be consistent with lighting, layout, and sty...
Thanks so much for your detailed feedback! I'll try to address it point-by-point:
> You should disable selections on these since they do not actually drill in anywhere.
I'll definitely do this in both the calendar and schedule views.
> I would suggest for upcoming events, you look into making the dates more readable.
This sounds useful - and suggestions for libraries that can handle this?
> Finally, the Feedback button doesn't really belong here.
I agree - but I wanted an easy way for students to report bugs they found. I don't know if they would find it if I hid it away somewhere. Any suggestions on where else I can put it?
> But, a better approach might be to ask the user when they first visit this tab what grade they are in, save that, and then provide a button in the navigation bar to change that setting. (You can try using an action sheet for this.)
Good point - I'll probably implement this. One thing, though - for teachers that teach multiple grades, it might make it harder for them to find the different schedules at a glance. Then again, I'm not sure they really check the schedule in between each class.
> But, even more importantly, just like your grade, you probably don't change your schedule type very often! In fact, as you noticed since you put it at the top, unlike your grade (where everyone is probably evenly split between grade), most people all are on a normal schedule, and then everyone changes to weird ones once in a while. .... A better format for your schedule screen might be something along the lines of the weather app, where you flick to page between the different schedules.
Well, we have a PM activity schedule every Friday - but pagination might still be a better option.
> I might be wrong here, but I don't see the point of moving assignments around.
This allows for prioritizing - whenever you add an assignment in, it goes to the bottom of the list. However, if it is, for example, due before something that is above it, I like to move it up.
> I think the help text said I should be able to delete things, but I couldn't get that to work.
In regular mode (not manage mode), you can press and hold on an assignment to bring up the edit/delete menu. The modes are confusing - but I want to keep reordering and have it separate from the regular mode.
> Make it so I can check off an assignment by tapping anywhere in the entire table cell.
Good point - I'll do this.
> But, don't move anything around when you tap on them, just leave them there checked or unchecked.
Good idea - I think I'll remove the sectioned table view but move the completed assignments to the bottom (much like Clear).
> First, my guess is most of the time, people are going to get hall passes for one of the options in the "List" view.
Not really, actually - I usually use a hall pass to go see teachers, and I have to type their names in.
> I like the design of your custom "List" box, similar to your "Jump" view, but it's very different than the rest of the app and remember: if you're being clever like this, you probably need to simplify! iOS already has controls for this type of problem: the spinner.
I don't really like the look of spinners, but the list box might be a bit of an overkill. I'll look in to replacing it.
> Instead, they need things at 5-minute precison.
This is probably correct for times longer than, say, 10 minutes. However, for shorter times, 5-minute precision might be too limiting.
> I would move "clear" and "submit" to the left and right corners of the navigation bar.
I have them at the bottom to follow the natural flow of view - you fill out the form from top to bottom and hit submit.
> Also, its weird that you have two ways to "clear" a hall pass, though this might be a quirk with your school.
Now that I think about it - the clear button seems kind of useless. I'll get rid of that.
> Red isn't bad, but I'd dial down the saturation a bit since bright red is a danger color.
*TMAScan*
TMAScan is a Matlab program that I creataed that aims to automate the
tumor diagnosis process. Once a physician selects a digitized image of a
tissue sample, certain portions are extracted and analyzed futher, and a
final score is calculated. This score is directly correlated with the
malignancy of the tumor. After extensive testing, I determined that the
program's scores had a strong correlation with those of the expert.
Yep, I have wasted my life. I'm very happy for him, don't get me wrong, but this suddenly made me very sad for myself.
25 comments
[ 2.9 ms ] story [ 48.4 ms ] threadI know it's kind of useless for everyone else, but any feedback on iDMS would be great. Thanks!
Again, thanks for the link. I'll take a look at it...
Hopefully we can look at great, precocious coders like you as an example for teaching others - even if other kids only get to 20% of your coding ability in middle school, it'll be a huge step forward for our education system and society.
If there are other students trying to learn iOS reading this, there are a lot of resources on the internet. Specifically for games: www.makegameswith.us
Any idea if there's anything like makegameswith.us for regular apps? It looks cool, but I like making these kind of apps as opposed to games...
https://itunes.apple.com/us/app/faschedule/id472827413?mt=8
Your school allows you to just use your iPhone willy nilly?
I had to present to the principal and pitch it to a district committee before the policy was changed. Even now, students are allowed to use their phones in class only with this app (or another teacher-approved app).
I like the idea of the electronic hall pass that changes colour -- probably helped convince the principal to change the policy since that's a direct benefit to the school admin.
What concerns did they raise, and what do you think helped convince them?
In a related note, my startup (https://tabuleapp.com) is working on improving managing homework due dates for college students. I guess my itch to collect school data and make it more organized never left me.
Tabule looks cool, too :)...
I'm worried however that everyone here is not being critical enough since you are an 8th grader. The only way you will get better is to get honest feedback, so here's mine. Most of my feedback is design oriented, since I can't see your code.
First up is calendar tab. First issue is that tapping on the table cells do nothing, but give me a blue highlight. You should disable selections on these since they do not actually drill in anywhere. Your choice to split the events into Today & Upcoming is a good idea. For Today events, you put the time, for upcoming events, you put the date in the secondary info, which makes sense. I would suggest for upcoming events, you look into making the dates more readble. For example, instead of "12/13/12", it would be useful to say "Tomorrow". Or instead of "12/15/12", say "Next Wednesday." This is more work for the computer, but less work for your users to do in their heads. (Anytime there is something you find like this, do it!) For farther out things, include the day of the week, since (as far as my dusty middle school memory goes) the day of the week really matters a lot as far as your schedule goes. Finally, the Feedback button doesn't really belong here. I realize there is currently not a better place to put it, so I don't really have a good answer for you, but usually Feedback is not on the first screen of an app since it is a secondary or tertiary function and that real estate is primary real estate.
Next up, schedule. I like your choice of using the segmented controls for grade selection, but here's something to think about: how often does your grade change? Only once a year. Segment controls are useful if you need to continually switch between things. I noticed you do save the selection, which is really smart! But, a better approach might be to ask the user when they first visit this tab what grade they are in, save that, and then provide a button in the navigation bar to change that setting. (You can try using an action sheet for this.) This way, you free up that real estate on the screen to show more information instead of having the segmented navigation taking up precious space.
Also, in the schedule tab, you have a really, really long list of stuff. In fact, you realized this, so you added a Jump button! Along the way, if you are building something like this, and it feels like you need to build something clever like that, it usually is a sign there might be a way to simplify things. Here's what I would to do start. First, you can get rid of the segmentation control like I mentioned above. Now, you could use a segmentation control instead to choose the type of schedule you are in. The problem with that though is that there are five types of schedules, and that's a pretty large number of choices for a segmentation control. But, even more importantly, just like your grade, you probably don't change your schedule type very often! In fact, as you noticed since you put it at the top, unlike your grade (where everyone is probably evenly split between grade), most people all are on a normal schedule, and then everyone changes to weird ones once in a while.
A better format for your schedule screen might be something along the lines of the weather app, where you flick to page between the different schedules. You can start off on the Normal schedule, and then swipe between pages. This is a pretty intuitive interface and makes it so the user can jump right to the information they need on the rare occasion they are not in a regular schedule, and removes the need to scroll very far. And it also gets rid of the need for that "Jump" button, which is taking up a very useful slot in the nav bar for future features!
Next up is assignments. First, lets talk about the "Manage" button. When I go into manage, there seem...
A few points on the design though. First, my guess is most of the time, people are going to get hall passes for one of the options in the "List" view. So, instead of having the "Where to?" selection be a text box, you can make it a spinning selector (like the date selector in Calendar, or the time selector for an Alarm.) I like the design of your custom "List" box, similar to your "Jump" view, but it's very different than the rest of the app and remember: if you're being clever like this, you probably need to simplify! iOS already has controls for this type of problem: the spinner. You can still customize the look of the spinner a bit if you want to add some flash, but you should start there.
If you are really worried about people needing to specify one-off destinations that are not on your list (and so the spinner will not have their choice), you can always include an "Other" selection in the spinner and then let them type something. If you go with the spinner route, you should change the field on the form from a text-box to a nice, large, tappable button that lets you click to open the spinner and then the label is replaced with your destination. In general, you should always do what you can to make it so people do not have to type on their phone, unless they really, really have to.
The minutes thing is rigged up very well, though I would suggest perhaps also going for a spinner here since that is the standard way to input time duration. Here's the reason: most of the time people do not need minute-level precision (like say 17 minutes or 29 minutes) Instead, they need things at 5-minute precison. For a hall pass, which is probably no more than 2 hours long, that's only 60 minutes / 5 minutes * 2 hours = 24 choices, which is a perfectly fine number of choices to put in a spinner.
So, for Hall Pass, you can have two buttons, "Where to?" and "For how long?" that open spinners, one with a list of places (and maybe "Other") and one with a list of 24 time intervals ranging from 5 minutes to two hours (there is actually a built in iOS spinner mode to select time intervals I believe, search around the documentation.) Your two buttons in hall pass are a little weird since your other tabs follow the style of most iOS apps and have buttons in the navigation bar. I would move "clear" and "submit" to the left and right corners of the navigation bar. Also, its weird that you have two ways to "clear" a hall pass, though this might be a quirk with your school.
The Edline tab is totally fine :)
Finally, some high level points on the design. One of the things about iOS design is you should generally tend to be subtle. First on color. Your app has highly saturated red navigation bars, mixed with bright blue buttons and segmented controls, and the Hall Pass has red and green buttons for clear and submit. First, you need to choose a color scheme. Red isn't bad, but I'd dial down the saturation a bit since bright red is a danger color. (In users' minds, red means "Be careful!" So, you should only create red buttons when important things are going to be destroyed.) If you are going to choose red as your main title bar color, your segment controls should complement it. When designing an app, you generally choose a palette of colors that complement each other. (Google color palette or color scheme) So, I would change your segmentation control (if you keep it) to be a lighter tone of red or a grey in order to match the background of the table view. Also, your instructional banners are cyan -- they should also match the main palette of the app. Blue and cyan can complement red if they are used in very small amounts, but usually it's a bad idea.
Also, you need to be consistent with lighting, layout, and sty...
> You should disable selections on these since they do not actually drill in anywhere.
I'll definitely do this in both the calendar and schedule views.
> I would suggest for upcoming events, you look into making the dates more readable.
This sounds useful - and suggestions for libraries that can handle this?
> Finally, the Feedback button doesn't really belong here.
I agree - but I wanted an easy way for students to report bugs they found. I don't know if they would find it if I hid it away somewhere. Any suggestions on where else I can put it?
> But, a better approach might be to ask the user when they first visit this tab what grade they are in, save that, and then provide a button in the navigation bar to change that setting. (You can try using an action sheet for this.)
Good point - I'll probably implement this. One thing, though - for teachers that teach multiple grades, it might make it harder for them to find the different schedules at a glance. Then again, I'm not sure they really check the schedule in between each class.
> But, even more importantly, just like your grade, you probably don't change your schedule type very often! In fact, as you noticed since you put it at the top, unlike your grade (where everyone is probably evenly split between grade), most people all are on a normal schedule, and then everyone changes to weird ones once in a while. .... A better format for your schedule screen might be something along the lines of the weather app, where you flick to page between the different schedules.
Well, we have a PM activity schedule every Friday - but pagination might still be a better option.
> I might be wrong here, but I don't see the point of moving assignments around.
This allows for prioritizing - whenever you add an assignment in, it goes to the bottom of the list. However, if it is, for example, due before something that is above it, I like to move it up.
> I think the help text said I should be able to delete things, but I couldn't get that to work.
In regular mode (not manage mode), you can press and hold on an assignment to bring up the edit/delete menu. The modes are confusing - but I want to keep reordering and have it separate from the regular mode.
> Make it so I can check off an assignment by tapping anywhere in the entire table cell.
Good point - I'll do this.
> But, don't move anything around when you tap on them, just leave them there checked or unchecked.
Good idea - I think I'll remove the sectioned table view but move the completed assignments to the bottom (much like Clear).
> First, my guess is most of the time, people are going to get hall passes for one of the options in the "List" view.
Not really, actually - I usually use a hall pass to go see teachers, and I have to type their names in.
> I like the design of your custom "List" box, similar to your "Jump" view, but it's very different than the rest of the app and remember: if you're being clever like this, you probably need to simplify! iOS already has controls for this type of problem: the spinner.
I don't really like the look of spinners, but the list box might be a bit of an overkill. I'll look in to replacing it.
> Instead, they need things at 5-minute precison.
This is probably correct for times longer than, say, 10 minutes. However, for shorter times, 5-minute precision might be too limiting.
> I would move "clear" and "submit" to the left and right corners of the navigation bar.
I have them at the bottom to follow the natural flow of view - you fill out the form from top to bottom and hit submit.
> Also, its weird that you have two ways to "clear" a hall pass, though this might be a quirk with your school.
Now that I think about it - the clear button seems kind of useless. I'll get rid of that.
> Red isn't bad, but I'd dial down the saturation a bit since bright red is a danger color.
Red is our school's color. The s...
All: you can check out his website (containing a portfolio) here: http://www.mihirgarimella.com/
Yep, I have wasted my life. I'm very happy for him, don't get me wrong, but this suddenly made me very sad for myself.