flexagon: (Default)
flexagon ([personal profile] flexagon) wrote2007-10-04 08:45 pm

Thought experiment: new operating system

I recently asked the same question of several software engineers: Say you had to spend significant time working with a new OS, one you had never seen before. What would you have to learn before you felt pretty comfortable facing your workday?

I have significant experience as a developer on Windows, but only semi-significant experience on *nix (that's Unix/Linux for you non-programmers). A lot of my heavy *nix use was at MIT where I learned MIT-specific things alongside basic Unix tools and never differentiated between the two, and I have only used iSparklies on a mac, no development and nothing OS-specific. All this makes me a little bit subhuman in the eyes of some of my friends and, it's true, makes me a less flexible developer. However, for Zillian I have thrown myself into the deep end by requesting a Linux workstation (required) and a Mac laptop. Coward no more, I charge into the breach! So this question is largely a measuring stick to see how deep the deep end IS... I suspect I know a lot of what I need to know on *nix already, and figure that if I have a written list of things to learn about the Mac it'll make it that much easier to get snuggled in.

And the interesting thing is, I got some flak about the question, but only from my younger colleagues. I quote one whippersnapper as saying, "I don't plan to ever have to do that again". My older, more experienced coworkers said things like "hmm... I usually X, Y and Z".

Here is the partially organized list of things people said:

File system:
the basics of navigation through the filesystem
what extension does a native executable file have? Is this required or just convention?
file manipulation (move, copy, delete, change attributes including permissions)
the basic structure of the filetree so that I would know where it was good style to put things (where does an application go by default when installed?)

Environment & Scripting:
Figure out how to script. Is there a native scripting language to be learned? What does it take to get a bash shell going?
How do environment variables get set? (two different Mac users told me they still don't know how to set environment variables in such a way that they're set automagically upon login -- wow. Does anyone know the answer?).

Basic apps:
How do I get a command prompt?
What is a good basic text editor (does emacs run?)
How do I start a browser?

Random:
How to adjust display
Figure out as many keyboard shortcuts as possible
System stats -- how much memory is left on the system, what processes are running?
Where to go for more help/information
How to set up a printer
How to turn it on and off (soft reboot)


Slightly less basic things I, nevertheless, would eventually need for work:
How can I view .doc files if not on a Windows box?
What's a good program for drawing diagrams that I include in documentation?
How can I schedule a task to automatically run at certain intervals?

I would welcome additions to the list from you geeks out there.

[identity profile] silentq.livejournal.com 2007-10-05 12:57 am (UTC)(link)
Did you want suggestions for the last set?

I have a list of developer specific stuff that I need to figure out with any new system. make, compile, link, utils to look at symbols in the objects, hopefully a developer environment. I'm an emacs gal but I also really like having vi (my boss is a power vim user, he has it on all his platforms) and xedit available for text editing (gedit on linux if the sysadmins don't want to bother with the official xedit). Native clients for version control.

Mail is a big one, I always use pine, and I've had to fight with sysadmins about getting the settings sorted while everyone else uses GUI based programs.

Setting up multiple desktops is always useful for me.

How to get to network disk locations. How to reset my prompt. :)

[identity profile] taegubcrusade.livejournal.com 2007-10-05 02:32 am (UTC)(link)
Okay; I admitted to not knowing how to set environment variables on GUI login on the Mac, but I also said it's almost never needed. Good Mac programs don't use environment variables, and any *nix programs/scripts will start in a bash environment (or whatever your default shell is), running the appropriate init scripts (e.g. bashrc). So, me not knowing is not as strange as it sounds. (And I do know there's a file you can edit to set them, but I don't remember where it is or what its name is.)

Second, I certainly didn't feel like I gave you any flak. I certainly didn't mean it that way. I do think that the world of (non-embedded) OSes has pretty much bifurcated into Windows and *nix (with Macs mostly in the *nix column), but I'll certainly admit that might change. Maybe Plan 9 will finally take off, or some new kid will come strutting around.

Lastly, I like all the above questions. You got a very nice set of responses, and I'll come looking for this post next time I need to learn a new (or old) OS. (Hmmm. I did just volunteer for something that might make me spend time in Windows, again.)

[identity profile] webrat.livejournal.com 2007-10-05 11:27 am (UTC)(link)
How can I view my porn? :(

:)

[identity profile] webrat.livejournal.com 2007-10-05 03:31 pm (UTC)(link)
What?! I have to use a browser to look at my pr0n on the harddrive?! What happened to my pornviewer? :(

Anyway, in all seriousness, I would have to sit and ponder on this question a little more.

[identity profile] jg26.livejournal.com 2007-10-05 02:40 pm (UTC)(link)
I must admit that I am WAY more comfortable on a *nix system than anything else. When I work on other OS's, I usually try and make it as much like a warm, friendly linux box as possible. I always set up vi as my text editor, find out where my terminal is (or install cygwin of on windows), etc. I realize this does not make me a very flexible user/developer, which is something I intend to chage, but it allows me to get stuff done. I'm also not very well-versed in the IDE's which are available, or how to best leverage all their features, but that's ok, the systems I'm developing on/for are embedded & don't have X servers anyway.

As for how to view a .doc file, there's OpenOffice or Google Docs (once you've found your browser, that is).

[identity profile] hiddenbear.livejournal.com 2007-10-05 05:45 pm (UTC)(link)
I'd try to help, but I've been a Windows user since we replaced our Apple II+. The little I've done with Macs have led me to believe that they are unusable for anything except exactly what Apple wants you to do with them (a believe that is somewhat supported by their recent iPhone actions).

As for *nix, I'd be happy to play on one that had been set up for me, but I have no idea how to set them up myself.

I'm all about GUIs, and think that key sequences are great, but shouldn't be mandatory (ala vi or emacs). I worked my way up from Word Perfect pre menus (can't even remember what I used on the Apple II+ anymore), and find GUIs with menus and toolbars far too useful.

As for programming - stack viewing, variable exploration, conditional breakpoints, thread switching, mem usage, and profiling.