All posts by Jonathan Stassen

UX: ‘Next’ or ‘More’ buttons

I’ve been thinking about pagination buttons and specifically the verbiage for the next button.

Hitting a button labeled “Next” feels laborious, tedious like the viewers are sifting through a list to find something.

Hitting a button labeled “More” button may appease the viewer, making them feel content with what they have seen so far. This type of button may get a user curious, like peaking around the corner just to see what more is there.

I’m thinking people respond better to a “More” button.

However, this really depends on the type of pagination being used. If the buttons are a paired “back/next” buttons, using “more” is probably awkward.

Or am I totally off on this?

Opinion: The Modular Smartphone

I’ve had a number of friends show me this nifty concept video on a modular phone. I see the frustration it addresses in regards to repairs and upgrades. I find the idea appealing, but I have my doubts about the long term feasibility and acceptance in the market place.

Connectors – The modular gotcha

A concern becomes those connectors, they will be more complex than just 4 generic pins as shown in the video, they will have to be.

Let’s say a standard connector is established for the camera for example. And that is good, however when innovation occurs that old connector standard may no longer be suffice and a new standard will need to be established. So you end up with two types of camera modules. Camera C1 and Camera C2. That main board in the phone will only support one or the other. A main board with a C1 is outdated. If you want to use a C2 camera, you need to upgrade to a board with C2 connector. Now look at the broader perspective. Now we have upgraded our board, and the new one only supports Processor CPU3 connection and our old board was a CPU1 – this module too will need to upgrade. His example of regular screen to HD screen is perfect example, the connections are probably going to be different.

These upgrades because of dependencies and limitations are a real thing we saw with desktop computers and their motherboards:

In general public doesn’t want try to manage or understand these component dependencies. Thus why most purchased pre-fabricated desktop PCs. In practice, most purchased a new computer instead of swapping out older components. They didn’t want to deal with the hassle of understanding the modular structure.

Moving away from fully modular

When we moved from desktop computer to laptops we abandon modular computers. Each laptop is unique on the interior and are only partially modular .  harddrive, cdrom drive, RAM, wifi, and bluetooth, but that’s about it). This move away from modular is partially because of the space constraints. It is a really small living space for all the components, and generally not very accessible. In a smartphone this issue only becomes even greater, the connectors are compact and delicate.

Smartphone should adopt a similar mentality as laptops, with key components being swap-able. Many smartphones are already partially modular. Many androids have SD chip for increasing storage, Batteries can be replaced with ease. There are a few other components that should be focused on such as the screen. Repairing a phone any busted part in a Android or iPhones that can already be swapped, hardest bit is locating the right one for your phone. Upgrading components is unlikly because of the compact space and uique shaped parts.

 We are moving fast

And that is OK. We are demanding more and more from these portable devices. Rapid innovation is happening now. A fully modular phone won’t be able to keep up and might even slow us down. The time for this may be in 5 years from now when we start to slow down.

Will a modular phone happen?

It’s possible someone may create one, but I have my hunches it won’t stick in the mainstream other than it being an idealistic hope. People prefer simple and reliable over effort and maintenance.

Do you disagree? Think there is a chance it will catch? These non-issues?

Utility: FTP Automation and Sync

I write code. I often find my self manually uploading every change to an ftp server using wither FileZilla or Windows Explorer native ftp browsing.  Keep the FTP in sync is tedious as you may know. Save file – Switch to ftp – upload – refresh browser. In the past I have searched for a simple answer for ftp automation but found nothing. Perhaps I didn’t search long enough, however I have an answer at long last!

Enter WinSCP

WinSCP FTP Automation

WinSCP has a built in “Keep remote directory up to date” function. It is brilliant let me tell you. You select the local folder and remote folder, tinker with settings (like if it should monitor subdirectories in addition), and away you go! Instantly as soon as you save the file it will upload any changes. FTP automation. What a time saver and frustration eliminator!

FTP Automation – It’s like magic!

There is very little latency for WinSCP to detect a changed file, perhaps a fraction of  a second at most! It is important to note, this automation is upload only, it doesn’t appear to support download sync as it doesn’t monitor the server side for changes. However, it does have a directory comparison tool and manual two way folder synchronization options in the main toolbar. But both of these are manual operations.

I recommending give it a try to see if WinSCP can help your workflow and save you time by eliminating the pains of manually uploading to an FTP server.

SyncFTP_Options

Overall I’m very pleased with this application, I think I may say farewell to FileZilla.

Download

Head over to WinSCP’s site for the latest downloads.

In addition WinSCP has some great scripting options with WinSCP.com. I have used it for automation / scheduled FTP transfers.  I will write more on that in the future.

Tip: Windows Alt+Tab Order

The revised Windows 7 and Windows 8 Alt+Tab has been bugging me for a couple years now. The Alt+Tab order is (or seems to be) ordered completely randomly. This prevents quickly ALt+Tab switching between two programs.

I finally took the time to find the the fix, Add the following DWORD key to the registry: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\AltTabSettings = 1

This enables the old Alt+Tab behavior. It does remove Aero Peak and thumbnails of each app unfortunately. It’s better to have something functional than shiny.

Note: I noticed a pattern, when you minimize a window, that window goes to the last in the order. I suppose the logic presumed is that you are wanting that application out of the way if you are minimizing it.

Source: SuperUser.com – Getting back the old alt-tab windows switching behavior in Windows 7?

Script: Unhide Network Drive Folders

There is an infection going around that hides all folders on a network drive and sets them as system folders. Here is a script I wrote that will remove the hidden and system attributes all folders/files in a directory you specify.
It uses the “attrib -h -s” and is not recursive into subdirectories.

For complete removal of the infection, naturally scan all machines. Remove any rouge autorun.ini files and rouge .exe files on the network drive.

Download: UnhideNetworkDriveFolders.v1.zip

I haven’t tested on all system setups and naturally comes with no warranty.

Update 3/22/2013

This script can only be run against a folder ( C:/Production/Shared ) not against an actual mapped drive ( S:/ ) at this time.

Update 3/27/2013

Here is a quick list of things to check regarding cleaning up the infection/worm.

  • Scan all PCs with Malwarebytes
    • Cleanup the the startup items
    • Cleanup and rouge exe files located
      • C:\User\%Username%
      • C:\User\%Username%\AppData
      • C:\User\%Username%\AppData\Roaming
    • Find proccess the infection is running under. Example:  jjhhgg.exe
  • Network drives, Flashdrives, External Harddrives
    • Delete all *.exe that mimic a folder and have a folders name
    • Delete autorun.inf
    • Delete x.mpg
    • Deltee anything else odd, rouge .exe files, photos files with .exe extentions
    • CMD Prompt, browse to the folder and run
      • attrib -h -s
      • Note this only unhides files, not folders.
    • CMD Prompt, browse to the folder and run
      • FOR /F "tokens=*" %i IN ('DIR /A:D /b') do attrib -h -s "%i"
      • Note this only unhides folders, make sure to have the quotation marks

 

Utility: ISO Rip / Mount

I was searching around and found a set ISO utilities that are a great pair together. Both have no cost.

Portable Lightweight ISO Rip utility

LCISOCreator

LCISOCreator is great for creating .iso rips of a cd quickly.

ISOs rips are bootable for virtual machines. For physical machines I load the ISOs to a bootable USB disk. The interface can’t get much simpler. I can’t think of more to say.

LCISOCreator.exe (52KB)
Developers’s site seems to be no more.

Portable Lightweight ISO Mount utility

WinCDEmu

PortableWinCDEmu is great for mounting .iso files to a new virtual drive quickly.

The app does have to load a driver, naturally. The driver can be removed right from the app when you are finished. You can mount multiple images.

Supported image formats: iso, cue, img, nrg, mds, ccd, bin

PortableWinCDEmu-4.0.exe (229KB)
Developer’s Site

UX: Chromebook Profile Migration

I recently updated my Google Account password. The Chromebook had to do a migration of my profile. All went fine. However I think the UX during the migration could use a bit of touch up.

Requires old Password

I imagine this may be because the data is encrypted using the the Google Account password. My concern being, what if the user forgot their old password which is the reason for changing their password? I would have to hear some thoughts for and against this, but what if a unique key were created and stored server-side for any encryption? That might cause issues for an offline login to the Chromebook. I would have to think about this

UI feedback

The migration takes a little bit of time. During the process there is a no UI message, the Chromebook acts as if it were froze. Either a please wait message or the built in spinning loading mouse cursor would be good feedback for the user.

 

Overall the Chromebook is fantastic. I love the CR-48 and it continues to run the latest version of Chrome OS well!

Case Study: Unique Serial

I did some work repairing a gift certificate for NowStudio.co that a previous coder had created. The certificate is quite fantastic and keeps track of purchased certificates in a database. However, much of the code was written for PHP4 and had logic bugs that needed to cleaned up. A nice fun side project to work on.

The Problem.

The original coder used PHP’s rand() function to generate a number between 10,000,000 and 99,999,999 for the serial + the purchaser’s full name.

Not Unique. The obvious reasoning being that they didn’t want someone to be able to guess a certificate number and redeem a previously payed for certificate. Makes sense. However, there is a key flaw with creating serials this way. Random != Unique. There is the off chance, given time, that two certificates will be created with the same serial!

Using Names. The original coder recognized there was a chance a duplicate serial could be picked. They decided to use both the serial and the the buyer’s first and last name as the unique entries. Excellent idea and certainly seems to solve the problem. However, names tend to be unpredictable and unreliable. For instance, some last names are multi-part (Elfriede Von Kosh), have punctuation (Patrick O’Conner), or contain diacritic marks (Soňa Novak) among other things. This can cause unreliability with the app.

The question.

How can I create a better method of serializing the certificates?

Here are some requirements I came up with:

  • It has to be unique
  • Cannot be re-used
  • Non-continuous
  • Not guessable
  • Shouldn’t need to query the database to verify the serial hasn’t been used
  • Meaningful
  • Manageable in length

The Solution.

I decided simple solution is to use the full date/time + 4 random digits. For example this moment would be 2013-02-17 at 17:11:32 + 8345  or in string format  201302171711328345.

The Date. This serial has the benefit of telling us the exact moment it was generated. I use a 24-hour clock keep the length of the string always the same as well as to avoid the accidental repeated digit twice a day (9am and 9pm), that would be quite awkward. It would only increases the odds of getting a duplicated serial.

The +4 Digits. Using just the date and time down to the second I was still bugged that in theory two users could land on the page at the same moment and be served up the same serial. That’s why I felt the necessity to add the +4 random digits to the end of the string. While in theory it may be possible to still to generate duplicate serials, this makes it rather unlikely. During the save to the database we can always do a double check if we feel it is needed.

The Code.

For the landlubbers that want to use use this method of creating a serial, but don’t want to write it themselves – Here is what it looks like in PHP:

$serial=date("YmjGis").rand(1000,9999);

Too simple? Know a better solution? This only would work for small-medium sites.