I am always on the search for like-minded “Hybrid Minded” individuals. One such individual is John Maeda, an amazing designer/programmer with a focus on simplicity. This presentation is both informative and hilarious. John Maeda is a professor at MIT, read more about simplicity at his blog.
Filed under: Development — Micheal on March 8th, 2008
I am excited to announce the launch of my new personal website. I am unsure of why I decided to attack this project due to my current life load being so heavy; however, I have had this concept floating around in my head for some time and had to do it. Keep in mind that it breaks most traditional elements of design. My goal was for a 100×100 viewpoint, higher the resolution the better. FYI, it works on the iPhone!
Filed under: Development — Micheal on February 29th, 2008
For the longest time I have searched for a suitable framework for rapid development that could scale easily. About 1.5 years ago I sat down and wrote my own. My goal was for it to have a small foot print, use MVC architecture, be module, allow for easy template management and also for easy routing while using mod_rewrite. In the end I achieved all these things except the MVC was more like VC and realistically most of the time more V.
About 4 months after I finished a modest sized (~7,000 lines) program sitting on top of my framework, I discovered CodeIgniter. I nearly cried, actually I think I did. I could have written the same problem in half the time. I felt like I had reinvented the wheel. I wrote my own libraries, routing, helpers, etc and CI has everything, including an awesome MVC architecture that is actually MVC!
I have been looking forward to the opportunity of using CI for a large sized project. After several months of planning with a client, I broke ground recently on a good sized project that will probably last several months. I am amazed at how much I achieved in 5 days. What I enjoy most about CI is how limited its functionality is; there is no template system (there is a template parser) and no user management system (there is a session library).
My focus this week was laying the foundation. This is a large program that will be used by many requiring varying levels of access and must also be HIPAA compliant. I wrote the following:
Template System
Manages assets (CSS, JS, images, etc) based on the application. CI allows for multiple applications utilizing the same core, I wanted to have the ability to use multiple templates under one app.
Dynamically creates navigation based on the URI, will create unlimited levels, can activate a particular item if found in the URI ~~ Plenty of recursion here
Security is number one priority here through a combination of hooks, DB session library, and encryption library. Did I mention I love CI hooks!
Access control, oh golly gosh. This is really the reason I spent so much time writing the template and navigation libraries. Based on the users group or permission id found in the DB session, not only will it restrict access but will automatically render the navigation elements based on the users permission. A hook will check the users id against the requested controller and redirect if necessary.
It’s funny, during this week I was able to get very deep into CI very quickly. I wrote some awesome libraries and even found some bugs in the core that was easily fixed because CI’s community had already discovered them. Needless to say I am very pleased with CI and look forward to further development.
If you PHP and have even a slight handle using OOP, check out CodeIgniter!
The mockup period during a project is very important. This is the time in which all of the ideas originally discussed during initial planning (which should have been turned into a brief) will be incorporated into either design or call to action documentation. During this time interaction design, usability and information architecture are taken into consideration. Overall concepts are presented to the client. Revisions occur. There is a decision before going to production.
Again, the mockup period is very important.
I question why some think otherwise. Why do people skip roughly 20% of the entire project and wonder why the end result is nothing like the brief? This is no new problem.
Mockups can be used in all sorts of projects, from print to application development. This can also be considered prototyping or comps. Short list, but I recommend the following reading:
Filed under: Development — Micheal on October 24th, 2007
About three weeks ago I started work on a “pro bono” project for my Alma Mater. Once I produced the mockup I decided this would be a good opportunity to integrate with a different framework. To save time, money and provide a quality product I was on the hunt for the right framework. I wanted a framework that would provide flexibility so someone else could take over in the future and also provide scalability so if the project grows beyond our current vision the framework would handle it. After rummaging through several frameworks, I came across Drupal.
I found many reports stating there is a learning curve with Drupal, even for the seasoned PHP developer, and they weren’t kidding! However, once I dived in and figured out the template system it was pretty smooth sailing from there on. The content management portion of Drupal is awesome. I find that the learning curve is in discovering that referencing Drupal’s API is a must for overrides. Just to get the menu system to work the way I designed it, I had to create two overrides for the main and sub navigation. Since there is a definite limit on time with this particular project I absolutely love Drupal’s modules. The modules are simple and give just enough features to do the job. With all the power of Drupal, I found it strange that the output was built into the modules instead of using a MVC architecture. In order to change the layout of a particular module view, one must create an override in the template.php to then tell Drupal to pass the data to a template file. All and all Drupal is great if someone is looking for a feature rich CMS/framework that is scalable. It is important to determine if Drupal is right for the project. I would not choose Drupal if I were going to be doing a lot of heavy development, I would choose ExpressionEngine because it is based on the awesome framework CodeIgniter.
Once I rap this project up I will post some details and a link. We’ll see how excited I am at that time!
Filed under: Design — Micheal on October 12th, 2007
Most modern browsers support PNG transparency quite nicely (IE 7 still has problems). There has been a large migration to Internet Explorer 7; however, there is still a large amount of people using IE 6. I still get about 30% of IE 6 users. Depending on the purpose of the site, I see no problem in using transparency in PNG’s. I am not a fan of mixing JavaScript with design, but the following solution works nicely. Keep in mind that there can be small delay inbetween the time the page is loaded and the JavaScript is applied, ussually only noticable if the images are large. In CSS, all that needs to be done is to call a behavior attribute that points to the .htc file containing the JavaScript. The “behavior” attribute needs to be applied to whatever element containing PNG’s with transparency. This can be as easy as:
img {
behavior: url(iepngfix.htc);
}
If you are anal like me, you are going to want your CSS to validate. Due to the behavior attribute being proprietary to IE, it is recommended to split off the CSS so it is only seen by IE 5.5 and IE 6.
For individuals that care
I enjoy pushing my skills to the edge and always trying to approve upon what I know. HybridMinded.com is a good example of my love for patterns, gradients, and transparency. While the background attribute in web design is sometimes overlooked or given little thought, it can be a very powerful when used correctly.
Filed under: Technology — Micheal on September 27th, 2007
No one enjoys software problems and there is an approach to computing that will significantly reduce problems or downright eliminate them. It revolves around a product by Faronics called Deep Freeze; however, the concept can hold true using other preservation software. There are several benefits to this approach:
Your operating system, the way you want it, every boot without any waiting time
System runs perfect at every boot and if it starts to act up just restart it!
No spyware, malware, adware, viruses, etc.
Data centralization
Makes backing up easier!
With all data in one place, sharing data between multiple operating systems is easier.
Introduction The computer has turned into much more than a form of communication, for some of us it is our livelihood. The solution I have comprised is not for the faint at heart. It requires a different approach in using a computer. However, once this approach is understood and continually used, the outcome is nothing other than ideal. Think productivity. For others, it might be speed, reliability, or never having to deal with spyware again.
What is the problem? Simply stated, the problem is any kind of issue with software that might require a solution or fix resulting in loss of productivity.
What is the solution? The problem is solved through a combination of technologies in order to provide guaranteed up-time. This is achieved through separating software and data, then utilizing a piece of software to preserve the operating system.
Concept in a nut shell Two partitions: one holding an operating system and the other one holding data. The operating system is configured to access the data through a number of techniques. A piece of software that preserves the operating system is installed.
This solution works across multiple platforms including Windows, Mac, and Linux. It ultimately depends on the choice of software to preserve the operating system.
Step 1: Separate data from software The easiest way to accomplish this is by creating a secondary partition to house the data. Within the data partition, directories are created that identify the data it will hold. For example, My Documents, Outlook Data, Music etc.
Step 2: Accessing the Data
There are three methods that can be employed to access data. The first is simple: the file is opened through the corresponding application. An example of this is using Microsoft Outlook, the .pst is stored on the secondary partition and then opened through Outlook.
The second method is a little more difficult but still achievable. There are certain folders that should be accessible through their shortcuts. An example of this in Windows XP would be My Documents. To change the default directory, the following can be done: Right click My Documents, click Properties, under Target click Move and select the new My Documents directory on the secondary partition.
The final method would be creating symbolic links. This can be tricky and possibly dangerous if they are removed. It can be done in just about any operating system; some require specialized software such as Winbolic for Windows XP/2000. More can be read about this method at Winbolic.
Step 3: Preserve software The software I use and recommend is Faronics Deep Freeze. Deep Freeze supports a number of platforms and configuration varies. Once a partition is “frozen”, anything done to the partition will be reverted back to the frozen state upon reboot. Permanent changes can be made after unfreezing the drive and restarting the system. Note: Deep Freeze loads a kernel-level driver before windows; therefore, if the drive is extracted any changes made to the frozen partition would be permanent.
About Faronics DeepFreeze
Light weight, easy to install, and nearly impenetrable. I recommend reading about it’s greatness at Faronics.com.
Summary / Disclaimer The above approach is a solution that will require tweaking and customization to solve the users particular problem. Remember, this concept is a different approach to using a computer. People generally are use to interacting and making changes that result in a permanent change. This concept is the opposite. This concept should be used at the user’s discretion. The writer is not responsible for lost of data or any loss of revenue, etc.
I have tried to write this article as open-ended as possible. Updates will be made as the technology evolves either through an additional posting or by revision. Email (mail [at] michealmorgan.com) if you have any lengthy questions, otherwise feel free to respond by making a comment.
Filed under: Community — Micheal on September 21st, 2007
I am very excited about the Orlando technical community coming together for BarCamp on September 23, 2007. For people not familiar with BarCamp, check it out at www.barcamporlando.com. There are still seats available and it is free (bring some canned goods to support Second Harvest). I am looking forward to meeting new people and catching up with acquaintances, past co-workers, and former peers. I would like to present; however, due to limited time for prep (due to a large site release) it might turn into a blog post. See you there!
Filed under: Misc — Micheal on September 11th, 2007
Work started on this site sometime in November of 2006, lasted for a few hours and needless to say, nothing happened for sometime after that. About a month ago I decided to go ahead and finish what I had started.
The purpose of this blog is to; perhaps, help others by sharing my daily accomplishments as well as my frustrations working as a web developer. Eventually this blog will break off and leave www.michealmorgan.com as just a professional source.
The design of www.michealmorgan.com was intended to be very simple to draw more attention to content and kind of dull because I was going to focus primarily on my information technology background. For years I have fought trying to stop myself from doing web development thinking that it would simply lead me nowhere. Well, the more I fought the more I lost. I have come to think of myself as a hybrid of technology & creativity. For this reason I do plan on redesigning this site to better reflect my abilities.