Why does chi.mp call it a mini blog as opposed to just a blog? Hmm...
Avatar

Overmortal

Vcard Download vCard   what is this?
Rss_icon

Recent Activity


Filter by:
All
  • Django Settings Aren't Accessible from Models

    We ran into an interesting problem yesterday. As any good programmer knows, you never hard code path information into your code. You use properties files, external XML, etc. In Django, you use the settings.py file.

    The settings.py file is a python file like any other. It's all python code. This means that you can add your own stuff in there too - like file and directory paths.

    Yesterday we were working on some model code for a client's e-commerce application and the strangest thing happened. It wouldn't let us access the variables from the settings file. Although we imported the settings via "from django.conf import settings" we kept getting a command line error while attempting to validate the model code stating "AttributeError: 'module' object has no attribute [SETTINGS VARIABLE NAME HERE]" and refused to validate.

    Of course, we first attempted to check all the spellings and import paths, thinking that we merely had words mixed up or something. When that didn't work, we thought that maybe the models.py file wasn't finding the correct settings file. When that didn't work, we decided to start eliminating code until the error ceased.

    The result? It turns out that the following code will break any imports from your settings file:

    from tagging.models import *
    from tagging.fields import *
    

    In order to get it to work, we had to change it to the following:

    from tagging.models import Tag
    from tagging.fields import TagField
    

    This, of course, is an importation of classes from the django-tagging module. We were enabling our client to tag her products, as well as categorize them; but this bit was throwing off our models.py file's validation.

    The moral of the story is that you really should only import the classes that you need. All developers know this, but sometimes things leak through the cracks - especially when their are so few classes in the imported library. We're posting this here in hopes that anyone else having this issue will be able to find us in the search engines, and save time by avoiding their own investigation.

  • Web Design Inspiration and Morphogenesis

    In the world of web design, nothing stings worse than when somebody else rips you off. But unfortunately, we're talking about technology and the Internet, and in this grand ol' age of openness, easy access, and millions upon millions of web pages, eventually somebody is going to do things that look similar to your accomplishments. It happens - whether with web design or some neat new AJAX functionality.

    As designers and technologists, we accept that. Coming from a writing background, I've had the luxury of being plagiarized by a major city newszine in the past. It was a blatant rip-off - word-for-word something that I had recorded down while interviewing a media personality. When I brought it to the attention of the newszine, they we're automatically on their writer's side - typical big guy versus little guy battle. Luckily, however, my case was pretty airtight and I received an apology from the other writer and the magazine (a printed one at that).

    In technology it's different. In technology, you expect a cool new AJAX technique to be uniquely yours for only a couple of months before someone else reverse engineers it. In web design - if your design is successful - you expect to see imitators somewhere down the line.

    Even more than that, however, is the fact that technology is so fast and so many people are thinking, that two people can come with the same ideas independently of one another - that old idea of the morphogenetic field.

    In the end, what stings worse than having your idea "ripped off" is being accused of doing the "ripping." We received an email yesterday from a gentleman who told us that we needed to rethink our web site design because our "ripping off" of another company was too evident. These accusations apparently come from somebody who is familiar with the other company, but not with ours, so automatically they point the accusatory finger in our direction.

    I reviewed the other web site, and there are some similarities. However, I had never heard of the company originally; and I knew where our inspiration lied, so I wasn't all that concerned with this one person's emailed statements. In fact, I'm not even going to mention the other company's name, because I don't want anyone to think that we are accusing them of anything. That simply isn't the case.

    The bottom line is that sometimes people do similar things as you, and you can't really get caught up in a battle over who did it first. Even if you did come up with your design first - or your piece of technology - if the other company is bigger than you, or more popular in certain circles, they'll get the benefit of the doubt, while you'll get the finger (so to speak). When that happens, try not to let it bother you. Focus your energy on making your business more successful. In fact, I'm writing this blog post in hopes that if any others run into the same issue that we have, they can just cite this and move on rather feel compelled to spend precious time on their own blog post to vent.

    In the spirit of openness, however, I wanted to tell the tale of how our web site did get it's design.

    Our domain had previously existed in two different places at times: overmortal.net and overmortal.info. The design that you see today is actually pretty much the original design from the company's inception in 2006. The colors, logo and logo placement, copy, navigation positioning and colors, footer, and sections are all almost exactly the same as they were in the beginning (the copy has been refreshed over time obviously). The biggest difference between the original web site and the current one is in the dimensionality. The original design was more flat with less depth.

    When it was time for a redesign, we wanted to keep most of what we had and just update it slightly to be more appealing. We had a couple of in-house designers and a third-party user experience expert to draw on, which gave us the more "button" looking navigation - most often referred to as "web 2.0" styles. Originally, we tried to make the inline section blocks ("curious?," "web design," "programming," etc.) also adhere to this style, but the touch was a little too much. We decided just to make them dark block elements.

    At a previous company that I worked for, we had a thin bar at the top of our web site, used for nothing more than an accent color. I liked the idea, since our web site was primarily white with blueish text. The accent bar added a nice splash of color. The problem was that it also often drew the attention of the viewer's eyes. We needed it to do more with it if we were going to have it there.

    Our marketing guy was the first to chime in with the idea of putting our contact information up there. If it draws the eyes, let's make it easy for them to find our phone number. We later added the email link, since many people find emailing a company easier than just cold calling.

    Marketing also took the ball and ran with the home page copy changes. That big blue background with our exclamation of making the web better, and our few bullet points came from a weekend reading of some usability and social design books - the tech equivalent of a musical hook.

    The "work with us" and "learn more" links are a services equivalent of the "sign up" or "learn more" that you find on many web application web sites. It sits above the fold and in a bigger font size to entice the viewer to do one of two things.

    By far the biggest change was to add the grey section below the fold. Originally, this just housed our footer (navigation links and copyright), but we wanted a place to put a few testimonials as well. We added in the testimonials, but felt like something was missing. Marketing wanted to put a contact form down there, but we already had the phone number and email address in the accent bar, and nobody on the programming or design team wanted to put a form on every page in the footer. Many thought it was tacky. Our project manager came up with the idea of putting in a link to a form that would house the project sheet information that she sends out to our prospective clients. Most everyone liked that idea, but the project sheet would have made for a much larger form than most people would want to fill out. We decided just to link to the actual Word document instead - making life easier all around.

    The copy was the last thing to get refreshed, and trust me, it was the hardest. We went around the horn several times in order to find a nice balance between informing prospective clients about what services we offered and actually pitching them with marketing speak; but in the end, we feel that we found that balance.

    So there you have it - the genesis of our web site design. It took some inspiration and many different hands to get it this way, but it's something that we worked hard on and of which we are very, very proud.

  • Social Web Design: Joshua Porter and Bokardo Design

    Over the course of my career, I've dealt with many different web design firms and web design freelancers; and in a growing market where anybody who can customize a MySpace page thinks they can sell their services to companies as a web designer, finding the right web designer for your company is paramount.

    At Overmortal, we have a great team of web designers who really know their craft and perform very well. We work with customers to make sure the design accomplishes it's goal and adds to the overall value of the business.

    Sometimes, however, Overmortal isn't hired to do the web design, but instead, is hired solely for web or application development purposes. In these instances, we often work together with outside web designers to complete the overall solution. We've worked with great web designs and we've worked with poor web designers. We've run the gamut. That's for sure.

    At my previously place of employment - before taking on the CTO responsibilities here - I had the pleasure of working with social web design guru and user experience expert Joshua Porter of Bokardo Design. Josh was hired after I read his book Designing for the Social Web.

    Josh understood the differences between web design and user experience design. He understood that when it came to social applications, the user owned the experience and the design should help guide the user, not get in his or her way.

    The biggest problem with freelance web designers today (mostly with the MySpace generation) is that they don't clearly understand the difference between a marketing landing page and a user interface. There are a lot of designers out there who simply slap together some pretty graphics - and don't get me wrong; they'll design you a great looking web site - but in the end, the design fails to provide any real business value. You can't design marketing pages with pretty graphics slapped together when your goal is "sign up" and user interaction. Social design is a whole different ballgame.

    Josh Porter and his company understand this. He's been at the forefront of user experience design for quite some time, and his designs are always crisp with easily apparent business value and common sense.

    Remember. Just because cousin Johnny can customize his MySpace profile, doesn't qualify him to design a professional web site that requires the elevation of business goals. Hire smart.

  • Welcome to Overmortal Michael Szul

    Overmortal would like to give a warm welcome to our new Chief Technology Officer Michael Szul. Szul has spent since 1998 working in the computer industry, specifically on web sites and web application development. He is a skilled enterprise level developer with advanced JavaScript and AJAX capabilities. Szul is adept at multiple languages, and is a keen problem solver, taking charge when the unknown rears its head. He has spent time consulting at previous employers, as well as working in the insurance and (most recently) the travel industries.

    More than just a new hire, Michael Szul is a valued member of the Overmortal team. He had a hand in its official founding back in 2006, and has acted as a part-time CTO and "unofficial" advisor up until his recent "official" hiring. Szul has even been the company's blogger since the web site launched.

    As we close out the year and move into 2010, Szul will be be an important part of the future development of this company. He is currently heading up the development of an enterprise workflow system, and will be involved in two other important projects currently starting development, including a web application for an environmental trust.

    We're happy to finally have him officially on board!

  • GrokThis: Powerful and Reliable Web Hosting

    Before this sounds like an advertisement instead of an article, let's state right at the outset that we don't use GrokThis' services. One of our higher-up employees did - prior to working at this company - but Overmortal itself has never used them. This blog post is being written as an examination of offerings and past services rendered. Take it as you will.

    One thing that you can definitely say about GrokThis is that they try their hardest to accommodate all the latest frameworks, supporting ASP.NET (through Mono), Catalyst, Python/Django, FastCGI, HTML::Mason, Jiffy, Plone, Ruby on Rails, Zope, and many more. In fact, if you need a framework and it's not already installed, GrokThis' head guru Eric Windisch will jump at the opportunity to help you set that framework up. This is definitely a company that works with its customers to tailor make great solutions.

    GrokThis is run by IT guys and programmers, so it's easy to see why they support so much and take great pride in their customer service. Based out of Philadelphia, PA, customers on the East coast get extremely fast bandwidth - more so than most other East coast hosting facilities. And don't let the location fool you, their overall web site bandwidth isn't too bad either.

    Most recently GrokThis has gotten into the virtualization business with their VPS Village and the Perl module Cloud::Infrastructure. You can look for bright things from them in the future in these categories.

    GrokThis is actually a rare company. It's one that can help the little guy get his project off the ground, but at the same time, turn around and help larger businesses stay scalable and reliable.

  • When to Quit Your Job

    Whether you're happy or not at your current place of employment there always comes a time when you have to make a decision about your future. That future most often entails moving on to a new job. But when should you do it? Many people struggle with this question day-in and day-out, until they're finally pushed to the point where their stress levels are too high and they do something rash.

    This isn't the way to quit your job. This solves nothing and often causes you more grief than anything else when you finally let off that steam.

    First, a few pointers just in case that stress level does crack and you blow off some steam right at your boss.

    Always keep your resume up to date. Most people only update their resume when they're looking for a new job. This is a mistake. Sometimes jobs come to find you, and you have to make sure that your experience is documented and refined; not rushed to get the email out of the inbox. Always make sure your resume is up-to-date, and check it about once every month or every other month. It doesn't matter if you have no intentions of leaving your job. A well maintained resumed is a valued asset to any career path.

    Keep networking. Most of the time, you'll end up never talking to former co-workers again, especially those you only interacted with on a professional level. Try to avoid this. If you left on good terms with your last company, touch base with people once in a while. Maintain your network. It might seem like a difficult job, but much of corporate America - and even medium-sized businesses - works off of "who you know" and not necessarily "what you know." Maintaining a certain reach in your industry will often let you bypass any red tape should you need to find employment elsewhere. LinkedIn is a good tool for networking. Keep your profile updated and fleshed out. Search for old co-workers and connect. Leave recommendations. Basically, just use LinkedIn to it's fullest to maximize your online/offline networking.

    Doing these things will lessen the stress and shock should something unavoidable happen.

    So when should you quit your job?

    There are usually two main reasons to move on. If you're unhappy or if there is no visible career advancement. There are other reasons to quit your job, like ethical breaches that make you uncomfortable; but those are specific decisions, and I'm looking at things more generically.

    It's a no-brainer to quit your job if you're unhappy, but you'd be surprised how many people stay at a job and just remain miserable. That isn't the way to go. If you've managed your money properly and haven't gone into unnecessary debt, you should have some semblance of financial freedom.

    Many don't have this though, so quitting your job becomes a trap and you feel like you can't quit. At this point, you need to look at expenses, find things to cut, get rid of them and search for a job that makes you happy. Even if you end up working at a bookstore temporarily while you search out a new career path, it's better to be happy and struggle slightly than to make ends meet, while spending your days in misery.

    If you dread waking up in the morning; if you contemplate calling out at least once a week because you can't seem to make yourself go in; if you hate the sound of your bosses voice and cringe when you hear, it's probably time to move on.

    The second reason to quit your job is a little more difficult to do and detect. Are you advancing in your career? You may be perfectly happy with what you're doing, but if there is no advancement in your future; if there is no opportunity to learn new things and make a move up the ladder, then you're really just doing yourself a disservice by staying there.

    Never become content with your job. Treat every job as a learning experience. What can you learn from it? What more can you take on? Your job should be enriching. If you aren't learning anything, it's time to move on. If there's no hope in moving up the chain of command, it's time to move on. It is very important to always invest in yourself with whatever it is that you do. Learn what you can. Advance while you can. And when you can't advance any more, look into alternatives.

    When you do quit your job, it's important to remember that you have some leverage. Some bosses will hoot and holler and throw you out of the building. Others will try to bargain with you to get you to stay. If you're unhappy, express your concerns. If you feel you can't advance in the company, present that to your boss. But remember that these are now your terms. If your boss tries to negotiate with you, don't settle for something that's going to make you happy 12-18 months down the road. Get what you feel you need.

    If you do decide to part company, remember that you are entitled to any unused vacation time. Don't let them stiff you. You're also entitled to any 401K plan that you have, though you may be penalized for the employer contributions if it's not a Safe Harbor match. Lastly, don't sign anything until you absolutely understand what you're signing. The only thing you have to sign is your resignation letter. Look at all other paperwork with a cautious eye. You don't want to end up signing something that restricts your options moving forward.

    Quitting your job can be a stressful endeavor, whether you're happy with your current employment or not; but at the end of the day, you need to look out for yourself more than anything. You need to make sure you're happy and enriching your own career first, before you can worry about anybody else's feelings. Keep a good head on your shoulders, learn as much as you can, and keep moving forward.

  • Windows Vista and Django: Permission Denied Error

    We recently upgraded the office to Windows Vista machines and the transition went pretty smoothly. It wasn't until we needed to make some modifications to a few Django projects that we started to run into issues. Namely, while attempting to start the development server for Django (via "manage.py runserver"), the server would seem like it was starting up, but after printing the standard Django output in the command window, it would print out another line giving us "permission denied" and then returning back to the "C" prompt.

    In an attempt to fix this, the first step was to mess around with the folder permissions, with checking the setting.py file in the Django project as the follow up. We thought that maybe something went wrong when we transfered data from the backups onto the new system. That didn't fix our problem though.

    The next step was to utilize Bing and Google to try to find similar issues online, but nothing specifically mentioned Django with this particular "permission denied" issue.

    After reading similar problems with some HTTP servers that had nothing to do with Python or Django (but did have to do with Windows Vista), we decided to go the route of disabling the UAC (User Account Control) feature in Vista. The result? Mission accomplished. After disabling UAC and rebooting the new system, the Django development server starting working properly with no "permission denied" problems.

    For those who are experiencing a similar issue and want to disable the UAC, simply type "msconfig" in a command window, click on the tools tab, find "Disable UAC" in the listing and click "Launch." A command window will appear and complete the operation. Once it's finished, close out of that window, click "OK" on MSConfig and then reboot your computer. You should be all set.

  • How To Interview a Programmer (Dos and Don'ts)

    I've been on both the giving and the receiving end of interviews in my long career as a software engineer, and I've been privvy to a great many styles of interviews. There are interview questions that completely turn me off as a potential candidate and there are interview styles that make me want to jump at the chance to work for a company. In any event, interviewing programmers can be a tricky process, and I wanted to lay out some of the "dos" and "don'ts" that companies and human resource departments should follow to make their job easier.

    1.) Throw education out the window. When's the last time you actually called a school to verify that a person attended or graduated? For foreign applicants, have you ever called over to that Indian or Russian university to verify their masters degree in engineering? No. Why put stock in what's listed on a resume for education in the first place then? This might matter if you're looking for a junior level developer, but if the person has experience, education is secondary.

    2.) Be careful with what your headhunters list and say. It's bad enough when a job requirement lists "n" number of years experience in a certain technology that has been out for less than "n" number of years; but then to have a headhunter begin asking technology questions when they don't understand the answers is demoralizing to potential candidates. The headhunter ends up listening for what sounds most impressive, rather than what really qualifies the person.

    3.) Don't quiz the candidate. Asking a question like "what are generics?" is basically like saying "I don't trust you, so I'm going to throw random terms out and see if you can answer them to my satisfaction." Technical knowledge means nothing compared to problem solving skills. The best programmers excel when they've reached a problem where they don't know the answer. Nobody knows everything, but the better employees are the ones that, despite not knowing, can easily learn and adapt to new technologies and obstacles.

    Instead of quizzing the candidate, ask about their experience. Ask what they've done. Based on their answers, dig deeper into the areas that are important to your company and ask for more specific details of the operation in that area. This shows the candidate interest rather than trust issues, and it gives you a more accurate idea of what the programmer has worked on and how they worked in that environment.

    4.) Take hunger over book smarts. At a previous company I worked for, we had interviewed a programmer with an excellent resume and excellent technical knowledge. He was hired, given a larger salary than many already working at the company, and was entrusted with an important project. Despite his education, credentials and technical knowledge, he was a complete bust. He didn't work well in a fast paced environment, nor did he work well with a team. He missed deadlines, spent more time on Trillian than on work, and was ultimately let go. His replacement? A graphic designer hungry to learn programming, who was enthusiastic to join the team and worked diligently to prove himself.

    Now this doesn't mean that the graphic designer was better than the seasoned programmer (although in this instance - for what we needed - he was). This shows that the importance in the hiring had less to do with the person's experience and more to do with their character. A person with a good character and a solid skill set will trump a superstar engineer with a poor work ethic any day of the week.

    This is why the style of the interview is so important. It is impossible to tell a person's character by their resume, or by quizzing them with definitions. You need to get them in story mode by asking them about their work environment and experience. Your questions should nudge them in the direction you want them to go, but at the same time, let them tell their own story. This way, you're guaranteed to get a better understanding of their goals and candidacy, and your new knowledge of their character will help you decide what kind of employee they will be.

  • Aptana Studio Profession 1.5 on Windows Vista

    Two important upgrades occurred at the office in the recent weeks. The first was the release of the latest version of Aptana Studio (1.5) codenamed Andretti, which was built on top of the latest Eclipse open source build. The second was an office upgrade to Windows Vista.

    The upgrade to Aptana Studio 1.5 was not as smooth as we would have hoped. It required a complete reinstall. There was no upgrade option available because of the differences between the underlying Eclipse builds. We had to first uninstall the previous version of Aptana Studio and then reinstall the new one. Once reinstalled, we needed to reinstall all of the plugins and then reconfigure the workspaces since the newer version reset all the windows and views.

    Unfortunately that wasn't the end of it. Several weeks later there was a 1.5.1 upgrade that also required a manual configuration and upgrade since the upgrade functionality was one of the pieces that was broken and needed to be fixed.

    Once fully upgraded you don't really notice a difference between the new version and the older one with the exception of the plugin installation process. The program is actually slower to load than it was previously.

    On the plus side, PyDev is finally fully integrated as a plugin without requiring separate configurations, and it even has Google App Engine integration for Python projects.

    On top of the upgrade of Aptana Studio, we also elected to upgrade our systems to Windows Vista in anticipation of a company wide upgrade to Windows 7 in October. Despite the numerous complaints from people, with a powerful enough system (4 GB RAM, Dual Core Processor), Vista runs very smoothly and the changes from XP to Vista are improvements - even if they require a little learning to get the hang of.

    Despite a few hiccups, our office systems are now running the latest OS and programming IDE for the work we do. Vista and Aptana Studio are definitely a winning combination for us.

  • Imagine Your Reality: Talks on Social Media

    Following up on my "bully beatdown" of the social media expert meme, I wanted to examine some of the business practices and ideas of an actual social media consultant: life coach Taylor Ellwood of Imagine Your Reality. Taylor is a noted author and speaker who a few years ago opened up a consulting service to help people through life coaching. Most recently, he has been consulting with businesses on their social media initiatives and training people and businesses alike on the advantages and practices of social networking and social media.

    From his web site:

    I teach businesses and writers how to use social media to market themselves and how to automate their social media marketing presence so that they spend less than two hours a week on social media sites.

    I was talking on the phone with Taylor yesterday about the various pitfalls of social media consulting, and we discussed a bunch of ideas and practices (both good and bad) that can be seen in the industry today.

    In discussing his business practices, Taylor was quick to point out that social media surrounds the idea of networking. To him, social networking is an online extension of networking in the real world - whether by phone calls or meetups. Social media, therefore, are tools used to help with this networking.

    Imagine Your Reality's services focus in on two key components often misunderstood by get-rich-quick supposed social media "experts:" consistency and authenticity. Taylor stresses consistency in your social media offering, having seen too many companies and individuals who start for a little while, but then quickly tire of the work involved. In regards to authenticity, Taylor's practices remind me of a sections in Joshua Porter's book Designing for the Social Web, in which he discusses the importance of "authentic communication" when dealing with customers and potential clients. Taylor agrees that it's not simply a matter of posting a bunch of links to your products or services. It's about establishing an authentic line of communication between yourself and those that befriend or following you on the various social networking web sites.

    Taylor's services and understanding of the new ways of the web are very refreshing during a time when merely mentioning social media on Twitter gets you immediately followed by 5-10 user accounts of spam links with descriptions of how they're "experts" when it comes to the Internet. Very refreshing indeed.

  • Napkee: From Mockups to Reality

    We've been very clear in the past with our enjoyment and use of Balsamiq Mockups. It's a fantastic product that has helped us out greatly with our day-to-day wireframe needs. It wasn't long ago that we were followed on Twitter by a user named Napkee. We check out all of our followers to see if we should follow them back (or block those that look like spammers).

    Napkee, as it turns out, is a new Micro-ISV, building a sister product to Balsamiq Mockups. With Mockups having an open format that readily allows developers to manipulate the resulting files, Enrico Berti has built a wonderful product that allows designers and developers to export these mockups to web development code.

    Napkee

    From a user experience point of view, Napkee is even easier to use that Balsamiq Mockups. Simply import your Balsamiq files, select the file you want to work with first, and your done. Then you can export the results if you like. It's really that simple. Napkee automatically parses your Balsamiq files to spit out a nicely done scaffold of HTML, CSS and JavaScript hooks (It also supports exportation to Flex).

    Yes, I said "scaffold." Don't expect Napkee to produce a fully functional web site for you. But what it does do is produce a nice scaffold of HTML and CSS that takes a lot of the pain out of structuring your HTML elements. With Napkee, you can focus on your design elements and make minor tweaks to the layout to address any general concerns.

    Napkee is a prized example of a Micro-ISV product done right. This first release version is not overdone. It performs a clear function, and is very valuable as 1.0 version product. But at the same time, Napkee shows huge potential moving forward as an excellent bridge between layout mockups and finalized structured code. I'm very excited to see where it goes from here.

    Congratulations go out to Enrico on such a fine product launch.

Next page