Office evolution infographic

1
1937 Alan Turing develops the concept of a theoretical computing machine. 1975 Altair invents the first portable computer. 1998 Sergey Brin and Larry Page founded Google. 1963 Douglass E. invents the first computer mouse. 1984 Michael Dell, a 19-year-old, creates PCs Limited, selling computers built from stock components out of his dorm. 2002 Approximately 1 billion PCs have been sold 18% Viktoria CALLING 15:16 15:16 84 deg OFFICE of the Reel to reel tape recorder ‘Picturephone’ - early videoconferencing device Wired 56kbits/ modem 3½-inch floppy disks and CD-ROMs Flatscreens, printer/scanners and larger internal storage 8-inch floppy disks, and an early mobile phone All-in-one PCs using cloud storage Table interacts with real-world objects Smith Corona Typewriter Early version of the typewriter Archiving done by hand and on paper Copyright © 2014 IDG UK

Transcript of Office evolution infographic

Page 1: Office evolution infographic

1860s

1960s

1980s

1970s

Typewriter invented, paving the way for technology to change the way businesses operate

Video conferencing enters the board-room, as large corporations start to see the benefit of reduced travel expenses and more personal communication with long-distance clients.

1990sInternet access becomes the norm, as workers begin to benefit from the power of email as a business communication tool

O�ce cubicles isolate employees from the sights and sounds of open workspaces so they can work without distractions.

1937Alan Turing develops the concept

of a theoretical computing machine.

1975Altair invents the first portable

computer.

1998Sergey Brin and Larry Page

founded Google.

1963Douglass E. invents the first computer mouse.

1984Michael Dell, a 19-year-old, creates PCs Limited, selling computers built from stock components out of his dorm.

2002Approximately 1 billion PCs have been sold

O�ce PCs go mainstream, introducing many business people to spreadsheets and business printing for the first time

2000sIn house file storage is commonplace, organisations benefit from lower cost rack servers to store essential company information.

01

SE

CT

ION

46

18%

struct group_info init_groups = { .usage = ATOMIC_INIT(2) };

struct group_info *groups_alloc(int gidsetsize){

struct group_info *group_info; int nblocks; int i;

nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK;

/* Make sure we always allocate at least one indirect block pointer */

nblocks = nblocks ? : 1;

group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER);

if (!group_info)

return NULL;

group_info->ngroups = gidsetsize;

group_info->nblocks = nblocks;

atomic_set(&group_info->usage, 1);

if (gidsetsize <= NGROUPS_SMALL)

group_info->blocks[0] = group_info->small_block; else {

for (i = 0; i < nblocks; i++) { gid_t *b;

b = (void *)__get_free_page(GFP_USER); if (!b)

goto out_undo_partial_alloc;

group_info->blocks[i] = b; } }

return group_info;

out_undo_partial_alloc:

while (--i >= 0) {

free_page((unsigned long)group_info->blocks[i]); }

kfree(group_info); return NULL; }

5404

15

100%

90%

80%

70%

60%

50%

40%

30%

20%

10%

0%

100

75

50

25

0

28%

28%

28%

28%

28%28%

28%

28%

Jan

Feb

Mar

Apr

May

Jun

Jul

Aug

Sep

Nov

Oct

Dec

Jan

Feb

Mar

Apr

May

Jun

Jul

Aug

Sep

Nov

Oct

Dec

0102

0304

0506

0708

0910

JanFeb

MarApr

MayJun

JulAug

SepNov

OctDec

50%

25%

100%

0%

75%

Viktoria

CALLING

struct group_info in

it_groups = { .usage = ATOMIC_INIT(2

) };

struct g

roup_info *groups_alloc(in

t gidsetsize){

struct g

roup_info *group_info;

int nblocks;

int i;

nblocks = (g

idsetsize + NGROUPS_PER_BLOCK - 1) /

NGROUPS_PER_BLOCK;

/* M

ake sure we a

lways allocate at least o

ne indir

ect block pointer */

nblocks = nblocks ? : 1

;

group_info = kmalloc(s

izeof(*group_info) +

nblocks*sizeof(g

id_t *), G

FP_USER);

if (!g

roup_info)

r

eturn NULL;

group_info->ngroups = gidsetsize;

group_info->nblocks = nblocks;

atomic_set(&group_info->usage, 1)

;

i

f (gidsetsize <= NGROUPS_SMALL)

g

roup_info->blocks[0] = g

roup_info->small_block;

else {

f

or (i = 0; i <

nblocks; i++) {

gid_t *b

;

b = (v

oid *)__get_free_page(G

FP_USER);

if (!b

)

g

oto out_undo_partia

l_alloc;

group_info->blocks[i]

= b;

}

} r

eturn group_info;

out_undo_partial_alloc:

w

hile (--i >

= 0) {

free_page((u

nsigned long)group_info->blocks[i])

;

}

kfree(g

roup_info);

r

eturn NULL;

}

15:16

84 deg 2050sInteractive touch screen tables, with external sensory ability, holographic projections, smart watches or wearable technology. What will the future hold?

01

SE

CT

ION

46

18%

struct group_info init_groups = { .usage = ATOMIC_INIT(2) };

struct group_info *groups_alloc(int gidsetsize){

struct group_info *group_info; int nblocks; int i;

nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK;

/* Make sure we always allocate at least one indirect block pointer */

nblocks = nblocks ? : 1;

group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER);

if (!group_info)

return NULL;

group_info->ngroups = gidsetsize;

group_info->nblocks = nblocks;

atomic_set(&group_info->usage, 1);

if (gidsetsize <= NGROUPS_SMALL)

group_info->blocks[0] = group_info->small_block; else {

for (i = 0; i < nblocks; i++) { gid_t *b;

b = (void *)__get_free_page(GFP_USER); if (!b)

goto out_undo_partial_alloc;

group_info->blocks[i] = b; } }

return group_info;

out_undo_partial_alloc:

while (--i >= 0) {

free_page((unsigned long)group_info->blocks[i]);

}

kfree(group_info);

return NULL;

}

5404

15

100%

90%

80%

70%

60%

50%

40%

30%

20%

10%

0%

100

75

50

25

0

28%

28%

28%

28%

28%28%

28%

28%

Jan

Feb

Mar

Apr

May

Jun

Jul

Aug

Sep

Nov

Oct

Dec

Jan

Feb

Mar

Apr

May

Jun

Jul

Aug

Sep

Nov

Oct

Dec

0102

0304

0506

0708

0910

JanFeb

MarApr

MayJun

JulAug

SepNov

OctDec

50%

25%

100%

0%

75%

Viktoria

CALLING

struct group_info in

it_groups = { .usage = ATOMIC_INIT(2

) };

struct g

roup_info *groups_alloc(in

t gidsetsize){

struct g

roup_info *group_info;

int nblocks;

int i;

nblocks = (g

idsetsize + NGROUPS_PER_BLOCK - 1) /

NGROUPS_PER_BLOCK;

/* M

ake sure we a

lways allocate at least o

ne indir

ect block pointer */

nblocks = nblocks ? : 1

;

group_info = kmalloc(s

izeof(*group_info) +

nblocks*sizeof(g

id_t *), G

FP_USER);

if (!g

roup_info)

r

eturn NULL;

g

roup_info->ngroups = gidsetsize;

group_info->nblocks = nblocks;

atomic_set(&group_info->usage, 1)

;

i

f (gidsetsize <= NGROUPS_SMALL)

g

roup_info->blocks[0] = g

roup_info->small_block;

else {

f

or (i = 0; i <

nblocks; i++) {

gid_t *b

;

b = (v

oid *)__get_free_page(G

FP_USER);

if (!b

)

g

oto out_undo_partia

l_alloc;

group_info->blocks[i]

= b;

}

} r

eturn group_info;

out_undo_partial_alloc:

w

hile (--i >

= 0) {

free_page((u

nsigned long)group_info->blocks[i])

;

}

kfree(g

roup_info);

r

eturn NULL;

}

15:16

84 deg

2010sDell hybrid laptops, tablets and smart-phones enables employees to work e�ectively on the move, and in the o�ce.

EVOLUTION

EVOLUTION

OFFICE

OFFICEof th

eof th

e

OFFICE

Reel to reel tape recorder

‘Picturephone’ - early videoconferencing device

Wired 56kbits/ modem

3½-inch floppy disksand CD-ROMs

Flatscreens, printer/scannersand larger internal storage

8-inch floppy disks, and anearly mobile phone

All-in-one PCsusing cloud storage

Table interacts withreal-world objects

Smith Corona Typewriter

Early version ofthe typewriter

Archiving done by handand on paper

Copyright © 2014 IDG UK