Learn to build a sexy website!

Learn to code

I am going to be co-teaching a course soon, titled “Learn to build a sexy website” with Andrei Pop. It’s going to be offered online, on Matygo and it’s going to be kick-ass.

 

So why am I teaching a course despite the hecticness of my imminent move to New York

  • Matygo is an awesome company run by awesome people. I think that their model is definitely going to be step in the right direction for education and I want to be a part of that.
  • Programming is not a mystical force, it’s just a skill that can be learnt and the world will be better off if more people understood it.
  • I’m tired of making websites for people who are smart enough to make them for themselves :P.
  • I spend so much time mouthing off about better ways of teaching and learning that it really is time I put my money where my mouth is and do some teaching myself.

 

The next question I guess is what is this going to look like?

The course will run for 6 weeks. It will be taught in Matygo, which has some elements of an LMS (without many of the downsides). It will be limited to 9 participants, as the live, interactive parts will happen on Google Hangouts.

Hangouts will happen at  7:30 to 9:00 PM on Tuesday evenings starting on October 27th.

 

After the 6 weeks, if you complete all the course material that you will be able to build a great website in WordPress and have a deeper understand of how the internet works and be able to write and hack basic programs.

 

So if you want to learn to code (and hang out with me online over the next 6 weeks) go check out the course page!

Creating the pull factor needed for a successful social network

TechCrunch just put out an article by Alex Rampell titled “the power of pull”. In the article Alex makes the case that really valuable web applications pull you unconsciously toward them. You don’t have to remember to check them, when you sit down in front of a browser and start typing, those are the URLs that come out.

What creates the pull is a problem that I’ve pondered over for a long time. When BuddyPress functionality was being added to UBC Blogs I knew that it would fail to pull students in, but am still not able to articulate exactly why. It may have had to do with the “silent launch”, but I think the biggest problem was the lack of some key features, those features that provide the pull. Now that Google+ has launched (and I’m really enjoying using it), I’m wondering if it will be able to make the dent that will pull all of the people that I want to interact with into it.

Here are the factors that Alex listed in his article.

Alex’s Factors:

In the article he lists 4 ways to create pull:

  • Plan around events: People will be going to events, so build something that makes them check in with you first before those events.
  • Do something that has an offline analogy: Before Google, people would use phonebooks.
  • Answer Recurring questions: Questions like “where am I going” (Google Maps) and how much did I spend (Mint) answer some of life’s recurring questions.
  • Build brand and familiarity: People shop at Amazon.com because not only do they know it’s big enough to be trusted, it offers a familiar interface.

While I agree mostly with his list, it got me thinking about the sites that pull me and what it is about those sites that create the pull. I came up with my own list.

Here is my list:

Make not visiting your site something that will cause social harm: 

I check my Gmail and Facebook often because people may have left me messages and if I don’t respond to them I will disappoint or anger them. I will respond to Doodle’s for the same reason. Humans love to be liked, so if by not going to the web service a person will be liked less, they will go to it.

Provide Curated entertainment:

I get pulled to YouTube and TED.com whenever I want to watch an interesting videos, I get pulled to GrooveShark when I want music that everyone in the room will and I get pulled to Flixter and Apple Trailers whenever I want to see what movies are coming out. Although making a service that relies purely on content only works for a lucky few, any successful service needs to have something interesting to show their visitors.

Provide more than one engaging activity:

This is a piece that I have taken from my game design research. All popular recurring networks need more than one pull. This not only provides multiple incentives for any given individual, but also ensures that it provides incentives for a wider segment of the population. Facebook is an obvious example, but so is an LMS like Blackboard. There are discussion boards, course content and grades to check. One’s own blog dashboard is another, there are posts to write, stats to check and comments to moderate. I understand the problems of features creep and the danger of adding “just one more pull”, but I think there definitely is threshold of the number of pulls that one needs and the application should cross that threshold.

Create something that easily fits into a daily workflow:

Facebook’s big statistic is that 50% of its users check in once a day. An essential social app has to have something new to come back to daily. If you can somehow embed a utility in your app (Google Calendar, Dropbox, Basecamp are all examples of this) then users have to come back into your application. One needs to find a way to be on a user’s mind after they have left your application.

[divider_padding]

Sure, this list mixes up traditional applications with social networking applications, but I think that is a useful exercise. Just having profiles that others can view is not enough (witness Google Profiles before Google+), I truly believe that there have to be some other pulls. As to what those pulls should be… well that’s the hard part.

[note title=”Bonus Thought: Does Google+ have enough pulls?” align=”center” width=”716″] My hunch is yes. It certainly provides utility with the chat, hangout and photos features. If you add the sharing it had quite a few pulls. The notification icons on top of any Google product also make the daily workflow piece super simple. The sharing and sparks (with a bit of improvement) will lend that curated content. [/note]

New Theme: twenty-hand

I’ve been unhappy with my theme for the page few months and not had the time to change it. I’ve finally got around to doing so and at the same time have played around with some WordPress 3.0 goodness. Here are some of the features:

  1. It’s a child theme of the new WordPress theme twentyTen.
  2. It’s much cleaner than my old theme.
  3. It uses the new wp_nav_menu system. The 7 menus that I add are the 7 menu items at the top.

Continue reading “New Theme: twenty-hand”

WordPress Pro Tip: Getting a per-post Feed in WordPress

For some reason this information is really hard to find through Google. Often in my work at OLT we are trying to reuse remix and redistribute a bunch static content from WordPress sites around our campus. In order to do so we need to find feeds for those sites that are just for one post or page, instead of the updating stream. Here is how to get them:

Simply append /?feed=rss&p=111 to the end of your URL. The 111 in the example should be the ID of the post that you want the feed for.

dev.wpmued is live! Calling all WordPress in education developers to contribute.

At OpenEd09 I was part of a very necessary conversation. We were talking about different ways in which our respective universities use WordPress MU. The consensus was that in order for us to be truly successful we need to be sharing much more. Sharing our frameworks, sharing our plugins and sharing our hacks. Boone Gorges frames the conversation nicely here and talks about what is needed from developers. Enej and others responded by reviving the OLT Dev blog. However, Matthew Gold rightly said this:

But we need to build more lasting channels of communication soon, lest we miss some important connections

So here is my attempt to provide those connections:

WPMU For Education blog

The basic idea is an aggregation blog for “WPMU for education” developers. Jim Groom provided a blog from his WPMUEd domain so that a new channel, dev.wpmued could be created. I used the Add Link Widget with FeedWordPress to turn this blog into an aggregation of content from developers who are working on developing WPMU in education using the method that Jim and I came up with. I seeded it with a few of my often read WordPress MU in education blogs (myself, Jim, D’Arcy, Boone, OLT and CUNY Dev). Continue reading “dev.wpmued is live! Calling all WordPress in education developers to contribute.”

Theme Update

FINALLY. Wow, that took me way to long to get done. So, as I promised in this post here, after many late nights, I have implemented some major changes to the theme of this blog. So for all those behind the feed readers… leave the reader for a bit and click around. Let me know what you think. I spent a lot of time on various elements (including some that I ripped out due to lack of patience) so any feedback would be awesome. Below is a picture of the old home page for comparison (click to see fullscreen):

Screenshot of old theme
Screenshot of old theme

Some features to note are:

  • Snazzy JavaScript slider. Why? Lets me show pictures without taking up too much space. One of my goals for this year is to learn to actually draw well in Illustrator and as is obvious, I have a long way to go and need a place/reason to practice.
  • Proper archives page using the awesome wp_archives plugin. I can’t think of a better way to browse archives (aside from tags maybe). The default WordPress way of dates is stupid… they just have no context. One way in which I might change this page in future is modify the plugin so that I can annotate dates around important events in my life.
  • Social Networks page. This has snippets from other places around the web that I haunt. I’m considering changing it in the future to be a bit of a life-stream, but am holding out for someone to come up with an exceptional plugin to make that happen.
  • Better fonts.
  • More pictures!

Again, let me know what you think in the comments below, any feedback is always welcome.

Reblog this post [with Zemanta]

Under Construction

?
Creative Commons License photo credit: carboila
So as some people have noticed lately my blog’s theme has changed. This is simply due to the fact that since last summer when I coded the old theme I have learned a lot about usability, accessibility and just general good practices on the web. As such I couldn’t stand the old theme any longer (due to its violation of those practices) and had to change.

While the new theme does still break a whole bunch of rules when it comes to accessibility and usability, I will be fixing those as soon as I can. The theme is chosen for its style and how I identify with it more than anything else. One of the key fixes is going to be a nice (really complex to code) JavaScript navigation. However, due to the fact that school is in crunch mode and due to my impending trip to Mexico, I will not be able to fix things up as early as I would like.

So there it is, new theme with many changes and improvements still to come. Comments, suggestions and all that jazz are welcome (especially as I am still on the fence about some of my ideas).

Usability: Can open source software catch up?

Screenshot of kubuntu 8.
Image via Wikipedia

Last week I attended a talk given at the Vancouver User Experience Group (VanUE). The speaker was Greg Bell and he was talking about how in order for really good software to be developed, everyone in the development process needs to have a good understanding of usability. It was a decent talk, although the 3rd year UBC human-computer interaction course had already taught me most of what Greg was trying to get across.

Installing Windows 7
Creative Commons License photo credit: impresa.mccabe

This lecture coincided with me installing Windows 7 on both of my computers and really loving it. Now, Windows 7 is not much different to Vista, except that it is faster and addresses quite a few usability problems. I enjoy it so much in fact, that I will not go back to using the current release of Ubuntu.  Of course, this realization has upsets as it hits home the realization that as Apple and Microsoft (and indeed any big tech company) are starting to see the great importance of usability and putting it at the forefront of their design process, open source solutions (which have just started to catch up to the big boys) might be left in the dust once again. This Article from the University of  Waikato highlights a few of the challenges faced by open source projects when it comes to usability, including (and in my opinion the most important) “Design for usability really ought to take place in advance of any coding”. This leads us back to Greg’s talk at VanUE. I feel that if usability and the importance of design is pushed more heavily in the introductory parts of Computer Science then open source projects can benefit from that usability knowledge being pooled. Until then though, I think that many open source projects are going to start falling even further behind their proprietary counterparts.

This however, does not apply to all open source projects. Those with enough corporate backing (like WordPress with Automattic and Ubuntu with Canonical) are able to forcibly steer their developers towards more usable interfaces. This kind of work has already payed off for WordPress, however, we will have to await another Ubuntu release or two to see whether their efforts to change the way that a much larger (and more traditionally minded) community of open source programmers will actually pay off.

UbuntuTux
Creative Commons License photo credit: 4_EveR_YounG

Reblog this post [with Zemanta]

UBC WordPress development out in the open

EDUPUNKING_WP_w_groom
Creative Commons License photo credit: bionicteaching

At OLT we have decided to make our steps to develop the WordPress Multi-user platform into a university content publishing platform more prominent, so as to encourage sharing and collaboration. Before this we were all writing about our development on different blogs dispursed around the internet, but now we will all be putting our thoughts, ideas and code in one place. OLT WordPress Development  now lives on the UBC Blogs site at blogs.ubc.ca/development. It is sparse at the moment, but once all of the developers are contributing their work it should fill out quite quickly.

Now if only WordPress.com would get back to us on allowing us to put our plugins in the WordPress repository so they will all be on the main WordPress plugins page…

WordPress as a CMS… Advanced Navigation

Wordpress
Creative Commons License photo credit: drustar

One of the things that is starting to happen at OLT is that we are creating an increasing number of WordPress based websites. Using WordPress as a content management system is not a new idea at all, there are a ton of examples out there of WordPress blogs out there that have been turned into sites. There is however, a dearth of information out there on how to do it (there are some out there… including some in amazing detail from Alan Levine).

One of the things that I couldn’t find was a stable way to create a second level navigation that stays constant for every top level section. The problem with most of the solutions on the forums and sites around is that as soon as you drill down to the third level of navigation the second level disappears. As you can see at aboriginal.ubc.ca I was able to come up with a way to keep the navigation constant. Here is the loop that I had to create:

<?php
$secondAncestor = count($post->ancestors) -1; //figure out what level of navigation we are on, subtract one because we don't want to consider the top-level
if($post->post_parent!=0) //if the page is not a top-level category
{
echo '<h2 class="widgettitle">In this section:</h2><li class="sidebarlist">';
//the following lists children of second level ancestor of the current page.
wp_list_pages("title_li=&child_of=".$post->ancestors[$secondAncestor]."&    sort_column=menu_order&echo=1");
echo '</li>';
}
else //if the page is a top-level category
{
//listing only the child pages of the current section
$children= wp_list_pages("title_li=&child_of=".$post->ID."&  sort_column=menu_order&echo=0");
if($children) //this will stop it from displaying a section heading if there are   no elements in the section (for example on the home page)
{
echo '<h2 class="widgettitle">In this section:</h2><li>';
echo $children;

echo '</li>';

}
}
?>


This is the first time I’ve blogged code, I’m not even sure if it is readable… but here’s hoping. Basically I figure out what level of navigation the user is on and then list the pages of the current page’s ancestor… that many levels up (subtracting one for the top level navigation.

I am currently doing a lot of work on using WordPress as a content management system including coming up with plugins and modifications for using WordPress MU as a multi-site manager used purely for websites and not for blogs. Will blog it all once everything is stable and working.

Zemanta Pixie