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!
Show HN: An app for middle school students, made by a middle school student.
21–26 of 26 posts
Re: Show HN: An app for middle school students, made by a middle school student.
#22My 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?
Re: Show HN: An app for middle school students, made by a middle school student.
#23I'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 to be only two things I can do: move assignments around or clear the list. I might be wrong here, but I don't see the point of moving assignments around. This might be the first place where you fell into the trap of doing something cool that is not very useful, but I could be wrong. I think the help text said I should be able to delete things, but I couldn't get that to work. The thing that makes sense is the Clear button. This prompts me correctly to clear completed assignments, and does so. Since the rest of the "Manage" mode seems not very useful, and modes in general are a bad sign when designing stuff, you should remove the manage mode and just put a "Clear" button in the top left corner. Since you are clearing completed assignments, it might make sense to try putting "Clear Completed" on the button, but that could be too long so I would try it and see how it looks. But right now, hitting "Clear" is a bit scary, since it makes me worry that it might actually clear all my assignments. (Your pop-up confirmation of course is an important thing and I was glad to see you added it, but users should be able to have as good an idea as possible of what they are getting into when they tap a button!)
Now, when I am not in manage mode there are a few issues. First, I noticed that when I tap on the checkbox this moves between current and completed. This makes sense, but the checkbox is very hard to tap. Instead, leave the checkbox as a way to indicate to the user if things are completed, but make it so i can check off an assignment by tapping anywhere in the entire table cell. One of the most important things in a touch interface is to make sure the tappable areas of the screen are very large and unambiguous. In fact, for many of the controls on the iPhone, the area you can tap is much larger than the on-screen representation. (This type of thing is part the reason Apple had to rebuild their OS from the ground up to be used with fingers instead of mice.)
One more thing about Assignments. If I have a Clear button to clear up clutter, then why bother moving things between Current and Completed? Completed is there to prevent cluttering up the Current assignments. You should pick one way to reduce clutter. Here's what I would to. Make this just a simple list with no sections (not current or completed.) Leave your checkboxes in there and tap the cell to check on or off the box. But, don't move anything around when you tap on them, just leave them there checked or unchecked. As long as my list is pretty short, I can still tell at a glance how many assignments I have left to finish. Once it gets too cluttered with finished assignments, the user can clear out the checked ones by clicking a "Clear" button at the top. Or, better yet, if you have things this way, you can change that button to say "Clean Up", which makes it a little more clear (no pun intended) that when the user clicks that they will not be removing their unchecked assignments. As a bonus, you remove the need for the "Current Assignments" bar in the table view, freeing up more room for the list to fit on the screen (which is even more important now since you will have checked off items floating around in the list.)
Re: Show HN: An app for middle school students, made by a middle school student.
#24Nice 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…
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 style. I'm not sure where your buttons came from for Hall Pass but they are a little weird and are not standard iOS-styled buttons. Finally, one more nit pick: in Assignments, the blue box at the top to add assignments can use a little adjustment. First, the cyan background does not match the red theme, as I mentioned, but more subtly I think it is a little too small as the "Tap here" text is up too far against the edges of the control. As I've mentioned earlier, you should always try to stick to convention: if there are other text boxes you've seen, make yours the same size.
One last point. Your launch screen has a logo for your app. This is totally fine and it's not really a solid point of criticism, but it's something to think about. What Apple encourages people to do is to make their launch screen be a image of their first screen, but without any data (since it needs to be the same every time.) In your case, it would be the "Calendar" tab, with nothing in the grey area at the bottom. So, remove the table view, take a screenshot, and make that your launch screen. When users launch the app they will see the calendar tab as the app opens and the table view will "pop in". Check out the other apps on your iPhone like notes and clock to see this in action.
I hope this has been helpful. Don't take this as an indication this isn't great work. You are more competent at iOS programming just by looking at this than many wannabe hackers. Great job. You got a lot of details right. I know how much work it was to get all this working, even though it probably seems simple to people who pick it up and just start using it. Just like when you clean your house the easiest thing to notice is that you left a sock on the floor, when you build software the easiest thing to notice is where it needs work, not all the work that went into what is there already.
Main things to remember: go with the flow, if something has been done before, just copy it (and maybe tweak it), don't be too clever. Think about what your users will actually use (do they really need to be able to type in 17 minutes in Hall Pass? Do they really need to be able to switch between 6th and 7th grade schedules in a single tap?) Every control you use or layout you design has consequences of what it makes easier, and in turn what it makes harder. Especially on a tiny screen like a phone. Always think about what things your design makes harder, not just what it makes easier. For example, if you add a segmentation bar, that makes switching easy, but moves some information off the screen, so you have to scroll to get to it. Also, if you add a segmentation bar for one thing, it means you can't add one for something else that might be better for it. If you use a spinner instead of a text box, choosing those choices is easier but one-offs are harder. Which is more important? Finally, don't be afraid to throw things out. Most of the feedback I've posted requires you to remove a lot of stuff. There's a lot less moving parts. In fact, by the end, you might actually have less code than you do now, despite making the app much better. This is normal and is a good sign that you are doing things correctly. If you are always adding new stuff and never removing stuff (or always adding more than you remove) then you very well might be going down the wrong track.
If you've read this far, I've got some questions for you. How did you get into this? Were your parents involved? How could we get more kids like you to try hacking on their iPhones?
Great work and keep it up! Finally, here's a short bibliography if you are interested in reading more:
- http://www.amazon.com/Tapworthy-Designing-Great-iPhone-Apps/...
- http://nathanbarry.com/app-design-handbook/
- Anything by Tufte
Re: Show HN: An app for middle school students, made by a middle school student.
#25All: you can check out his website (containing a portfolio) here: http://www.mihirgarimella.com/
*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.Re: Show HN: An app for middle school students, made by a middle school student.
#26Nice 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…
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 pass…
> 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 saturation might be a bit high, though, so I'll change that. I just used the default red navigation bar that came with PrettyKit. Overall, though, I'll work on trying to come up with a single color scheme.
> I'm not sure where your buttons came from for Hall Pass but they are a little weird and are not standard iOS-styled buttons.
Yeah - they're BButtons (https://github.com/mattlawer/BButton). I saw them on CocoaControls and thought they would be kind of cool. They may be overboard, though.
> I think it is a little too small as the "Tap here" text is up too far against the edges of the control.
I do think it is too small - I'll try to make it larger while still fitting in the toolbar.
> When users launch the app they will see the calendar tab as the app opens and the table view will "pop in".
I'll look in to doing this.
> Think about what your users will actually use.
Great point - I was hoping that the feedback feature would be useful for this.
> How did you get into this?
After 6th grade, I developed a simply prototype of an app to handle the hall passes. My technology-education teacher saw it and asked me whether I would be interested in developing a much broader app to replace the agendas. This kind of got me started - I asked my classmates for what they would like to see and started developing those features.
> Were your parents involved?
Not really - they gave me some feedback and encouragement, but not any help with developing the app.
> How could we get more kids like you to try hacking on their iPhones?
I think startups like makegameswith.us (and CodeCademy to some extent) are helping with this. Having a computer science class (or teaching programming in, say, tech-ed) as early as middle school would be great.
> Great work and keep it up! Finally, here's a short bibliography if you are interested in reading more...
Thanks! The App Design Handbook looks really great...
Again, thank you for taking the time to go through the app and come up with this feedback. I'll definitely implement some of your suggestions...