petak, 28. rujna 2012.

The Macbook Pro hackfest

Intro

For some time now, I'm using a Macbook Pro (Model 8,2, Late 2011, 15 inch) and it's a very boring device most of the time. You cannot tweak it, improve it, tinker with it and change a lot of stuff because it's quite a limited ecosystem - it's basically designed to run Mac OS X and integrate with it in a best possible way found. Also it has been designed to work best with Apple branded extensions, accessories and peripherals. In a way, it's walled garden of functionality and efficiency conceived and designed by Apple's prime engineers.

To a standard, run-of-the-mill engineer, that may look a little boring because nothing can go wrong. And then you connect a Logitech mouse or a Dell display.

And everything goes wrong :)

Why hack?

I try to dive deeper into all computers I own because I like to do so and to push the hardware and software to its limits, even beyond Apple's specification or Apple's vision of consuming the device they sold you. Those laptops are designed to be consumer devices in the hands of a standard user, a productivity device in the hands of a power user, and a workstation for a developer/designer/video editor, etc - so it's a versatile device. It's only difficult to play games because it has substandard GPUs for that price, but playing on a laptop is a silly notion by itself as far as I'm concerned.

Since evolution of technology doesn't end, you can try replacing components to improve stuff - add more memory or replace a hard drive (if you buy it with one) with an SSD. That are performance improvements, and big ones, but does that change the functionality of the device? Of course not.

So what are my options?

Hack the laptop!

What the Hack!! So, what can I do?

Whatever you want.

That's a lot of stuff to do then. My choice is:

  • Do stuff with the bootloader - EFI hackfest
  • Do stuff with Windows
  • Do stuff with Linux
  • Play with virtual machines
  • Use esoteric/obscure features in OSX that only 0.1% of people use
  • Defy Apple by doing things differently from what they designed - faster but with more effort.
  • Nonstandard peripherals.
Some of those things are very interesting, for example EFI (Extensible Firmware Interface), that is very much hidden from the user (because of the "walled garden" motto) but very very useful to know. As one of the more obscure features, Internet sharing is also pretty useful as it will turn your MBP to a access point in one of two ways depending on what connects to the network. Actually I like to call this stuff Network Connection Sharing, since you can connect other devices to the network shared by the MBP.

But my favorite is a native, non-BIOS emulated mode of installing Windows 7/8 via EFI. So far I've failed in doing that but new stuff is learned with every day. That taught me to do backups of drives, migrate installations, tinker with EFI executables and scripts and with Windows setup mode through EFI. With linux, it's easier to set-up but still very hard if you don't know what you're doing.

After a while, that stuff becomes more interesting than actually using the Mac. In the following posts, I'll make a few guides on how to hack specific parts of your Mac.

Endgame

Just don't listen to Apple on how to use it's computers. You can have a moderately good experience by using it but it will become boring just to stare in it, surf the web, chat, edit images, develop for iOS... it's a IT nightmare to have and advanced device and be limited by Apple's best practice.

Remember: someone else's (Apple's) best practice might not be your best practice. Explore and find what works best for you.

petak, 4. svibnja 2012.

On Quad Core Jerkoffness

So, the latest Samsung flagship smartphone, that the media calls "superphone" has been announced and demo'd. And what do people think?

Why Should You Get a Galaxy S 3 (its III, but I HATE roman numerals)
  • You have a lot of money
  • You have a VERY crappy phone like the early 2000s phone.
  • You like to brag with your latest gadgetry
  • You like to play with your phone (either games, or custom roms... or whatever) 
Why You Should Not Get a Galaxy S 3
  • You can already surf the web easily
  • You can make phone calls. Yes it's a phone!!!!
  • You can write SMS, MMS, mail, etc.
  • You can consume multimedia (youtube, videos, music)
  • You don't need to charge the phone often. Once every 2 days is great :)
So Samsung Galaxy S III in my opinion... meh, will not buy.

 

Quad Core to drain your battery...


There is an increasing trend of MOAR COARS. And MOAR SCREEN. And MOAR RAM. This, in my opinion is absolute and complete bullshit. I remember using a phone, and it was good. Then I needed to get rid of it - because I needed another phone for development. So I gave it to my sister. The phone is the 1st revision HTC Desire, one that had the AMOLED screen and somewhat bad vibration motors.

And I'm a professional. I know my way around silicone shit. I can type and click and respond with types and clicks to error messages. I can fix stuff.

But I really cannot understand why are they putting MOAR COARS in these latest phones. Must it run Crysis? Must it fold@home? Must it keep your palms warm when do watch a video? Force you to use the charger more often? Something?

The "community", which are mostly consumers and semi-enthusiasts want MOAR COARS. So generally speaking, someone is forcing Samsung and other hardware and phone designers and manufacturers to add more cores. The phone now should be faster - yeah, to call somebody and then run out of battery. Or start typing a message and overheat your phone.

The only thing it makes sense is to replace a home PC for consumers, that consume content from the Interwebz. So you make a simple and intuitive interface that simplifies web browsing, music and movies, and you got yourself a winner.

... or replace your PC-like device.


So they are building phones to replace personal computers. A colleague of mine thinks that in the future, you will have just one device, and carry it around. It will act as your computer, Internet device, multimedia hub, etc. But when you plug it in to a specialized dock, you will use it as a personal computer with a large screen, keyboard and a touchpad/mouse. Sweeet :)

That's actually a good idea. But for someone that doesn't think that a personal computer is a fun consumer device, but a productiviy workstation, that sucks. And today's phones, as fast as they may be as a phone, cannot replace a full featured personal computer. There was a phone called Motorola Atrix, that had a notebook-like dock. Good idea, but it failed - because of extra costs and awful performance. It just won't work. At least not yet.

And with all these Sandy/Ivy Bridge chips...

... I would shoot myself in the foot if I replace it with a phone. Yes, the PC needs a hundred times MOAR POWAH, but It's a thousand times faster and million times more flexible. And for me, that's important.

IBM makes ownage HPC-s. Intel makes kickass consumer and server CPU-s. ATI/nvidia makes kickass video cards. Sony/Microsoft makes kickass consoles. So why should I get a generally weaker device that will get me crappy experience instead of having different, but highly specialized devices that offer maximum performance and user experience?

TL;DR


I don't need a modern super-smartphone, I only need a smartphone. Every other phone, go fuck yourself, I'm keeping my PC,

četvrtak, 3. svibnja 2012.

A dream to come true.

Rub three times...

... and a Djinn leaves the lamp. Sanity today is a very rare commodity, something that I learn every day. People are given endless choices about everything. Really, everything. So if a certain individual doesn't get it's choices right, might end up frustrated or stressed. Not a pretty sight.
In time the frustration will become an addiction, and you will never ever pick anything right. You'll be dissapointed with this or that and eventually turn paranoid, but at the end of the day... do you really need all that?

The answer is a big fat NO.

 

Wishful thinking

Calling a Djinn from the lamp, you are usually given three wishes (with a few disclamers, hehe). One of my wishes is at least to be more straightforward with picking things that I don't really need. Surely, I can pick the things that I need with no problem, but what if you don't need something but want it anyways? Chances are, you'll spend money for it. The harder you earn it, you'll be less eager to spend it. Easy come - easy go. Just like the three wishes. Generally, you don't know what to do with a given opportunity, you just waste it and take it for granted.
A small example from life: since we're visiting a same caffe bar (it's in our office neighbourhood) on and on and time and time again, one morning we were given free drinks, compliments of the manager-slash-owner. And what did we pick? Instead of picking something fun, like beer, scotch or a coctail, we took aromatized sparkling water. Which is cheap. Pretty cheap. I cannot emphasize enough - very cheap. One should now think that the manager is using this philosophy to attract more customers by giving them rewards or bonuses, and using the surprise-effect and easy-come-easy-go mentality, to get away with, let's admit it, cheap advertizing.

What angers me most is that I fell for it. Dumbass.

That really insulted my intelligence.

 

How to use the wishes

First thing to do when given an opportunity is to think about it, and think real hard. Try to cover all the bases, have an exit strategy and work hard to get all the right stuff with near-perfect benefit for oneself. When presented with a choice, you don't just rush into it. Like falling for offers with cut prices for an already cheap commodity or wasting good scotch on the manager's tab. In some situations there's no room for mistakes. Especially since you don't live forever. That's why, for example, you are not given the benefit of asking Djinn for more wishes. Because then, you'll go against the shortcut-taking human psychology - which rushes into things. And it goes against the law of things - which is the conservation of energy.
Disney's Genie, voiced by Robin Willams
You cannot get something for nothing. The wishes are free, but we cannot really use them. You can only get away if you pay with Sanity and Wisdom, which people don't really posses in tandem. That's why a superinteligent person is never "sane". That why a "wise" person has no desire to gain.

Common sense is slowly losing it's meaning and followers. But the process is accelerating.

 

FAIL?

...

ponedjeljak, 2. travnja 2012.

Season premiere!

Just a normal day for this blog writer
So, I somehow gave up from writing on this blog. But worry not, some goodies are coming!!!

ISDK (the 's' is for 'still') how to make people read this - perhaps threaten them, ^^^^^^ :)

Crash course what's coming (not in this order, fkors):

  • Apple OS X rants (haha, notice the lack of Mac)
  • Solid State Drives, theory and minute experience with them :)
  • The ultimate user experience computer building
  • Why gaming is bad for you... mostly for your wallet, heh
  • Bike, run, swim - summer is comin' peopleeee :DDD
  • Horizons... of cross platform and cross device development. Crosseyed.
Stay in touch, you might be or you might not be disappointed. If you don't agree, feel free to rage and troll the blog.

Trolling boosts ratings, hehe :)

CYA soon, then :)

ponedjeljak, 27. veljače 2012.

OS Memory management

After a while, I'm back! I'm crazy and I'm gonna swear a lot. Lets start politely not to scare you away. IDK who's reading this crap anyway.


Anyway, it goes like this


Memory - a capability of a human to remember stuff. There are many kinds of memory - long term, shot term? Perhaps many other, but I cannot remember correctly. Because I haven't been there for a while. Learning about human memory.


However, I've been learning about (*DRUMROLL*) computer memory. Yes, all the volatile and non-volatile, capacitive and magnetic and flash and flip-flops and whatever. YES, these are just memory types and methods of storing data.


A volatile memory is the one that gets erased whenever the power runs out. So what does the memory store? Since we're dealing with computers, it's bits. Bits, or actually two-state "numbers" or "elements" or whatever that can only have two states. Ok, that doesn't mean "ON" and "OFF", although one can understand with less effort if it visualizes it like being ON and OFF.


But a computer cannot understand ON and OFF. It understands voltage. So let's say 0.8 V is "OFF" and 5 V is "ON". (It can go either way, but the inverted version is called reverse-logic). NEXT - Why are we doing this?


Because the computer uses something called the Boolean Algebra. It's the mathematical formulation of truth values of statements, set theory and few other stuff using only two values - TRUE and FALSE. If 0.8 V is OFF, that 0.8 V is FALSE - and 5 V the truth. To easily create mathematical formulations and statements, finally, we use binary numbers. That means we only have two number - a 'zero' and 'one'. 0 and 1.


The story is: Computers use mathematical formulations of Boolean algebra encoded as voltage to calculate results of mathematical operations with binary numbers.


To make these calculations computers need to store binary numbers encoded as voltages, and put them through something called "logical gates", aligned and ordered specifically to give results of mathematical operations - for example, adding. So, how to store numbers? There is an entire field of study that handles that - but that's currently useless stuff to bore you about.   
WOW,  Is it really that simple?
But damn, I'm going too deep into developer's point of view, and this is a practical blog so I must quit doing this shit :). So anyway, let's talk about something that might interest you. How does having a lots of memory helps YOU in YOUR everyday work? Let's start with an answer.


YOU: "So, I have 500 GB of memory. PC, Y U NO WORK FAST?"


What? What are you saying? Let me explain:


First, let's make sure that both of us know the different kinds of memory. That means you must learn what I tell you, and I'll tell you what someone else told me :). If you make the same mistake after reading this you weren't paying attention so GET A GRIP. So,


Let me ask you a question. ME: "How much memory your computer has?"


You answering my question with the answer in the previous title is VERY WRONG. Since I'm quite smart, and believe you don't have a clue about computers, I understand what you are telling me, but this is not what I asked.


You told me about your hard drive space. Hard drives are a permanent storage class memory that every computer has. It could be a hard disk, a solid state drive or flash memory or whatever your computer has. Specific thing about this kind of memory is that is doesn't lose data when the power runs out. So when you install a program, download stuff from the Internet, copy pictures from your camera, it all stays in the same place you put it after you shut your device down. And, your camera has some permanent storage too. It's the memory card (a kind of flash memory, for those who are asking) pictures go to when they are taken. It would be very stupid if they go away when you push the OFF switch, right?


I asked you about the kind of memory computer currently uses to do work. Since permanent memory access is very slow (in context of today's computers), computer needs some active working space to load data from permanent memory, keep it here for quick access, to and to temporary store the results of data processing. Most stuff from memory is only kept for quick access (or is a copy of data from permanent storage for quick access) so when the computer isn't running, the contents of that memory don't need to be kept. So working memory is actually a scratchpad - you keep your active work in it, and throw it away when you're done with it. Let's compare - if you have a bigger desk, you can keep a lot of papers and documents for quick access, instead going for the file cabinet on the other side of the room to search for the particular thing you need. So you only have to go to the file cabinet once or twice and after you're done, walk once to the file cabinet to store done work. If you don't have a large desk, it's gonna get cluttered and productivity (in computer terms, processing performance) will drop. Most people don't care about performance, consider it bullshit, and me an idiot for particular optimization details I do with my stuff, so let me tell you this - performance is king. If you don't like it, get a hike.


So, let me correctly answer my question. I have 8 GB of memory on my MBP. The legacy name for that is RAM (Random Access Memory). It developed as a requirement because the applications were getting bigger, and CPU registers and caches aren't enough for fast and seamless performance. And now, the more memory you have, the computer's multitasking capabilities are higher and performance intensive applications are faster. What? What are registers and caches? Y U NO KISS?
Take a look, see what I mean?
What next? Let's see some software side of the story. Hardware is here, and it defines the speeds, throughputs, latencies, memory sizes, modules and other crazy shit. But how to harness all that POWAH and put it to good use? How will a computer manage all that hard grabbing memory shit? Smoke that shit?
Seriously crazy shit.


Could be scary shit


The culprits lie in very advanced algorithms and systems that manage, optimize, assign, protect, cache, manipulate, release, limit, transfer, copy, read, write, defragment and warn the user about the memory's current state. It's all contained in the main program. The mother of all running programs. The father, grand controller and king of your pc. All your bits are belong to him. 


The operating system. Windows. Unix. And other insignificant operating systems in miniscule amounts.


So, the OS actually manages memory through something called memory virtualization. It takes the physical memory (RAM) and pagefile or swap space (a very large file that's imitating memory storage) on the permanent storage and combines it together, abstracting the entire memory for things that need memory, and those things are called applications. An operating system takes a block available storage from the virtual memory and assigns it to a running application, but it has super-duper fucking advanced algorithm shit that assigns it to the best location it can currently get. So depends on the workload, memory capacity and other elusive factors, it stores it to either physical memory or page file. Completely transparent to the applications. If you ask me, that's fucking cool.


Generally performance goes like this: If you have more physical memory, you can load more applications and multitask efficiently. But computers work with limited values, and memory slots are also limited. So what's the cheapest way of getting my PC work fast? If it's a PC, buy and install Windows 7 with 4 GB of memory. If it's a Mac, buy Windows 7 and Bootcamp your ass to it. Windows 7 is the swiss knife of computers - it has the best applications, it has fucking cool memory management systems and it's too fucking simple to use that it's not even a challenge, it's boring me to sleep. Aim for the 64bit version. 3 reasons:


- You can have more memory (more than 3.2GB effective)
- Applications don't have memory limitations that are feasible in the next 100 years.
- Tis generally faster in 99.9% situations. Unless it was written by a developer fag.


If you have a 32 bit OS, you are limited, both mentally and practically. Y U NO explain why? OK, hold on.


Every block has 8 bits (0 or 1, remember?) and it has it's own address so the computer knows where you stored data. The computer, if it works with 32 bit numbers and have 32 bit wide registers - or to generalize, can process 32 bit numbers, it can know about 232 memory addresses. And that's 4,294,967,296 blocks. If everyone of this blocks is 8 bit wide - or 1 byte wide - its 4,294,967,296 bytes of memory. And that's 4 GiB (notice the 'i' - that means it's divided by 1024, and not 1000. It's pronounced gibibyte - it's a binary system instead of SI decimal system). So the effective limit is 4 GiB for 32 bit. If you have 8 GiB, and the picture above I said i have 8 GB of memory - it's possible. Mac OS X "Lion" is a 64 bit computer so it can address more than 4 GiB of memory. 64 bit OS makes your computer go faster and multitask better. GO FOR IT!


HOMEWORK: how much memory can a 64 bit computer address? It's a very long number to write :)


The end is near


This blog post is long shit. Now, when it's done, I guess you know a little more about how memory behaves and works to our advantage, with a practical advice to upgrade to 64 bit Operating Systems. Chances are that you have a 64 bit capable CPU, so I ignored that part in giving you the advice. If you have a 32 bit CPU, than you don't have to concern yourself with this. My advice is to buy a new computer. All CPUs that you can buy as a general consumer today are 64 bit and even have multiple cores! Pair that with 4 GiB+ memory and your computer will go crazy bat shit fast. And pair that with an SSD and it'll go inhumanly insane shit fast. So the end of 32 bit computers and 32 bit operating systems are near. Windows 8 Server is cutting 32 bit support, and all better retailers are bundling 64 bit OS installed (you paid for the licence, don't worry. Windows 7 has the same licence number for 32 and 64 bit version, no sweat)


Oh and BTW, the end has come for a user to know squat about his/her computer. Now when computers are becoming more complex, and Operating Systems more specific, you need to know something. Otherwise you'll make stupid mistakes and have less then you paid for a computer that you paid much. Fight with knowledge. Good knowledge can make a cheap computer fight the big ones that have assholes using them.


Fear not the stuff inside that cool aluminium shell or a boring matte plastic box.

četvrtak, 20. listopada 2011.

About developer's lifestyle

I'm now just a year and two months in my professional software development career. But before that I was a PC superuser, so basically I know my way around computers... better then most computer users.

For me buying/setuping/installing/assembling/whatever with a computer is a simple and effortless task. Even software development, which is the hardest thing that I've been doing on a computer (next thing is recovering a Bob's crashed system ... full of malware), isn't really that hard because it's interesting and complex enough for it to be challenging but not impossible. And I like a challenge :)

EDIT: Basically fixing a crashed system IS the hardest thing. Developing is easy :)

In other domains outside of project management, software engineering and all computer related stuff however, my situation is not as shiny :)

One of those lacking things is the amount of real-estate I have. Nothing. I only have a car (a good one) :O

Buying one? I really think something is wrong there. I think this world is set up for it to be almost impossible if you are a normal employee of a normal company. Yes, I'm still early in my career (very early, but light years in the software engineering field, I'm afraid) compared to other jobs currently on the market, and the country I'm living in doesn't really respect my kind of work so my options are not that good. Actually, they underestimate it and call software engineers "weirdos" and "nerds". And that we only sit and type and click and make money. Because we're not selling something or lifting heavy objects doesn't mean a software engineer's jobs is easy.

A common misconception (in Croatia).

It's hard.

And it's damn hard if you do not understand exactly what you're doing and have excellentmental abstraction and concentration skills. Otherwise you'll just see a bunch of text connected with dots and a lot of brackets. We are not underpaid, but the salary doesn'tscale well. For example a software engineer in Croatia has double the salary of a shoe salesman or saleswoman, but works at least ten times harder. The mind quickly gets tired.

This is true with all creative and mental jobs. For example, cooks need to think hard about the ratios of the spices, ingredients and amount of food they need to cook. Hairdressers need to think how to cut the hair for it to look good, create a mental image, imagine the process how to get there, and not to make mistakes because you cannot undo over cut hair, or to have a wrong idea of the hairstyle the customer wants... hard stuff. And not valued right.

I'd give the cook at least ten times bigger salary then the shoe salesperson. I'd give the hairdresser at least ten times bigger salary then the shoe salesperson. I'd give anyone that needs to professionally concentrate more that four hours per day at least ten times bigger salary then the shoe salesperson.

But this is not the way the world works and I surely live in a dream world. So what I want most is to get the work valued right. The effort and the results. In the meantime - fail.

There's hope, still

In a hopeless underpaid world you cannot really buy your own real estate and enjoy it. You need to either have a respectable and profitable company that makes a lot of money, and after paying all the taxes, have enough money to buy yourself real estate. You need to work your ass off!!!!!
Or you inherit some. I'm not that lucky either. So the only option for me to have my own place is to work my ass off. That's not a problem while I'm doing the job I like. I can always rent a place and live there :). Buying one is not an option unless the two before-mentioned things happen. Never an option.

Having a rented place is very flexible, and I think it works great with my current line of work. A developer is mobile, flexible and remote. As long as you type code, it really doesn't matter where you type it from. So you can be anywhere where there's an Internet connection. So I don't need a fixed place to live. Only a place to live. With an Internet connection, of course.

Decisions, decisions

Karma has it hard. Especially when I'm surrounded with people that do not understand our line of work. And that it's the kind of work that's not fixed in any way, but extremely agile. We don't need a fucking real estate to call our own. We only need a car to travel, and a place with the Internet connection. And that's OK :)

We will not be bound. That will be all.

Having more real-estate isn't always buying more

Something unprecedented happened yesterday - I somehow started liking my Hackintosh.

So how did this happen?

It's the virtual desktops. And the way you go around with them. Snow Leopard and Lion (as well their *nix Linux bastard relatives) have an option to use virtual desktops. That's probably one of the must underrated features that an OS Shell possesses. AND WINDOWS DOESN'T HAVE!

So me being a software engineer with woman-like power to coordinate multiple activities (proven), I can quickly "switch my context" between multiple activities and remember "my last state". Like app switching on mobile platforms :)

Virtual Desktops

It's like behaving that your place has more room than you actually see, and you are able to access it quickly.

So let's imagine a user called Bob. Bob is a standard PC user - there's a guy I know that is behaving like "Bob", so I'm going to use his behavioural pattern as a starting point. And Bob likes his computer. Because it can help him listen to music, chat using his favourite chat service, surf the web, check the mail, use Facebook, etc. So to do all those things Bob has to:

  • Have Chrome or a-browser-of-your-choice opened, probably with multiple tabs
  • Have a music player window open
  • Have a chat window (or windows) open
  • Have a mail application open
  • I dunno, maybe a word processor window open. Something.

So he already has 5 or more windows open. His idea was to do all this stuff in parallel. But even if he has a large screen (like a 27" screen, but he's Bob, so he probably doesn't have) the OS Shell main screen is going to get cluttered. And switching between apps will either make you move your mouse around a lot to switch apps in the app controller (Windows users call this "Taskbar"), or work your fingers with Alt + Tab or Command + Tab or whatever equivalent your OS Shell uses, but you may not get the app that you want immediately. And the time you need to access the application screen is around 1-3-5-7 seconds. It will give you the effect that you're racing against time if you quicky try to respond a chat message, update your status or change the song or read the news or ... well, whatever. And that's NOT OK, it can make you nervous.

Solutions? There are a few I know of.

  • Buy and connect another monitor. You'll have more space, and you can also use one monitor for frequently used stuff that you need to see all the time. Like Chat boxes, Facebook or Twitter updates, a movie (if you can work and watch a movie at the same time) et al.
  • Use OS Shell features to round up app windows. For example, in Windows 7 you can shake a window to minimize all other windows and the same action to revert. Cleans the fucking place :). Also see OS X Exposé, works hell of a lot better than anything Windows OS' offer.
  • And the crown jewel - virtual desktops.
I have a picture for you people:


This is the Mac OS X "Mission Control" feature in Lion. What does it do? It rounds up windows on all desktops. It's a combination of Exposé and Spaces. "Spaces" is the Virtual Desktop feature of the Mac OS X from the previous versions. So you round up windows on virtual desktops (by some rule, I don't know) and switch desktops by hitting keys on your keyboard or set a shortcut on your mouse. You can now see everything - and seeing everything gives you a great sense of omnipresence (a "god" feeling?). Powerful stuff. 

Before Mission Control you could combine Exposé and Spaces. That also worked great - but now you can save even more time since with the same keystroke you activate both window switching and desktop switching. And that's OK.

So basically, you create virtual desktops, put windows on them and switch them using shortcuts. It's different than switching application windows, because if you can align your windows on desktops (one time operation) you can switch multiple applications simultaneously using a single keystroke or operation. Now that's VERY OK :). I'm addicted to that. And Lion has it easiest. That's why I started liking *intoshes :)

GC.ReRegisterForFinalize(this);

And at the end, all I'm saying is that Bob can make his job easier if he decides to use virtual desktops. If he's a Windows user, I'm afraid he's stuck to mediocre virtual desktop apps that actually complicate things. But does that mean him buying a Mac? Or building a Hackintosh? Installing Linux? I personally don't give a falling-star's-ass about what he's going to do. I have 4 operating systems on my PC, 2 of them have virtual desktops, Bob is responsible for his actions - I'm just giving him a choice :)

Learn to switch context fast. The brain can work multiple stuff if you make it do it. It'll help you multi-task!!!

That would be all, Number One.