Choose Your Theme
Warren Shea

Archive for the ‘Development’ Category

Accessibility – Development for the Visually Impaired

Wednesday, June 22nd, 2011 at 12:30 am

Well, this is new.

I’ve got an accessibility project (I’ve had for a month now) – making things (purposely being vague here) meet the WCAG (Web Content Accessibility Guidelines) 2.0 Level AA Rating. What this means is basically making things fully accessible for the visually impaired; making text the necessary font size for a visually impaired person, making sure content is navigable (that’s a word!) via the keyboard, making sure all information is accessible in some way through the use of a screen reader and a keyboard.

I’ve got 3 people under me – originally I was just supposed to be project lead…but they actually refer to me as the boss -_-; It takes some getting used to. ….the poWER…THE POWER !!!! Seriously, they look to me for answers for everything. They go to me to make the tough calls. Honestly, I love it.

Recently, I think this has given me the opportunity to show one of my best strengths: the ability to understand things logically and rationally, with few pieces of information. Like putting a puzzle together. As I said today, I feel like…no, not Batman, but House. Well, and Batman. But House has a team….just like me ;) But basically, they’ll have an issue. They won’t know what to do. They talk and bicker amongst themselves and try to figure out the best plan of attack. But they can’t agree. They ask me for guidance. I don’t know what to do either, I hear their dilemma. But we talk about the problem for 10 minutes, and I’m able to figure out the best course of action, which they all agree with me. And I love it.

They tell me that when I meet with them, once a day or whatever, it clears things up. I really help give them direction. Not only is it nice to be able to help these 3, but it’s great to be able to figure out the best solution where they all agree or back me up. That my opinion, intelligence, and reasoning not only matters, but is crucial. It’s a great feeling to be able to think at level. And I’m finding that it’s coming more and more naturally to me.

It’s also allowing me to be more comfortable with my opinion and my skill. It’s allowing me the great opportunity to test my leadership. And while I’m reluctant to be a leader for social reasons, I think I’m a good one when I’m placed in the situation. I generally don’t hold or organize meetings but I have 3 this week in which I’m leading, organizing, etc. On Friday, I have to public speak for 12 people for about an hour. The best part about that is…I volunteered for it. I could have left it to my team but I wanted to challenge myself, and practice this. I think that generally, I’d be shy about it but I can’t wait this time. I’m really emerging as the leader I always knew I could be if I weren’t so socially retarded…

Ahhh….got sidetracked.

I actually wanted to write about Web Accessibility. As lead of this project, I’ve learned a lot about the technical aspect of it. Not as much as my team, but enough. And I plan to learn more for my upcoming presentation, this Friday morning. But while there are rules that need to be followed in coding, to meet the WCAG 2.0 Level AA Rating, what I’ve learned most is changing my way of thinking to accommodate the visually impaired.

They say that to become a strong developer, it’s important to know different coding languages. It’s become clear to me that it doesn’t mean that you should know ASP.NET VB and ASP.NET C#, or JavaScript and Java. It doesn’t mean that you should know languages that are fundamentally the same, but with different syntax. It means you should know different fundamental languages.
For example, C# and Ruby. JavaScript and jQuery. As I recently greatly improved in jQuery for warrenshea.com, I learned how to code differently from the standard JavaScript.

I also feel that to master Front-End HTML, you need to master making a website fully accessible. You can’t build a website that <insert x% of blind people in the world> can’t use. That’s not a good website. You need to consider how to make your website accessible to everyone. And it’s a different skill. Closing your eyes and listening to a screen-reader.
Understanding that:

  • visually impaired people start at the top left and have content read to them….and don’t want to hear the same navigation text every time they view a page (which is why we provide a “skip to navigation” ability).
  • Flash should be accessible via the keyboard. If you can’t click play, pause or stop, there should still be the ability to do so.
  • words like “click here” do not apply to the visually impaired (as they’re not clicking).
  • a visually impaired person should be warned that a popup window is opening, otherwise a visually impaired person may not be able to tell that there’s one.
  • the color of text on a background should have a certain contrast ratio to be viewable (4.5:1 for a level AA rating, 7:1 for a level AAA rating)

The point is that when you try to develop for different browsers and resolutions, it’s a means to make your site more accessible. But a lot of developers don’t realize the % of visually impaired people in the world. They should consider that developing for different devices, browsers, and resolutions is just as important as developing for the visually impaired. Sure, they’ll spend a lot of time making changes that are only on a text level, and won’t be visually different….which seems…I wouldn’t say pointless, but there’s not as much value in it for the time you spent. But know that not developing for that is actually discriminating against the visually impaired. And that’s what the real problem is.

Anyways, I’m thankful to have had this project. The work is tedious – though, I’m not doing it. But I’ve learned a lot. And not only have I learned a lot, I’ve learned a different way of thinking. And as far as projects go, I can think of no greater reward.

P@$$words

Wednesday, May 4th, 2011 at 1:37 pm

The recent PSN (Playstation Network) and SOE (Sony Online Entertainment) hacks have been bad. Bad for the average user that uses these things (me), very bad for the users that have purchased things over these channels (me), and very very bad for Sony. But I have little sympathy for them as creating something to hold this information needs the support and security around it to prevent that kind of stuff. While PSN isn’t a paid service (and thus, not directly revenue generating, as opposed to say, XBOX LIVE), I would imagine that they should definitely have had the financial means and resources to prevent against whatever security hole was used.

That said, I work for a large corporation and while we have group(s) dedicated to security, I don’t know how they would fare to the creative hacker. In a recent discussion with a security minded person, he recently told me that he teaches people to hack. My original thought was “as a security expert, why teach people to hack? It seems to enforce what you’re trying to prevent.” but the answer was quite obvious. He said “by teaching how to hack, it helps a developer to develop more secure code”. Duh. Now, I’ve never been one to hack. I mean, truly hack. I can do some creative things with my given skills but I’m not one who knows about <insert what I don’t know about hacking keywords>. I know how SQL Injection works…and thus, I know to code to prevent that type of exploitation. But I don’t know how <hacking method x> works, and thus, can’t code against it.

I’m always up for learning new things, and learning how to hack better is definitely something new on my list. Not to do something malicious, heavens no!. But to become a better developer. Now is a good a time as any to take the first steps towards learning something new.

Anyways, the intention of this post was to discuss passwords. Given the recent exploitation, I’ve been forced to re-evaluate all my passwords. Granted, I’ve been meaning to do this for a while, but this actually gave me a pretty good excuse. While it’s a security risk introducing the following topics, I’ll try to stay vague and not give anything away that could potentially hack me.

I’ve finally made different passwords for everything. I’ve always avoided this because of the obvious limitations to my memory. I used to have about….5-10 passwords which I used for everything. They varied from “password” to “I don’t care if this gets hacked” to “This is my godly, unbreakable password!” but as I sign up for stuff, reusing certain passwords, the passwords blurred. I had “I don’t care if this gets hacked” passwords for important stuff, and “This is my godly, unbreakable password!” for unimportant stuff. This has become a problem.

Up until recently, there was something I hadn’t considered regarding the security around signing up for things. When I would sign up for stuff, I would submit my email, my username, and a desired password. To keep things simple, my desired password would often be my email password. What a ridiculously stupid oversight. Generally, when you sign up to sites, you think they have a secure system. You hope they do. Password hashcodes, security precaution x and y. But what if they didn’t? As the user, you’re no wiser to their infrastructure or security. Suppose they simply had a table with


EMAIL Username Password
warren.shea [ a t ] gmail.com warrenshea password


and what if the system admin or whoever, just viewed the table and BAM!, gets the email and a password. Granted, it’s the email, username and password for the site they’re the admin of. But technically, that person could try that combination of email and password to “hack” in to the email account. Now, I don’t know what the percentage of people that do this is…but I’m fairly paranoid and even I did it. Granted, I’m quite stupid as well…so it’s hard to say. Still, I imagine that you could probably hack in to 10-20% of the emails….and that’s a lower estimate. I would guess you’d get in to 80% of them. People just can’t remember that many passwords so they reuse them. Again, it wasn’t too much of an issue as I would sign up for stuff with my “bad password” while my email had my “good password” but again, sometimes I’d get stupid or careless.

There’s also the problem that my “This is my godly, unbreakable password!” has certain characters that aren’t allowed by sites. A good site will allow dIFFerEnT cAseS, NUMB345, and C#@RACTERS. But some don’t. And I have to use “I don’t care if this gets hacked” passwords for important stuff….because the system won’t allow a good, secure password. In 2004, I actually had an email rant to Rogers because I couldn’t change my password to the one I wanted….they wouldn’t allow special C#@RACTERS. Sh!tty system.

.
.
.

Anyways, that’s gone now. I’ve modified all my passwords to be something different for each and every thing. Getting “PASSWORD A” will not give you any other access except to “SECTION A”. And that’s how it should be, I’ve just been too lazy to realize and change things. But improving your own security is the first step to becoming secure yourself. Better to fix things like this early than get hacked somewhere down the line for signing up with “I just wanted to download this one thing!” site….but obviously you wouldn’t know which site hacked you because you’re a password reusing fool, so it could be a number of them. Also, you’d have more important problems to deal with…figuring out how to fix things rather than figuring out why you were hacked and who did it.

Now, please watch this informative video on safety best practices.

Radical Web Ideas

Tuesday, April 19th, 2011 at 9:03 pm

I have begun a revamp of my entire site (warrenshea.com). I started yesterday but I was finding warrenshea.com/megaman too hard to fix while maintaining the other themes.

I can change the stylesheet but I can’t change the name of divs in the HTML without changing global code, which means I would have to change the other styles. Anyways, big pain.

What I decided to do, temporarily, is make worldofwarren.com my warrenshea.com dev site, at least while I do these major updates. You could check it out but it might be down…I figure this will take some time to do. I’m excited though.

So anyways: Radical Web Ideas

  1. Combining Stylesheets
    Turning
    -reset.css
    -stylesheet.css
    -stylesheet_blog.css (the wordpress css)
    -print.css
    -prettyPhoto.css (the image viewer)
    into one css.

    But the thing is, there are actually 4 stylesheet.css and 4 stylesheet_blog.css files, one for each theme. So instead of combining 5 stylesheets together, it’s actually combining 11 stylesheets together. That’s actually quite difficult.

    So what I’m doing go to is load a .PHP with a CSS header (instead of a .CSS). I’ll put all my stylesheets for every theme in there, but only output the necessary CSS needed, keeping to stylesheet small, all in one place, and have it only do one call to the server.

  2. Combining Javascripts
    Same deal as above. Rather than call Google and the jsapi (making numerous calls – jquery, jquery-ui, swfobject), I will house all the scripts locally, in one file as well. Also, I call a bunch of scripts too…custom one. I’ll centralize that as well
  3. Get Twitter feed via PHP and Twitter API and output via PHP, w/o JavaScript
    Rather than need Twitter’s JavaScript to load to make the rest of my site load, it will all be PHP, reducing a JavaScript call.
  4. Re-write HTML for many of the pages. A year ago, when I built the site in Apr, I thought my skills were great. Now, I feel my skills are just as good but I can see how bad I used to be. “You don’t know what you don’t know”.. Anyways, I plan to fix some terribly badly named divs, switch some ids to classes, etc.
  5. Re-evaluate my wordpress changes and code/css for those items
  6. Re-do the RSS feeds…currently they’re outputted with wordpress widgets…I want to change it to standalone code written by myself.

Overall, the point is optimization. Yes, my site loads slow (especially lately… :S) and it’s probably me.

Right now:
1 – HTML Request
5 – CSS Request
9 – JS Request

Ideally I want to make it
1 – HTML Request
1 – CSS Request
3 – JS Request (maybe less if I can…)

Anyways…yeah, working on worldofwarren.com as my dev site.

<in Orcish> Werk Werk!

Friday, March 18th, 2011 at 1:48 am

So the senior developer that works with me has gone on vacation this week so I’m helping out with 3 of his tasks.

And while the timelines are tight (one week) and as of today (Thursday), I’ve only fully completed 1 of them, I gotta say that I’m having more fun working than I have in months. I can’t disclose the nature of the projects for obvious reasons…but 2 of the 3 of them involve learning something new or building something interesting. And the third project, the one that doesn’t involve learning something new…likely won’t get done by the end of this week :D

Anyways, one of them, let’s call it Project X, involves
1. Developing in a better language than I’m used to.
2. Developing on a different browser and platform.
It’s just…different. Challenging but within my reach.
The best part is that I can apply the things I’ve learned in Project X to warrenshea.com. So I may do that in the near future. Again, I can’t tell you what I’m doing yet….be patient, I’ll reveal it in a matter of time.

So on Sunday-Monday, I worked from 2am-6am. That was brutal and pretty much messed up my day. Good thing for Overtime Pay :) Well, technically I slept from 6am-noon so I missed a few hours in the morning. But ah well, I made it up that night (had to do some testing from 5pm-7pm).
Tuesday – Worked from 9:30am-10:30pm on Project X (13 hours)
Wednesday – Worked from 9:30am-Midnight on Project X (15.5 hours)
Thursday – Worked from 9:30am-4:30pm on Project X, went to Richmond Hill to have dinner with my family (parents, niece, nephew, bro, etc.), came back, worked AND FINISHED Project X! WAHOO!
Friday (tomorrow) – Work on Project Y from 9:30am-5pm, go to a basketball game (Raptors VS Wizards), maybe go to a birthday dinner after, and then come home and hopefully work on Project Y
Saturday – Possible Birthday party (another one), possible Toronto Comicon. If I don’t do that, I’ll be working on Project Y.
Sunday – Project Y.

So Project Y involves (from a technical standpoint)
Taking a Querystring from the URL
Loading a server generated XML via a JSP (see next point) but using the Querystring from the URL (thus, using AJAX to generate the XML as it needs to be after page load)
The JSP loads the XML from a cross-domain XML (this must be done so that my page can access the XML and prevent the cross-domain issue)
Anyways, eventually I end up with the XML, unique to the querystring.
I parse it, output the content to the page. I need to create a paging system manually (I’m using only HTML and JavaScript here, no server side languages).
And done!

Well, as I wrote that out, it doesn’t seem hard at all. Time consuming, but fun. Not doing standard HTML/CSS/JavaScript….using AJAX, XML, Querystrings (in JavaScript)…it’s interesting.

Anyways, that’s Project Y. Sounds easy, the (not hardest but) time consuming part will be outputting the XML into the page…I did the same thing here: [Redacted] a couple years ago…that was fun. God, there’s SO MUCH JAVASCRIPT on that page. browserDetection functions because I didn’t know jQuery at the time. JavaScript AJAX calls because I didn’t know jQuery at the time. Multiple XMLs, JSON….I had months to do that thing. Project Y has 3 days. So I’m gonna work my arse off partly because of the responsibility I feel that I need to deliver to the senior developer, but mostly because I simply can’t wait to do this. Not sure how much I’ll learn but it certainly sounds fun. 2 days to do it is pretty tight, especially considering it’s the weekend and I might do other stuff on Saturday….but I’m always up for a developing challenge.

I swear, if I didn’t have to work the next day, I would have pulled all nighters doing what I was doing this week. I loved it so much. Coding all night, just me, my music, my text editor and my focused, enthusiastic, eager mind. It’s not everyday I’m so excited to do work after all…I may as well milk it.

Anyways, off to bed. Based on the amount of sleep I’m gonna get tonight…I predict being very tired for the Raptor game tomorrow. Stupid me. Seriously.

My Personal (Developer) Resolve

Wednesday, January 12th, 2011 at 1:31 pm

Resolve
To be awesome at (almost) all aspects in the limited stage of the web.

*The following is a list on all the web-related items that I already know, would like to learn, and have no interest in learning (despite being related to the web). Some points may not seem to make sense, that is because my knowledge in the area is so terrible that I don’t know what I’m writing >_<

This Resolve includes:

  • The ability to develop proficiently in various development languages, frameworks, and techniques including:
    • ASP.NET 4.0 C#
    • ASP 3.0 VB (Classic)
    • HTML5
    • PHP 5
    • XHTML 1.0/HTML 4.01
    • JavaScript
    • MS SQL (and mySQL)
    • Ruby (on Rails) (maybe…)

    • CSS2
    • CSS3
    • SASS
    • OOP
    • AJAX
    • JSON
    • XML
    • XSL/XSLT
    • DOM
    • DHTML

    • jQuery
    • Prototype (and script.aculo.us)
    • MooTools

    • Google Chart API
    • Facebook API
    • Twitter API
    • Google Search Appliance API

  • The ability to develop for major browsers including Chrome, Firefox, Internet Explorer, Safari and (maybe) Opera
  • Familiarity with Web Accessibility standards including:
    • WCAG 2.0 standards
    • CNIB (The Canadian National Institute for the Blind) Priority Level 2
  • Understanding of fundamental SEO principles and Analytic tools including:
    • Google Analytics
    • Google Search Appliance
  • Knowledge of various Content Management System and Web Publishing tools including:
    • Drupal 7 and Drupal
    • WordPress and Blogger
    • Vignette 7 and Vignette 6
  • Proficiency in various graphic programs including:
    • Photoshop
    • Fireworks

This Resolve does not include:

  • Mobile development (although this may change in the future)
  • Email development
  • Development of non-web languages including:
    • C
    • C++
    • Java
    • Visual Basic
    • Perl
    • Python
  • Development of non-web languages that are fundamentally from the list above including:
    • JSP (Java) (although this may change in the future)
    • Mason (Perl)
    • Django/Zope (Python)
  • Development of supporting web languages:
    • ActionScript
  • Proficiency in web-related tools including:
    • Flash, Premiere, Illustrator
    • Silverlight (although this may change in the future)