PowerSchool Monitoring

I work for a school district that uses PowerSchool for our Student Information System. We were in a difficult position when our previous vendor closed their doors abruptly in early 2011.

Pearson recommends taking 6-12 months to migrate data, train personnel and implement PowerSchool.

We had 60 days from the time we shut down our old system to the first day of school. Because of the short timeframe, we initially decided to pay a bit more to have Pearson host our instance of PowerSchool so we had one less thing to worry about.

After our first year, we felt much more comfortable supporting PowerSchool and started thinking about hosting it in-house. After some careful planning, we spun up two meaty servers and an ubuntu server to handle SSL, caching and load balancing between the two instances.

The servers and load balancer setup is a topic of another post.

For me, one of most stressful bits is making sure our users can access the system and it is performing at least as well as when we had it hosted with Pearson. Performance monitoring is lacking with the default install of PowerSchool so I decided to look elsewhere.

I had heard advertisements for New Relic from all over the place and decided to check them out. The free plan has just what I need; availability monitoring and response times.

From one dashboard, I can see that between the two servers, they are handling 150-200 requests per minute (during the summer) and most of the responses are under a second.

I’m still very stressed out about the first day of school and the deluge of users all trying to take attendance at once. However, with the New Relic monitoring, I can be sure that staff are on and able to do their job.

Oracle’s Instant Client Works on 64-bit Mac

Well, the day has finally come. Oracle’s instant client for Mac OS X works in 64-bit. Version 10.2 has been broken for a few years and Oracle did an update to 11.2 that I’ve had success with.

The timing couldn’t have been better. I’ve started working on a system to take our students out of PowerSchool, generate a username for them and manage our Google Apps domain for students.

So if you are on a Mac and do any development with Python or Ruby, go grab the newest version of the Instant Client and stop using work-arounds!

Exporting PowerSchool’s Race/Ethnicity

The federal government has moved to a two part question for race/ethnicity. You may have seen it on the latest Census survey.

The new method consists of two questions:

  1. Are you Hispanic? Yes/No
  2. Choose all Races that apply:
    • American Indian or Alaska Native
    • Asian
    • Black or African American
    • Native Hawaiian or Other Pacific Islander
    • White

With these, you get stuck into one of seven categories:

  • American Indian or Alaska Native
  • Asian
  • Black or African American
  • Hispanic
  • Native Hawaiian or Other Pacific Islander
  • White
  • Two or More Races

If you choose yes for Hispanic, it doesn’t matter what else you choose, you are stuck in the Hispanic category. What ever you choose on the race question is what category you are stuck in (unless you choose more than one, then you get the category of Two or More Races).

I could get into the whole philosophical aspect of how these categories work, but I won’t.

I will however, give you the code you can use to export this information out of PowerSchool in a quick export. (that’s why you’re here, right?)

Here is the infamous code, make sure it’s all one line (it may word wrap).

1
^(decode;^(FedEthnicity);1;Hispanic;^(decode;^(f.table_info;table=StudentRace;*studentid=^(id);fn=count;delim=);1;^(f.table_info;fn=value;table=Gen;field=Value;*cat=federalrace;*name=^(f.table_info;table=StudentRace;fn=value;field=RaceCD;dothisfor=all;*studentid=^(id));dothisfor=all);Multi))

Copying Your Ssh id rsa.pub to a Remote Server

This is a quick one-liner to copy your id_rsa.pub file to a remote server.

bash
1
$ ssh-copy-id username@remotehost.tld

And with that, you only have to enter your password once. Each subsequent connections will use your ssh keys.

Macbook Pro With Retina Display

I took the plunge and bought myself a Macbook Pro with a retina display. So far I’ve been very pleased with it. The display is amazing and the performance is great.

I realize some of this may be that it is so new, so I plan to do a full review of it in a week or two after I load it up with everything I need to run.

Vim

I’ve been using Vim for a few years. I knew the basics to get the job done but I never really got into the more useful commands.

Enter VimCasts. After watching just a few videos I feel I can get around and make my edits much easier in Vim. One of the big helps is not having to move my hands away from the letters on the keyboard. No arrow keys, no mouse.

Vimcasts are produced by Drew Neil. He also has a book called Practical Vim that I may need to pick up.

One thing I’m glad he’s done is to focus on just the core Vim functionality and not rely on plug-ins. This is great because sometimes when you ssh into a new box, you don’t need those plug-ins to be there. You don’t feel crippled without your usual plug-in.

That said, one plug-in I am glad I have (and have installed for SublimeText) is EditorConfig. It keeps your indentations size and type consistent for your source files. That is a topic for another blog post though.

My Comparison of Python and Ruby

When I started my current job, I started learning/using ruby to do some of my job’s repetitive tasks. At the time, everything I knew about ruby was self taught. The scripts I wrote were not well written, but they got the job done.

I wish I knew what prompted me to look into Python at the time, but for what ever reason, I did. I began to fall in love with Python. I would have to say the biggest draw was line 2 of the Zen of Python, by Tim Peters.

Explicit is better than implicit.

Run import this at a python command line to read the whole thing.

All the tutorials, videos and articles I had seen when trying to teach myself ruby had a different way to do things. The syntax would be different for the exact same function.

This was especially true when looking at Django and Ruby on Rails. With Django, you can’t just generate a controller and it just work. You have to wire up the URL to a controller and the controller explicitly calls a template. You specifically handle static files and nothing is assumed.

While this was nice for someone learning python and Django, it meant writing quite a bit more code and having to deal with static files in production.

Now, I have more experience with Python, a bit more with ruby and with various other languages. I’m finding that the exact thing I loved about python is the thing that prevents some of the beauty with ruby.

I love that you can take any object (a string for example) and everything you’d want to do to it is consistent.

1
2
3
4
5
s = "some string"

s.length
s.upcase
s.upcase!

All of these work in ruby. However, in Python, you’d have to do it like this.

1
2
3
4
5
s = "some string"

len(s)
s.upper()
s = s.upper()

When it really comes down to it, it’s all about preference. I’m finding that, even though I will have to work to fully understand it, I like the syntax of ruby.

DotFiles

I’ve found that a good set of dotfiles goes a long way when you hop in the terminal.

I have a fork of dotfiles over on github of the dotfiles Paul Irish uses. It has quite a bit specific to Mac OS X but can still be used on other systems.

I highly suggest that if you get into the terminal at all, go clone this repo and enjoy yourself!

First Post With Octopress

This is my first post with Octopress. I like the idea of a static blog so I’m going to give this one a try.