Archive for the ‘Code’ Category

ECC’s RecordingConnection.com Launches

Tuesday, March 8th, 2011

RecordingConnection.com, the second site we’ve launched in a series of three from Entertainment Career Connection, is now live.

The site is controlled through the same core code base as already launched FilmConnection.com. The sites have two separate front-ends and administrators, but updates only need to be made to one code for changes to be made simultaneously.

The redesigned site has improved search engine optimization capabilities. Through the site admin, the company’s in-house SEO developer can now add meta data, create optimized URLs, and add and delete pages with a content manager.

RecordingConnection.com is an alternative to traditional schools. The program places students in actual recording studios as their classrooms providing participants with hands-on learning, training and real world experience.


Founded in 1995, WebSight Design offers business clients a range of web site design and development services, including web site programming, web site hosting, web site and search marketing, and colocation management.

WebSight Design in Development

Thursday, March 11th, 2010

The beauty of WebSight Design lies in our full range of web services.  From design to development, SEO, hosting, and IT support, we have an excellent 15-year track record of providing our clients with the best possible products and services.

Over the years, we have built our own PHP development environment, based on the open-source Zend framework. We have a strong belief in the Model-View-Controller (MVC) architecture, and strict version control with Subversion (SVN), because the results are cleaner, more efficient code. Utilizing the Zend framework also gives us access to the large and expanding library for Rapid Application Development (RAD), while still having the flexibility to customize the framework and make it our own.

Using the MVC design pattern allows us to have a clear separation of business logic and presentation logic.  This presents a distinct advantage when building web applications because it separates what the user sees from what goes on in the background.  This moves away from mixing data-layer code, such as database queries, in with your display code and allows us to create reusable modules, such as photo galleries and shopping carts, for significantly faster builds in large applications.

The MVC architecture also offers ease of maintenance, since each component (model, view and controller) is self contained, performing upgrades and changes, such as switching databases from Access to MySQL, become much less painful and cumbersome then in the past.

We make it a priority to stay on the frontline of the ever changing technology in the Web and Internet industry; currently, we are working on a 2.0 version of our framework that will use portions of Domain Driven Design (DDD) to create clean structure and more efficient code patterns.  One of the biggest changes on the way is a central code base with customizable modules.  With this 2.0 framework we will be able to increase our build time on large projects, and push upgrades to a central code base rather then individual applications.

But don’t think that since we developed our own PHP framework we are averse to working with other languages.  Just send your application our way and we are happy to roll up our sleeves, jump into your Ruby/Flash/ASP project and get our hands dirty.

————————————————————————————————————–

Founded in 1995, WebSight Design offers business clients a range of website design and development services, including website programming, website hosting, website marketing, and colocation management.

Design Is Not A Pretty Picture.

Friday, February 19th, 2010

Or rather, design is not just a pretty picture.

It’s direction. It’s credibility establishment. It’s communication. And it initializes all functionality on the site by getting users to take action. — to click, to scroll, to fill out a form, or purchase a product.

I like to think of design as “left-brained art.” It’s visual interest that serves a specific purpose, namely to get users to interact with the site. As opposed to “right-brained art,” design doesn’t just hang on your mantle, looking lovely and drumming up nostalgia. It’s dynamic. Without a well-thought-out design, it doesn’t matter how robust and bullet-proof the back-end functionality is; users will never make it far enough to experience any of the programming features. This, coupled with the fact that your site’s design is your business’ first impression, makes design one of the most important features of your online presence.

magpass_300

Here’s how good design initiates user action:

First, the design must communicate a message. But not just any message. It must communicate your business’ brand identity, product or service, corporate values, and what sets your offering apart from everyone else’s. When your site communicates this stuff instantly and clearly, you’ve captured the attention of your target customer.

Second, the design must establish trust. In other words, the site has to look legit. Users want to be assured that yours is the kind of web site where they can enter their email address and not immediately receive a truckload of unrelated spam. They want to know that their credit card number is safe. They want to see that you care enough about your customers, and have enough pride in your business, to make your visual presentation one that is current, is impressive, and is inviting. When your site looks legit, your target customer will stay for a longer visit, and be more likely to visit the site again.

Third, the design must tell the user what to do. Okay, the user has landed on this beautiful home page. Now what? Without a call to action, the user is likely to become confused or bored, and will leave. If your Google Analytics stats show a high bounce rate from your home page, you might want to take a look and see if there’s a clear call to action, telling the user where to go from here in a clear and compelling way. When the action steps are clear on your site, your target customer will take them.

To this end, it’s important that the design department and the development department work closely together, to establish from the beginning the site’s goals, the business’ niche, values, and strategy, and the number one action that users should take. A good design will communicate these things clearly; a great design will be reflected in your web site stats.

For a case study illustrating how design improves conversion, contact us, and ask us how we helped a Bay Area attorney’s office gain a 300% increase in online form submissions, just by improving page graphics.

Santana iPhone App Updated

Monday, November 23rd, 2009

The latest updates to the Official Santana iPhone Application have been submitted to Apple, so if you haven’t downloaded this killer app to your iPhone or iPod Touch yet, now’s your chance! The app features videos and exclusive content that you can’t get on the Santana.com web site. It’s free and it’s a must-have for any fan.

Official Santana iPhone App

Custom Clothing Deserves A Custom Site

Monday, November 23rd, 2009

Franklin + Gower, a Los Angeles-based clothier, came to us looking for solutions, both design and e-commerce. The client already had a logo — as well as design sensibility and a sense of the look & feel they were going for. The rest, as they say, is GUI history. Implementing lots of slick AJAX and JQuery, we made the screen transitions as clean-lined and fresh as the custom F+G pants. And with robust e-commerce capabilities, the site enables the fashion-forward to design, size, and purchase their custom pants or shorts in real time.

Check out the site! Play around with the swatch picker, and see our coding in action. The smart folks at Franklin + Gower update new brilliant swatches frequently, so your new pants are sure to be unique and trendsetting.

Using the UIImagePickerController in an iPhone OS v2.2.1 app & On A OS v3.0 Device

Monday, August 31st, 2009

So I wrote an iPhone application for a client using v2.2.1 of the iPhone SDK. (The client did not want to go OS v3.0 yet.) I needed to give a user the capability of taking and uploading a picture with the built-in camera or uploading a picture from the photo library on the phone. Seems pretty straightforward so far. Yes? I thought so. It turned out to be pretty tricky but the solution was very simple and was staring me in the face.

The Problem
I had a UIViewController with an UIImageView setup to be used as a container for the selected image. I also had several UIButtons on the page. (One button for calling up the camera. Another button for calling up the photo library, etc…) So what should have happened is that the Camera or photo library UI would display a Modal View window the user instructing them to either take a picture or select a photo from their library. Once they did that, they would be returned to the main view and whatever photo they took or selected would appear in UIImageView as a preview. However, when I was selecting the photo the “editingInfo” NSDictionary object that was supposed to be returned would be there only about 50% of the time. The other 50% it would be returned empty. I double and triple checked my code and it was all correct. Something was zapping my dictionary object and I couldn’t, for the life of me, figure out what it was.

The second part to this problem was that the preview image never appeared whenever the user was grabbing their image from the camera. It worked if the photo library was the source but not if it was the camera. Very, very frustrating.

Here is my original code:

My .h file -

@interface AddPhotoController : UIViewController  {
IBOutlet UIImageView *imageView;
IBOutlet UIButton *snapNewPictureButton;
IBOutlet UIButton *selectFromPhotoLibraryButton;
}
@property (nonatomic, retain) UIImageView *imageView;
@property (nonatomic, retain) UIButton *snapNewPictureButton;
@property (nonatomic, retain) UIButton * selectFromPhotoLibraryButton;

My .m file -

@implementation AddPhotoController
@synthesize imageView, snapNewPictureButton, selectFromPhotoLibraryButton;
- (IBAction)getCameraPicture:(id)sender
{
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.allowsImageEditing = YES;
[self presentModalViewController:picker animated:YES];
[picker release];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
NSLog(@"Image Meta Info.: %@",editingInfo);

UIImage *selectedImage = image;
imageView.image = selectedImage;
self._havePictureData = YES;
[self.useThisPhotoButton setEnabled:YES];

[picker dismissModalViewControllerAnimated:YES];
}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[picker dismissModalViewControllerAnimated:YES];
}

Like I said before, it all seems pretty straightforward. However, there were two things wrong with the above code.
#1. Deprecated Method
The UIImagePickerController method, – imagePickerController:didFinishPickingImage:editingInfo:, is deprecated in v3.0 of the iPhone OS. So even though I built the app using SDK v2.2.1, because the app will be running on 3.0 devices, I needed to use the new and improved method, - imagePickerController:didFinishPickingMediaWithInfo:editingInfo, which contains FIVE pieces of really important information:

  1. UIImagePickerControllerMediaType – Which specifies the type of media that this dictionary contains.
  2. UIImagePickerControllerOriginalImage – Contains the original non-cropped image.
  3. UIImagePickerControllerEditedImage – Contains the user-edited cropped image.
  4. UIImagePickerControllerCropRect – Contains the CGRect that was applied to the original image.
  5. UIImagePickerControllerMediaURL – If the object is a movie, this object contains the URL to be used by the media player.

I simply accessed the “UIImagePickerControllerEditedImage” object from the dictionary and was off to the races.

#2. Dismissing the Modal View
This one was really painful as it was so simple to solve. In order for the UIImageView to be updated correctly, you must dismiss the ImagePicker modal window BEFORE you attempt to update your UIImageView.

As a result of this, here is my updated method call:

- (void) imagePickerController:(UIImagePickerController *)thePicker didFinishPickingMediaWithInfo:(NSDictionary *)imageInfo
{
[thePicker dismissModalViewControllerAnimated:YES];
UIImage *img = [imageInfo objectForKey:@"UIImagePickerControllerEditedImage"];
previewImage.image = nil;
self.previewImage.image = img;
NSData *imageData = UIImagePNGRepresentation(img);
if ([imageData length] > 0) {
[self archivePictureData:imageData];
self._havePictureData = YES;
[self.useThisPhotoButton setEnabled:YES];
}
}

That was it. Hope that was helpful.