“Mobile” remains a buzzword in digital even though the term isn’t recent; in fact, its origin is extremely dated. However, what is undeniable is the increasing growth in the mobile sector and the role it is playing industry wide. Disregard the hype, we are indeed slowly mobilizing, but the solution is not to take existing websites and experiences and port them to a new platform. Take a step back to fully understand all aspects of the platform—the evolution, the advantages, and the disadvantages—and then embark on strategic efforts to create the ideal solution.
According to the July 2010 PEW Mobile Access Report as of Q2 2010, 59% of US adults have online experiences with mobile devices a usage increase in over 50% compared to a 2009 study. This is concrete evidence that mobile is a growing medium in the US and an area where more consumption is occurring. The demand for mobile applications and experiences has also been on the rise: a September 2010 PEW report states that 35% of US adults have applications installed on their phones. The growth in mobile applications and the mobile web is indisputable. What mobile developers, agencies, and marketers are failing to pay attention to is that (1) mobile content should vastly differ from website content and (2) the mobile experience in its entirety should be viewed from a different perspective—from design to execution.
Patterns of mobile behavior vary drastically from web/desktop usage to mobile experiences. The key differentiators are intent, functionality, and screen real estate. Take a moment to think about the tools at your disposal for browsing the web on your desktop: a sophisticated browser, keyboard, mouse, and decent-sized display. Browsing on mobile devices doesn’t offer the luxury of space or time—consumption is in real time. Thus, due to the current limitations of the mobile medium, it is crucial that we focus on this platform as a new medium and not just an extension of a website.
Successful mobile experiences should not require browsing, search, or any indirect/nonintuitive methods of discovery. Content, color, design, navigation, and information architecture should all be custom tailored to the mobile platform allowing users to quickly and seamlessly locate and engage with the relevant information or features they are seeking.
“Optimizing” existing websites to be viewable on mobile devices is definitely taking a step in the right direction. However, thinking of mobile design, development, and delivery as a complete paradigm shift and treating it as a new medium will result in the most value for your visitors and business.
Objective: Use Google Reader to subscribe to a Basecamp RSS feed.
Problem: Google Reader doesn’t support RSS authentication.
Solution: Use Yahoo! Pipes to authenticate & deliver the feed to Google.
1. Create a new pipe or clone this existing one: http://j.mp/PipesToReader
2. Enter your username, password, and URL [note the devil is in the details]
To locate your username & password, go to ‘My Profile’ in Basecamp. Scroll to the bottom and click ‘Show Your Tokens’ in the ‘Authentication tokens’ section. Copy the value of ‘Token for feed readers or the Basecamp API’ and use this as BOTH your username and password.
From the Basecamp overview page, click ‘Project RSS feed’ copy the URL listed below ‘Your RSS feed URL.’ Remove the preceding ‘https://’ from the URL prior to pasting it into the pipe URL.
3. Click ‘Run Pipe’ this should authenticate and display the feed.
4. Click the ‘Get a RSS’ icon and then copy and paste this URL into google reader.
Security Note: Make sure you DO NOT have your Google Reader feed shared. If your feed is shared it will be accessible to the world and your API username / password will not be protected.
Amazon has taken the first steps to expand it’s operations outside the US and Europe by unveiled a new data center in Singapore. This entry to the Asia Pacific region is significant both to a potential new customer base and existing clientele who will reap the benefits of having the opportunity to have a more global infrastructure with less latency in Asia Pacific.
With the addition of the new data center in Singapore, Amazon has updated their list of current Amazon EC2 public address ranges:
US East (Northern Virginia)
22.214.171.124/20 (126.96.36.199 - 188.8.131.52)
184.108.40.206/19 (220.127.116.11 - 18.104.22.168)
22.214.171.124/18 (126.96.36.199 - 188.8.131.52)
184.108.40.206/17 (220.127.116.11 - 18.104.22.168)
22.214.171.124/16 (126.96.36.199 - 188.8.131.52)
184.108.40.206/18 (220.127.116.11 - 18.104.22.168)
22.214.171.124/16 (126.96.36.199 – 188.8.131.52)
184.108.40.206/17 (220.127.116.11 - 18.104.22.168)*
US West (Northern California)
22.214.171.124/18 (126.96.36.199 - 188.8.131.52)
184.108.40.206/18 (220.127.116.11 – 18.104.22.168)
22.214.171.124/17 (126.96.36.199 - 188.8.131.52)
Asia Pacific (Singapore)
184.108.40.206/18 (220.127.116.11 - 18.104.22.168)*
The latest Juxt Interactive work for Sprite and the NBA is now live. Case study to shortly follow. In the meantime, please enjoy the experience at: http://www.nba.com/dunk_fanfaceoff
In just a few hours the latest project which has consumed the past few months will be live, stay tuned! Here is a preview/teaser:
Below is a Microsoft SQL Server script that I use to create nightly backups. The backups (.BAK files) can be copied to hard drive, tape, or remote storage to satisfy your disaster recovery requirements. The script requires two (2) modifications – first change the ‘master_backup_dir’ variable to the path on your server that you would like the backups stored and second update the ‘retain_day’ variable to the number of days you wish to retain the backups on physical disk prior to removal.
Configure the SQL Agent to run a nightly job with a single step that executes the T-SQL code.
/* Job requires use of xp_create_subdir and xp_delete_file to
create backup directories and delete old files */
-- All Databases excluding (non-read only and sample) databases are backed up.
-- Expired backups are deleted
-- Backups of master, model and msdb are written to a 'System' folder
-- Backups of user databases are written to folders named after the databases
-- Get names of eligible databases (excluding tempdb and sample databases)
declare databases_to_backup cursor
SELECT name FROM master..sysdatabases
WHERE name NOT IN ('NorthWind','Pubs', 'AdventureWorks', 'tempdb')
AND (STATUS & 1024) <> 1024
ORDER BY name
FOR READ only
SET nocount ON
declare @db_name varchar(50),
-- Specify high level backup directory and number of days' backups to keep on disk
SET @master_backup_dir = 'D:\data\backup\sql2005\'
set @retain_days = 14
-- Open the cursor and retrieve the first database name
fetch databases_to_backup into @db_name
while (@@fetch_status = 0)
-- Build a datetime string to uniquely identify the backup
set @backup_date = convert(char(8),getdate(),112)
set @backup_time = right('00' + convert(varchar(2),datepart(hh,getdate())),2) + right('00' + convert(varchar(2),datepart(mi,getdate())),2)
-- Build the specific backup directory path
if @db_name in ('master','model','msdb')
set @specific_backup_dir = @master_backup_dir + 'System\'
set @specific_backup_dir = @master_backup_dir + @db_name + '\'
-- Verify the backup directory exists
exec master.dbo.xp_create_subdir @specific_backup_dir
-- Build a unique filename and backup the database
set @filename = @specific_backup_dir + @db_name + '_db_' + @backup_date + @backup_time + '.bak'
BACKUP DATABASE @db_name TO DISK = @filename
-- Delete files older than specified retain days
set @delete_date = dateadd(d, (@retain_days * -1) , getdate())
exec xp_delete_file 0, @specific_backup_dir, N'bak', @delete_date
-- Get the next database name
fetch databases_to_backup into @db_name
set nocount off
On September 6th, The FWA (Favourite Website Awards) issued the Site of The Day award to Sprite Step Off. This is a project Juxt has been working on since late 2008. Many site enhancements are on the way. Expect a case study in December.
Over the past few years the Firefox community has growth fast and fierce. For web developers there have been countless add-on’s and plugins published that making building websites (i) more efficient (ii) more browser-compatible, and (iii) easier to debug. Below are my top five:
Top 5 Web Developer Firefox Add-on’s
- Web Developer – Integrates with Firefox to create a menu and a toolbar with various web developer tools (e.g. outlining page elements, re-sizing browser window size, site-specific cookie management, and validation tools )
- YSlow – YSlow brings additional functionality to Firebug regarding site performance. YSlow analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages which coincides with the YSlow team as well as metrics defined in the book High Performance Web Sites: Essential Knowledge for Front-End Engineers
- Server Spy – Indicates the web server type for the sites you visit (e.g. Apache, IIS, Tomcat, nginx, and so forth) this data is invaluable during debugging complex server-side issues.
- Live HTTP Headers – Similar to Server Spy which just pulls the ‘Server’ element from the HTTP response header, this add-on makes additional elements available for debugging. See ‘List of HTTP headers‘ on the Wikipedia for a full listing of request/response definitions.
Employees tweet at work just as they use instant messaging services assuming your company doesn’t have a policy prohibiting them said usage. So here is my views on how to harness Twitter in the workplace:
Define a strategy for your company, just as we have done! I believe transparency is important so here are excerpts from the concepts behind the strategy we are implementing at Juxt Interactive along with explanations of the driving factors behind our approach.
- Have each and every individual that wants to use twitter at work to benefit the company determine their voice. How will they position their messaging and how can that help your company? If you follow me you’ll notice at least 80% of what I say is focused towards business. tasks I’m currently working on, industry news, and research & development.
- Have more seasoned users mentor new users. Technology is usually inherently confusing and twitter is no exception to the rule.
- Adjust your email footer to include a link to follow you on twitter, this is simple and a great way to gain followers.
- Be aware that your clients, prospects, vendors, and staff follow you, if you send messages that are offensive to any of these groups, you probably shouldn’t be part of your company’s twitter team.
- The time of your tweets matter. If you have an important message sending it at 10pm on a Friday night may go unnoticed by many [at least those users who stream in real-time.] with the exclusion of people in different time zones.
- We live in a global economy, if you don’t already do business internationally be prepared to do so, don’t limit yourself to local discussions.
- Retweeting is imperative, but don’t use your companies Twitter account as a straight unidirectional promotional channel. Have employees retweet as necessary at different intervals so your message is seen by different groups of people at different moments in time.
- Deliver content that is relevant to the audience that you wish to target.
- Make sure your voice is authentic as is your message.
- Engage others in your field in communication.
- Understand Twitter is a push/pull medium – don’t just speak; ask, listen, react.
- People are as smart as you give them credit, don’t just promote your company. Good rule of thumb: think of your audience as your wife, or husband. Don’t be condescending, be respectful.
- Watch the length of your tweet, 140 characters is obviously short. Use it wisely. If you @reply to many users in a tweet it becomes an issue when retweeting.
- Lastly, Twitter is dynamic — always changing. Understand this and embrace this. Change the structure of your tweets, the sequencing the people you reply too, the tags, etc.
Again, we’ll see over time if this strategy proves to be sucessful. Currently this is just aggregated research and an attempt at creating a strategy to streamline and organize communication over this specific medium.
**Note, before you read this scroll down and click the ‘preview’ button to pause the application while you read this article. The preview button is located to the right of the pan & volume.
In late 2008 Coca-Cola asked Juxt to create a ringtone generator for their Sprite brand. The concept was fairly fairly straight forward, create an engaging rich media campaign for Sprite that would supplement and drive additional traffic to their under the cap program. The under the cap program gives participants a digital prize on their mobile phone every time they text a cap code found under the cap of a 20 oz Sprite.
The rich media unit allowed visitors to mix custom samples to create a ringtone which then could be sent to their mobile phone. The mechanism for delivery of the ringtone was sending a text message with a unique code to 77483 [Sprite's short code]. The unique code was determined by the selection and pattern of samples chosen in the mixer.
So far so good, four samples (drums, bass, lead, and synth) and four measures the only piece missing is a creative mind to mix yourself a ringtone. This is where things get both complicated and interesting. Due to the hosting environment infrastructure and mobile messaging platform we were unable to create ringtones on demand in real-time. Instead we were require to create all possible combination of ringtones in advance. Using a 4×4 grid of samples and measures we are left with 65,536 possible combination’s but one option is complete silence so our magic number is 65,535 distinct ringtone possibilities.
We tried a wide variety of different software applications to sequence audio tracks to generate our 65,535 ringones. However, after much research we determined that each piece of software resulted in poor results. For the most part, desktop applications weren’t able to process the sheer bulk size of the files we were trying to sequence. It became evident that this wasn’t going to be an easy task. Eventually I found a audio conversion application for linux called the Swiss Army knife of sound processing (SOX). After trial and error and a make shift syntax manual I was able to join four samples (drums, bass, synth, lead) so they all played at the same time. Success. Well, not quite success but progress.
Having a solution to merge audio tracks was comforting, but there was still a few more hurdles. Mainly, how do I go from creating one combination to over sixty-five thousand, and how would I generate a code that could easily be interpreted by the Flash mixing interface so the right SMS code could be generated? Since SOX is a linux tool it made sense to create a script to write an application to sequence the ringtones. PHP was an obvious candidate, its available, easy to write, and very robust. I am going to spare the details of the contents of the script, but I can tell you that it used bit arrays, translation, loops, and math. As I mentioned previously matching the code to a specific ringtone is extremely important. If you are in the industry you are aware that banners and rich media units have file size requirements. In our case the flash mixer needed to be less than 100k. The design and functionality already left us at nearly 100k which meant we didn’t have room for logic in the application and we could not load a mapping into the flash application via XML because the file size would be ~5MB which would kill the experience.
Regardless, we found a pattern relying on hex that allowed us to use a simple naming scheme that the mixer could understand with very little logic. Then we modified the naming convention slightly to make sure we didn’t generate any codes that matched data in the 18,000 row document explaining how to spell vulgar or inappropriate terms using your keypad. After generating 65,535 ringtones in a number of formats we put them on a terabyte drive sent them to an unnamed country in Europe and the rest is history, run through the MTV or VHS properties to find the ringtone mixer and get yourself a new ringtone.