MozFest 2012: Reflection & Thimble Project Making

Where to even begin? My mind is still reeling from the awesomeness that was MozFest almost a week later. I suppose the best place is for those who aren’t familiar…

What is MozFest?

The Mozilla Festival is an annual weekend event where (mainly) Mozilla Foundation, its affiliates, and others (because anyone can submit proposals) hold sessions (presentation, workshops, or hackfest type sessions) on some of the cool, open things that have been happening. That’s how I see it anyway.

There is a big range of people who attend of different age, background, tech-savvyness, geographic location, everything. I will say that there were different streams, which made some groups more prominent (other than developers), such as journalists and educators.

Science Fair

The digital, technology version of a regular science fair. People got to show off stuff that has been made, especially within the past year since the last MozFest. Highlight for me was definitely the banana piano. Simple, but ingenious use of MakeyMakey with an Arduino unit where you hold the ground and when you touch one of the bananas, it completes the circuit and knows which banana you touched, ultimately playing a sound and animating a digital keyboard.

Opening and Closing Circle – Day 1

I actually don’t have any notes for the plenaries of the day 1. For the first time ever, I felt the need to closed my laptop and just listen. However, the streaming videos are online on the MozFest website.


Gunner at Work Open Session

I didn’t attend very many sessions, because I was busy doing other things much of the time, but two in particular stood out for me.

The first on how to work in the open turned into a particularly interesting session, because Gunner (Allen Gunn) came in to check up on us and asked if we needed anything. The response was “our facilitator”. So while Matt Thompson was “coming”, Gunner stepped in and totally winged a Q&A + discussion session. It was great. You can find my notes in a recent post.

The second was the fireside chat with Mark Surman on the future of Webmaker. It was interesting to hear about the big lessons they learned and the direction in moving forward, especially with Thimble since I’m fairly familiar with it. One of the questions that Mark wanted us to answer in the discussion was what projects (i.e. templates) we could make (either in Thimble or Popcorn) that would be popular. One of the answers inspired me to hack together a new Thimble project (if you’re not familiar with Thimble projects, take a look at the list of Thimble projects). More on that later.

While not exactly a session, I have to mention Codery’s Badge Bingo. They added another fun game factor to collection badges at MozFest, plus they gave away a t-shirt to every person who got bingo. It was great.

Helping Out

So when I wasn’t attending sessions, I was helping out with various things. I did a lot of random, being a gopher type things, and helped with setup and clean up of some sessions. The afternoon of the first day, I hung out to help with the HTML5 Hackable Games session.

I was also a Human API. Basically, people could ask questions, in my case about HTML and CSS stuff. I didn’t get many questions though, so next year, they might need to coordinate to have people with certain skills help out at certain sessions to make better use of the Human APIs.

Demo Party

I didn’t really have anything ready when I submitted my name to be part of the demo party, but what the heck, I figured I’d have something put together even if it wasn’t polished. Since there was a Thimble table, I ended up providing my project as a Thimble example.

Interestingly, I ended up staffing the table by myself, so I got to talk about Thimble in general as well as my project. Apparently, I was good enough and know enough about Thimble that I could pass for a MoFo staff member. ^^

So here’s a summary what I talked about during the demo party in regards to my project:

Hacking Together a New Thimble Project


One of the answers to what might make a popular Thimble project was “school projects”. I immediatly thought of the poster projects we had to make in school and how I really disliked having to print everything, and cut and paste each bit straight (and if you screwed up, having to do it again). Wouldn’t it be so much easier if we could just do a digital version and display it? (or if necessary, print the whole thing off).

Making the Project

I spent a couple of hours putting together a poster thimble project. I wish I had more graphic design/artistic talent, because as it stands, it kind of looks like somthing from the geocities age (ugh), but for me, rather than the look, it was more important to make it so that it’s:

  • easy to use – no CSS and very little HTML required
  • flexible – hackable if you know HTML & CSS

In particular:

  • separate title & footer areas
  • column classes are reused – don’t need to specify first, last, inner, or outer.
  • image classes – text wrap on right or left, or centre with no wrapping
  • works cited area – automatically floats this in bottom right above footer

Since we were at MozFest, I couldn’t help but use red pandas!

To Do

I want to clean it up, insert instructions, and separate the CSS into external and internal blocks. I’d also like to add ways to possibly rotate blocks of text or images.

I’ve also requested from the projects coordinator a small bit of time from a graphics designer to make it look nicer and more professional looking.

Extended Use Case

I created it with school kids (primary and secondary) in mind, but someone mentioned that they would find this useful for university presentation and conference posters as well. I was very happy to hear that they thought it would be useful beyond my original intention.

Other Demos

I took a bit of time to walk around the room and see what else people were up to. The Hackable games section was definitely interesting to see, especially with the one button arcade boxes. The MakeyMakey step visualizer was a crowd draw as well.

For a list of all the demos with links and pictures, check out the MozFest demo party page.

Thanks MozFest

I went to MozFest with the intention of simply hanging out and helping out. I never thought that I’d be inspired to hack anything together, because I’m just not a coder. I was inspired not only by the talks and ideas, but by the attitude and enthusiasm through MozFest. I never thought that I’d even have my project featured first on the demo page.

So, thanks MozFest, and hope to be there next year.

Access 2012: Conference Reflection

Honestly, my mind is still reeling from the conference. There were so many thought provoking ideas that my brain seems to still be processing them all.

Solving Practical Problems

One of the difficulties I frequently have is when people talk about great ideas, but they’re big ideas. Not that we don’t need to start these discussions, but on the more immediate front, I like to be able to take something practical back to my workplace to say “here’s how they did it, I think we can do it too.”

In this respect, one of my favourites was dchud’s Social Media Feed Manager, especially with the code available on github. I use this example first because it’s something simple enough that if you’re familiar with this sort of thing, it wouldn’t even take a day to set up. Pulling in social media feeds is something many researchers have trouble with and on top of simply solving a problem, this would be a tool that we can use to reach out to more faculty.

While I’m not sure how we might integrate the use of it into my workplace, I got really excited over Lisa’s talk on CWRC to build a connected, linked data environment and repository. Definitely one of the biggest issues of getting metadata the way we want it to be is the amount of work that is usually involved, and frequently involves technical knowledge, but the CWRC tool definitely makes it look easy to do.

New Perspectives

Another set of talks I really appreciated was looking at an existing concept in a vastly different way. A good example would be Hugh’s Keeping Books Open talk. While I have considered the definition of a book to be changing and somewhat fluid, Hugh spoke about a different model in publishing and interaction with readers that made me wonder at the possibilities.

Another good example would be Alistair’s talk on Civil Rights in Big Data and Answers. Who knew there would be connection? I have always thought of big data as just that, a lot of data. I considered big data to be a great way of becoming informed and exploring different connections. I never thought about the possible impact that it has already had on our society.

Doing Both

While roaming services and a deskless reference service are not new ideas, Marc’s Reshaping Service Delivery talk added a layer beyond simply providing roaming services within the library. I (and I’m certain many others) was very impressed on how he took the library’s circ desk out into the community.

Taking It Back

As I said, I think one of the most valuable things about Access is hearing about the new things that other libraries are doing that I can then take back to my workplace. While we have already implemented (or in the process of implementing) some of the things presented (such as a more integrated, one-look mobile site), I have definitely gotten a better idea of how to tackle other issues we haven’t even begun (like collaborative digital collections).

Final Thoughts

Another great Access. While a couple of the presentations were a bit too technical for me, I liked that once again, there were people pulled in from outside of the library and academic area.

I am definitely putting Access down as my must-go conference. Next year is in St John’s though which is rather far especially if I return to the West Coast, so I hope I can make it, but we’ll see.

Now to Get Some Rest

Why is Technology so Easy to Break?

Just over a week ago, a bunch of news sites were talking about a new book and video focusing on 56 Broken Kindles. Sadly, this weekend I also broke my iPod touch. It dropped and the screen shattered. I’ve heard that dropping even e-readers will cause problems to the e-ink screen. So my question is:

Why are our electronic devices so easy to break now?

We used to value durability over complete functionality. I fondly remember how I could drop my Nokia without anything going wrong, which was great! Now, to get the same protection, you have to spend $50+ to get anything near the same kind of protection for a phone and that’s assuming a truly durable case is available for the model phone you have.

I’m even somewhat lucky that I don’t have one of the newest devices where the touch functionality is built into the glass, so at least mine works well enough for me to do a backup before turning it in for repairs.

WordPress Development: Lessons Learned & Downsides

After 8 months, I have finally finished with WordPress development. I definitely learnt a lot, especially in terms of how the back end works and some more PHP.

Lessons Learned

The most important one:

know more PHP than I did.

Admittedly, I knew very little. While I have some experience programming, I only took a 2 day course in PHP. Not having to look up every little thing would have saved me invaluable time.

The other big one was definitely:

know more WordPress.

The documentation is obviously written for programmers (in most cases, those familiar with WordPress). So once again, I spent a lot of time looking things up. In this case, it was even more difficult because I usually had to rely on a couple of different tutorials and piece things together, making things work through trial and error.

Of course, I didn’t have much choice. And if there is one really good way to learn something is to be thrown into it, and make it happen.


WordPress could really use some improvements though. One area is definitely in the plugins area. There is little to no cooperation between plugin authors, so there may be anywhere from zero to fifty plugins that do similar things, but all work differently and are of varying quality.

One of the reasons I’ve been posting a lot of plugins review is not only for my own records, but in the hopes that it’ll save other people time from looking through the mass amount of plugins. Unfortunately, because plugins come and go like the wind, plugin reviews become out of date very quickly.


The one other thing I wish WordPress would improve is their search. While the site search uses Google, the plugin search is pretty bad and so is the internal built-in WordPress search. For the plugin search, you cannot refine your search in any way, and the sorting doesn’t seem to work properly.

The built-in WordPress site search (and dashboard pages/posts search) is also pretty bad. It’s organized by date and there is a plugin that allows you to sort by title, but it does full text searching and does no relevance ranking whatsoever. If it even did the minimum of “do these words match words in the title, if yes, put those higher” then that alone would be a huge improvement.


While I think WordPress is a great platform (and it’s open source!), there is definitely room for improvement and may not be the right platform for everyone. In comparison, for example, I get the impression that Drupal has a more cooperative and supportive community with better plugin support and development. On the other hand, I find WordPress easier to teach users.

If I had to do it again, I would definitely have taken the time to learn more about the overall WordPress framework and how different parts fit into the puzzle before diving into making the theme.

The Downsides of a CMS in Keeping Up: WordPress & HTML5

As a web developer, I cringe at deprecated code and try my best to keep up to date, which right now means familiarizing myself with HTML5 and CSS3. In reflecting on how best to update our website, I realized that with a CMS, naturally some things are out of my control.

Giving Up Control & Relying on Developers

Whether it’s the core or plugins, users of a CMS are reliant on its developers to keep things up to date. Is that lost of control worth the benefits? Generally, I would say yes, but that doesn’t stop me from wishing that the technology that we use to adopt new specifications.

WordPress & HTML5

Image Tags & Properties

I think it’s interesting that in HTML5 there is now the figure and figcaption elements. If they are taken advantage of, I think it definitely helps to parse information in a webpage and to identify text that is directly related to images.

One thing that does bother me about WordPress (which actually has noting to do with HTML5) is that it forces users to have a title, and leaves alt text blank by default. I don’t know what the best solution may be, but I would propose to insert the title text into the alt text by default and then allowing the user to change it. If they want to leave it blank, then there should be a checkbox to mark it “intentionally left blank” or something. Perhaps this could be an admin option, but I would definitely want something like that since I would really like to force our users to have alt text, but I don’t want to touch the WP core obviously.

Text Formatting Tags

It’s a bit of a minor thing and while some may argue the usefulness of the different semantic tags, users of the rich text editor would have no notion that they’re using <strong> instead of <b> or <em> instead of <i>. While I admit that even I struggle on the appropriate use of each (I have to look it up every time I think about it), if we want to see widespread adoption, then we need to get users to think about their writing and what they intend to do when using any of strong, em, b, i.


While we avoid tables and it should never be used for layouts, users will still want to insert tables to display data without resorting to an image. I’ve always wondered that WordPress doesn’t have a table insertion button even under the kitchen sink. What worries me is that then users who have a basic knowledge of HTML will insert it themselves using the HTML view with improperly formed code.

Layout & Forms

You might wonder why I’d lump the two, and that’s because, other than (using the default) comment form, both of these are dependent on a WordPress setup.

Forms will generally depend on the plugin. Similarly, whether the layout is in HTML5 is very dependent on the theme, along with many elements of accessibility.

Unfortunately, while HTML5 themes are relatively easy to find, most form plugins do not tell you whether they are using HTML5 or how much of it.

Why Not Adopt HTML5

I do realize that while there are a number of advantages to HTML5, especially in terms of structure,  it’s still in development. Working in an educational institution, it’s also more work and sometimes difficult in some cases to ensure backwards compatibility.

In particular, screen readers do not necessarily support all the new HTML5 elements and will frequently ignore whole chunks of text or have difficulty with reading links, etc. Even the newest versions of screen readers do not necessarily recognize elements and properties designed to make webpages easier for screen readers to interpret.

I would like to think that since WordPress talks about trying to be accessible that anything in the WordPress core will be updated once there is widespread adoption not only among browsers, but also screen readers. Obviously, adoption will take time though. For example, many form input types have been adopted by most browsers, but has not been adopted by IE at all (will be in IE10).

One can only hope that adoption will pick up once various part of the HTML5 specifications are ‘cemented.’

Code4Lib 2012: Conference Reflections

For those unfamiliar with Code4Lib, it is generally described as a community of computer programmers who work in information organizations, primarily libraries (2007 Code4Lib Conference Report, 2007). While geared towards programmers, the community has expanded to include many who are not coders, but have some background and a great interest in computers and technology in information organizations. To learn more: take a look at the journal, check out the website, follow the Twitter feed, sign up for the mailing list, or lurk in the IRC channel.


There were so many pre-conference sessions that I wanted to attend or at least sit in on. While some of the sessions were workshop-like where a speaker presented for (more than) half the time and there was some hands on activity afterwards, others were very much a facilitated discussion, similar to a breakout session.

The metadata session was quite interested as there were many people who were neither coders, nor cataloguers present. Honestly, I think the big takeaway at the end of the session was that cataloguers and coders need to talk to each other (not at each other) and try to understand that neither can simply work ‘magic’.

Metadata Preconference

I also got the chance to go across the river on the Microsoft Tour in the evening, where a group of us got to see prototypes of technologies they are working on and play with some of them. There were also presentations on some of the open projects they are working on, including Microsoft Academic Search, which looks like a nicer version of Google Scholar. If they get library full text linking, I think it could be pushed out fairly easily for mass use.

Washington River


The keynotes were so thought provoking. While Dan Chudnov’s keynote touched on his life lessons and the need for change for the conference, Bethany Nowviskie’s keynotediscussed the need for lazy consensus in our work place. Seemingly different topics, but I think they both touch on an issue that has been driving change in some organizations, or simply being ignored at others (or somewhere in between). Libraries (and other information organizations) and its people need to change and evolve in order to continually find its place among the world and how they play a role in people’s lives. Part of adapting is to attempting to keep up with the world as it changes – technological, culturally, socially, economically – but also being flexible enough to accommodate our own changing organization and work environment. While change is rarely easy, we can become so much better by embracing it.

Dan Chudnov - Keynote #1

Conference Presentations

While some of the presentations were honestly too code-centric or technical for me to truly comprehend, I learnt about new tools and got a lot of great ideas. I also realized that I should really acquire more programming knowledge and skills. I have as a result started CodeYear though I’m a bit behind.

Lightning talks are probably my favourite part of the conference since we get to hear about so many new ideas and projects that we might otherwise not hear about. As part of that, I think many will agree that the Code4Lib Japan team presented some of the most impressive projects especially surrounding the disaster relief efforts, and creating a meta-OPAC to search and provide information on all of Japan’s libraries. They also showed great courage in presenting in English (as many of us have enough difficulty presenting in our native language).

While completely nervous, it was also fun to get an opportunity to do a lightning talk myself on Processing.js, which I’ve honestly never used but am excited about having seen some of the projects made with it. Maybe next time I should do it on Popcorn Maker (if they get it into beta) or one of the projects I expect to be working on this year.

Ask Anything was also a great session where I got to ask about how others are implementing a wayfinding tool as we would like to do. Of course, the mailing list is also a great place for that, and I now have lots of reading to do (in addition to the CSS3 book I won!). Some of the presentations have also given me further ideas on what might be done (better) at our institution, and I hope to have to the chance to implement at least some of them.

Social Events

I can’t talk about Code4Libcon and not mention the social events. As a first timer, it can be tough to feel like you belong, especially when you’re the only one from your institution, so it was great that there were organized dinners/groups, especially the newcomer dinner. There was lots of great food that was eaten and awesome company to have interesting discussions. Hopefully with having chosen slightly farther places, I walked it all off! I also enjoyed the after dinner socials including the beer drink up (even though I don’t drink beer), which was a great opportunity to talk to people since there’s usually too many things going on during the day to truly have the chance.


While the presentations were great, the socials were fun, and the backchannels (Twitter and IRC) provided links and laughs, what I have taken away from the conference of the utmost importance are the connections I have made with people, whether it be to learn more about tools we would like to build, to stalk follow them because of their interesting tweets, or simply to keep in touch because I had an interesting conversation with them. Dan hit the nail on the head when he said that we come for the people. (We love you too, Dan.)

On an interesting side note, while it was not intentional, my blog saw a major spike in activity due to my blogging on the conference (peak of 590 in a day!). I honestly primarily did it for myself, but I am glad that people have found it useful and its flattering to see so many people visit. I have edited them and added as many links and presenter slides/videos as possible to help those who could not attend (and would prefer not to sit through the video archive).


This was my first Code4Lib Conference and only my second conference. I am very happy that I got the opportunity to attend, which I could not have done without the support of my supervisor and institution, and especially the Oregon State University and the Digital Library Federation who sponsored five Minority and Gender Diversity Scholarships, one of which I received. I was particularly grateful of the fact that the scholarship was not geared for students, but for those in need of funding, which frequently applies to new graduates or term employees (or both, which is where I fit in).

(Some of the) C4L12 Organizers

Thanks again to all the hosts, organizers, volunteers, speakers, A/V guy, social event leaders, and everyone else who made the conference possible. I look forward to 2013 in Chicago!

Aerial view

The Whirlwind of Getting and Starting a New Job

I got a job! Mind you, it’s a contract and not a permanent job, but I think any new graduate will agree that even that is a feat when looking only within Canada, and being at least somewhat particular about what job to accept. In light of the whole process, I thought I would reflect a little on various aspects of getting and starting a job.


I think it’s important for every person to decide on what they want in a job before applying to everything. Totally common sense I’m sure, but strangely for me, it took some time to really figure out what I wanted in terms of:

  • type of position – willing to take anything? including non-professional positions?
  • location – willing to move? what regions? urban or rural?
  • type of organization – libraries only or other information organizations?
  • salary – is there a minimum amount?

I’ll not spend time on the application and interview parts of the process as I’ve covered them before in other posts. I will only say that while it’s important to be flexible, you might think about whether you’re willing to spend money on flying somewhere if the organization will not pay for you.

My Interview

My interview was a particularly interesting situation as due to the available times, I ended up doing my interview after a 10-hour flight which I was sick on, 1-hour train ride, 20-minutes car ride, and a few hours to prepare and feel better. We also had a couple of technical difficulties, but I took them in stride (always have a back up plan!) as well as I could.

I also got asked a lot of questions about things that I honestly just did not know about. JAZZ? REST? Huh? Others I knew, but had absolutely no experience in, like AJAX, ColdFusion. I admitted to being unfamiliar with them and tried to emphasize that I am willing to learn (though I felt like a little bit of a broken record by the time I was done). Still, I think the important lesson is not to be daunted by the questions, since the questions are asked of all the interviewees.

Negotiating a Contract

As a new graduate, I was very nervous about negotiating my first professional contract. Thankfully, I had just finished my management class, so I took the advice of my instructor and inquired about:

  • benefits
  • relocation
  • vacation/sick leave
  • professional development
  • higher than minimum salary by considering my student work

Some things were a simple ‘no’ as mine is a contract and not a permanent position, but then I would never have known without asking. I think the last is especially important since many graduates may think that their work as a student will not count towards their salary, and while at some organizations it may not get the same level of consideration, that does not mean it will not be considered at all.

Starting a New Job

It’s important to know where you’re going and what time you’re expected the first day (oh and knowing what to bring for HR form filling), but beyond that,  I think it’s okay to just take your time getting into it. Certainly, I’ve been a little worried especially since there are various technical things to take care of, but thankfully, people seem very understanding of needing some time to settle in.

Getting a Job Also Means Not Always Taking a Job

So recently, many people I know (including myself) have been applying for jobs. Although it may be tempting as a new graduate to take any job that comes along (especially a permanent one), over the course of a couple of co-ops and student jobs, I began to realize that one of the most important aspects of a job is the work environment. This may seem obvious, but again, as a new graduate, most of us would be happy to even get an interview, let alone a hopes at a job.

Red Flags

Even as new graduates, I think we should have certain expectations and if something throws up a red flag, we should be careful. If something throws up two or three, remember to reconsider whether you would take the job.

Say you get an interview. Great, right? Well, yes… but then what if some worrisome things started popping up? If say it was a permanent position, I would expect a lot of libraries to fly someone in for a second stage in-person interview. If they’re not willing, you might look into why. Budget might be a reason in the current economic environment, but then you might also consider whether the job is worth paying hundreds of dollars for the interview.

How was the first interview? Did you get a good sense of how people were like? Did you like the way that they did it? Did you feel like you were wasting your time? If you get negative ‘vibe’, research more about the library, ask colleagues and friends if they know anything. Think about whether you would want to work there for a year, for five, for ten.

Prepare Your Own Questions

I think the easiest way to get a better feel is to ask your own questions at the end of the interview. Again, this sounds obvious, but some people do not seem to be willing to ask questions such as:

  • How would you describe your management style?
  • How would you describe the team dynamics?
  • What do you like most about working for your organization?
  • Is there anything that stands out as a benefit to working for your organization?
  • etc.

I’ve asked these questions before myself and have gotten some pretty good answers from some and some vague ones from others. Vague isn’t always bad since it depends who your interviewers are, but on a panel, there should be at least one person who can properly answer each question.

Programming & Software Design Research Guide – LIBR 530

So for LIBR 530, we were to make a mini-subject guide and write up services that we would propose for the use of a specific type of person. To explain, the persona I chose is a computer science faculty member working on the more ‘theoretical’ side of things.

Lack of Literature

It was actually very difficult to find any research done on information behaviours for computer science faculty, especially anything recent and in the library context. I had to extrapolate from other research on scientists or computer science professionals and much of it I actually got from asking people I knew who had either done research or current faculty members.

The Resources

Interestingly, on the flip side, it was not hard at all to find out which resources were the most important ones. As conferences and its proceedings/reports are so important in the field, the big associations have their own publications and digital libraries. Google Scholar is frequently used because it indexes proceedings, reports (including technical reports), and online writings (vs. formal publications) from academic and research sites.

The Services

I don’t feel as if the services are original in any way, but I thought they were the most useful regardless. The hardest part of putting them into place, especially the first two, is the licensing and copyright involved. I wonder if lecture notes database already exist in an academic institution, in which case, it should be fairly easy to simply replicate.


Honestly, not my best work. I didn’t spend as much time on it as I would have liked, because I just didn’t have the time to. If I could do it over again, I would have taken more time to research and interview people, possibly even do a mini-study. I probably would have focused on the more application and technology side of computer science as well since that’s where my interest lie or do a completely different subject that I know nothing about.

Learning PHP LIBR 559P @ SLAIS

So this term, I decided to take the 1-credit Introductory PHP course, LIBR 599P.

Topics Covered

  • What is PHP?
  • PHP language basics – print, comments
  • Variables (pre-defined, defining, manipulating) and arrays – create, print
  • Passing Data – POST & GET
  • If/else and For Loop
  • Functions – basic building, using
  • PHP & HTML

Short Reflection

It’s so hard to digest such complex information in two full day classes though the first day especially was done well. I really do think it’d be nice to have instead a more advanced HTML/CSS plus introduction to JavaScript, PHP/MySQL or something similar. Full day classes just don’t work with programming of any sort. It takes a lot of time to digest especially when the topic is new and you may have not so tech-savvy students taking the class. I’m really thankful that I have enough of a background to easily grasp what she taught plus everything that Mike also taught in addition when I posed questions on the methodology used in completing my assignments.


I admit right up front that I could have put more effort into the content and making it look pretty, but I had so many other assignments due around the same time that I focused more on writing good code while following assignment and instructor specifications.

  • Assignment 1: Show your knowledge of working with variables.
  • Assignment 2: Create a feedback form, e-mailing the results to a specific recipient. (Note: This form will always fail because SLAIS servers do not have the mail function enabled.)
  • Assignment 3: Create a mini-quiz and feedback form for a first year library workshop, e-mailing the results to the student and librarian.
    • One specific improvement I made in this one is a full error listing instead of listing only the first error encountered as we were taught in class. Also, in the real world, I would naturally never make people use the back button at all!

Please note that the e-mail function is blocked on the SLAIS servers, but I did test it on an e-mail enabled PHP server and both work.