Options for deploying an interface for a museum exhibit? - macos

We are building an companion presentation that will be displayed on computer screens next to a museum exhibit. I believe the machines are going to be running OSX (no touchscreens) and the users will need a mouse at minimum.
Does anyone have an recommendations for what environment to build in (flash, air, web, cocoa, etc) that will allow us to restrict access to the computer itself? Our main concern is with people alt-tabbing, command-q'ing, command-option-escape'ing, etc etc etc. Anything that will let them exit the presentation and access the main system is a major issue.
Thanks.

OS X has support for various kiosk modes which you can trigger from pretty much any programming environment. Something Web-based seems like a good strategy since it doesn't limit you much. Opera has kiosk support (which I haven't used) as does iCab. There are also some purpose-designed kiosk browsers such as Plainview and wKiosk.

I think what you are looking for is called "Kiosk mode":
http://www.mactech.com/articles/mactech/Vol.19/19.12/KioskModeFeatures/index.html
Also, I would avoid giving the users a mouse. Mice will get destroyed in such exhibits over time. A better option might be a touchpad. I don't know for sure, but I would imagine they will have a longer lifespan in a display. I know trackballs used to be very popular for kiosks but the ones I've seen look like specially purchased devices, not the standard Kensington ones you get at the shop around the corner...

Related

Is there a way to test my software on a mac without buying a mac?

I need to test my web application on a Mac/Safari - especially stuff related to keyboard handling. I couldn't find any service that simply lets me connect to a hosted OSX instance. Is there something like this?
IOW, is there a way to test my software on a mac without buying a mac?
If by "keyboard handling" you mean typing into standard controls the risk is probably quite low. It also depends on whether you will need to provide support for the system as well: it might be frustrating to debug an issue a customer has without having somewhat similar equipment. The keyboard layout is all different to Windows and Linux and even frequently used characters such as # and \ may be challenging - of course it all depends on how well programmed the controls are.
So to put it short, if I were you I'd spend 200$ on an used iMac running whatever OSX version just to be sure. 200$ isn't much compared to tens or hundreds of hours of debugging. With that investment you can also verify that the layout and other functionality works ok on Safari and OSX.
Can't say I've used them but you could look at cloud4mac.com
You can run OS X inside a VM fairly easily these days. You don't get 3D acceleration but it sounds like you don't need it for your testing anyway.

Great idea for embedded development

For my university I (and three others), are searching for a project that utilizes at least one embedded device, web services or other web technology, and a Graphical User Interface.
Currently we are looking at developing a unified remote, that is an extendable application on a cell phone through which you can control your media center. Any ideas, or advice on this will be appreciated, though it is not the focus of this question.
We are having a hard time finding interesting (or funny) projects on which we can work a complete semester. Any ideas will be greatly appreciated. The software will be released as free software. (GPL or BSD license).
We all have a Bsc in Software Engineering.
EDIT: I am very pleased with the suggestions so far. Thanks to everyone, and keep it coming.
How about follower: carry a device, as you move from room to room in your house devices configure themselves to your preference - lights, music etc. If two people are in the room some precedence rules.
Is that possible just on the presence of a mobile phone?
Another idea (from the top of my head):
A work environment ensurance thing. We programmers like to develop in nice and quiet environments. Unfortunately some people tends to annoy us with their disturbing behaviour (or just by being loud).
So the project could be to create devices wich tracks the stress level (sweat levels, pulse etc.) of the individual and their impact onto others.
An example: One individual is very loud (the device should measure this), and others around him becomes stressed and/or unfocused because of this. The serverside sw, should then detect and warn him to quit down a bit to improve the work environment.
Comments?
What do you peeps like doing? Build an app for it.
So, if you like drinking coffee build a application which will find the nearest frothy coffee shoppe (or if you're particular, the nearest Peets/Starbucks/Whatever-ocino). This idea works for beer too.
If you buy stuff off e-Bay build a sniper app.
If you enjoy playing frisbee build an app which locates your nearest friends and sends them a text asking whether they want to goof off lectures and go to the park.
Heck, you could even build an app which monitors your SO questions and alerts you when you get an answer (although I don't know whether the data services SO currently offer will be up to the job).
The standout companies that have made great universal (programmable) remotes are : logitech, and philips.
One of the big problems with these types of devices is the ability of the general consumer to actually program all of their various devices. Logitech has done an outstanding job of providing a fairly simple Web based user setup experience that then implements a very usable universal control.
I would definitely look at what they have done for some ideas on universal remote controls.
How about an app and hardware that will tell me when my wife's plants need watering? (It's somehow my fault if they don't get watered.)
OK then: the recipe generating fridge. Rfid tags on the contents know what's available and the expiry dates. The database knows the recipes. The fridge emails/texts you to say "buy some mushrooms and you can have a delicous ham and mushroom omelette while the eggs are still fresh."
Benjamin and all those aspiring to do embedded projects ...
When you start a project, especially in embedded systems, you need to understand that the hardware is not your PC but some special device. And every sensor will be a transducer in itself. The only thing that would matter to students is that everything costs and are costly
So, it will be good to make sure that the idea is such that,
It can be completed by the
project members within the given timeframe
All the required development
tools like hardware etc can be
really bought
Of all, it good to ensure that the
project enables you to learn
something useful for your career ...
To do all this it is better set some achievable goals
Develop a system in which you can program the lighting system of your house. You can set up their schedule one time and everything should work automatically.
I really love working witht the Atmel ststk1000/stk1006/stk1002 development boards for tht AVR32. ATSTK1000
2x Ethernet
QVGA lcd
USB 2.0
SD/MMC
Conpact flash
Supported embedded linux
IR
Audio
ps2 interfaces
uarts
++
familiy atmel page:
AVR 32 family home
online forums
Forums for CPU

How to track common UI element placement?

For common elements, such as a logout button on a website, save button in an application, need to be presented to users in an standard, easily discoverable way. How do you go about deciding where in your application to place these elements? Do you research similar apps and try to follow convention? Is there any database that attempts to track the use of these common elements or is this too hard to capture?
The goal is to put UI elements where users expect to find them. You want to leverage the knowledge that they already have about how applications work.
So, looking at the the UI elements for the OS that you are targeting is helpful. Unfortunately, there are some key differences here between Windows and Mac, you will have to pick one or switch based on the OS if you target both.
Looking at applications that are similar to yours is generally not a good idea unless you believe that people using your product are already using these other products and you want them to switch.
Instead, you look at products that are complementary to yours, or products that you expect everyone is familiar with. At one point it was a good idea to look at Excel and Word to know how an Windows application should work; But I don't think that the current versions of Excel and Word are a good model, they deviate too much from the way the OS works. You could still use older versions - before the ribbon, if you are targeting Windows.
It's best to be a bit conservative, choosing applications that have been out for a while and people are likely to be comfortable with rather than chasing the latest design innovations that are coming out of Apple and Microsoft.
I research similar apps and try to follow convention...
E.g. logout goes up in the top right near the "X"/close in most applications
Save/Edit buttons towards the bottom of the thing I'm editing... since contextually they happen after I finish the editing I just did.
Then again, you have apps like Outlook... that have the send/save buttons at the top.
In general though... I have application-wide actions (e.g. login/logout/help user info at the top)
Item specific tend to be inline or just after the item they are adding/editing.
I totally agree with leveraging knowledge that the user already has. Every techie is (or probably is) familiar with http://www.dice.com. It frustrates me to no end to see that their website is designed with the logout "link" (not even a "button") at the very BOTTOM of the page. In this age of security conciousness, what a place to put a logout link ???
I have used DeLorme Street Atlas USA mapping software ever since Windows 3.1. About five or so years ago, they changed their entire user interface, moving AWAY from all of the features that make application software in the Windows environment easy to learn and navigate and SIMILAR from one application to another, and TO a totally foreign user interface, unique to their individual product offering.
Was it necessary ? probably not... What was it's impact to the current user community ? probably not thought about... What was it's impact to someone new to Street Atlas USA ?? Probably LESSENED the adoption rate of the software product, because it looked so foreign compared to a user's already-used applications developed with the common Windows-based look and feel.
Although books can be written on how "we" dislike Microsoft, the value-added benefit to Windows since it's infancy with Windows 3.1 was that you could create totally different software applications, but have a SIMILAR navigation style threaded throughout all of the applications, LESSENING the new application learning curve, and INCREASING the adoption rate amongst software applications for the Windows user.
Leveraging positive current user knowledge can only increase the adoption rate of a software product. Why re-invent the wheel, when the current wheel is known and adequate ?

is it worth keeping the OS look and feel?

Is it worth to try to keep your GUI within the system looks ?
Every major program have their own anyways...
(visual studio, iexplorer, firefox, symantec utilities, adobe ...)
Or just the frame and dialogs should be left in the system look 'n feel range ?
update:
One easy exemple, if you want to add a close button to your tab, usually you make it against your current desktop theme. But if the user has a different theme, your close button is out of place, it doesn't fit the system look anymore.
I played with the uxtheme api, but there is nothing much you can do, and some themes i've seen are incomplete sets.
So to address this issue, the best way i see, is to do like visual studio/firefox/chrome roolup your own tab control with your theme...
I think, that unless your program becomes a very major part of the users life, you should strive to minimize "surprises" and maximimze recognizability (is that even a word?).
So, if you are making something that is used by 1.000 people for 10 minutes a day, go with system looks, and mechanisms.
If, on the other hand, you are making something that 100 people are using for 6 hours a day, I would start exploring what UI improvements and shortcuts I could cram in to make those 6 hours easier to deal with.
Notice however, that UI fixes must not come at the expense of performance. This is almost always the case in the beginning when someone thinks that simply overriding the OnPaint event in .Net will be sufficient.
Before you know it you are once again intercepting NC_PAINT and NC_BACKGROUNDERASE and all those little tricks to make it go as fast as the built-in controls.
I tend to agree with others here- especially Soraz and Smaci.
One thing I'll add, though. If you do feel that the OS L&F is too constraining, and you have good grounds for going beyond it, I'd strive to follow the priciple of "Pacing and leading" (which I'm borrowing here from an NLP context).
The idea is that you still want to capitalise as much as possible on your intended audidences familiarity with the host OS (there will be rare exceptions to this, as Smaci has already covered). So you use as much as possible of the "standard" controls and behaviours (this is the "pacing") - but extend it where necessary in ways that still "fit in" as much as possible (leading).
You've already mentioned some good examples of this principle at work - Visual Studio, even Office to some extend (Office is "special" as new UI styles that cut their teeth here often find their way back into future OS versions - or de-facto standards).
I'm bringing this up to contrast the type of apps that just "do it their way" - usually because they've been ported from another platform, or have been written to be cross-platform in GUI as well as core. Java apps often fall into this category, but they're not the only ones. It's not as bad as it used to be, but even today most pro audio apps have mongrel UIs, showing their lineage as they have been ported from one platform to another through the years. While there might be good business reasons for these examples, it remains that their UIs tend to suck and going this route should be avoided if in any way possible!
The overriding principle is still to follow the path of least surprise, and take account of your user's familiarity with the OS, and ratio of their time using your app to others on the OS.
Yes, if only because it enables the OS to use any accessability features that are built in like text-to-speech. There is nothing more annoying for someone who needs accessability features to have yet another UI that breaks all the tools they are used to.
I'd say it depends on the users, the application and the platform. The interface should be intuitive to the users, which is only the same as following system UI standards if they are appropriate for those users. For example, in the past I have been involved in developing hand held systems for dairy and bread delivery on Windows CE hand helds. The users in this case typically were not computer literate, and had a weak educational backround. The user interface focussed on ease of use through simple language and was modelled on a pre-existing paper form system. It made no attempt to follow the Windows look and feel as this would not have been appropriate.
Currently, I develop very graphical software for a user group that is typically 3rd level educated and very computer literate. The expectation here is that the software will adhere to and extend the Windows look and feel.
Software should be easy and intuitive where possible, and how to achieve this is entirely context dependent.
I'd like to reply with another question (Not really Stackoverflow protocol, but I think that, in this case, it's justified)
The question is 'Is it worth breaking the OS look and feel?'
In other words,
Do you have justification for doing so? (In order to present data in some way that's not possible within normal L&F)
What do you gain from doing so? (Improvinging usability?)
What do you lose from doing so? (Intuitiveness & familiarity?)
Don't simply do it 'To be different'
It depends on how wide you would define system look'n feel... But in general, you should keep it.
Do not surprise the user with differentiating from what he is used to. That's one of the reasons why we call him user ;-)
Firefox and Adobe products usually don't because they are targeting several plattforms which all have their own L&F. But Visual Studio keeps the typical Windows L&F. And, as long as you are developing only for Windows, so should you.
Apart from the fact that there is no well-defined look-n-feel on Windows, you should always try to follow the host platform native L&F. Note however that look-n-feel is just as much about how a program behaves as how it looks. Programs which behave in a counter-intuitive way is just as annoying as programs sporting their own ugly widgets.
Fraps is a good example (IMHO) of a program which is actually very useful, but breaks several user interface guidelines and looks really ugly.
If you're developing for Apple's Mac OS X or Microsoft Windows, the vendors supply interface guidelines which should be followed for any application to be "native".
See Are there any standards to follow in determining where to place menu items? for more information.
If you are on (or develop for) a Mac, then definitely YES!
And this should be true for Windows also.
In general, yes. But there's the occassional program that does well despite being not formatted for all the OSes it runs on. For example, emacs runs pretty much contrary to every interface guideline on OS X or Windows (and probably even gnome/KDE) and it's not going away any time soon.
I strongly recommend making your application look native.
A common mistake that developers who are porting an application to a new platform seem to make is that the new application should look-and-feel like it does on the old platform.
No, the new application should look-and-feel like all the other application that the user is used to on the new platform.
Otherwise, you get abominations like iTunes on Windows. The same UI design may be exactly right on one platform and very wrong on the next.
You will find that your users may not be able to pin-point why they dislike your application, but they just feel it hard to use.
Yes, there are valid exceptions, but they are rare (and sure enough, they tend to be the major applications like Office and Firefox, rather than the little ones). If you are unsure enough to have to ask on StackOverflow, your application isn't one of them.

Lightweight X window manager/environment

My machine is seriously underpowered, and I think I need to start conserving every spare cycle. I know that my Gnome environment seems to underperform compared to my coworkers' KDE setups. But if I'm going to make that big of a switch, I might as well consider running something even lighter.
Is it possible to survive on a lightweight window manager and still run modern apps (Firefox, Eclipse, OpenOffice)? What's a good candidate window manager for me to try, and what do I need to know?
The window managers listed below all subscribe to the lightweight and fast approach.
They are faster than fully fledged window managers like KDE or Gnome and trim down on most visual distractions. Which one you pick will be mostly determined by your own taste and what you can get to run.
There's a subfamily of these window managers, notably those which attempt to let you do everything by keyboard and let you tile your applications with minimal screen real estate waste. These can feel funny if you come from mouse-oriented window managers. XMonad and ratpoison are members of this family.
xfce
ratpoison
fluxbox
awesome -1, cannot handle minimize to tray
XMonad
dwm
fvwm (codebase for another WMs)
icewm
Englightenment
wmii
openbox
pekwm
I like XMonad. It's very stable, has very low overheads, and has an active user/developer community.
XMonad is almost as minimal as ratpoison, but it displays multiple windows by tiling them, and even allows floating windows if you really need them (e.g. for modal dialogues or GIMP). It's certainly given my underpowered Ubuntu box a new lease of life!
Edit: I forgot to mention: XMonad is keyboard-based rather than point'n'grunt, so there's a bit of a learning curve, but once I got the hang of it I found that I was much more productive.
Fluxbox is a good alternative and very lightweight.
http://www.fluxbox.org/
Icewm is quite nice and lean (used it for a while on an underpowered box but moved to KDE when the box was upgraded).
The first thing you should would be to build your own kernel, with just the things you need. That will save tons of resources.
Then, choose a lightweight WM. Ive found Enlightenment very light and awesome, give it a try.
Later, you should look for lightweight replacements of the apps you use.
You can replace OpenOffice with Abiword, Gnumeric.
Just google, and you will find very nice alternatives to those ram-eater software.
The thing I would recommend will be to avoid Java software, they'll run VERY slow on a low resources PC.
Also, check for the services that are currently running on your PC, and disable the ones you don't use.
Consider changing your current distro for a low resources distro. I found Debian very customizable and lightweight.
Good Luck!
I use FVWM for 7 years. Most of WM based on FVWM, but strip any flexibility of FVWM.
FVWM is just "interface" to Xlib so it bring to you all what in Xlib.
If you want currently popular tiling - just: FvwmPiazza::Tiler
Google for ~/.fvwm/config as get own from scratch is too difficult, this good one from which I started: http://zensites.net/fvwm/guide/
Also look to:
https://wiki.archlinux.org/index.php/FVWM
http://wiki.gentoo.org/wiki/FVWM
https://wiki.debian.org/Fvwm
I'll second xfce, it's probably the most popular of the lightweight WM's out there (perhaps due to its inclusion in Xubuntu). I've also had good experiences with Fluxbox (it came with Damn Small Linux when I used that as a lightweight Linux VM (back when VMs were slow :-) ).
There is definitely an ease-of-use learning curve to reckon with when migrating to these more lightweight WMs, but the performance benefits aren't hard to see on older hardware (menus appear instantly, navigation is pretty snappy).
I used Fluxbox for a long time, which is great for people used to having windows floating around like in KDE, Gnome etc. It's pretty small, pretty fast and highly configurable, plus it doesn't look as ugly as some other "minimalist" window managers. ;)
A few weeks ago I switched to awesome because I like how efficiently it places and resizes my windows. It's perfect for me since I almost always have just a full screen terminal on one screen and a browser on another screen. It also supports mixed window styles, so you can have windows managed by awesome and floating windows on one screen (e.g. I have almost always a managed full screen urxvt open and a small floating mplayer window in one of the corners). It's as lightweight as fluxbox, if not even faster, but doesn't offer as many options for customizing the look and feel.
I am using fluxbox too. Compared to a desktop envionment, using only a window manager is not as convenient. You choose every component yourself which is both a strength and a weakness. ROX file manager and usbmount are great companions to fluxbox. Also take your time to find some dockapps that may be useful.
Enlightenment (v16) is actually very lightweight compared to gnome/kde these days, and it is very configurable (although, nothing seems to be as configurable as fvwm) Florian's suggestions are all good, but if you're used to gnome/kde, then you probably won't like ratpoison / xmonad.
icewm has done me good for several years. I don't need most of the crap that the big-time desktops offer, but i do like a clock and CPU usage monitor running in the bar along the bottom - icewm does have these. It is noticeably lighter in feel than the popular desktops. No weirdness such as tiled windows or anti-mouse attitude. Customizing the root menu is also easy, much easier than doing so in KDE or Gnome, which i never did figure out adequately. At one place i worked, the sysadmin saw my screen and decided to give it a try. AFIK, he's still using it.
I'd recommend openbox. Its lightweight, very configurable, and works great without getting in the way. Very functional, and can do pretty much anything you want. I love it.
I tried PekWM for some time. I really liked it. It allowed me to group programs of the same type, for example: Terminals.
I myself have used 'lwm' or lightweight window manager for quite a while now and have been very happy with it. I use it with xfce4-panel which I use for a clock and better window manipulation. Lwm is truly light weight even more than xfce, icewm, pekwm and others.
I've used everything at one time or another, but I keep coming back to WindowMaker. I like the concept of the clip, the multiple workspaces (I keep one for each type of task) and the fact that it looks good with theming that is ridiculously easy.
Docker is an essential app to add to the desktop to keep nm-applet and other applets in the WindowMaker dock.
Don't judge it by the default theme. Use the Wprefs tool to customize it to your liking.
Cheers
KG
Over the years, I've downgraded the WMs of my machines. Since the more mainstream WMs, like Gnome or KDE become more and more resource hungry, it wasn't long, before I replaced Gnome with XFCE on laptops and desktop computers.
In fact, I've been using XFCE longer than any other WM. It seems to me, as if the niceties of things like Gnome and KDE are great when seeing them for the first time, but after using them for a few weeks and months, the novelty wears off, and it makes more sense to go back to a more streamlined environment.
The problem with XFCE is, that it's not as lightweitght as it needs to be for some of the older laptops I still have. I decided to use LXDE on those, and to be honest, I kinda have a love/hate relationship with that. It works fine, in the sense that it's quite resource friendly, and it's quick to log in, etc. But certain things don't seem to work that well. One of which is the task bar. It seems some of the icons don't fit, because they were designed for things like Gnome or XFCE. The icons still do work, but it's next to impossible to make the whole LXDE experience look the part.
Blackbox (+ bbkeys) is a little bit weird, but pretty nice thing. Also you can check the comparison table of window managers.

Resources