Presentation: RSS Like A Ninja
Today, I gave a presentation to the NC State Web Developers group about "How to RSS Like A Ninja." If you weren't able to make it out to the presentation, here are my slides for your enjoyment.
Executing a PHP Code Review
Today, we had our first code review with our current development team. For those of you not in the software industry, a code review can best be defined by someone else...like wikipedia!
We have done code reviews in the past, but they were very informal and their effectiveness could be debated. There were a few problems with them, mainly:
- We weren't entire sure how to do one properly
- They degraded to an attack on the developer, not the code
- They weren't integrated as part of the process
- We didn't have enough people looking at the code
Now I am not saying we solved all of these problems, but we started moving in the right direction. At TEK-X, I had gone to a session by Arne Blankerts and Sebastian Bergmann about code reviews that was extremely helpful. I always felt like code reviews are for large teams, but Sebastian and Arne gave me some tips about how to implement them in our small team. It seems for us, the more formal code review process where people have defined roles would not work so well. What we did instead was to have our developers use the projector in our office to "present" their code. Our roles were loosely defined as a presenter, a note taker, and two developers to critique the code.
This approach worked really well! We closed our office door, put most of our computers to sleep, and concentrated on the task at hand. Fewer distractions led to more focus and a better session. We were able to make it through a good bit of code, finding all sorts of stuff that could be improved.
One of the major mistakes we had made in the past was letting the criticism get off the code and onto the coder. To try to curb that a bit, we all had a chat beforehand to set forth some guidelines. As the senior developer, I led with the idea that when we are critical of a piece of code, we're talking just about the code and not about the developer. The whole purpose of doing these code reviews is to make everyone better at development, not to call anyone out or to make someone feel bad. I feel like it takes a certain amount of maturity for developers to take criticism of their code and not take it personally, and my guys didn't disappoint. Us senior developers also made a conscience effort to be cordial when doing our criticism and I think it paid off. Everyone participated and still liked each other in the end
After the session was over, I asked the guys what they thought and they loved the feedback. They definitely wanted to do code reviews more often, so we decided that every Tuesday afternoon we would reserve for code reviews. I think this will help us stick with it and make it part of our process.
If you have never done a code review in your team, I'd suggest giving them a try. It is a great way to give feedback to your developers, and you may learn something while you are at it.
Integrating Creativity and Entrepreneurship at NC State
I am an entrepreneur at heart. I usually see opportunity in places where others see problems, which means I typically think about problems outside the proverbial "box". I think that makes me a better programmer and employee, but it also means I drive myself (and those around me) crazy sometimes. There are just so many opportunities to create and invent...more than I can sanely do....although I try sometimes.
I'm always looking for ways to integrate those values into our work at NC State, while also promoting web development, PHP, and communal open programming. That led us to try something new with our part time employees which I think will be very interesting. We employ 2 student developers, and since they are staying in Raleigh for the summer, they will be working almost full-time for us until school starts back in the fall. So for the summer, we are going to allow them to work on a 20% project.
20% projects are basically a freedom to work on a project you are passionate about for 20% of the time you are at work. A few development shops (most notably, Google) have given their employees the freedom to do 20% projects. If it's good enough for Google, why can't it be good enough for NC State? We brought the idea up to our guys, and I think they were cautiously excited. The only direction we gave them was that it should be something that they are interested in and that could help NC State. The rest is up to them to find an idea and then execute it.
I'm incredibly excited to see what they come up with. It may be awesome, it may be simple, it may be impossible. But I think the key is to ignite in them a sense that development can be about creativity and innovation, not just about code. This is also a chance to instill a culture of entrepreneurship and creativity in our larger work environment (something I feel is missing). While we can't do this ourselves in our jobs, we can do it for the employees we manage. The best evidence to implement this at a larger scale is if our guys come up with something truly awesome. I have faith they can do it, now it's a waiting game.
I'll keep everyone informed about what they do. Should be fun!
Goal Update for January 2010
I posted a lot of my goals, both personal and professional, at the beginning of the year. To keep myself honest, I figured I would post an update for what I have been able to accomplish so far.
- iPhone Developer Contract for NC State is SIGNED, SEALED and DELIVERED!
After countless hours by a myriad of people at NC State, we finally have a campus-wide iPhone developer contract. I posted a blog post on our Outreach Technology Blog, and before the end of the day got messages from a few other schools inquiring how we did it. I think that just shows how inflexible Apple has been with regards to securing iPhone Developer programs for higher education. It really is a shame. Apple was all over higher ed many years ago, but now it seems they have essentially written us off as less important. Either way, NC State has accomplished this, so expect to see some iPhone apps coming from us very soon! - Lost Weight and Ran a Race
So far, I have lost nearly 10 pounds since the first of the year. I have tracked my food and workouts every day...working out 21 of 31 days in January. I also ran the Krispy Kreme Challenge and finished! I felt great about my accomplishment, and feel much better by losing the weight. Still have a few more pounds to go to get back to my Weight Watchers "goal" weight, but I am well on my way. - Mobile Committee Proposal Under Way
I wrote a first draft of a proposal for an official Mobile Committee and sent it to a few people. We have got it about 80% of the way there. Everyone in the current mobile group really embraced the idea, so we hope it will be well received by the higher-ups. It is an important step to take, but we are well on our way. - Big AmberCube Launch
This is something you will just have to take my word on right now, but we are about to launch a very big initiative with AmberCube. Garrison and I have been working nearly every night, with the hopes that we can launch the application very soon.
- First Web-Dev Meetup of 2010
This was in the first week of February, but it still counts. We had about 40 people at our first web developers meetup, where my friend and colleague Jen did a presentation on Web Usability. There were people from all over the University, private industry, and even other neighboring schools. It was well received, and we are already planning the next meetup next month. - NCSU Dining Mobile Sub-application
At the end of last year, we worked with the University Dining folks to get access to their menu data. A few weeks ago, we started working on the mobile sub-app so that we could make the menus mobile-friendly. We spec-ed it out, and our part-timer started working on the project. It should be done here in a few weeks. Good stuff all around.
That's pretty much it, but that is a whole lot of stuff. January was busy, and February has started out with a blaze as well. Gotta keep that momentum going...
COMPLETE – Krispy Kreme Challenge 2010
It is 31 degrees.
Ever so lightly, snow begins falling from the sky.
And here I am, with some of my best friends, getting ready to experience one of the most awesome traditions at NC State. The Krispy Kreme Challenge.
Going in, I knew I could handle the running. The course was about 4.6 miles in total. I knew I could do that, but outside? At 31 degrees? I have never done that before. The doughnuts were a different story. I figured I could eat them, but I learned a bit later just how much I had underestimated the power of a little, round chunk of doughy heaven.
There is a guy in front of us that is running in a speedo...and that's it. There's also a dude in a gorilla costume, a banana costume, and a guy running around with a giant doughnut on his head. I'm thinking to myself "These are my people! NC State friggin rocks!". Behind us are a few UNC folks. We all decide that if we were gonna puke, we should do it in their direction.
Finally, it's time to start. "On Your Mark. Get Set. GOOOOOOO". Bam, Andrew takes off like he was shot out of a cannon. I'm fairly sure I am running over people to keep up, but we're even before too long. The whole crowd is running at a very fast pace. We are a block away from Krispy Kreme and a guy, escorted by Raleigh's finest, is on his way back. That dude must have been running like he stole something. Time check...16 minutes down. Holy crap! We ran that fast! We run past mountains of doughnuts before some volunteer FINALLY hands me my box. I open it up and think to myself "Oh S**t, that's a lot of doughnuts".
I squish 2 together, and get them down quick. Next up, I squish 4 together and start chomping. I make my way around the building and get some water and start alternating bites with water. The bites are so sweet my jaw starts to hurt. I squish the next 4 together and start eating it. I look at Andrew with an I-don't-think-I-can-do-this look. He says "Don't think, just eat". I black out for the next few minutes and when I come to, I am on my last 2 doughnuts. Must. Get. Water. I dunk my last 2 in my water, shove them in my mouth and bam. I did it! 2400 calories and 12 doughnuts down, 2+ miles to go. Andrew and I chuck our boxes in a huge pile, right beside a guy projectile vomiting. Time check...35 minutes have passed. We start our jog back.
Dave find us as we are leaving KK. He's holding his remaining doughnuts like a football. He ate 4 of the 12. We call him all kinds of affectionate names
Andrew and I are jogging pretty good and keep telling each other "follow the yellow line. We can do it". We turn to jog up the hill to the final turn onto Hillsborough Street. I'm feeling good. We're about 3/4 of a mile from the finish line and I tell Andrew the finish line is only a quarter of a mile away. He threatens me with bodily harm if I am wrong. Time check...50 minutes passed. We're good.
I see the finish line. I take off. Whoa buddy...too fast. It would suck to barf this close to the finish line. A few seconds later and I cross the line. Erin and Leah are yelling at me. I imitate Rocky, throwing my arms to the sky in celebration. Official time...56 minutes, 49 seconds. I made it under and hour. SUCCESS!
Andrew finishes right behind me. Dave is a few minutes back, but makes it in under an hour. None of our crowd threw up. We did it. Our wives are somewhat proud. We people watch a little bit. Saw a guy who recreated Justin Timberlake's SNL skit for "D**k in a box". Another dude is dressed like one of the Reno 911 cops. Wow...a chick dressed like Cyndi Lauper. Good times, great people. We are NC State.
I'm cold. Tired. Full of a whole bunch of doughnuts. But I couldn't be any happier. I accomplished something today and it feels great. As we walk back to the car, I am already thinking that I will do this again next year. And that there is no way I want another Krispy Kreme doughnut for a while
Open Source in Higher Ed – Give a Penny, Take a Penny
I love open source software. The sharing, the collaboration, the community around it. For those that know me, you know that is right down my alley. Working in higher education at NC State, there are many services that I know would not be possible without our access to open source software. Our campus homepage uses jQuery, we are a huge PHP shop, and MySQL provides database services for a lot of apps on campus. But open source is more about consuming, it's about contributing back.
I know you have all seen those little "Give a penny, take a penny" trays at convenience stores. There are a few pennies in there, and if you need one, you take it. But there is also an inference that if you have an extra penny, you should throw it in for someone else. Open source software is not really any different. I can't count how many open source solutions I have implemented, and without those solutions, I would have wasted valuable time and energy recreating something that was already done. Why not provide the code that I write for some other poor soul out there trying to solve the same problem? In my mind, that is just common decency, especially when my time is paid for by the tax payers of the State of North Carolina. If you work in public service and DON'T share your code, I may just call you selfish.
People really and truly appreciate the sharing of your code. As a perfect example, we have open sourced the code we created for the http://twitter.ncsu.edu site, making it free to download, implement, change, whatever. A few weeks after we released the code, I probably had messages from 5-7 other Universities who had downloaded the code and had plans to implement their own twitter site. Today, I got a message from one of those people that I had been helping over the past few months stating that they got their site up and going! Check out http://twitter.vanderbilt.edu! Then I also got this nice tweet from them:
I'm not saying that Vanderbilt couldn't have created this on their own. I'm sure they could have, but I'm sure they have better things to do than "re-invent the wheel". Now Vanderbilt's faculty, staff and students can benefit from the same code as NC State's, and that is a very powerful and meaningful thing.
Call this a plea. Call it a "call to action". But the fact is, if we are creating software at a public institution, we should be open sourcing it, no matter how big or small the codebase is. If you are creating software, realize the difference you can make for other developers by making your work freely available. Not only will it make you feel better, but it will probably make your code better because you won't want other people to see how you hacked some junk together.
The next time you download WordPress, or Drupal, or jQuery, or Linux, or Firefox, ask yourself what you have given back to the open source community.
Krispy Kreme Challenge
I may have done something stupid. I signed up to run in the 2010 Krispy Kreme Challenge. For all those that are not part of the NC State family or don't have a clue what it is, lemme lay it down for you. Run 2 miles, eat a dozen Krispy Kreme doughnuts, run 2 miles back. In under an hour.
Last year, ESPN was there to cover the festivities, so it's kind of a big deal around here. There were over 6000 runners last year! The event started in 2004 as a dare between some students, and it has quickly caught on. I have wanted to do it for a few years now, but never really had the nerve. Then one night, Erin and I were out to dinner with our bestest friends Andrew (my old college roommate) and Leah, and we started talking about it. Andrew and I decided we would do it, and as soon as I got home I registered online. No turning back now.
While not new to running, I have never run in a race before. And it's gonna be cold because the race is at 8:30am in friggin February! This should be fun. I will post my time, doughnuts ate, and pictures upon the completion
NC State Goal for 2010: Inventory the (NC State) Web
2009 brought a great deal of organization to the web development and design community at NC State. I played a large part in that by organizing the community, finding us an online home, and getting people excited about what we could do as a community.
The idea of inventorying NC State's web presence came from the community, and I would like to help push that through in 2010. My friend and coworker Nick started championing the idea in 2009, so I want to help support his effort and do what I can on my end.
I won't really get technical here and talk about implementation strategies, but I will tell you what I would like to see. I'd like an online repository of all the websites and applications that are owned and operated out of the ncsu.edu domain. This would have critical information about the site like who it belongs to, who is the technical contact, where do the files live, etc. Basically, a who's-who of NC State websites.
Just putting this in writing is scaring the bejeezus out of me. I instantly go to that place where this is impossible. What are the challenges? Oh lemme see...
- How do you gather all this data the first time?
- How do you keep it all up-to-date and relevant?
- There are tens of thousands of websites under ncsu.edu, how do you even get in touch with all those people?
- I'm sure there are more....
I'm not going to pretend that these questions are easy to answer, but I think we can get part of the way there. Nick is actively working on a locker renewal system, which will force everyone on campus who purchases web space from OIT to renew that space once a year. Perfect time to get some good information about who they are and the sites in that webspace! Will that be a complete list? No, but it will be better than what we have now which is nothing. And since there is a yearly renewal cycle, at least the data won't be years out of date...just months
So what are the possible benefits to having this data?
- We can track down sites that are orphaned or out of date
- Find a broken link on a web-page? We can easily automatically contact the right person so it gets fixed.
- We can see who is developing what on campus
- Easily transition ownership or responsibility of web space
- And again, I'm sure there are more...
At the end of the day, the best benefit I can find is related to a previous post of mine talking about branding at NC State. I am a firm believer that you can't start to improve on your brand until you know who is speaking on behalf of you, and right now we have no idea who is speaking, or what they are speaking about. This system will help us get a better grip on that.
I think this will be something that we can definitely achieve in 2010. This is also a goal where I am not really the lead guy on, but I will try to help Nick and the rest of the folks on campus working on the problem. What do you guys think? Good idea or foolish?
DISCLAIMER: These are my personal goals for NC State in 2010. None of this has been signed off on or anything like that, it is just what I hope to accomplish in the new year.
NC State Goal for 2010: More Mobile
2009 got NC State started on a great foot when it came to providing content to users on mobile devices. We launched http://m.ncsu.edu in September with no initiative, no funding, no nothing. The only thing we had was a group of passionate people interested in doing something powerful and beneficial to the University ("Passion Rules!" as our new Chief Communication Officer Joe Hice likes to say). And the project was a great success! We got a lot of excellent press and nothing but praise from the higher ups.
Pro-tip: Despite popular belief, you don't need an official initiative or bloated requirements to do something worthwhile at NC State. This mobile project is proof that with a little imagination, a lot of hard work, a community-driven attitude and the RIGHT people in the RIGHT place, you can make a HUGE impact. Being willing to take a risk doesn't hurt either.
Later on in the year, the library launched their own mobile site at http://m.lib.ncsu.edu. They have a lot of very interesting apps that help out library patrons and are using the same code and design principles that the main mobile site is using. And because I am the coordinator for the project, I get to hear from lots of other people who are wanting to do mobile sites. Those voices have gotten much louder towards the end of 2009 and subsequently into 2010. And while what we have done already is important, this post is about what we will do in the future, so on to the goals!
Acquire an iPhone Developer License for NC State University
I worked really hard to get this goal realized in 2009, but Apple and NC State couldn't seem to come to terms with the contract. It sounds so simple. Just pay your $99 and you get to put apps in the app store, right? Nope, not when you are a state organization with some (in my opinion) overly cautious laws and lawyers. Then you have Apple who was unwilling to modify any language in the contract to get us on board (thanks Cupertino...really? You guys dropped the ball on this one). While both sides failed to connect in 2009, we have a new plan for 2010 and are moving forward with it. We WILL get this done in 2010!
Complete our Mobile Best Practices Guide
My vision is to have a resource that developers can use when they want to make their site or web application mobile friendly. Part of this will also be a guide for administrators to consider when dedicating resources (people and money) to mobile projects. The University is desperately in need of some continuity and consistency in branding, and since the mobile presence is very small so far, I think this is an excellent place to start. Best practices, user-interface design, approval procedures, etc. can really help NC State becoming a leader in mobile resources for higher education. Of course I am not going to do this by myself, but if I can continue to be a catalyst for this, I will work hard to see this goal realized.
Collect Mobile Apps and Sites
It's always good to know what kind of resources you currently have. If you don't know what you have, you don't know what you need. I'd like to see us collect the existing (and future) mobile applications and websites into a great, accessible resource that our current students, alumni, faculty, staff, and future students can use to get the info they need about NC State. This includes collecting our future iPhone apps, Android apps, mobile-friendly websites, everything. A one-stop shop for mobile at NC State.
Launch the new version of m.ncsu.edu
By trade, I am a programmer. I see a problem, envision a solution in my head, and can sit down and write the code to solve the problem. In this case, the problem is that we need a mobile framework so that people all across our campus (and others like, UNC) can develop code that can be specific to them, but also be maintained and re-used. It would include much of what the current website does, including device detection, but would also entail much much more. It would give us an awesome foundation to build something really special, and I am totally pumped about it! And of course, it will be Open Source, freely available to anyone and everyone that wants it (cause that's how I roll).
Funding and Acknowledgment
The mobile project from 2009 was really just an interested group of people that wanted to accomplish the same thing. While we accomplished A LOT, in 2010, we are going to need to solidify the group and be acknowledged by the University as a working committee. For anyone in higher ed, you probably hate that "committee" word, but it is a necessary evil to move the project where we want to. We need to secure funding for employees, training, and resources. To get that funding, we have to be more than "a group of people". The make-up of the group will probably be very similar to what we have now, we will just be more official
Features, Features, Features
NC State needs more of it's tools to be mobile friendly. In 2009, we started building a foundation to get the NCSU Dining menus on the mobile site. We need to make that a reality in 2010. We also planted the seed of innovation into a lot of people's minds as to what was possible on a mobile platform. Gym hours and equipment availability, access to student's schedules, classes and grades. The possibilities are endless, and we need to follow through. A lot of these features will be easier with an official committee in place. The mobile presence of the University will only be as good as the resources we provide, so we need to provide more stuff.
With all that said, what are your thoughts on this project? Anything you would like to see NC State work on with the mobile presence? So far, the community has driven the project, and I doubt it will be much different in 2010. So let's have it, what do you folks wanna see?
DISCLAIMER: These are my personal goals for NC State in 2010. None of this has been signed off on or anything like that, it is just what I hope to accomplish in the new year.



