Web Developer Work Mindsets

Of course, this does not apply to me. This is information I’ve gleaned over the years talking to friends. These are the mindsets a typical web developer goes through while at work, maybe even turning into each one of these in a single day.

Starter

Generally seen in first few months of employment. Starter can single handedly handle any project thrown at him/her. Starter doesn’t need any help. Most time spent working hard proving worth to other team members/superiors. Starter does not have the ability to say no.

Planner

Planner is a distant cousin to Doorman and Doc. Planner will spend all of his/her time drawing flow charts and ER diagrams, knowing the ins and outs of each process. Planner’s applications never get implemented – or they are total failures/washes that never see the light of day past an alpha version.

Doorman

Doorman is about to quit. Doorman feels like he/she should leave on a good note, so often turns to Doc. Doorman feels karmically obligated to document everything, leave plenty of notes, and document all processes or even provide training to new employees. Since Doorman was once Starter, Doorman knows how it feels.

Doc

Doc feels like he/she must document every single activity done, even down to using the bathroom. Doc must optimize all hours spent on the clock and prove to superiors that he is a worthy investment. Doc doesn’t realize that he could do that much more effectively by not being Doc and just being becoming Zone.

Thief

People often get Thief and Fire Chief confused. They do kind of rhyme… but that’s where their similarities stop. Thief just has to get the job done — the difference is Thief does it just so people will leave him/her alone. Thief goes out to websites with similar projects and will just modify copy/pasted code and call it their own.

Zone

This beast is hardly seen. Most often sighted around holiday weekends or after hours. Zone can be identified with its unique ear coverings, usually called headphones which drown out all other distracting noise and actually enables Zone to be productive. In the event that Zone is interrupted, a varying hibernation ensues. The Zone’s Hibernation period is directly proportional to the length of the stay in the zone.

Fire Chief

A lot depends on the workplace — you could just be thrown into a Fire Chief position, or create on for yourself while being Launcher.Fire Chief is so disorganized he/she has no idea what to do until a user comes with a fire to put out. Fire Chief only brings quick dirty fixes and ultimately creates much more work for everyone… but who cares? The fire got put out.

Seeker

In search of perfection, Seeker looks for a new platform/language/process because he/she is currently unsatisfied with how much work is going into trivial tasks. Seeker never really lasts, and ultimately reverts to Guardian.

Guardian

Guardian is completely satisfied with his/her current situation, even if it can be done faster/better in another environment. Guardian will even gladly do more work and brag about how ‘it compiles faster’. Guardian is the cause of just as many problems as Fire Chief, the problems created by Guardian are just much longer lasting.

Bartender

Bartender operates under many aliases – most notably Dude-From-Office-Space-Construction-Worker. All Bartender can do is think about how badly he/she wants to not be working with computers ever again. Even with less money, it’s worth it to Bartender. Bartender never takes action.

Feel free to comment additional ones =)

IDEA: Deflowering the so-called Walled Garden

If anyone knows if this is possible, please contact me immediately: hillad AT gmail DOT com. Thanks.

I want to make an application for Facebook’s F8 Platform called Elsewhere. What’s preventing me? I don’t think Yahoo! Pipes has an API.

The concept is simple: collect usernames for other sites. Myspace, Livejournal, Blogger, Typepad, Youtube, Xanga, delicious, Last.FM, virtually ANY site that has you create a user profile.

But how to make this information useful? Yahoo! Pipes can cosolidate all of the RSS feeds that these sites generate and create one RSS feed that can be read by the elsewhere application. The of it like a lifestream but for each Facebook user, updated daily on their profile.

I’m so ready to write this it isn’t even funny… but can Yahoo! Pipes be automagically created?

Review: Safari Beta for Windows

I know it’s a beta, but with a first impression like this:

safari.jpg

There’s no other choice.

safari-remove.jpg

Django Changed The Game

It all started with a pretty ordinary project request from our Parks & Recreation department – “we want to be able to enter/edit scores for our softball games.”

So, like any good developer, requested a meeting so I could really understand what was going on… it boiled down to this kind of these database entities:

teams
fields
leagues
venues
scheduled games
completed games

Here’s a more traditional view of the design: (click it for a full view)

Keep in mind, only about four or five people (max) need to be able to have CRUD abilities with this data.

However, designing a system like this with PHP would be pretty time consuming to say the least. Even with my nifty little utils and db classes that I tout around.

Stevo had been ranting and raving about Django, specifically it’s administrative interface. So, I gave it a try. Luckily, I had been intending on doing this for some time. My server at home was ready to roll – Django was installed and I was ready to dive right in. A few hours later and with the guidance of Stevo, my model was made.

The source is simple. Python was very intuitive, except for a weird placement of a tuple ( [[ here it was ::: None, {‘fields’: (‘name’,)}),) ]] but BAM. The administrative interface was done before lunch.

PHP is unable to compete with this rapid administration capability. Now to get this put on our production server…

Some Answers

Lee asked a few questions about the app, so I’ll answer ’em here…

How do you handle interactive elements – like forms?

At the moment, it’s really only for static pages. Currently the way I’m doing this is keeping the “content” and the interactive parts of the site separated.

Will it be designed to handle add-ons?

Add-ons is a big term. I don’t see why someone would not be able to extend it, but currently writing the ability in for add-ons like mambots is a little overkill for my purpose.

Will you be able to make “on-the-fly” changes to the html/css with certain permissions?

Nope. Let me explain the permissions a little more in depth when you ask about users. There’s going to be one CSS file powering the entire site that the app uses (and that is all set up by me)

Is there a permissions scheme for users?

See the next answer.

How do you handle users?

Currently I am doing it through something called LDAP. Think about it like this – the username and password you have for logging in to your computer, checking your email, and file server permissions is all the same. Why give users another account to deal with? Also, our LDAP system forces passwords to be changed at a specified interval.

In an LDAP setup, there are also user groups or “organizational units”. The way our system is set up is that each department/entity has it’s own group. Instead of dealing with a lot of permissions, I give everyone in the “Group A” group the ability to do whatever they want to do to Group A’s website.

There is a global admin — and it’s pretty easy to change. Think of it like editing a config file. I have a control panel that lists all of our user groups and links to edit their sites.

What about images? I uploaded an image, but now I don’t know how to link it… and does it make automatic thumbnails? (edit – n/m – I found it, it’s just not graphical)

Images are a big concern. I will be thinking about how I want to handle this…

Why is the sky blue?

Answer.

Clicking on a child page does not keep the parent/child expanded menu open in nav

Right. Thank you. Will work on it.

LOVE THE RE-ORDER NAV THING. HOLY CRAP, THAT IS COOL.

Thanks. Here’s how I did it.

I did break it. I applied styles (custom bold, title) then de-applied them. Text disappeared. Plus, the text “here are the real questions” has the style “Code” applied – yet it doesn’t appear as such on the page.

I haven’t really done a lot of playing with the WYSIWYG except for pasting material in from MS Word with the “Paste from Word” button.

The Demo At Last

If you’re interested in a demo of what I’ve been referring to as “the app”, figure out a way to contact me about getting a URL and a Login/Pass.

Some more notes about it:

– Moving it to the server was a great learning experience. I’ve already made substantial improvements in performance and future compatibility which unfortunately are not in the version that I have somewhere on the web for demonstration purposes.

– The application’s purpose is becoming a lot more clear. It’s designed for the end users who need to be able to easily maintain the static parts of sites. It seems that everyone around here needs some type of database functionality. The directory structure I’ve been using is “site_url/content/page” for the static types of pages and “site_url/app/application” for others. I think it’s going to be pretty nice.

– It’s still early. I haven’t decided on a good way for users to include images in their pages. I originally wanted them to use some sort of 3rd photo gallery option, but that is not really sufficient regular inline images. Suggestions/ideas are welcome. I’d rather not do the uploading and thumbnailing on the server. =)

– The idea behind this is that I still maintain 100% of the control of the site’s “structure”/”look” while someone (typically a departmental secretary) maintains the content without having to talk to me. It’s very easy for me to make a new site with XHTML/CSS that uses content from this system.

They Upgraded, I’m getting it out there

So I’m working on getting everything working so I can test.

Lessons learned so far:

-Develop on the platform you’re implement on. Since I was developing this entirely locally with a WAMP server, I’ve run into a few quirks. Mainly with my inconsistent instantiation $nav = new Navigation(); versus $nav = new navigation(); — with PHP’s autoload function it was causing my stuff to die.

– Again with platform… backslashes versus forward slashes … ugh. Let’s also remember some servers have magic quotes enabled and some do not, in case you’re inserting to a database…

– Load times are a little slower than I was hoping for… I am going to try it later tonight to see if it’s an issue here, an application issue, or a dreamhost issue.