UI prototypes and iPad/iPhone wireframes

Working on earlier design of the new system there are different ways in approaching UI design – from white board, favorite piece of napkin to modeling tools. Well, one can skeep it all together and jump into Visual Studio or Eclipse and start jamming together some nice forms.

Experience shows again and again that using prototyping in software development allows shaving hours, days or even months from release schedule.
From various types of concepts and prototypes UI prototypes are most difficult and if missed could kill any project down the road.

Setting proper UI expectations, creating reference materials for your project plan, getting earlier feedback from potential or existing customers – benefits are many.

How elements are placed on the screen? What themes/colors/styles are to be used? How screen is changed following workflow? How dialogs are organized?
Questions asked and answered earlier can become crucial for the project as early as getting a “GO” and as late as releasing version 1.0 and being forced to roll it back.

Do not underestimate power of the visualization!

Designing UI

There are plenty of tools around which give you some infrastructure to do UI prototypes.
To mention few:

  • Microsoft Visio – among others there is a Wireframe Diagram, Storyboards, workflow diagrams
  • FrameMaker
  • PowerPoint
  • Photoshop
  • OmniGraffle for Mac or iPad
  • WireframeSketcher plugin for Eclipse – basic wireframes with sequencing
  • Balsamiq Mockups – cross platform, community supported device elements library
  • Axure - web-oriented, interactive
  • MockupScreens - slightly outdated
  • Remember PVCS? Serena offers Serena Prototype Composer - activity flow and UI elements integration

Stick with what you have or Visio stencils

There could be many options, but I like to stick with what I am most familiar or have in my reach. So I choose Visio 2010 (part of MSDN).

By default however, Visio provides only with basic controls, toolbars, dialogs. What missing are actual stencils (collection of shapes) to be used to do UI design for the target platform.

Designing for Windows is different from designing for Android, iPhone or iPad and availability proper UI elements in our disposal is important.

No One is Left Behind

Internet is powerful thing and most of the time someone already went on the journey of helping others.
Problem is that it is difficult to find libraries for Visio. There is an option though – exporting from OMNIGRAFFLE in XML format for Visio.

Let’s list some:

Posted in Web-design | Tagged , , , , , | Leave a comment

Hello again or returning to old self

Merry Christmas!!!

It has been a while since my last post. Many things has changed – I have took on a new challenge changing the job and moving back to California. And wasn’t it a great decision!

With new job I have moved away from Delphi. In fact, I probably now do more in PHP then in Delphi. Yet, it is a C# which is main Dev language for me now.

Do I regret using Delphi for many years? No. It was a great ride. But, at some point it is coming to what is more relevant for the projects you are taking on.

So, what do I do? Silverlight/WCF/WPF/SQL Server/Reporting Services even developing for iPad/iPhone/Mac - anything what delivers what I need for projects at hand.

Being in more management role then ever before, I still remain a developer inside and like to explore all new things.

PDC2010 was great. Do you love this HTML5/Silverlight controversy, don’t you?

Year comes to the end and as I look back, I recognize all the greatness of past moments.

Past experience give us means of moving forward in life and I want to praise not just one but my last 5 years. They gave me more “food for thoughts” then ever. How to be a great leader and how not to be a not-so-great one. It is always nice to look at someone else for inspiration. These years taught me a great deal about leadership and what it means to be an effective leader. We see a lot discussions on rule of thumb on how to be a great leader, but it is bad leader examples which make us empowered with experience in life.

So let’s be better, make our life and life of people around us better as well. 

Merry Christmas and Happy New Year.

Posted in Delphi, Technology | Leave a comment

How to add key navigation to your web-site

This is probably an old topic which still raises here and there.

Day ago while waiting for delayed flight on United, I was doing some follow up on the discussion about my Theme for Gallery 3 and was asked if I could add support for Keyboard navigation.

In general, it is easy topic, especially when jQuery is supported for the web-site.

An objective is to allow visitor use keyboard to navigate. In my case it is applied to Gallery pagination enabling use of Left/Right/Up keys to move between photos or album pages.

While being simple in implementation, it adds a convenience for the end user enabling keyboard navigation versus mouse clicks.

So let’s add it…

First, we need some “anchors” on the page to find dynamically what our keys would do when pressed.

In case of my theme, I have paginator control allowing user navigate first/prev/next/last or go level up in the gallery structure (small arrow buttons/links), but it could be anything.

If we are to be W3C-friendly, then <link> tag in the header is more appropriate, but I am not going to use it in the example below. So let’s assume we have 5 links as following

<a title="First (Ctrl+Left)" id="g-navi-first" href="/first.html">First</a>
<a title="Prev (Left)" id="g-navi-prev" href="/prev.html">Prev</a>
<a title="Parent (Ctrl+Up)" id="g-navi-parent" href="/parent.html">Parent</a>
<a title="Next (Right)" id="g-navi-next" href="/next.html">Next</a>
<a title="Last (Ctrl+Right)" id="g-navi-last" href="/last.html">Last</a>

As you can see we have 5 different actions to take and we have selected key combinations we are going to use.
Code above by itself, would only work with mouse click.
What we need next is very small jQuery code to bring life into it and add desired keyboard sensitivity.
Please notice that it would override default arrow key based scroll support of the browser. So if you want to keep both then simply adjust code below to your liking.

There goes the code. Simply dump it into JS file and add reference in your page:

/**
*
* Copyright (c) 2010 Serguei Dosyukov, http://blog.dragonsoft.us
*
*/
$.fn.KbdNavigation = function() {
  $(this).bind("keydown", function(event) {
    var lnk = "";
    var lnk_first, lnk_prev, lnk_parent, lnk_next, lnk_last;
    lnk_first  = $("#g-navi-first").attr("href");
    lnk_prev   = $("#g-navi-prev").attr("href");
    lnk_parent = $("#g-navi-parent").attr("href");
    lnk_next   = $("#g-navi-next").attr("href");
    lnk_last   = $("#g-navi-last").attr("href");
   
    switch(event.keyCode) {
      case 0x25: // Ctr+Left/Left
        if(event.ctrlKey) { lnk = lnk_first; } else { lnk = lnk_prev; }
        break; 
      case 0x26: // Ctrl+Up
        if(event.ctrlKey) { lnk = lnk_parent; }
        break;
      case 0x27: // Ctrl+Right/Right
        if(event.ctrlKey) { lnk = lnk_last; } else { lnk = lnk_next; }
        break; 
    }
   
    if(lnk) {
      window.location = lnk;
      return true;
    }
   
    return true;
  });
}
$(document).ready( function() {
  $(document).KbdNavigation({});
});
Posted in Web-design | Tagged , , , , , , | Leave a comment

PHP, MySQL and error “2006: MySQL server has gone away”

As a hobby I like to do little photography.

Same time I do not like to give my photos to someone else to host, so I have my gallery.

It runs on Menalto’s Gallery 3 engine – nice, open source, PHP based with MySQL back-end.

Not my primary programming language, but allows me to host and enhance my blog, keep my gallery and small web-site.

Last night, while bringing some old photos over from my backup gallery (G3 is still under development and I do not want to recreate gallery if anything to happen, and it did – I killed the setup…), I noticed that import process start to fail. Several attempts to recover did not give much of the progress and I went digging error logs.

Well,.. I learned something interesting. I am not a PHP programmer, at least it is not that I do for living, or not at this time… but even doing simple house work forces you learn things :)
G3 runs on Kohana framework and there is a wrapper for DB access.

What happend was that some of the SQL requests began timing out

Database_Exception [ 44 ]: #2006: MySQL server has gone away

In case when queries are not optimal, one has to learn how to manage PHP… through php.ini…

MySQL timeout related errors are “fixed” by telling mysql to reconnect… and for that “tricks” are handy…
From browsing, reading, browsing, filtering, … while waiting for G2 Import I have found a solution which lead me here. One of interest is called mysqli.reconnect. Little magic - simply adding the following line in PHP.INI would tell MySQL reconnect.

mysqli.reconnect=1

It may be still slow, but at least connection would recover gracefully.

We can talk about code styles, code protection and error handling, but line above is a hidden gold on the end of the rainbow called PHP.

Posted in Web-design | Tagged , , , , , , | Leave a comment
  • About

    From being a junior developer all the way to Development Manager position, I was always interested in new technologies. Passionate speaker, IT junky, developer, architect, team lead, and development manager - many hats, one goal - making software better and closer to people’s needs. For the most part I am using my blog as a scratch pad, writing small articles on things which I came across, was asked about more then once, and which would otherwise require additional research again and again.

    View Serguei Dosyukov's profile on LinkedIn
  • Testimonials

    I've been using this [theme] since the start. It is by far the most attractive, feature packed and stable of...

    Rhyull

    The greydragon theme is fantastic. It’s clean, stable and feature rich. It took me a while to decide to move...

    Ed

    I’m a huge fan of this theme. I’ve got more than 90,000 pictures in my gallery3 running on a Ubuntu...

    Jklobo

    more...

  • Categories