Programming Environment

Written on August 12th, 2009 by Shawn Sparks

I decided to get back to using a proper environment for software development. What does this mean? Mostly, that I started using a fancy IDE and version control again. The advantages I get are extra features to make my development life easier and not having to worry about losing any code. Essentially, I put in some extra work up front to negate headaches down the road.

My IDE of choice is Eclipse. I went with the latest version to see how well it works. In the little bit I have used it so far, I am impressed with how far plugin installation has come since the last time I touched it. I used to keep my plugins in separate directories and link them into the application because it was the only way to keep any sort of order on installation, upgrades, and removal of the third-party software. I have used this improved functionality to install the PHP Development Tools plugin which is dependent on the Web Tools Platform. These two packages combined give me almost everything I need to do web development. I will likely add in some things for database design when one of my projects takes me that direction. The C/C++ Development Tooling plugin will almost certainly be added along with other language-based plugins over time. Some day I intend to look into some source code analyzers to discover potential security vulnerabilities in my code. The other plugin I have installed at this point is Subversive to integrate Eclipse with my version control system.

For version control, I installed Subversion (SVN) on Ellinore, my server which has a RAID 1 mirror. Not only does this make sure I have my code should a hard drive fail, but allows me to easily revert to previous versions when my radical idea to solve the world’s problems fails horribly. I have had problems integrating SVN and Eclipse before, but Subversive made it rather easy minus a complication due to licensing issues.

I am trying to separate the components of my projects as much as possible when defining SVN repositories. This will allow me to more easily integrate different versions of different components as they become ready. To accompany this focus, I dabbled with Ant some today. Ant is a build tool which makes it fairly simple to pull versions of software from various SVN repositories along with performing other necessary tasks to produce a working piece of software. I will likely be spending the rest of my night putting together a build file to allow me to recreate an entire website from a dozen SVN repositories and a couple scripts. When I get it working, I will only have to run a single command to completely rebuild a test website.

This post is intended to be a simple overview as well as an update on what I have been up to lately. If you would like more details into any particular area, let me know, and I will see what I can do.

What’s New

Written on August 3rd, 2009 by Shawn Sparks

First off, you should check out my Future Enhancements page if you have not already. As of right now, I am hoping I can knock off most of those things if not all of them by the end of the year. Of course, there will likely be new items on it by then so I doubt my work here will ever be done.

Another hobby eating up a lot of my time is how much I have been getting back into Call of Duty 4 on the Playstation 3. This entails a little more though than people might think. Considering I am an active member in a videogame clan, we have started to look at playing the game semi-competitively again rather than just dominating random people in regular games. This means I spend at least an hour dealing with administrative work for every match we play, but I think I will save the details for another post. Things, unfortunately, got a little rough this past weekend due to a hack released on the internet allowing opposing players to be able to fly as well as being invincible during that time; though, they cannot shoot. It was enough to put a damper on the game unless playing with a strong party capable of embarrassing these players.

In conjunction with all the game playing and competition overhead, I have started to dabble some with recording video from my play. I have around two to three hundred gigabytes of video sitting on hard drives from last summer. This used a rather bland recording rig so the quality is not very good. Nonetheless, I have finally started going through it in order to build some video editing competency. It will be posted on youtube for all to see once it is complete. Do not expect any quick turnarounds on it. However, before I could do the editing, I needed to find some good software. Sony Vegas exists, but it costs a lot of money unless you want to pirate it. Even then, it is primarily a Windows-based application unless time is spent finagling with it. I managed to come across kdenlive which is more than enough for my needs. I think so far I have only found one feature in Vegas that is not in kdenlive, and yet, I am easily able to workaround it. In addition to all of this, I bought a new bit of hardware back in April that allows me to get much better quality of video. Did I mention I am also able to use it from linux? My previous rig required me to boot Windows on a machine. I was not even able to get the old Hava to connect with a Windows vm. I probably could have if I had spent more time tinkering with the vm networking, but I never did. My Hauppauge took me about a day to get working on an Ubuntu server. I used a website and then posted on the Ubuntu forums for a bit of help. I had it working within an hour of coming home from work the next day.

I also got a new phone almost two weeks ago. If you feel you should have my number, email me and I send my number to you if I feel like you deserve it. My phone is an LG EnV3 on the Verizon network. Despite some interesting news about how insecure Verizon is, I decided to go with them since the other providers do not seem to be any better. The nice part about my new phone is I have unlimited text and picture messages, 3.0 megapixel camera, email and web with unlimited data, as well as a national plan. This means I am connected to the internet pretty much wherever I am. I have discovered though that my website crashes my phone’s browser. Needless to say, I will have to update the list of future enhancements to go mobile.

I went out golfing yesterday and shot fairly well overall. I actually shot amazing for four holes, mediocre for two holes, and terrible on three. The highlight of the day was by far my near eagle on hole six. I was sitting out roughly 130 yards from the pin in the next fairway. Distance was hard to judge because the markers were terrible and impossible to find. There was a tall tree directly between me and the pin. I figured if I hit a 7-iron, I could make it over the tree, but I would have to hit it strong to make the green. I went for it and absolutely crushed the ball, hitting it just over the top of the tree. The ball landed short of the green, bounced twice, and rolled into the pin before deflecting a couple feet away. I made the short putt for the second birdie of my life. I also put the ball on the green off the tee on both par 3′s and hit one of the prettiest drives of my life off the tee at hole 9. I still need to work a bit on avoiding water hazards and losing my ball into the brush. I could have dropped four strokes or more with that alone.

Those are the events of the past couple of weeks. I will be heading down to Kansas City for some fun this weekend before moving back to college the following weekend. I am looking forward to the week I have off between work and classes starting. Best part about this fall is I am only taking two classes, doing my undergraduate computer science research, and sitting in on another class. In other words, I will have a lot more free time than is normal for me. That being said, I am sure I will still be busy with personal projects and hanging out with friends.

System Overload

Written on July 20th, 2009 by Shawn Sparks

So my sister has requested I write something other than technical blogs from time to time. This becomes a bit of a problem when I live, breathe, and eat code. It turns out if I buy the right kind of cereal, I can get some decent pseudocode going in the morning. Though, I will say it is difficult to find cereal with semi-colons and curly braces. For those wondering what I have been up to this summer, I currently have four websites on the table with negotiations still wrapping up for one of them. That does not count any of my personal projects such as this one. To make matters worse, I have come across the blogs of Jeremiah Grossman and RSnake, two elite web security specialists. The results of this has been me spending a portion of my time tonight reading some web security talks online as well as tinkering with Fierce and Nessus. Remember how I started this post by talking about how my sister wants me to talk a little less about geeky stuff? That does not mean I remembered it while writing this. Actually, I just meant this to be an update on what I have been up to lately and a lot of it is technology oriented. Call me a geek if you must.

What else have I done? A week ago I participated in my first United States Tennis Association tournament. I walked into the whole thing very tentatively. I have not played competitively since high school four years ago unless you count the poorly organized intramurals at college. I started to play semi-regularly last fall along with playing some this spring. However, I had not hit in a solid two months when I decided to register for the tournament. As a result, I chose the easiest skill level since I was not sure what I would be getting myself into, and I figured winning easily would be more fun than getting crushed. It turned out only one other person registered for my division and it was quite easy. I had gotten in a couple hours of hitting with an old friend on Wednesday. Still, I was hitting even better come the time of the tournament on Saturday. I managed to get a cool t-shirt, a nice plaque, and an instructor’s phone number to call about hitting sometime. All said, the tournament was pretty fun, and I am looking to go to another in Cedar Rapids this weekend. I will make sure to step up a skill level this time around.

This past weekend was a lot of fun. I drove up to Cedar Falls to spend some time with my girlfriend along with attend a wedding of a previous roommate further on down the road. Taking time to relax and watch movies with Jess was great and the wedding was a blast. We also got to watch some of The Open, Tour de France, and PBR on tv on Sunday. For those who dont know, The Open is the equivalent of the golf US Open but in Britain, Tour de France is bicycling, and PBR is Professional Bull Riding. To top the weekend off, we went out golfing on an amazing day. Needless to say, the weekend was over in no time, and I was back dabbling with computers in my apartment.

Tonight has been another moment of relaxation. I started with taking care of some apartment errands early on. Then I proceeded to dabbling in web security reading and tinkering. That was followed up with watching the Chicago Cubs look terrible again along with some light web development. In case you have not noticed, I have implemented a couple new themes and a theme changer to account for different reader preferences. Hopefully, I will continue to improve on this feature over time. I was able to catch up to July on Wallingford’s blog as well. Now I am finishing off the night with a little Sportscent on ESPN and writing this. With that said, good night!

Internet Explorer 8: First Glance

Written on July 10th, 2009 by Shawn Sparks

Many of you have likely seen my “Why IE Sucks” page which I advertise to all my visitors using an Internet Explorer browser. I got a comment in response to it asking what I thought about IE8. I was going to reply directly to the comment, but then what I had to say turned out to be much longer than I thought it would be. Thus, I decided to create a new post for everyone to read. Here it is.

I admit I have been really behind in my IE8 experiences. In some ways I am happy because this proves just how distant from Microsoft I am truly becoming. In other ways, it is kind of disappointing because it is hard to make a quality bash on a product unless I am at least somewhat familiar with it. I think I just updated to IE8 on a Windows XP VM last night. I have not used it yet, however. Though from the brief dabbling from Net Renderer I have done, IE8 is not too bad. From what I have seen, it even renders this site correctly which is more than any previous version of IE can say. I do find it funny there is a compatibility mode to try to prevent the “catastrophe” that was the upgrade from IE6 to IE7. It will not be overly useful going forward, but it helps manage the first year or so while developers make the transition to a standards-oriented version. Overall, it seems to hold its own with Firefox 3.0, but still is slightly behind Firefox 3.5 which just released a couple of weeks ago.

From what I have read online, IE8 passes the ACID2 test, but does terrible on the ACID3 test. As much as this pains me, I have to give Microsoft props for making the effort to fall in line with some of the most popular standards. I would not say they have the best browser out there, but they did considerably narrow the gap as far as web standards are concerned. I cannot speak on the usability, but at least IE7 made huge gains there too with things like tabbed-browsing. If they keep following this path, I will have a hard time continuing to laugh at Internet Explorer. Do not expect this to make me a Microsoft fanboy or even start using their products anytime soon, but maybe I will hate them just a little less. There will be more to come on Microsoft and its plans for the future in the near future.

P.S. Yes, that is right. I did just use future twice in the same sentence!

New Site: Marshmallow’s Wisdom

Written on June 30th, 2009 by Shawn Sparks

In case you have not realized it yet, I have created an entirely new website to host my blog among other things. For those apalled by my choice in look-and-feel, do not worry. I am in the process of developing alternative themes which you will be able to select for use on your computer.

If you are using an RSS reader to track my updates, I suggest you update the url now. While the RSS readers are likely still working due to a redirect I implemented, you will want to change it from http://blog.13throse.us/atom.xml to http://www.marshmallowswisdom.com/feed/ before too long. I do not have a timeframe on when I will be removing the redirect, but I reserve the right to do it any time after July. The same is true for any bookmarks, et cetera. Anything pointing to http://blog.13throse.us should be changed to http://www.marshmallowswisdom.com or http://www.marshmallowswisdom.com/blog/ depending on your preference.

I will be updating the site quite frequently here hopefully throughout the summer to get it up to speed. Please note, I will be taking a short break from all the work I put in this past weekend to get it up and running. If you find something that is not working, you would like to see different, or simply a suggestion, please email me at shawn.sparks@marshmallowswisdom.com or post a comment. Thank you and I hope you enjoy.

FOSS

Written on June 4th, 2009 by Shawn Sparks

I was talking to my brother-in-law, Jamie, the other day about Free and Open Source Software (FOSS). It got me to thinking about how much FOSS I use on a regular basis. Here is a list of all the software I have come into contact with recently. If you realize I am forgetting something, please leave a comment.

Software Used on a Daily Basis:

Software Being Investigated:

  • Trac (Project Management Tool)
  • Zabbix (Network Monitoring Tool)
  • WordPress (Content Management System)
  • SVN (Version Control System)
  • Elgg (Social Networking Software)

Software Used in the Past:

Trac Review

Written on June 3rd, 2009 by Shawn Sparks

I spent some time at the end of April playing around a little bit with a project management tool known as Trac. Then a friend asked me my thoughts on it. So I told him I would write blog about it. A month later, I am finally getting it actually done! Let me first qualify that I was looking at the tool to manage software development projects.

The Cool Things about Trac:

  • Lets you create milestones in the development process. It seems to be common to use these to represent version releases. My initial thought was to use them for various key components of the software.
  • Has a great ticket system for reporting bugs found in the software. These can be setup to allow your users to fill out tickets when they discover a bug. The tickets can also be attached to milestones to allow you to manage fixing them as well.
  • Integrates a wiki as well to allow you to document the software and its development process.

The Disappointing Things about Trac:

  • Installation is a series of commands that call Perl scripts if I am not mistaken. This made me sad. I wanted a pretty web interface to ask me the questions because it would make a lot easier for installing on my web host. I can survive, but I think it would be a big step in the right direction.
  • Along the same lines as the installation web gui, administration tasks need to be pushed completely into a web interface. Some things can be done in the web gui, but not enough. I was still having to run some commands from a terminal for very basic setup and user administration needs.
  • No concept of submilestones. I see milestones as tasks needing done. Tickets as bugs. From all the reading I did from the Trac community and developers, this does not appear to be the future idea of Trac. Right now, people create milestones and attach tickets to milestones. Tickets are being used to represent tasks. Rather than implementing sub-milestones, the direction is to implement sub-tickets. Personally, I just don’t like this system, but I can roll with it if needed.
  • No forum integration as I recall, but I could be very easily be wrong on this one. It would allow your user community to talk with each other and help each other. This would be useful for all those cases that do not make it to the wiki or when a user simply does not use the wiki or find what they need on the wiki. It could also be used for communication between developers.

After all of this, I will likely still use Trac. I spent some time looking at other project management software, and this was the closest one to really handling what I needed. I did have the requirement that the software was free and preferably open source. I do not intend for this to be a large implementation so the unpolished aspects are not as big of a problem. Things were still easy to figure out so I did not have to spend much time trouble-shooting or pushing through a learning curve. Ultimately, if you are looking for something like this, feel free to give it a solid look and see if it will work for you.

Stored Procedures vs. Prepared Statements

Written on December 10th, 2008 by Shawn Sparks

At work the last few weeks, I have been doing a lot with SQL in a web application. I will not say I am an expert in the matter, but I do feel I have a pretty good understanding of the two options. Ultimately, a stored procedure seems to be rather annoying than useful. The problem I have is that the languages RDBMS provide for stored procedures tend to be pretty bad as far as programming languages go. So there is a reason you have chosen to write your application in a particular language. Chances are it is the best for the situation and provides a lot more power than the meager implementation offered by the RDBMS. That means you need to get some advantage out of using stored procedures to make it worth your while.

So what advanatages can stored procedures offer? Protection from sql injection is thrown out because you get the same benefits from prepared statements. I have heard some arguments about performance gains. The two primary factors coming from caching the SQL statements along with the round-trip-time to the database server. From what I have heard, most RDBMS these days cache prepared statements just as well as stored procedures. Besides, on today’s machines, you have to write the world’s most complex SQL statement before you will notice the hit on the server. Meanwhile, the round-trip-time (RTT) can be a valid argument. If you have a lengthy series of statements with some simple logic to control them, there is some potential benefit to using stored procedures. This would depend on how minute your timing issues are along with how many calls of this nature you would make along with the length of a RTT to the database server. In most environments, the time from the application server to the database server is only a few milliseconds.

Ultimately, your average web application does not have strict timing requirements. It tends to be more dependent on the speed of development along with the ease of maintenance. it never makes a large enough difference to worry about it. When I am developing applications, I intend to lean towards prepared statements and will only shift to stored procedures when I absolutely need to.

COG Developers

Written on November 10th, 2008 by Shawn Sparks

As some of you may remember, I wrote a blog a few weeks back about starting to work on a new website. Well, Champions of Gaming (COG) is officially under development. I am working on it with Mark Fedor (papasmurf786) and Chris Tuvera (eviltim11). They are both people I play videogames on a fairly regular basis. Mark I have only known for the last two and a half years as I recall. I grew up knowing Chris since first grade. Mark has some pretty impressive graphic skills and is starting to learn some basic programming concepts. Chris is constantly getting better and better with his graphics skills. He also has some programming skills; though, he has yet to delve too much into web development. For the moment, I am doing most of the backend development while working with Chris and Mark on the frontend.

As for how the development is going, we have officially bought the domain now. We are hoping to pick up a few similar domain names, but that is still hanging in the air at the moment. The look-and-feel is pretty much set, and I must say it looks pretty sexy. We have mapped out a few placeholders for some features we think will be cool. No real functionality has been put in place yet, but a lot of ideas are being thrown around and decided on. I do not know how much will get done before Thanksgiving as all three of us are in college at the moment. However, hopefully, we will make some significant progress over winter break.

New Website: Champions of Gaming

Written on October 17th, 2008 by Shawn Sparks

I’ve recently started working on a new website. As many of you know, I frequently participate in a videogame clan. This includes not only playing games online with them, but running a website for them. Well, a few of us have decided to expand our involvement in the videogame culture. One website we regularly compete on in amateur tournaments is Gamebattles.

We have several complaints against Gamebattles. A lot of the admins are pricks. Most of them our high schoolers on power rushes. This results in the rules being horribly thrown by the wayside and very subjective rulings coming into play. They also tend to be aggravated by teams who repeatedly submit tickets because their opponents are breaking the rules. Rather than these teams who are trying to play legit getting wins for their efforts, they are punished for using the system put in place by Gamebattles. I don’t want to say all the admins and refs are corrupt, but a lot of them are. The few good ones tend to be lost in the sway, rubbed the wrong way by corrupt superiors (as I once was), or just too few make a difference.

When things go smoothly, the competition is awesome. I know all the KOR guys love it. We feed off of it. It gets to the point that we literally scheduled practices to get prepared for upcoming matches. We plan out our strategies. We have leaders to give out quick orders in the heat of the fray. We have even worked on a means for quite literally developing our own “playbook” of sorts. This is how KOR really got off its feet in the beginning. It started as a few guys playing together for fun. Then they got involved in GB (Gamebattles) and things took off from there.

So what does all this have to do with me building a new website? Well, some of us have gotten frustrated with GB for the above mentioned reasons. Some of us enjoy getting involved in various web development projects. So what does that all add up to? We sat around talking one day and got the idea we should make our own. Now we are actually starting to put some serious effort into it. We needed a name first. Since we needed a web domain to go with our name, we started ruling out names we couldn’t get a domain for easily. Finally, we came up with Champions of Gaming. I’m not providing a link here because we are still in the very early stages of development. We haven’t even purchased the domain we intend to use. I suspect this will come back to seriously haunt me if someone purchases before we do…