Web Development
An Open Letter to Prospective and Current Employers
by Liz on May.19, 2010, under Advertising, Career, Facebook, Net Culture, Posts that I think could help people, Rants, Self Esteem, Social Commentary, Social Networking, Status Updates, Twitter, Web Development
In the wake of all of the hubbub about facebook’s security practices, the various how-tos and informational paranoia, I am asked quite frequently by friends and family of all levels of acquaintance about my continued use of frequent facebook and twitter updates, and their varying degrees of professionalism.
I am an avid social media user. I use twitter, facebook, linkedin and a host of other services. I check-in, I tweet and I update statuses. I post pictures of myself and my friends in fun, and silly engagements, such as playing rockband in my living room. I also tweet about what I’m working on (although I no longer post any actual details due to an NDA that covers my public speech). In short, I like to talk about what I am doing, a lot.
I enjoy disclosing details about my life. The reasons I have found for doing so- as they are generally rationalizations rather than instigating reasons- are many. I feel my professional and personal lives are enriched by a living, breathing, up-to-the-minute portfolio of not just my work, but my entire personhood. I also enjoy that it is easy for people I know to keep up with my day-to-day life, as I am young and mobile, and tend to lose contact with people for months at a time before revisiting them.
Now, most of the concerns shared by those that know and follow me are this: Are you not afraid people will judge you incorrectly, see you out of context or assume false things about you?
Of course not. My twitter feed, facebook profile, buzz list and linkedin updates are me in context. No more perfectly am I captured anywhere. I have a unique personality, varied interests and am overall, complex emotionally.
The company I work for while writing this post has a leader within it’s ranks that exemplifies everything right with corporate culture, and is someone I am deeply and profoundly proud to call my boss. The main thing done correctly is the hiring of new staff, as our company is growing rapidly. Many companies, especially in times of growth, tear themselves apart by giving each applicant only a cursory glance, comparing numerical qualifications and cherry-picking only the brightest gems, polished to the glossiest shine. These gems then mix in a pool of others, all gawdy and imperfectly aligned.
The art of arranging human beings so that they will best work together, and choosing those that have not become so set in their ways, and allowing them to support those that are set correctly- this is a skill that many so-called executives will never master in a lifetime. Selecting only the optimum arrangement, the most efficient, frictionless set of gears that don’t wear each other down due to ill-fitting size and shape, this is the skill practiced here.
But this skill is not something that can be summarized in a brief interview, or a scan of a few carefully selected words by a potential interviewee- it is best summarized by a portfolio of life that grows with a person- ideas and information growing and changing with the person it represents- something a simple resume could never do.
So yes, on my portfolio, you’ll find that I am a programmer- I have experience with Classic ASP and other server-side scripting languages. You’ll see how many years I have worked and who for. You will also see the whimsy and talent, the lack of sophistication and the supreme dedication I have to perfecting the profession I have chosen- all of this information is unmeasurable on purpose- it has to be cataloged accidentally, along the course of life, and through the lens of context.
Google Crackdown: Google is closing the border on Canadian Pharmacies
by Liz on Apr.06, 2010, under Healthcare, Net Culture, Rants, Social Commentary, Web Development
Google, in all it’s well-meaning splendor and ethos of not being evil, has decided to make a change in policy regarding unaccredited pharmacies. Hooray.
Another change Google’s dropped on the table however, is that it’s stance on drugs from accredited pharmacies from our friends to the north has shifted dramatically. New rules state that Canadian pharmacies will no longer be able to target consumers in the US, and that search results will be filtered.
For those of us embroiled in the healthcare debate, either side acknowledges that prescriptions for drugs in the US are often far too costly, and not covered, or not covered very well by current insurance. Even life-saving or medically necessary drugs come at a high cost, and without subsidization by our government, many people do without their medicine, opting to feed their families at the cost of their own health.
Enter Canadian Pharmacies, such as canadianpharmacymeds.com – which is an accredited pharmacy in Canada. Many customers of the pharmacy receive medicine at much lower prices than at non-subsidized us pharmacies, or where generics are unavailable. Due to these new rules however, it could become much harder to comparison-shop, or even find these legitimate pharmacies in order to receive cheaper medication from reputable sources.
The problem that is not currently being solved however, is cutting down on pharmacies that have bad reputations for sending out sugar pills, or are fake/scam sites. These places have little moral or legal obligation to skirt past any rules Google imposes, and so the only people hurt by this are law-abiding, policy-following and generally reputable sources of medication in Canada.
Hopefully, Google will see these issues with the policy change and reverse course, as this is one of the few avenues consumers have of leveling the playing field with regards to healthcare and the rising cost of prescriptions.
oAuth and Classic ASP
by Liz on Apr.01, 2010, under Classic ASP, Facebook, Programming, Social Networking, Twitter, Web Development
So I have been searching in vain for days for an oAuth library for Classic ASP.
I believe that due to the nature of Classic ASP, the limited support and the random quirks (fewer than ASP.NET and yet somehow… people complain more…) there exists NO library for such a thing.
I’ve been looking through the PHP libraries and the coldfusion libraries and so on, and many of the objects and methods present just aren’t supported in Classic.
Problem is, Twitter is depreciating the Basic Auth methods soon, and you won’t be able to cURL in.
@Anywhere, which is a javascript library that will allow Twitter to interact with your DOM, is going to essentially become the Facebook Connect of Twitter. We’re looking at DOM level integration, so it’s server-side language independent. This comes out April 15th, and I can’t wait.
Until then, I can tweet using this library :
http://asp.web.id/first-version-of-asp-twitter-library.html
and store usernames and passwords (horrible, but necessary for 15 days…) for the time being. I’m sending out an authentication tweet that signals successful connection, and pulling the user_profile_pic out of the Twitter REST API Method: users lookup that makes it look a lot like Facebook Connect; it achieves the user interface experience I’m looking for.
Apparently, Cookies are very sensitive
by Liz on Mar.26, 2010, under Web Development
So today, while trying to figure out why a cookie was mysteriously destroying itself, we stumbled upon an interesting turn of events that I can’t find anywhere on the net.
Apparently, Cookies won’t hold if they start with the word “Include”.
We had this cookie- INCLUDE_CORPORATE_BLOG , that wouldn’t transfer from page to page.
A session with the same name would, and so we were going to have to create an entire strange workaround trying to figure out why this piece of data wouldn’t hold. My colleague suggested that we try changing the name, partly joking, to which we said “couldn’t hurt”.
Turns out, in Classic ASP, you can’t have Cookies that start with the word “INCLUDE”.
Get your own info! LMGTFY as a cultrual shift
by Liz on Dec.15, 2009, under Web Development
It used to be a hallmark of geek culture, dispensing information. Having the most up-to-the-minute info about releases, or being on top of the rumor mill is one thing, but explanation was once a respected occupation of your time. Now, its become a second-class geek status.
Once, long ago in the halls of a high school or the collegiate-choked grounds of a campus were where you would find geeks patiently explaining details of complex scientific methodologies, math inundated with referential equations and the ins and outs of How To Fix Your Computer- but we have grown weary. Now that tech support has become an occupation we get paid for, no one seems to relish taking the time to educate their fellow man.
From “frustrations” tees at thinkgeek “no, I will not fix your computer” and “I read you’re e-mail”, the status has changed from “the smartest guy in the room” to “geek monkey”.
The trend of the crowd to recognize an avenue for exploitation has resulted in your average geek becoming overworked. He has coped by creating user-friendly tools for use by the massses in ascertaining their own information, rather than asking a question every time they had a thought.
Geeks however have become so used to getting their own info, and then pointing people towards Google or Wikipedia when they got a question more than a few times, they believe by now the public should have also learned this skill.
What do geeks do when faced with repetitive tasks? Create a tool that automates the process.
Hence sites like Let Me Google That For You- geeks have responded in a familiar way.
The growing trend, being irritated at questions with easily obtained answers, stems from the familiar Internet hate machine known as 4chan. One of the oldest and largest anonymous posting sites in the world, people are generally subjected to the rudest, most vile comments this side of xBox live- so it’s no wonder the trend started as a meme. This has become a legitimate tool over the months of use however- and it is now acceptable to send a link to your mother or a coworker, as long as they have at least some sense of humor.
Either way, the message is clear- geeks are tired of being your own personal search engine.
IE does what it wants
by Liz on Nov.12, 2009, under Browsers, Career, Gripes, Net Culture, Programming, Rants, Web Development
There is a Microsoft Knowledgebase Support Article that points out yet another flaw in IE8 or lower. This states that Microsoft Office can’t download documents when you set the page to expire immediately- so essentially you can’t have very secure pages if you want to export information to excel.
Firefox could do this since firefox .8
Chrome could do this from the get-go.
Safari and even Netscape Navigator have this capability, and most versions of AOL’s horrible browser can do this.
Why can’t Microsoft get with the program? The issue here is that MSIE will do what it damn well pleases. It always has, as it commands the majority of market share. Until we can get people on other, more stable web-standards compatible browsers we won’t be able to really open up the modern web.
An Open Approach to Medicine
by Liz on Oct.28, 2009, under Healthcare, Net Culture, Social Commentary, Web Development
Medicine, as a rule, is a very closed-source system. Even as the burgeoning information age claims basic diagnosis with WebMD.com and a host of other medical information sites, real info is locked in tightly controlled mediums. Resistance fighters like Google use tactics like Google Scholar and Google Trends to map information researchers across the scientific spectrum can use to come up with real-time theories about health and security, but a serious tool that has been tapped in the web era has yet to be explored in the medical community.
Anonymous usage statistics are used by Microsoft, Google, Yahoo and a host of other companies we know, and sometimes trust. Why not GlaxoSmithKline? Why not HP’s medical technology department?
Having our medical data available to these companies is a sensitive issue, one HIPPA aims to protect us from- but electing to share information is a hassle that many patients don’t take, or aren’t made aware of- holding hostage gigabytes of real-time data that could be used to report important information about drug side effects, interactions, rates of recovery and symptoms few patients even report.
Having, by default, anonymous usage data stored in a central repository, storing nothing personal along with the data, could lead to a serious boon for researchers. Understanding how different medicines interact with dietary patterns, other drugs, patients with accompanying disorders and genetic histories is too tempting to ignore.
Currently, the Obama administration is pushing to computerize all medical records, some say for this very reason. It’s an environmental, anti-bureaucratic decision that helps people to eliminate the endless shuffle of paper and reclaim many of the costs associated with medical billing- but the move has come under fire from conservatives looking for possible breaches of privacy. While true, the medical story of your life could be taken by ner-do-wells on the world wide web, the uses for such data are limited without your consent. Companies couldn’t use that data to screen you from employment without risking a major lawsuit. Creditors could not use that data for the same reason. The only people at risk to be taken advantage of stand to lose something due to political or business related reasons. While this information could affect the market negatively if say, a CEO’s heart problem surfaced, or an untimely reveal of a mental disorder might affect negotiations- but the lives saved, economic potential of more innovative drugs reaching the market, and genetic patterns being discovered before it’s too late might just be worth it.
Besides, there are ways around it- electing not to have your medical data stored online for instance, or even on the computer in the first place, might eliminate the complaints of all but the most hardcore libertarians.
In the end however, the nation’s medical records will eventually be computerized for one reason or another, and its only a matter of time then before the vast amount of data can be tapped in the name of progress.
Context in Design – Design in Context
by Liz on Oct.07, 2009, under Net Culture, Web Development
When designing a website, or any user interface, we must consider context. What you are producing is a tool, not a product or an application. The better the design of the tool, the more use it will have, and the more it will be used. Designing for multiple levels of skill is something many coders lack in, mainly because they are power-users. What is apparent to them is not apparent to others, and what is contextually relevant to them is, again, obscure to the general populace.
In designing a website or other web-based application, we must consider what else the user is doing- using our application is generally not the sole focus of their task, but a tool to augment it. Whether it be a web-portal for a customer service rep, or a mobile application for tagging music- we have to consider what else is on their mind, and what else they may be interacting with. They may choose to stop using our tool very quickly, and then return to it at a later time- but how likely are they to do that? What are the ramifications of that action?
Mobile devices are short-usage only, and with short timespans the user does not have time to wait for a lot of images to load or an animation/splash screen to play. In Internet-enabled applications, a login prompt may be too much, especially if the data is not especially secure. Having a session expire daily, rather than an application-launch login event may be the way to go. Other tools, such as an intranet, may receive heavy use over a long period of time, followed by long periods of inactivity(like lunch breaks, or leaving for the day.) Where the browser is the application window. Triggering a login following a closed browser may be the best security route, since you are dealing with company data but don’t want to effect productivity.
We must also consider what the user sees when they see our icon, link or button. What are they trying to accomplish by clicking on it? What associates in the user’s mind when they think of using our tool? The human brain is very good at making connections and associations- but remembering ALL the tasks a tool can be used for is simply out of the question. What has to happen, in order to prompt it’s use, is for the user to associate the task with our tool. For instance, if our tool becomes “the button that lets me identify songs”, we have successfully marketed and designed a music-tagging application. However, if the user then wants to “find more songs like this one”, and the answer to the question “what tool should I use” is Pandora, or Last.fm- we have failed in either the placement of the “suggest more songs like these” button, or we simply do not return results relevant enough to the user. We will assume we do however, provide the best service available, being that this is an article on design and not algorithm.
When the user reaches out for related tasks, we want them to look at our tool not as a “multi-purpose” tool, but a “category” tool. If our tool is modular, we need to integrate with other, categorically-relevant tools (consider Shazam’s youtube, twitter, and iTunes integration) in order for the user to associate us as their “category” tool. In being a portal for anything associated with that category, we can ensure use despite alternatives.
Inexperienced users often flock to one-stop-shop applications because they see categories as entire tasks. When they want to “do email”- they click on outlook. This also involves calendars, task lists, contacts, even newsgroups. This is not seen as a multi-purpose program for many tasks, rather all of those tasks are part of email- and email itself is a category we might call “communication” or “business” or “productivity”. Thus creating an “Email” application must take into account things it belongs in the same category as, as well as things it might relate to. The more category-related things it can do (and the more seamless it can make them) the more polished, intuitive and “easy” your tool is.
Do try to maintain however, category apps. Mozilla has Firefox and Thunderbird for a reason- they didn’t want their “Internet” application becoming too big. By keeping the applications themselves light enough to respond quickly, and yet featured enough to encompass a category, we have successfully created a tool that is associable to a particular activity, rather than a specific function.
On a mobile device, this idea is very different. People use an application to perform one or two specific functions, and have a multitude of other applications to choose from. Consolidating here is not recommended as it will slow your application down when time is of the essence. Adding additional functions to an app based around a leisure activity is fine, but any application that has to be used quickly (song tagging, flashlight, 911 dialers) is suicide.
If your service is modular and we are simply concerned with network penetration instead of forward-facing usage, you can consider creating a web service, or API to interact with other websites. Modularization is a characteristic of the web and most people don’t want to receive all of their content from one provider- even if they do want it all in one place. Consider letting others plug into you, rather than attempting to be a full show when you’re a sideliner at best. It’s OK to be a sideliner, this is the web.
We’re all sideliners here. Even Google.
In an intranet however, things are different. Launching of different websites or “systems” as users often refer to them hurts productivity. When a user has to click back and forth or even manually migrate data from one “system” to another, we have failed in the basic mission of computers: make data easier to organize, and less work to manage. If you have data entry staff that don’t interact with handwritten items, there is something seriously wrong with your system.
Humans are not technological stopgaps- they are the reason technology exists. Taking one system, modularizing it and creating an interface that allows for quick access to other parts of the system is no small feat, but it is worth every second of effort. An (overly) simple rule of thumb is that for every hour a programmer spends optimizing a program, or a designer spends optimizing a design, 1000 man hours are saved each year. This goes for big operations as well as small- even small businesses need to save precious hours in a day not processing data- that is the computer’s job.
Smooth navigation is key here- try to make the “drilling down” process easier to manage, by ensuring a map of the site is available on each page. Keeping this map navigable by utilizing dropdowns and expanding trees rather than having the user “back out” of what they were doing and having to “go back in”. We aren’t walking down tunnels, we are on an open plane- point to point navigation needs to be simple.
Human thought processes have a momentum about them- they have to get going before they can stay on one track- such is the case with work. Focusing on a task involves minimizing distractions and freeing your mind of nagging tasks- this is why getting “re-engaged” after interruption(phone call, lunch, or just getting there in the morning) is a huge productivity drain. By minimizing the “set up” process and keeping “re-engagement” to a minimum using efficiently designed user interfaces, auto-completion, user-specific frequent links, bookmark-friendly URLs and a logon page that directs you to the last used page, rather than starting you at the “top”- these practices and others will create a seamless flow into work, allowing users to flow in and out of using your tool, instead of making the tool the task in and of itself.
Apps v. Websites: Ultimate showdown in the mobile browsing era
by Liz on Sep.27, 2009, under Web Development
I was looking at my iPhone the other day when I was in a particularly bad dead zone, and thought to myself “Wow, I don’t have much to do that’s not Internet-required”. Other than a few games and stanza, it appears most of my apps are simply an interface for a single website.
As I thought about the implications of this, I realized that the line separating webapps and desktop applications has blurred. I use mint.com to manage my finances, and facebook to manage my social circle. I use google docs to deal with my documents and gmail.com to manage my e-mail. All of it, since gmail can check other POP-enabled accounts.
Now, to look at it another way- there are many thousands of apps in the App Store in iTunes, but the Pre and Blackberry have disappointingly low figures. Of course, the iPhone has been around longer than the Pre, and it has a larger, more technically-capable cult of followers than the business-centric Blackberry, but the real reason is that developers simply haven’t had enough time to learn an entirely new SDK, and why would they want to?
The simple solution is to develop an application that is cross-device compatible- a webapp. Something they have only to fire up their browsers to get to, it increases the user base of your application to anyone with a portable connection. The roadblock? Session Management.
The biggest problem with the iPhone, Pre and Blackberry (less so with android phones, but a problem nonetheless) is that it can’t carry data past more than a few webpages. The choice to use a webapp is simple when you don’t have to login- you can store everything in the URL variable scope. When users have to access personal information, or verify their identity (for purchasing things perhaps?) the choice to use cookies, or session variables is one that is difficult to make. When you want your users to spend time using your site- increasing their exposure to your brand and maximizing revenue potential- you need to bite the bullet and write a device-specific application. When you only need to provide data in short bursts (like twitter, or meetways) you can afford to make a smaller, data-optimized version of your website.
Literally every job
by Liz on Sep.14, 2009, under Web Development
Literally, ever job I’ve ever held involves Craigslist in some way.
I have been reading article after article regarding job situations, and many of them have practical advice for any other job searcher.
But I’ve given up. I now know I have only but to post my resume on Craigslist, and jobs will come to me. I don’t even bother applying for the ones that are up there- for I know the deluge of responses they get from staffing companies, Nigerian scammers and overseas developers looking to sell outsourcing.
Craigslist is the only free resume repository of any meaningful size- it does not cost to put your resume out there and there is still a higher legit-to-scam ratio that you can perform a keyword search without having to wade through too many unqualified or irrelevant responses.
I can do a search on my competitors for free, post for free, and recieve responses for free. They want nothing in return, except your continued patronage to other parts of the site.
If Craigslist were to start charging for resume search, I know I wouldn’t bother putting it anywhere but monster.com- which is the second-cheapest resume search.
But now that you know, just go ahead and post it there. Unless you’re a mid-to-senior level web developer. Then it’s no good. Stay away.