Showing posts with label web development. Show all posts
Showing posts with label web development. Show all posts

Saturday, July 7, 2012

Case Study in Web Design Introduction

From an E.A.T.S pamphlet


I'm going to use this blog to document a project I am working on.  I have decided to help make a website for the Edgar Area Trails Supporters group to showcase their trail system, including the Scotch Creek Woodland Preserve.  Edgar is a small town near Wausau in Wisconsin, and the Scotch Creek Woodland Preserve is open to the public year throughout the year and is maintained by EATS, a volunteer civic organization.  Since I have visited the trails in the past and always have enjoyed them, I thought this was a great example to use as a case study in web design that can serve as a reference for my students.

This is a great example of a win-win situation, really.  Since web development has suddenly become a lot less annoying (IE, you know who you are--pun intended), I, for the first time, feel comfortable enough to make it a major inclusion into the Computer Science Curriculum at Skyline.  And for the EATS group?  Well, right now they have ZERO web presence.  All they really wanted was a page on the Edgar Village site, but, as you can see, the Edgar site looks a little behind the times on a modern browser (left margin or some padding would be nice).  The site itself, though, is (and I don't mean to be rude) in a state of decay.  The main page uses frames for layout (ouch), and many of the pages a declared as "html 2.0" for their doctype.  I mean, even Internet Explorer left html 2.0 behind a looooong time ago.  But, if you happen to have some old computer running Windows 95, at least the site will work for you.  :-)

So having a page on the village site is probably NOT going to happen any time soon, seeing as the "upcoming events" on the site are still listing things from early 2011.  So why not just get your own site, right?  Well, I understand the difficulties involved in that.  I live on the Front Range of Colorado, a place that has a pretty "techy" reputation.  Even Google has a major office within 15 minutes from my backyard.  Even here, though, you would have trouble finding someone who knows web design and development to the point where they could develop a functional site for you.  Face it--not many people know how to program computers.  If anything, we are getting dumber as time goes on, when it comes to MAKING applications.  We are passive users who want to just click on stuff and hopefully the right things will happen on the computer or smart phone we are using to access the internet.

Of course that's my job now--teaching the younger generation how to really understand and use computers--making computers do what YOU want them to do, not the other way around.   Why are we in such a sad state?  Well, lots of reasons, really, but all my evidence comes just from my observations over time, so it is hardly scientific.  I put the blame on people not being able to know themselves.  Metacognition is a lost art, and few people seem to really know what they know.  Few are aware of what they are aware of.  In that culture, you can make an easy sale by dumbing stuff down and making it seem like there is an easy way out.  Don't like writing code?  Just use a click and drag block interface!  Don't know where your music files are?  Just let iTunes synch it all up for you!  Don't know the differences between HTML, CSS and JavaScript (not to mention PHP)?  Just let Microsoft FrontPage or Adobe Dreamweaver (or the Mac equivalent that I can never remember) do all the work for you!  Yay!  Life is easy!  We're saved by technology!

Not really.  How many people do you know that have lost their music collection because they plugged in their iPod and iTunes wiped it clean?  How many people have plenty of great pdf files but have no clue how to have their Kindle or iPad display them?  In all these cases the Apples and Amazons of the world are all to happy to step in and offer their solution: just buy all your stuff from our store and we'll keep track of it for you!

So we end up at our present state, where few people know what to do when something goes wrong.  Just check out the forums for things like fixing a system crash.  Your typical Windows user will look for some free little executable program that they can click on to make everything better.  That's one way to spread malware--make it look like something that will help Window's users remove malware.  Mac users are a little different, but not any better, as a whole.  Your typical help forum for technical issues on a Mac has someone describing something bad that their Mac is doing.  Then you get 5 to 8 responses from "helpful" users who say, basically, "...gosh, I'd take it to the Mac store.  I did that and they just gave me a new one."  Great.  I'm sure that business model encourages affordable hardware.

But there is another entire world out there that is very different: free and open source software communities.  Go to the Ubuntu forums and ask for help.  Within hours (often within minutes) you will either get someone willing to help you, or at least point you to an older thread in the forums where the same problem was stated and solved.  Really, there's nothing like the support you get for Ubuntu.

And therein lies my motivation to 1) teach REAL computer science at a public high school, and 2) help the EATS group get a good website up and running.  I get to combine both of these into one, and my students will benefit from the process, along with the EATS group.

This isn't just a problem in the USA, by the way.  Here's a quote I came across recently:


Your IT curriculum focuses on teaching how to use software, but gives no insight into how it's made.  That is just throwing away your great computing heritage.

--Eric Schmidt, Chairman of Google, MacTaggart Lecture at the Edinburgh Television Festival, August 2011, on the state of CS Education in England.


Guess what?  They're teaching programming in China and India.  Real programming, not just how to create a tri-fold pamphlet in Microsoft Word.

So that's my introduction to this case study, and in the rest of the installments I will try to focus on the development process, the decisions made, and the current state of web standards.  If you made it this far, you must be awesome!



Saturday, January 21, 2012

On Choosing a Web Application Framework



The Skyline MAD Team (Mobile Apps Development) has produced 3 working apps from scratch, using HTML5, CSS3, a little JavaScript and some PHP.  During the process, students noticed that we could re-use certain parts of our code between the apps.  Of course this meant that we did a LOT of copying and pasting of code from computer to computer--not the best development situation by any means.

We had looked briefly at a form-based web application framework that we experimented with.  To their credit, my students felt uncomfortable NOT being able to see all the parts of the framework.  We also had little knowledge about which database was being used, etc.

So it didn't take long for some of my Python hackers to write up a couple helper scripts that would lead the user through making HTML forms.  Python did all the work pasting the proper tags around the content.  The only problem was that we found ourselves having to tweak the HTML later on because we were using JQuery Touch or some other toolset.

We like PHP, but it is not our go-to language for scripting--that would be Python.  Although I'm not currently teaching a Python course at Skyline, Python is still the most popular language choice from my top programmers.  So, with 10 minutes to go before I had to leave for an eCSite meeting in Boulder, one of my students, tritan67, asked if we could update our server's Python installation to include something newer than the 2.4 that CentOS uses internally.  I started to say, "no, I gotta go, so maybe tomorrow...", but when it comes to Computer Science, I almost never take that approach.  So instead I said, "What the hell, let's do it!"  The next 10 minutes saw us googling stuff, downloading Python source code, and finally installing Python 2.6 alongside the 2.4 version on the server--compiling it from source.  After all the recent debugging frustrations with the MAD Team, it was like going home again when the Python installation "just worked."

I'm still a bit surprised how easy it was.  Not only did we get 2.6 installed from source, but tritan67 jumped onto a terminal, wrote up a helloWebWorld.py and we confirmed that it was all working.

That was such a good feeling, that we started to immediately look for ways we could write our own framework using Python CGI scripts.  But--since there are more Python web frameworks than there are programmers--we figured we'd look into something like web2py or Django.

Haven't decided yet what we'll settle on, but it looks like either Django or the Google App Engine will be where we take this.  Of course I'd just prefer Django on our own server, but there's something to be said for the Google App Engine as a platform for teaching students how to make web apps.

Back to coding.  Python, we missed you a LOT.