Tools


Almost done with the milestones for this month. 

  1. Develop paper prototypes. (DONE)
  2. Learn problem domain (DONE)
  3. Setup development environment. (DONE). SVNserve has been installed on my desktop, and I’ve setup a source code repository for all code and documents for the project. I am using TortoiseSVN as a client app to retrieve and check in files. Highly recommended.

    SVN Setup

  4. Finish ASP book. I’m about 3/4ths through skimming ASP.NET 2.0 Step by Step book, and about halfway through Programming ASP.NET. Since my original goal was to finish 1 book, I’m about done with this, but I’d like to read a bit more before the month ends.
  5. Model problem domain and solve problems algorithmically. (DONE). See last post.

I think I’ve made pretty good progress, considering some of the unexpected issues I faced in the outset. However, I do think that my March goals are a little too aggressive, so I’ll be relooking at it and making adjustments as necessary.

Upcoming

  • Read more in the ASP books
  • Re-evaluate schedule and start breaking down tasks for March

The title of these updates have subtly been changed from “Weekly Update” to “Project Update.” Well, not so subtly anymore I guess. But since my work schedule seems to fluctuate a lot on a week-to-week basis, the updates won’t be consistently one week apart.

One step forward, two steps back

My project has hit a few snags here and there, but they were inevitable snags, which I suppose is better than avoidable snags. I don’t think that this month’s commitments are in any jeopardy, though. Here is the status of each area:

  1. Develop paper prototypes. I started some sketches for a few pages, but started feeling like I was lacking some context. Then it occurred to me that I’m not following the usual process I’ve come to be used to in my web design consulting, which is to start with a sitemap proposal. Although a sitemap at this point is likely to be changed many times as the site is developed, it helps to have that big picture in mind. The power of the web is in interaction, and so when designing the UI, extra care has to be given to establish the user in the appropriate context.To make a long story short, the plan now is to put a draft sitemap together before I do more work on the paper prototypes, which should be done within the week.
  2. Learn problem domain (DONE). I pretty much have nailed the understanding I need for the riverboat velocity problems I will start with, as referenced in the last post.
  3. Setup development environment. As mentioned earlier, running Visual Studio 2005 and IIS in XP Pro has been insufferably slow on my laptop, which makes me think that I will need to use my more powerful desktop instead as my development machine. The huge problem I have now, though, is that I need to upgrade my desktop to XP Pro. I shelled out a lot of cash to buy an XP Pro upgrade, but there is no way to revert back to XP Home from XP Pro. Essentially I have to do a clean install of XP Home on my laptop to free up my XP Pro license key (Microsoft’s EULA for XP is one install on one computer), because there is no previous OS to fall back to. Which is a huge pain since I need to backup all my files and reinstall all my software. Anyway, it looks like I have no choice, but I’ll need a full day to reinstall in case things don’t go smoothly during the process, so either this weekend or next weekend. I’ll suffer with the laptop until then. The only other thing I need to setup on the development environment is source code control (SVN). I’ll need to setup an SVN server, which I prefer to do on my desktop, after I’ve done the XP Pro upgrade. I already have VS 2005 with Resharper running on my laptop and desktop, so everything else is setup for now.
  4. Finish ASP book. I’ve been reading Microsoft Press’ ASP.NET 2.0 Step by Step book, but liking it less and less as I go through it. It doesn’t seem to be much of a rigorous book, mostly taking the reader through trivial examples. On top of that, following the instructions in the book for one of the chapters is repeatedly causing VS2005 to crash. This is all the more irritating since VS takes over 1 minute to restart on my slow laptop.I’ve decided to skim through the rest of the book, and instead start reading another book, Programming ASP.NET by O’Reilly. I’ve always had good experiences with O’Reilly books, and this one is co-authored by Jesse Liberty, who also wrote Programming C#, which I really liked.
  5. Model problem domain and solve problems algorithmically. I should clarify what this task is. When designing an application, the real design task is to take one’s understanding of the application domain, and figure out how to model it. Any problem that an application is trying to solve should be explainable without reference to program- or implementation-specific details. For example, I should be able to describe how a riverboat velocity problem should be solved, independent of whether it will be solved with a web-based application or a desktop application. I should also be able to program an application component that can solve a given riverboat velocity problem, without any code that deals with web pages. My main goal with this task is to come up with a basic, but robust and flexible design and architecture that will accommodate more than just riverboat velocity problems. My goal is also to implement a component which solves the riverboat velocity problems within the framework of that architecture. Sound too abstract? Hopefully it will make sense in my next planned post, which will introduce my thoughts on the domain model for this problem, and some of the complexities associated with it.

 Upcoming

  • Map out the problem domain
  • Create draft sitemap
  • Start new ASP book
  • Start paper prototypes
  • Migrate XP Pro to desktop machine

I went through the first main chapter (Ch. 2) of my ASP book (ASP.NET Step by Step by Microsoft Press) which had all the basics of creating a virtual directory in IIS, and using Visual Studio to code and setup an HTTP site. There was also a fairly lengthy explanation about all the nuts and bolts of how ASP processes a web request, and what components are available to customize how these are processed.

It was pretty heady stuff, and most of it is still a little over my head, since I’m lacking a lot of context, but I trust that it’ll make more sense as I code more. I did get a basic local HTTP site setup on my laptop, and also made the proverbial “Hello World” app, which in this case is an ASP web page.

I’ve come up against one significant roadblock. My laptop is running Visual Studio 2005 (with Resharper, which is a fairly hefty plugin for VS2005), IIS, an IE browser, and Microsoft Word. Not to mention that I typically have 4-5 other windows open with Excel, Windows Explorer, or other apps. My whole system is noticeably and excruciatingly slow. This is not good for development, but I had wanted to develop from my laptop so I had more mobility options.

I’m going to have to figure something out… probably I will try to continue to run IIS off my laptop, but develop in VS2005 on my desktop, which is more powerful. Supposedly, there’s also a simple built-in server in VS2005 that will allow me to avoid depending on IIS running all the time as well.

I guess I won’t be doing much development at Barnes & Noble, though. :(

I missed an update last week — I was working on the project description which just got posted, but I didn’t finish it, so I didn’t think there was any point in putting the draft up.

I’ve been doing a little bit of everything the past two weeks — some of the details are in the last two posts, but I’ve also upgraded to XP Pro, installed IIS, and started learning ASP.NET. I can still back out and use the LAMP stack, but there’s enough to learn about web application development in general, without having to pick up an unfamiliar language (in PHP). I can basically do the ASP implementation in C#, and if I feel like it, maybe even write a few modules in Visual Basic, since .NET isn’t supposed to know the difference.

There was a time a few years ago when I was deciding whether to buy XP Home or Pro, and Office Standard or Pro. At that time, starving grad student that I was, I settled on the lesser versions of both, thinking… well, when will I ever need the advanced things with Pro? And when will I ever need (or want) to use Access?

Well, I’ve already come to regret the Pro decision, as I couldn’t (legally) install IIS without it. And now my ASP.NET book is indicating that probably the best database to use for a project of this scope is Microsoft Access. Biggest reason being that SQL Server is just too powerful and expensive for a project like this.

On the other hand, I do want to learn SQL Server, and I can use the Express version that comes with Visual Studio 2005 to code my app. Also, I don’t want to make another purchase for Access. I don’t know enough yet on how difficult it would be at some point to port my database modules from SQL Server to Access, assuming that I would want to do that in the future, but supposedly this is what good modular design and division of responsibilities in programming is supposed to ensure. Just something I need to keep in mind as I start development.

Speaking of development, it’s unlikely that I’ll start coding anytime soon, since I want to read up a little on ASP, and I also want to do some sketches of possible screens in the proposed application. Helps to keep perspective on what the end goals is, and I could get some quick feedback from people without investing a lot of time in coding.

So, I’ll be spending the next week reading my ASP book (ASP.NET Step by Step, by George Shepherd) and also making some paper prototypes of some of the main screens for development. I’ll probably spending some time hitting the physics books on how to solve those relative velocity and riverboat problems, because I forgot how to do them!

I didn’t get to post as early as I had planned on. I’ve been working on a more detailed project plan, which is still in the works. But I’ve also been doing a few other things in parallel.

Technology assessment

My original thought was to use the LAMP stack (Linux, Apache, MySQL and PHP) for the project, but since I have only cursory experience in those technologies, I was considering instead using WISA (Windows, IIS, SQL Server, and ASP.NET). Although I haven’t done any ASP development before, I’ve been developing in C# and in the .NET Framework for awhile now, so I’d be leveraging a little more previous experience.

Turns out, though, that to run IIS, you need Windows XP Pro. I’m running XP Home on my personal computers, so I need to upgrade, just to evaluate ASP. I’ve heard there are ways to enable IIS in XP Home, but they’re a little shady, so I guess I have to try ASP out on a friend’s computer first.

But seriously, I don’t think I’m going to have any major revelations on using PHP vs. ASP. I’ll be more comfortable with the syntax in ASP, at least initially, but in terms of performance/scalability/language support etc. I’m sure I can use either one and survive. The project is not going to have massive resource requirements, so I think I’m pretty safe going either way.

Problem Domain

I’m also going to need to select the curriculum lesson/topic that the tool will implement. I don’t want to do something trivial like grade school arithmetic, where all the inputs and outputs are numbers, or even simply integers. On the other hand, I don’t want to do an area where the symbols are so numerous and/or obscure (like multivariate differential calculus) that figuring out how to allow user input using standard web controls is a project in and of itself.

Right now, I’m seriously considering between two areas from college-level/AP physics: collisions and vectors. Collisions are those problems that seem fun because it looks like you’re learning how to be a better pool player. Vectors (2D and 3D) are those problems where you have a dot and two (or more) arrowed lines pointing out from it, and you have to figure out what they add up to, or what the normal is.

I like these because they’re non-trivial, and because I could conceivably get feedback from college students, who don’t need their parents to sign a waiver consent form. They also work well with graphics, and although I’m definitely not including an automatic graphic generator as a project must-have, it’s a good “nice to have” feature if time allows.

Anyhow, I need to make up my mind, but first I need to refresh on these domains. I haven’t done any physics since I was 17 or 18 years old in high school. Just uh… a few years ago. (ahem)

Apparently it costs $15 to edit the CSS on WordPress. Well, nothing’s completely free, but I had a little design twitch going on tonight. Just as well, though, as I really should get some sleep and start working on more urgent things. Like the project plan.

This marks the first official logged “work day” of my Master’s of Education Plan B project. I’ve been told by several people that my ideas on what I’d like to do are probably beyond the scope of what most Master’s candidates do, so I’d like to start by acknowledging my primary motivations for this project.

  • To finish my Master’s degree. Pretty self-explanatory.
  • To broaden and strengthen my skill set. In my regular day job as a software engineer at Nanopoint Inc., I’m privileged to be able to work on both well-established and emerging technologies. On the other hand, you can only get exposed to so many things when spending most of your time developing one software application. I wanted to use this project to learn and develop in other areas of programming that my day job doesn’t cover (at least yet), particularly web application development and database programming. Also included under this umbrella are emerging web-based tools, such as this blog. For a long time, I’ve avoided creating a blog knowing too well the time sink that it could become for me, but I think it’s important to be aware of how software interaction patterns are evolving on the Internet. In this case, having a more or less bounded topic of conversation (this project and related tidbits) puts an informal ceiling on my verbosity.
  • To make software that can benefit someone other than myself. I could probably finish my Master’s with a much shorter research project and paper by the end of the Spring 2007 semester, but this is the project I would want to do if I wasn’t doing a Master’s program anyway. So why not do what I’m passionate about and have it count towards my program?

Well, now that that’s said and done, here’s where the project stands. I don’t have even a rough schedule yet, but here’s a rough description of the major items on the immediate agenda:

  • Project specs and planning.
  • UI sketches and paper prototyping.
  • Technologies/tools assessment.

Today the important item was to get a blog started as a repository of project updates, and I spent some time evaluating different blogging tools. I almost settled on Blogger, a Google acquisition, but at the last minute heard some good things about WordPress.

Anyhow, it’s not a make-or-break decision, and I don’t imagine it will be too difficult to migrate later if I run into any roadblocks.