VOICE Home Page: http://www.os2voice.org | September 2001 [Newsletter Index] [Previous Page] [Next Page] [Feature Index] editor@os2voice.org

##
MultiDesk V0.2.0 - Your own Desktop on a shared OS/2 Warp PC!

By Peter Brown © September 2001

I was browsing hobbes/incoming the other night
When my eyes beheld an interesting sight...
(to the tune of Monster Mash c.195?)

Enough of my awful attempts at humour - bet you are glad you cannot hear me attempt to sing...
But, seriously, I was browsing hobbes/incoming looking for the latest Danis drivers and generally seeing "what's new". I found a file called md-0-2-0.wpi, which had as a description words to the effect of "Multiple desktops / Multiple Users for OS/2". This caught my attention immediately. Oh, to be able to setup "Pete's Desktop" and know that any of the three other potential users of this PC won't boot Warp 4 and change it to "Something Totally Different - So There!".

#### Firstly - What is MultiDesk?

Here is the answer, directly from the MultiDesk Documentation:-

> µDesk (stands for MultiDesk) is a program that will let you have multiple desktops on OS/2.

> Actually, it does something more: it presents you with a login screen at boot time, and when a user is recognized it can:

> > # setup environment variables (e.g. HOME, USER, etc)
> > # lock some files so that users won't touch them
> > # run a customizable rexx script before and after login
> > # start a customized desktop
> > # keep track of logins (user name, time, failed logins..)

> NOTE: MultiDesk offers some mild security features. While this features will probably improve in the future, don't expect too much from this: every user with enoguh skills and knowledge of OS/2 can bypass it. I'm not going to use SES (at least for now) because it is too buggy at this stage.

Well, that's fairly clear - apart from SES which, I believe, stands for Security Enabing Software. Anyhow, I downloaded md-0-2-0.wpi which, as you may have guessed from the "wpi" extension, requires WarpIN (V0.9.8 or later) to install. After making a coffee and lighting a cigarette (necessary, I've found, at moments of unknown software install) I double clicked on md-0-2-0.wpi and WarpIN (V0.9.13) started.

Having read the included readme file - it is displayed by WarpIN, make sure that you read it - I cancelled the install and did some WPS backups using the DeskBack batch files from ERA Computer Consulting (see sections "DeskBack - a brief mention " and "Software Links"). The backups created using these batch files have restored my Desktop and WarpCenter several times in the past year so I cannot recommend them highly enough.

Before we go any further I should admit that due to my inclination towards "experimentation" I ended up installing and removing this package several (oh, alright, ...4) times. The above backups came in very handy. I have now had MultiDesk installed and working successfully for the past nine days at the time of writing. All four Users setup on this sytem - each with their own Login, Password, Desktop and WarpCenter - have all Logged on several times and made changes to their Desktop and WarpCenter settings during this time without any problems at all. Hopefully, it will still be working fine when you read this in about 6 weeks :-)

#### The Quick Review of MultiDesk V0.2.0

It works well, but does need further development to make life easier for the "Administrator".

Documentation needs a little updating and a bit more detail.

It's freeware.

Overall an excellent package - A big "Thank You" to the author, Cristiano Guadagnino of TeamOS/2 Italy, for his efforts. Hopefully he will be inspired enough to continue developing and refining the software.

If you have any need at all for more than one Desktop, whether it's a case of several people sharing a PC, or maybe one User with different Desktops for different purposes, you must try this software.

End of review - Well, what else is there to say about this software? Uh?... a little more depth? - It's not a graphics package or wordprocessor. OK, I'll try:-

#### The "More In Depth" Review

The idea behind MultiDesk is to enable Users to have Multiple Desktops using a Login to specify which Desktop to use, or Multiple Users having their own Desktop - which is the same thing. Or, I suppose, Multiple Users with Multiple Desktops. The MultiDesk software works well, BUT you do need to reboot to change Users - No "Log Out / Login New User" routine here. The author does discuss his reasons for this in the Documentation; something for the more technically-competent than I to read and discuss. He also asks for help and advice regarding restarting the PM shell(Presentation Manager) without rebooting which seems to be where the problem lies. I would prefer to not reboot to change Users though in any future release; so if anyone can help, if possible, please....

There is also the possibility of locking files, presumably to prevent other Users "sticky-beaking" (being "nosey" or "overly inquisitive"), editing or even deleting them. I'm still investigating this at the moment so am unable to comment but understand that ALL locked files are accessible by the Administrator.

How MultiDesk gives OS/2 Warp Multi User / Multi Desktop capability is relatively (?) simple. When MultiDesk is installed the current settings for the Desktop and WarpCenter - there is only the one set to worry about at this point :-) - become the "root" users' by default. This "root" user becomes, yet again by default, the Administrator with the default Login:Password combination of - yes, you guessed it! - admin:admin (this can be changed, but see the section "BE AWARE!"). This Administrator is the User who now has the capability to create other Users, with all their own Desktop and WarpCenter settings residing in their own Home directory - never to be mixed up with any other Users', I hope.

Anyhow, let's run through it for real. I double clicked md-0-2-0.wpi and installed MultiDesk to K:\MuDesk - drive K: being my boot drive. I selected to install the Fastini files to the MultiDesk directory. I have several bits of software that include Fastini as part of the package and have found that installing Fastini to \os2\dll causes problems if I uninstall any of the software that uses Fastini. Any remaining packages cannot then find Fastini because another package uninstalled it.

Having completed the WarpIN installation it is necessary to reboot to activate the MultiDesk system as changes have been made to the config.sys file. When the Login and Password prompts appeared I entered "admin" to each and the system whirled a little and carried on loading. The Desktop and WarpCenter that I am so familiar with appeared with no problems and I plunged straight into the MultiDesk Documentation to read up on creating New Users prior to having a go. Important! Do make sure that you read this before attempting to create any Users.

We'll start with some screenshots of the open MultiDesk folder which the installation program thoughtfully put on the Administrator's Desktop. This contains the necessary program and documentation links - do read the docs thoroughly.

In theory you can only access these files if you are logged on as the "root" user. As a matter of interest here: Attempts by the two youngest Users, "matty" (Matthew,13) and "poggles" (Glenn, 9), to run the Administrator program or read the configuration files were unsuccessful - a message was displayed that read something like this "You need to be root user to access this file". As far as I am aware they have not succeeded so far. :-)

OK, time for another coffee and a go at this "Create a New User" business. Leaving the Documentation open so that I could check what to do if unsure I started the MultiDesk Administrator program and clicked the "Create New User" button.

I entered the New User (Login) name "nicki", elected to install to the "standard user tree" - which turns out to be organised slightly differently from that described in the Documentation.

I copied all allowable settings from the source INI file "losepete", originally "admin", the root user.

I noticed at the end of this "Create New User" procedure that the password "newpass" for this New User had been supplied by the program - something to change I guess. Anyway, looking at the MultiDesk Administrator screen I now have a second User.

Time for another screenshot - the MultiDesk Administrator screen showing Administrator "losepete" and User "nicki" - Note the different User_INI locations. Although not shown in this screenshot I can assure you that each User has their own version of OS2SYS.INI in the same location as their OS2.INI file.

User nicki is about to have her Password changed.

This is accomplished by pressing the ALT key and clicking on the Password, then highlighting the existing Password and overtyping.

The Password for nicki was changed from "newpass" to "wench" - that'll wind my Missus up; she'll have to be nice to me to get it changed. :-)

Note that the "losepete" and "nrb0602" have been changed from the "admin" defaults. Yes, I have changed the name and password now that I've done the screenshot - Mind you I don't think I should worry too much, most people reading this are hundreds if not thousands of miles away and very unlikely to "come into possession" of this PC.

The main danger in this respect is the two Users, not yet created in the screenshot, who live in my house masquerading as children - the previously mentioned Matthew and Glenn :-)

The changes from the "admin" defaults to "losepete" have been completed using a text editor and a lot of patience - see the section "BE AWARE! " for details. That is definitely one of those items to add to the "wish list" for this software - the ability to edit / change any part of a Users details from within the Administrator program. Maybe then the format of the configuration files could be changed from text so providing a little more security.

Probably the most disappointing part of the software is that the Manage Users Desktop button - the icon at the lower right corner that looks like a seriously overheating printer - doesn't. At this time it does nothing although I guess we can hope for better things here in the future. It sure would help if it was possible to copy parts of one Desktop to a different Desktop (I'm sure it would be invaluable if it could perform this over a network). My reason for saying that will become clear when we restart the PC and Login as the newly created user "nicki". Lets do that now.

OK, the Login and Password were accepted, the system loaded, a standard (?) WarpCenter appeared and a standard (?) Desktop was created. I then sat to one side having a coffee and cigarette while the "real live nicki" who had just logged on had a bit of a play changing the - HER! - Desktop colour, adding a few program objects - Linkup/Netscape and Star Office - and creating another WarpCenter Tray with some game links on it - women can be just as bad as men!

Well, Her Desktop and WarpCenter are definitely different from mine and I must admit that I was feeling a little anxious in case MultiDesk mismanaged copying and saving the WarpCenter files. The Desktop for nicki is not in the root of the drive K: - it is in the K:\Users\nicki directory. Opening the K:\Users\nicki directory in any view shows that the directory Desktop is open - and therefore the Desktop in use. My Desktop is K:\Desktop - this is not currently open. So I only need to worry about WarpCenter files. Time to test this worry.

Yet another reboot. I logged in as the Administrator and got exactly what I should have expected - my Desktop and WarpCenter. Brilliant!

Well, time to create the Users previously mentioned, Matthew and Glenn. I went through the Create a New User routine exactly as above but substituting the User names of "matty" and "poggles". These two Desktops are going to be the easiest to build when they are logged on and active. Both basically need links to software for Word Processing, Graphics and lots and lots of games - Did I say easiest? They will also need Network Logons to be able to access any data, and, of course, games on Their main (shared) PC.

Here's another screenshot - same program, more Users.

Having created these two Users it is necessary to reboot and Login firstly as "matty" to start building that Desktop and WarpCenter and then reboot again to Login as "poggles" and perform exactly the same process.

This could get monotonous if you have to create lots of Users. Building Desktops and WarpCenters certainly takes time.

Oh, if only the "Manage Users Desktops" button worked....

Here are some screenshots showing that all the above Users, including "losepete" the Administrator, have been created using the "standard" User Tree - which differs slightly from the Documentation.

View 1 (Above)

This shows the "standard" Users Tree with User directories for losepete, matty, nicki and poggles.

Things to note:-

losepete does not have a Desktop directory in the \Users\losepete directory. As losepete started life as "admin:admin" K:\Desktop is the Desktop directory for losepete.

User poggles does not have a Desktop directory yet as, at this point in time, poggles has not Logged on since the identity was created. The first time poggles uses the Login a Desktop directory will be created.

All Users have a WC directory where their own WarpCenter files are stored.

View 2 (Above

This shows a more open view of the User tree, looking at the tree for User matty.

This is the basic default Desktop directory tree setup using the INI file templates supplied with MultiDesk. Networking is not yet included in the MultiDesk templates so matty has got to persuade me to setup the necessary links for this and various other apps and games - that must be worth a weeks washing up from him:-)

View 3 (Above)

This shows another open view of the User tree, looking at the tree for User nicki.

User nicki has been busier than matty and has created a lot of her Desktop folders by the expedient of getting me to copy my Desktop folders and files (K:\Desktop) to a temporary directory.

When nicki was next logged on she copied a lot of her current Desktop from the temporary directory - obviously expecting to find working program objects within the Desktop folders :-)

I did my best to explain that Windows uses real files with the LNK extension for it's program objects(?) so in Win9x you can copy chunks of Desktop easily but OS/2 does things differently (or, as nicki said at the time, "more a**e-up-wardly", er... shall we translate that as awkwardly?)

At least nicki now has an idea of what folder she should put what type of program object in which is further along than matty. I shall have to remove those folders and program objects that nicki does not need.

As a passing thought I guess it would be wise to make sure that every User has access to the mimimum system setup and reconfiguration tools possible - only those items required for Customising their Desktop and WarpCenter. I certainly do not want to find that one of my younger Users has trashed the config.sys file or totally reconfigured OS/2 and now it won't start.

I'm not sure what else to say about this software. Aah, yes...

#### The Wish List - in my order of importance

The Pre-Login Rexx script should check the Last file for the last User and then locate that User's Home\WC directory - possibly by reading the mudesk.dat file - to copy that User's WarpCenter files from \os2\dll. Currently it looks for \User\last User name\WC to write these files to. Look at the screenshot above showing the four Users. Note that each Users Home directory includes the User name in the path, as the name of the User's Home directory. If the User name is changed then the User name does not match a User Home directory and the Pre-Login script cannot copy the WarpCenter files. This rapidly leads to problems with missing or wrong WarpCenters, believe me!

An "Edit User" button to enable changing Login, Password and - if the first wish about a more sophisticated Pre-Login script happens - the ability to rename a Users Home directory within the Administrator program and perform any other reconfiguration necessary. The changes should then be automatically updated in every configuration file where that data is stored. Also maybe this data would be better stored in non text files.

An enabled "Manage User Desktop" button which copies any required Desktop object from any other User's Desktop anywhere on the network, to the selected User Desktop - Oh boy! Would this be useful, or what? Please, please...

Updated documentation with more detailed explanations, especially as regards the ability to "lock files".

To be able to "Log Off" and have another User Login without having to reboot. Oh, and pass that Login to the Network Login, if required. Well I think it would be handy to have just the one Login / Password combination to have to remember although maybe this should be optional to satisfy those people with more stringent security requirements.

Sound Scheme for each User - I've just discovered that every User is stuck with the same Scheme. You can have very different Desktops and WarpCenters for each User but not Different sounds. How did I discover this? - User nicki selected a different Sound Scheme for her Desktop. Later when I booted up and Logged in I've got this new Sound Scheme! - and I'm not allowed to change it!!! STOP PRESS!!! - Hold the Front Page! Sound problem solved. Click here to see how.

This is probably a good place to say that I sent a draft copy of this review to Cristiano Guadagnino, the author of MultiDesk. His prompt and informative reply enabled me to correct mistakes that I had made in the review. He also responded to the above "Wish List".

Cristiano sees my first 3 points as being related and should all, eventually, be controlled and configured by the "Manage Users Desktop" function. I could be happy with that, very happy in fact. He also agrees that the Documentation could do with a little updating. Of course he has the same problem as most of us - too much to do and not enough time to do it in so cannot say when any future updates will appear.

My wish for a "Login / Logout" function without rebooting looks like a non-starter though. If I have understood the reply correctly some of the OS/2 files would have to be rewritten to make this possible. Apparantly the Presentation Manager would need to be stopped and then restarted to make this possible - something that OS/2 was not designed to cater for. If there are any programmers reading this who are desperately seeking a challenge contact Cris - email criguada@tin.it - for further details: Maybe IBM and eCS (Serenity Systems) could offer some help or advice here.

#### How MultiDesk works

Having had to uninstall/reinstall several times has given me a few chances to browse my K:\MuDesk and K:\User\Admin directories, read the data files *.cfg, *.dat, *.env, look at the mdstart.cmd files in K:\MuDesk and K:\User\Admin, and check the changes in my config.sys file. This has given me a good idea of how the system works although I do not claim great expertise in the matter.

The statements in my config.sys file that are related to the Desktop have been changed. My original config.sys file had these statements:-

> `REM ***** Workplace shell
> SET RUNWORKPLACE=K:\OS2\PMSHELL.EXE
> SET SYSTEM_INI=K:\OS2\OS2SYS.INI
> SET USER_INI=K:\OS2\OS2.INI
> PROTSHELL=K:\OS2\PMSHELL.EXE
> `

The config.sys file now has these statements:-

> `REM ***** Workplace shell
> RUN=K:\MuDesk\rexinit.exe
> PROTSHELL=K:\MuDesk\mudesk.exe
> SET SHELLHANDLESINC=50`

Well, that's as clear as that gets. I guess rexinit.exe is necessary to run the batch files which are part of the package.

MuDesk.exe then runs the batch file, K:\MuDesk\mdstart.cmd - the Pre-Login Rexx script, which copies the current WarpCenter configuration files of the User named in the file K:\MuDesk\last - this should be the User who last logged on - from K:\os2\dll to that User's \WC folder. For example, if "admin" was the last User then at the next system restart, before Login, the files (dock*.cfg, scenter.cfg) are copied from K:\os2\dll\ to K:\Users\admin\WC.

MuDesk.exe then displays the Login and Password prompts and, if the Login / Password combination are valid, the paths are set to that User's os2.ini and os2sys.ini files and that User's WarpCenter files get copied to K:\os2\dll\ - using a file called,yet again, mdstart.cmd - the Post-Login Rexx script which is located in the User's directory. The contents of the file K:\MuDesk\last are overwritten with the current User (Login) name. The system should now be loaded with the correct Desktop and WarpCenter.

That seems to be how it works, in a nutshell.

#### BE AWARE!

If you change any User details in the Administrator program, other than the Password, you will then need to spend some time with a text editor to make all the necessary changes in other configuration files and, possibly, rename the User Home directory.

The "Editable" configuration files are mainly located in the MultiDesk directory:-

- mudesk.dat - contains Login, Password and file location details for all Users.
- mudesk.cfg - some configuration settings for mudesk.exe including the "root_user=" statement which specifies the Administrator.
- mdstart.cmd - the Pre-Login Rexx script responsible for saving the previous WarpCenter.
- mudesk.bnr - a lovely file this; you can put whatever you like in it. Just be aware that it will be displayed above the Login prompt at boot up - Yes, it's the Login Banner.

Some are located in the \Users\UserName directory:-

- mdstart.cmd - the Post-Login Rexx script responsible for copying this Users WarpCenter to the required location - \os2\dll
- UserName.env - some User environment settings

The *.INI files could be considered "Editable", I guess, but make sure you know what you are doing.

Here are two slightly different UserName.env files:-

losepete being the Administrator and "root_user" does not seem to need a USERNAME or LOGNAME. I have not worked out the reason for this. Answers on the back of a £50 uk note please to me at...

#### Oooh! Here's one "Reconfiguration" that caught me out.

It is important to note that when Creating a New User the User name entered becomes the name of that User's Home directory. Any changes made after creating the User - such as changing the Password - is done using the MultiDesk Administrator program. Be very aware that changing the User (Login) name means that the simple Rexx script that runs just before the Login prompt will not be able to save that User's WarpCenter files back to that User's \WC directory (WarpCenter file storage directory). If the User (Login) name must be changed the User's Home directory must be renamed as well - which means editing all necessary configuration files with a text editor to reflect the changed details. Here is an example of what I mean:-

Having performed a successful install, rebooted the PC and logged in as "admin:admin" I decided to change the User name and Password from this default. OK, No problem. I started the MultiDesk Administrator program and ALT - clicked the User name to change it to "losepete" and then ALT - clicked the Password to change it to "nrb0602".

Having changed the Login and Password I saved the changes and closed the program. I then opened K:\MuDesk\mudesk.cfg, located the "root_user=" statement and entered the new User name to make sure that I still had "root priviliges" and then saved the file. I opened the file K:\Users\admin\admin.env and found that I needed to change the User name here as well; I did not change the "HOME=K:\Users\admin" statement in this file as the location of the files had not changed.

As I like to keep my Desktop fairly uncluttered I moved the MultiDesk folder from the Desktop to Desktop\Programs. I then dragged the MultiDesk folder onto the Tray called "System" in my WarpCenter to give me fairly quick access to the program and documentation.

Well, that should have taken care of everything I thought. So I closed all open files, having made any necessary file saves, and rebooted the system. The changed Login and Password were accepted and I thought, Great! No problems. The system loaded my WarpCenter and my Desktop.

I then selected the Tray "System" on my WarpCenter - funny it did not appear already, usually the last Tray used is displayed - and discovered that my newly created MultiDesk icon was missing. Oh, Not so great! What has happened?

The Pre-Login script relies on the User (Login) name to match a directory name in the User tree. Any changes made to the Users WarpCenter configuration cannot be saved if this criteria is not met. So at restart my new WarpCenter was not saved! The script would have tried to copy the files to a non-existant location - K:\Users\losepete\WC - the script does not have any way of checking for either the User HOME directory or it's subdirectory \WC and consequently any changes were lost.

I've no doubt that the Rexx scripts can be rewritten to allow for variations on a theme but I think I'd leave that to either the author of this software or someone more competent than myself with Rexx. The scripts work as long as you stick within their limitations.

To get out of this problem I copied the K:\Users\admin\* (files and directories) to K:\Users\losepete\* - I could not just rename the directory as this was the currently "active" Home Directory of the current User who was also the Administrator. I renamed the file K\Users\losepete\admin.env to K\Users\losepete\losepete.env which I then edited to change the path in the "HOME =" statement. I then edited all configuration files again changing any reference to "admin" to "losepete". Well, thats either Killed or Cured the problem, time to reboot and see. Thankfully it worked.

As previously admitted I have installed this software several times and my basic experience of trying to change various bits of the configuration lead me to give you this advice. Either:-

Absolutely Do Not !
Or,
Be very sure you know how to undo your "reconfiguration" - you could find yourself using a "Temporary Desktop" consisting of your Desktop background and an OS/2 Command Window and a very weird WarpCenter. This happened to me when trying to amend a Users Desktop by fiddling with the INI files and getting it very wrong.You will be able to start editors, etc. from the Command Line - but best avoided I reckon.

The good news is that changing the Password for any User is the easiest "reconfiguration" the Administrator will do - so just refuse to change a Users (Login) name and save yourself some work :-)

#### In Conclusion

As I said in the "Quick Review":-

- It works well, but does need further development to make life easier for the "Administrator".
- Documentation needs a little updating and a bit more detail.
- It's freeware.
- Overall an excellent package - A big "Thank You" to the author, Cristiano Guadagnino of TeamOS/2 Italy, for his efforts. Hopefully he will be inspired enough to carry on developing and refining the software.
- If you have any need at all for more than one Desktop, whether it's a case of several people sharing a PC, or maybe one User with different Desktops for different purposes, you must try this software.

One of the fundamental requirements of a modern operating system is to be "Multi User" WarpCenters (Tool Trays), Sound Schemes, Data Paths, etc. - for different Users; Something totally missing from the OS/2 and eCS worlds - until now. If a future version of MultiDesk could be intergrated into the operating system it would certainly make OS/2 and eCS more viable alternates to Windows and Linux for the "Small Business / Home / Family" operating system market.

I will definitely be setting up MultiDesk on our second PC - the one mainly used by "matty" and "poggles" - as it should help prevent a certain amount of the "system tweaking" that these two are prone to performing (I will, of course, be the Administrator on that PC). That will be the "make or break" test as regards the security that this software provides. It should, at least, sort out the constant bickering about their Desktop appearance, WarpCenter and Lockup Password - they'll each have their own :-)

There is a MultiDesk Mailing List on Yahoo Groups which may be useful for posting and, hopefully, getting answers to problems.

#### DeskBack - a brief mention

I've found the DeskBack batch files to be very useful in backing up my WPS, once set up to work with my system, and would recommend you give them a try if you do not already have aWPS back up system that works. Of course the DeskBack files were written to cope with a "one user / one desktop" system. I'm currently looking at modifying these files to work with my installation of MultiDesk. Once I'm happy that I have reliable working versions I'll offer them to ERA, the authors of DeskBack, for posting on their site - well it is their batch files I'm modifying.

#### For reference the system involved is

Warp 4 fixpack 15, Kernel 14.072a_W4, Device Driver pack 2, SciTech Display Doctor 7.0 beta 40, running on an AMD K6-3 450 based system

Peter Brown - OS/2 user since Warp3 hit the UK
Author of Fesane - a simple Front End for the OS/2 port of sane (scanner access now easy)
( http://hobbes.nmsu.edu/pub/os2/apps/graphics/scan/FEsane02.zip) email: losepete@cwcom.net

References: MultiDesk V0.2.0 Developer: Cristiano Guadagnino Price: Freeware MultiDesk V0.2.0 http://hobbes.nmsu.edu/pub/os2/util/wps/md-0-2-0.wpi [ Editor's note: Unless you have your browser configured to Save WPI files to disk, you will have to do this manually. In Netscape (all versions I am aware of) just right click on the link and select Save Link As or Hold the Shift key while clicking on the link with the left mouse button. In Opera right click on the link and select Save Link Document As. ] MultiDesk Users Group multidesk@yahoogroups.com - subscribe by sending a message to multidesk-subscribe@yahoogroups.com or visit http://groups.yahoo.com/group/multidesk/ and join the group WarpIN http://www.netlabs.org - click on "Projects" and then the WarpIN link DeskBack http://eracc.hypermart.net/os2/os2.htm - look for DeskBack INI Tools http://Goran_Ivankovic.tripod.com/ or search on http://hobbes.nmsu.edu for initool110.zip

[Feature Index]
editor@os2voice.org
[Previous Page] [Newsletter Index] [Next Page]
VOICE Home Page: http://www.os2voice.org