Category Archives: Personal

Reason for my Absence: Freshman Fall

The good news is that I’m done with school until February; I’ve been on break since the middle of December; everything has gone very well since I left. Still, I feel as though I should update my blog–even during the school year–from now on. I learned tons and tons of interesting things this fall, and I’d love to share them!

Oh yeah, and one of my friends (my neighbor, in fact) has started blogging, and I would never want to miss out on the fun. The difference is that he’s writing his own blogging platform, and I’m lazy and running WordPress.

Maybe I’ll do something cool with Django someday.

In the meantime, it’s good to be authoring some content again. I’ll start posting a lot more regularly (no, really, I will this time), especially since I’ll be authoring lots of cool software in 6.01 (Intro to Electrical Engineering and Computer Science I) next semester. Here’s what I’ve done since I left:

Wrote a Book

A long time ago, I started authoring (and nearly published) a blog post about how one could beat the SAT essay. I expanded that rough post into a much longer handbook that I lovingly call The SAT Essay Ace Template. You can get your own copy at http://satessayace.com. Kindle and print (!) versions are forthcoming on Amazon!

Almost Released Hawgrade GradeSolve

As I reread my blog, I realized that I hadn’t given any of my last summer’s work nearly as much love as it deserved. I released a beta version (that I redesigned and am almost ready to release) of a web application remake of Hawgrade that I call GradeSolve. Learn more at GradeSolve‘s website.

Joined a Fraternity

Or, as my girlfriend’s father calls it, a franerdity. I’m a pledge-member of Phi Kappa Sigma at MIT. Hopefully, I’ll post that I am a brother within a few weeks.

Lived Through Freshman Year

I did well, even with Pass/No Record taken out of the picture. I’m proud of how I did.

Started Writing More Software

I’m working with a friend to expand GradeSolve into something even more useful. I’ll probably be posting a lot of code snippets from my work.

Speaking of code snippets, I’ve been working with updating Django model data with user input from ModelForms. This would normally be trivial, except I’m getting my data via AJAX: I cannot simply render a ModelForm with data in a GET request, and I don’t think it’s necessary for all relevant fields to be present in the POST data for the update.

In other words, I want to update what a user tells me to update, and leave everything else alone. Simply specifying a model instance for a ModelForm does not work. Luckily, you can create a new dictionary to which to bind the ModelForm for validation. The dictionary contains the data supplied by the user, and form fields left blank are automatically populated from the model instance. Here’s the method:

def edited_form_data_merge(post_data, model_instance, form_fields):
	data = { }
	for field in form_fields:
		if field in post_data:
			data[field] = post_data[field]
		else:
			data[field] = getattr(model_instance, field)
 
	return data

The method should be invoked like so (Subject is a model, SubjectForm is a ModelForm for Subject):

from x.y.z import Subject, SubjectForm, edited_form_data_merge
# ...
subject = Subject.objects.get(id = subject_id)
frm_data = edited_form_data_merge(request.POST, subject, SubjectForm._meta.fields)
form = SubjectForm(frm_data, instance = subject)
# ...

The form will always validate (assuming correct user input), and will reflect only changes: if data is not specified by a user, then data from the model is used instead.

One very interesting part of this is SubjectForm._meta.fields. This collection contains a string list of fields that makes it very easy to create the new data dictionary.

It’s good to be back!

Whoops.

I know I haven’t posted for far too long. It’s really embarrassing, especially since I now aspire to be an admissions blogger at MIT.

Wait, what?

Yeah. I committed to MIT. I’m going to be a Beaver (or maybe an Engineer or an IHTFPer or whatever), and I couldn’t be happier! So now that the college admissions process is done until I (hopefully don’t have to) apply to grad school, what am I up to? Moreover, what have I been up to for the past month and a half? Why haven’t I been blogging?

I could post myriad excuses, and depending on how the rest of this blog post goes, I very well might. However, for the time being, I think it would be more appropriate if I directed your attention to Hawgrade!

Hi, Hawgrade!

Hi, Hawgrade! What the heck are you, anyway?

You can actually see the live version of this website at www.hawgrade.com. Now, to answer the caption’s snarky question, Hawgrade is grading for the Twenty First Century, developed with the help of one of the social studies teachers at my school, Dave Hawley. Mr. Hawley also goes by Hawley, hence the name Hawgrade. The website will eventually join forces with an iPad app, and the two will offer the following functionality:

  • Easy, paperless submitting of student papers.
  • Grading that stores data remotely. Teachers can keep their students’ papers anywhere!
  • Corrections for the most common student mistakes built in. This makes grading most papers as simple as highlighting passages and pressing a few buttons.
  • Recording voice comments to end the time consuming process of actually writing comments on students’ work.
  • Returning students’ corrected papers over email.

Most of that functionality has been implemented by now. It’s a wonderful culmination to my high school career, although it is unfortunate that I (a second semester senior) actually have to work on something! It’s also an enormous project. Maybe I’ll post some of my secret, proprietary code samples on this blog.

Regardless, I’ll definitely start posting more!

United States Senate Youth Program

I’m leaving for Washington, D.C. on Saturday. There, I will be attending the United States Senate Youth Program (and you thought nerdy robot builders/coders couldn’t also act political!). I am one of two people from each U.S. state (plus international military bases and D.C.) to be selected as a delegate to the program. Needless to say, I am honored to be able to go.

Here’s a press release where you can read more.

I have purchased my wardrobe. I have connected with the other delegates over Facebook. The next step is to pack and leave for the airport at an egregiously early hour on Saturday morning. Stay tuned as the week of a lifetime unfolds!

Robot Update

I’ll admit it — I am way behind of where I normally am robot-wise at this time of year. At this time last year, I was spending the better part of my weekends toiling over the mill trying to get Coercion done and troubleshooted. This year, much of the time I would have spent building robots has been dedicated to visiting my dad in the hospital over an hour away, as he has been very sick. Still, Motorama is about a month away and it will not wait for me. It’s time to get some robots built.

I have already designed Cannon and Coercion’s new blade (with some slight changes from the original post). Cannon’s blade and Coercion’s blade will be fabricated by Team Whyachi, since I am not overwhelmingly comfortable machining neither titanium nor S7. I don’t consider our mill’s CNC reliable enough to machine a hundred dollars worth of material at once. Besides, the S7 blade needs to be heat-treated to avoid another Bot Blast debacle (the blade bending 30 degrees).

Here’s what will need to happen over the course of the next month:

  • I will need to receive Coercion’s blade and Cannon’s beater from TW.
  • I will need to CNC mill Cannon’s body.
  • I will need to create some blade hubs on the lathe.
  • I will need to fashion and harden an S7 weapon shaft for Cannon.
  • Lots of testing.
  • Ordering a few new parts.

Overall, it should be manageable. There are a few three-day weekends coming up that I can completely dedicate to “botting it,” and there is still a month until Motorama. The race is on. Let’s hope it ends in a trophy…

The good news is that I converted all my SLDPRT drawings for Cannon’s sides into DXFs, then created GCode from the DXFs today.

I use GMail to transfer the files between my dad's PC (which has the GCode generation software) and the mill-driving PC. I use Mach3 to drive the CNC.

I use GMail to transfer the files between my dad’s PC (which has the GCode generation software) and the mill-driving PC. I use Mach3 to drive the CNC.

Whoa!

I realize it’s been a long time since I’ve posted, and I apologize for that. I’ve been swamped by school and golf lately. Hopefully I will be able to get back to the tech blogging pretty soon. I’m currently enrolled in a class on game design in Python 3.0 at school so I will be able to post some neat things in the near future!

Until then, here’s what’s going on in my life:

  • My school’s golf team made the state championship tournament for the first time three years!
Golf Team
The team before a match.
  • I’ve finished coming up with what schools I’m applying to and have started writing essays.
  • I have received National Merit Scholarship semifinalist status and have begun working on the application process to become a finalist.
  • I have been working hard on improving my SAT score.
  • I have been going to school every day. Fun stuff!
  • If I ever have spare time, I have been working on the Python Challenge. I don’t think it would be that hard if I knew Python as well as I know C#. However, I do not, so each challenge involves going through pages upon pages of documentation.

It suffices to say that my life has been eventful, stressful, dull at times, but extremely fun. I’m really looking forward to what the next few months hold for me.

Project Railgun

My friend David chatted me on Facebook this morning and told me that me he’d finally figured out something cool we could build together – “a huge catapult or something”. His anticlimactic message inspired me, however. For the past few years, there have been three things I have really wanted to build but have not for some reason:

  1. A barely-street-legal electric bike
  2. An antweight robot with an eggbeater weapon (the fairyweight has been taken care of!)
  3. A railgun

David’s mentioning of “catapult” gave me an amusing idea: what if we built an electric catapult of sort? What if we built a railgun? I looked on YouTube a few weeks ago and found this small, interesting specimen. It seems to use 3 120 microfarad photoflash capacitors charged up to 330v – a fairly cheap project.

If David and I decide to build this device, I will update this blog with our progress. This is a fascinating project for two high schoolers to undertake – we both took and did well in AP Physics last year but there are a huge numbers of variables that we’ll have to deal with and there is a large amount of danger considering the energy we’ll be storing. Still, it’s nothing we won’t be able to handle. After all, I’ve only been building combat robots for nine years!

Here’s what we’ll have to consider:

  • Rail material. I’ve read that copper is good but I have also heard of railgunners (I guess you could call railgun hobbyists that!) using aluminum and even graphite as materials.
  • Armature material. Obviously, making complicated armatures for a hobby railgun seems pointless since the railgun will either melt it or launch it in such a way that it will deform upon striking a barrier, so we’ll need some other kind of solution. I want to try metal BBs, but I’ve also heard of small railguns using everything from aluminum foil to nuts.
  • Capacitor capacitance and what voltage we want to use. I found a cheap source of photoflash capacitor chargers online (they sell for ~$5) that can charge capacitors to several hundred volts with the help of a power supply. We’ll have to do some calculations to see how large a capacitor we should use. There is a lot to consider – Lorentz forces on the rails (keeping our railgun from breaking), the massive losses (this Princeton railgun writeup states that good hobby railguns achieve an efficiency of 0.1%), how massive our projectile is, and how fast we want to shoot it.
  • How to activate the railgun. We will need to design some sort of large switch that will have four modes: fire, charge, discharge and disconnected. We will need to be able to activate it without shocking ourselves or anything else (and without spraying sparks everywhere). We also want to avoid welding the switch shut.

With all these worries and potential problems, I feel crazy even thinking about attempting something like this with college apps happening – it’s a near-certainty this project will get tabled come, oh, say, August 29th when I go back to school. I can’t wait to get started!

And so Begin the Crazy College Apps

Today is August 2, 2012. Yesterday was August 1, 2012. Why is that special, other than that I can now say later this month, I will be entering my senior year of high school? Ladies and gentlemen, this year’s Common App is out. The essay topics aren’t any different, but the release comes as a reminder that college crunch time is coming (and has helped me realize that there are limitless alliteration possibilities with the word “college”).

I have two shots at the SAT to get my score up just a little bit in hopes that it will give me just a little edge. I also have to take an SAT Subject Test on the date I don’t take the real deal. I will need to figure out which test is right for me. I have realized in the last 36 hours or so why the autumn of one’s senior year is so crazy. Come August 29th, I will have to balance fall golf, four AP classes, SAT studying, “Common Apping” and applying to two non-Common-App schools. My amazing 10:30 bedtime from junior year is beginning to seem out of reach, at least in the short term. It’s a classic case of “pick two of friends, sleep or grades” situation, except I only have time to pick one.

At the moment, my big concerns lie with the SATs and application essays – I want to make the best impression I possibly can. Unfortunately, I can’t rely on chance to bring my SAT scores up. However, I have a study book and I’ll be working from that. One thing that has really stuck out to me about the entire college process is its expense. The SAT is $50 to take and costs extra money to send your score to more than four colleges. College application fees are in the $75 range. I will probably end up spending something in the $900 range on applying to schools, an amount in pales in comparison to the $40,000+ per year that college will cost, even with financial aid.

Because of the already immense cost, it is hard to justify spending in upwards of $150 per hour on an SAT tutor or a thousand more on an essay reader. Does it bother me that I will have to work excruciatingly hard to get into one of the schools I want to attend? Not in the least. I’ve never been a stranger to effort, and all my extra work will make (hopefully) getting in all the sweeter.

With all that said, I still have a month of summer – one last month of freedom. I’ll blog regularly about my progress.

Introducing Myself

Little is more important than a first impression, and this post is exactly that – a giant “Hello, World!” I’ve begun several blogs in the past and have written some articles that based on the occasional comments have proven useful to a few (lucky) people. I aim to do better this time. This blog will be updated regularly with interesting, relevant information about a wide variety of my musings, from what I am doing at work to code to electronics to robotics. Who knows, I might throw in the occasional sports or car post. My interests are varied enough that there ought to be something on this blog for everyone (once I’ve written it). Heck, I even play golf.

I hope you will enjoy what I write here and provide feedback on my projects. Constructive criticism never hurts; no one ever improved by being told he is great when in reality he is not. As much as I want to help the Internet community, I would like the Internet community to help me.

Now, a little about me. In my biography on this site, I wrote about how I am an information technology intern at RMC Research Corporation in Portsmouth, New Hampshire. I worked there in the summer of 2011 and I decided to come back to do more. Last year, I worked on two main projects:

  1. Student Voice, a jQTouch-based mobile web application to improve communication between teachers and students. In hindsight, jQuery Mobile would have been a much better idea to use due to jQTouch’s bugs and lack of active development. Both the teacher portal and mobile web app are currently in in-house alpha stage and we will be seeking feedback on our prototype soon.
  2. SendTo, a small C#-based web application that makes sending large files over email an easier task for RMC employees. Before SendTo, people in the company used FTP to send files that were too big to attach to emails, which would have been fine were it not for the non-technical background of most RMC employees. File transfer support calls have been cut significantly.

One of the best parts of my internship at RMC is that it is meant to be as beneficial for me as it is for the company. That is, I am free to work on personal projects as well as work-related projects and I have been tasked with finding company-benefiting tasks that are interesting to me. Thus, I also worked on many small, side projects last summer.

This year, I will be developing a course about a BASIC Stamp microcontroller, working on a PhoneGap app built with jQuery Mobile, completing day-to-day tech department tasks, and continuing to work on personal projects.