Languages I Have Known

Exploration of a different kind of multi-lingualism

At school, I spent 3 years studying German. Sorry Herr Niemann, but all I remember are the coffee and cake sessions, and I can now understand parts of German speech. I’d probably still get lost in Germany. In an effort to expand the brain a little, in 1990 Avril Hodge and I spent 3 months learning Japanese. The last time I tried my Japanese was at a restaurant. In Tokyo, my extremely limited skills left me. Luckily the waitress spoke English — or else I would have starved.

Programming languages; well that’s a different story.

As an exercise, I’ve decided to list the programming languages I have known – and see where it leads.

AppleSoft Basic, and Logo

The first computer I saw, touched and used was an Apple //+ in mid 1981. In a country school, computers were something very alien. I recall our school were given a loaner Apple for 2 months.

The more nerdy of us at the school played around with the computer during lunch breaks — and this is where my love, awe and respect for computers started. The school’s science and mathematics teacher was a good guy. I probably owe him for getting me into this great industry.

Included with the Apple //+ was a spiral bound AppleSoft Basic manual — and Logo. Therein began a long love of programming.


Somehow, I managed to convince my parents to spend money on a TRS-80. Now I was a computer geek, fulltime.

The TRS-80 incorporated a great BASIC language in ROM.

I remember programming a word processor, spreadsheet and a simple accounting program. Things were slightly different in the early 80’s – storage was a 1200baud cassette tape.

Oh, and now I have an aversion to using the backspace key whilst holding down shift…


Spent a week on work experience in the deep-dark 1980s doing a small bit of Cobol. I am glad that its time has gone – although, if I had persisted I might have made millions during the Y2K crisis!

Having spent many hours with SQL, I can see why I am happy that I’ve left Cobol behind

Microsoft Basic for the Macintosh: versions 1 through 3

My memories of these versions of Basic are mixed. The first version of Microsoft Basic on the Mac did no Mac UI coding at all. From memory, the most you could do is call up different fonts and different windows. The subsequent versions rectified this; but its interesting to note that Apple had something called “MacBasic” in the wings – written by the same guy that wrote MacWrite. I remember getting a pirated copy on a floppy from a user group meeting. The stories you read in Apple history books state that Microsoft and Apple were at loggerheads over MacBasic; and Microsoft would not release Multiplan for the Mac is Apple released MacBasic. How times have changed (?)


A little exposure to this… also wrote a kiosk style system in 1987 I think – customers would come to a Mac and type in their details — and we ran some sort of competition based out of the data in the kiosk. Tied into this was a simple database system that stored the records. The database system was a C-ISAM package you could purchase in these days.


HyperCard, as created by Bill Atkinson was a pleasure to work with and in. I remember first seeing HyperCard in 1987 and saying “this is amazing” It predated the web, and whilst limited, the web lacks the simplicity of HyperCard.

Although AppleScript has inheritied HyperTalks feel, was a powerful language that Apple evolved over time. Then they went into this Pink, SK8, Taligent boondogles and never really recovered their path.

Overall, I loved the HyperCard environment – the web is a poor replacement. To do any thing interesting, you have to know too many syntaxes: HTML, CSS, Javascript, PHP (or similar) – and this is just to start.

Wrote a chapter for a book that was published in 1989 by The Waite Group, “Tricks of the HyperTalk Masters”


Hmm, C. Didn’t do any Unix C stuff – but around 1990/1991 did some Macintosh based C stuff to keep my hand in at MacOS programming. All I remember was reading Inside Macintosh, learning to convert this to Pascal stuff and all that jazz. Ahh yes, also wrote an XCMD/XFCN that appeared in the above book.

In a lull of consulting work in 1991 I started to write a small Mac application in C.

sh, csh

Unix rocks, and these shell scripting languages are extremely powerful. Created a simple network management and reporting system for the Australian Submarine Corporation (to look at SNMP information from Kinetics Fastpaths of all things – LocalTalk to Ethernet routers) – plus internal stuff for Random Access when they used the Unix-based accounting system.

The integration of these shell scripting environments into the Unix environment made it too easy to create simple “push” systems. For instance, I created a system that permitted end users to design a simple report, and have it emailed to them on a daily basis. There was also a system of “watchers” where people could ask for notification of an event in the accounting system (ie: an item was invoiced to one of their customers) – they would get notified when this event occured. 1993.


Bastardised object orientation and dynamic syntax. Still used today… and I have been known to cut code in it for demonstration purposes. Nowhere near a Guru like Shane Stanley.

Whilst I haven’t had time to work with AppleScript Studio, I am looking forward to using this. The integration of AppleScript and the NeXT object oriented system is a strong combination.


UserLand Software, the makers of Frontier (and other things now) pioneered the concept of inter-application communication on the Macintosh. The language they created to do this neatly integrated into their hierarchical object storage system.

I used UserTalk to create the content management system that created the Fairfax@Atlanta (1996)site in 1996. Basically, I stuck my ass on the line with this system and never looked back. Still have the code on me. Apple really owns it! Not that its worth anything today.


PL/SQL is the language of choice when I was working with Oracle. Ugly.

VICOM Script

VICOM software is a company based in Bournemouth England. I first made contact with the then owner, Brian Morris during MacWorld January 1993. Being a “networking & connectivity” guy in the Apple world, their terminal emulator VICOM Multiterm/Pro was a pleasure use. The real beauty was a programming language invented by one of their technical guys, Darko Roje.

VICOM Script was the perfect language to create Front Ends in. It had excellent string parsing mechanisms and an easy way to make custom Mac based front ends. Multiple windows, lists etc – it had the lot. What’s more, if you wanted a change: you could email (AppleLink!) the designer. The language lent itself to userinterface programming.

I used VICOM to create a front end to an Oracle SQL database. Using the communications capabilities of the system, I was able to front end a simple terminal session that called PL/SQL scripts on the backend Unix box. Today people would create web-based interfaces. Still not as elegant.


The scripting environment on the ill-fated Newton encompassed more than the language. All data, such as the address book, were accessible from your code. The language and environment was easy to get into, once you understood the Smalltalk terms like slots and prototypes.


I love Java. This is the the language that really taught me object-orient techniques. This means that my concept of object orientation is Java-centric and not up to the level of a C++ programmer. Never had time or a reason to do much in C++.

Most of the real world stuff comes from WebObjects, which puts an even stranger slant on my understanding!

JavaScript (ECMAScript)

JavaScript is something I wish I had more time to delve into; and maybe I should have earlier on in my web life. Its used in two places of interest at Adobe: as the extension mechansim for GoLive 5.0 and the expressions engine part of AfterEffects 5.0/5.5.

The other small uses I have made in HTML (related to DOM work) — urgh.

More recently, this engine has been incorporated into InDesign, Photoshop and Illustrator. Newer scripts on this site use Javascript and it is starting to grow on me.


This language is a part of WebObjects that is deprecated. Woeful language, great environment.

Visual Basic

Visual Basic is a language and an environment. The psuedo-object orientation can turn you in knots. The way that Microsoft’s COM system works whilst inelegant, seems to work. Adding extra components or calls to applications such as InDesign or Illustrator permit quick creation of front ends or data mungers. I would find it difficult to work on a large project in VB as you could get lost very easily, and the language is not very elegant.

I think that writing in PHP is faster for web coding as compared to VBScript…


Whilst sometimes inelegant – there are some similar commands that have different syntaxes; it smells of C and Unix inside a scripting environment. However, it is a language that makes creation of web based applications very easy. The data/text manipulation with arrays (and keyed arrays) makes the process of taking data from something like MySQL and poking into HTML easy.

The current version of the mungenetengine is 100% PHP currently running at over 1500 lines of code. Its too easy to create procedural style code rather than purer object oriented code.


Actionscript and Flash (with a little bit of XML): hmmm, mixed emotions on this one. The Flash player seems to no do things you would expect such as permit opacity changes on “html” text fields. Strange. The hierarchy of movieclips and variables held in them is also interesting. Whilst the language (at least in Flash5 level plugins) is like Javascript, I find the environment a little interesting; the scope of variables etc, and the addressing of variables cool.


Why did I ignore Python for so long? It has to be the easiest language to pickup, and the easiest language to get something done.

Python is way cooler than I expected. Having “wanted” to learn Python for more than 3 years, its good to get it under my belt. There are so many extensions to COM, wx (Windowing system), SOAP – so it was easy to create a simple client/server upload system for adding stuff to the Mungenet system. The OO nature of Python forces you into thinking about MVC coding.

Now getting into Turbogears and all that Ajax stuff. SQLObejct reminds me of NeXT’s Enterprise Object Framework.


Now working at Microsoft, it is imperative that you can read and write C#. Also, listening to Anders Hejlsberg in various Microsoft settings — makes me respect this language and the .NET platform immensely.

Languages I wish I had known…

C++,  Perl.

A surprise in InDesign 2.0, InDesign CS and InDesign CS2.

Wow, again!

InDesign CS2: [2147] InDesign CS2 About Box...

Thanks to the product management team, I made it for the third time running. You’ll find my name in the InDesign CS2 about box, too. Way cool. An honour. Again

InDesign CS:
[1567] I have arrived at adobe, again!

Sometimes, its the little things…

[991] I have arrived at adobe!

A goal of mine whilst working at Adobe has been to get my name in the ‘About box’ of an application. Its sorta like the credits you see at the end of movies.

In one sense, this is easy to do. Just ask a product manager or engineer to place your name there. However, these seem to be controlled to (rightly) only include those who actually contribute something to the development of the application, and adds input to its direction (even in a little way).

The difficult part is adding your input to an application. Programs such as Photoshop which have deep features and strong user community are difficult to get any significant input that would warrant an inclusion in the about box. Suffice to say, there are much smarter people than me who have their hands on the Photoshop tiller.

InDesign, however, is a relatively new application that needs strong input from our customers to influence its direction. Thanks to a good friend on the inside, the local Adobe office has been assisting the InDesign team to ensure that it meets local requirements and customer requests as much as possible. There are features in InDesign 2.0 that are a direct result of local customer feedback. This makes me proud of the application

After a little nudge, I’ve managed to ensure that my name goes down in a little piece of history. To anyone that has suggested InDesign 2.0 features to me: this is all thanks to you

Nick, December 2001

InDesign 2.0: Photoshop, Duotones into InDesign

[1546] InDesign CS LogoVisit the new InDesign Prepress Section: Adobe InDesign: Prepress Techniques

Duotones: Photoshop to InDesign

What are duotones? From the Photoshop 7.0 Online help file:

Duotones are used to increase the tonal range of a grayscale image. Although a grayscale reproduction can display up to 256 levels of gray, a printing press can reproduce only about 50 levels of gray per ink. This means that a grayscale image printed with only black ink can look significantly coarser than the same image printed with two, three, or four inks, each individual ink reproducing up to 50 levels of gray.

Sometimes duotones are printed using a black ink and a gray ink–the black for shadows and the gray for midtones and highlights. More frequently, duotones are printed using a colored ink for the highlight color. This technique produces an image with a slight tint to it and significantly increases the image’s dynamic range. Duotones are ideal for two-color print jobs with a spot color (such as a PANTONE Color) used for accent.

Duotones is a generic name given to monotone, duotone, tritone etc images. The mono- prefix here denotes the number of colourants (plates) in the final file generated by Photoshop.

Generating Duotones from Photoshop

The greatest control over true Duotones as defined above is going to be in Photoshop. However, there is a concept known as fake or poor man’s Duotones, which InDesign 2.0 supports directly.

The process of converting a coloured image into a Duotone in Photoshop starts with converting the image to grayscale. The quickest, and rawest method of converting is to go Image>Mode>Grayscale

After converting to greyscale, the next step is to Image>Mode>Duotone change the grayscale into a Duotone image. The dialog box that appears allows you to change the spot colour that makes up the second colour. If you would prefer a monotone, change the first “Black” ink in the list to the spot colour. The curve box permits tweaking of the ink density where the second colour is applied.

[1404] duotone in photoshop

How do you get Photoshop Duotones into InDesign 2.0.x?

To place this file in InDesign, the format that we need to save the file is Photoshop EPS. Photoshop EPS is a nice, Composite format that permits us to print composite output; including Composite PDF. I am not a major fan of Photoshop DCS as a format. (ref: InDesign 2.0: Photoshop with Spots, InDesign and Composite PDF)

[1405] duotone in photoshop save eps

In InDesign, File>Place the Photoshop EPS saved above. Once the image is placed, you will notice that InDesign adds a new Swatch to the Window>Swatches palette.

[1406] duotone form photoshop in indesign

From this point, the new Swatch is considered a Spot colour. Managing this is the same as managing Spot colours in InDesign: through the Ink Manager.

Note: There is a known (and you do read Readme’s, right?) a documented bug with InDesign 2.0: it considers the spot colour’s alternate colour space RGB. This means, if you print separations where you have Ink aliased the Spot to Process in the Ink Manager, it converts the Spot specified in the Photoshop EPS to RGB rather than the CMYK alternate. The workaround is to make this element 99.9% Normal Transparency, and print using the [High Resolution] Transparency flattener style. The Flattener will correctly convert the Spot to its CMYK (Process) breakdown, and permit a pure Process output. (ref: InDesign 2.0: Printing Output Choices and Flattener Tricks (including force Greyscale export!))

Poor Man’s Duotones in InDesign

Grayscale images can be directly made into Monotones in InDesign 2.0. Here, we are assigning the Black (K) plate to an alternate colour, including potentially a Spot Color. The user-interface needs to be carefully described as there is a little twist: something the help file doesn’t quite explain. The order of steps below are critical!

  1. Place the Grayscale TIFF or Photoshop image into InDesign 2.0
    [1407] duotone place greyscale into indesign
  2. Open Windows>Swatches
  3. Ensure that the Swatch, Spot or otherwise is in the Swatches list
    [1410] duotone swatch created
  4. Select the Direct Selection Tool
    [1408] duotone direct select
  5. In the Swatches palette, ensure that the Fill is selected at the top:
    [1409] duotone swatch fill
  6. Click inside the Greyscale image with the Direct Selection Tool
  7. Click on the Swatch you would like to apply to the image:
    [1411] duotone swatch created

The key to this process is ensuring that you have the Fill selected in the Swatches prior to Direct Selecting the content of a greyscale image. I do not think the online help in InDesign 2.0 clearly explains these steps.

Thanks to Gene Palmiter for suggesting I write this up. Its been in my head for months.

InDesign Prepress: Text and the Transparency Flattener

Why is my text printed from InDesign (a) fat (b) outlined (c) fuzzy (d) or all of the above?

This article describes the Adobe Support Database Text Is Rasterized When You Print to a RIP from InDesign (2.0 on Windows or Mac OS)

In this example, you can see there has been a Photoshop file placed into a layout:

[1333] 01_inddsource.jpg

The Photoshop file on the red-marked layer (named: “photoshop file”) has been masked out of a background image, and saved as a .PSD . A text wrap has also been applied to this Photoshop files alpha channel (or transparency) causing the text in the yellow layer (named: “body text”) to wrap. Nothing too strange about this, however when printed to Postscript and Distilled, the following occurs:

[1334] 02_pdfresult.jpg

This is a screen dump of the PDF generated from the InDesign CS file above (Print to Postscript as CMYK, using the [High Resolution] Transparency Flattener Style. PDF generated using Acrobat Distiller)

As you can see, around the marker “A”, the text looks “fatter” and “fuzzier” than the text next to the marker “B”. This is the result of the transparency flattener. (NB: in Acrobat, in Edit>Preferences, Display if you turn on the “Smooth Line Art” option, this fuzziness goes away.)

[1335] 03_inddsource_zoomin.jpg

Lets zoom into the area where the Photoshop file and the body text overlap. You can see in the above image that the red outline of the image overlaps certain lines in the underlying body text. In this instance, the Transparency Flattener has decided to covert the all the text to outlines in the lines that run underneath the image.

The effect we are seeing here is the Transparency Flattener in action. In Postscript, there is no way to have a semi-transparent image (the masked portion of the car) blend into type. Therefore, the flattener converts the relevant text to outlines and “clips” into the outline shape any image information that is required to generate output. The important end goal is to generate output in print that matches the designers intent.

To an average observer, at high resolutions (I have examples at 2400/133lpi Computer-to-Plate output) — its difficult for the naked eye to pick “outlined” vs “normal” type with serif text at low point sizes.

How do you solve the problem?

There are two possible solutions to this problem. One key point I would like to make before I continue is that you must choose one path or the other for the whole job.

Choice 1: Convert All Text to Outlines.

InDesign 2.0, Edit>Transparency Flattener Styles… Create a New Transparency Flattener style that turns on the “Force Text to Outlines” option.

[1336] 04_fullbore.jpg

Now when printing using this Flattener Style to the Distiller (ie: same process as above), the end result will look like:

[1337] 05_pdfresult_fullbore.jpg

The result is that all the text in the document is converted to outlines. When you compare a page printed (at 2400 dpi/133 lpi) with text converted to outlines side by side with a page where the text is normal, the difference is just noticable to the naked eye.

If you use this flattener style consistently throughout the job, the result will be that all the text looks consistent. The downside is that the text is no longer text – it’s paths – unsearchable and to a trained eye slightly fatter.

Choice 2: Change Layer Ordering

This is my preferred option, and when designing documents in InDesign its best to follow a process where all body text in the topmost layer.

In the InDesign document, I am going to change the order of the layers so the body text sits above the image:

[1338] 06_inddsource_changelayers.jpg

In the above example, you can see that the “photoshop file” layer is underneath the “body text” layer.

QuarkXPress Users: don’t panic! As you would realise, in Xpress, your text wrap is based on the positioning of objects in layers. Images above text pushes the text out of the way: creating text wrap. Not so in InDesign. Text wrap in InDesign is object-to-object based. It doesn’t matter that the image is underneath the text, it will still cause the text above to wrap around.

Prepress operators: don’t panic! Changing layer ordering like this will not cause InDesign 2.0 to re-wrap the text.

What is the result?

[1339] 07_pdfresult_final.jpg

In this final result, you can see that the text has not been converted to outlines. This example was printed from InDesign 2.0 using the standard [High Resolution] flattener style.

Hong Kong Gallery

[1891] Leaving Hong Kong; looking toward Sham Tseng
Leaving Hong Kong; looking toward Sham Tseng

[1892] Leaving Hong Kong; bridge across to Lantau Island
Leaving Hong Kong; bridge across to Lantau Island

[1893] In the taxi, leaving Hong Kong. Our bags almost destroy the suspension system.
In the taxi, leaving Hong Kong. Our bags almost destroy the suspension system.

[1894] Some of our bags in the Sheraton, Hong Kong
Some of our bags in the Sheraton, Hong Kong

[1895] Lights of Hong Kong from the roof of Sheraton Towers, Kowloon, Hong Kong
Lights of Hong Kong from the roof of Sheraton Towers, Kowloon, Hong Kong

[1896] Streets in Kowloon, Hong Kong
Streets in Kowloon, Hong Kong

[1897] Streets in Kowloon, Hong Kong
Streets in Kowloon, Hong Kong

[1898] Starbucks attempts to invate the streets of Kowloon, Hong Kong
Starbucks attempts to invate the streets of Kowloon, Hong Kong

[1899] Peninsula Hotel nextdoor to our hotel, Kowloon, Hong Kong
Peninsula Hotel nextdoor to our hotel, Kowloon, Hong Kong

Tokyo Gallery

[1939] Peter and Jordan with the New Gate City tower (East) containing the Adobe Japan office
Peter and Jordan with the New Gate City tower (East) containing the Adobe Japan office

[1940] Cat in Shinagawa
Cat in Shinagawa

[1941] Shrine in Shinagawa
Shrine in Shinagawa

[1942] Nick says: Don't rush the Train in Tokyo
Nick says: Don’t rush the Train in Tokyo

[1943] Nick in Shibuya. Amazing
Nick in Shibuya. Amazing

[1944] Night lights in Shibuya
Night lights in Shibuya

[1945] Mark in Shibuya
Mark in Shibuya

[1946] Shibuya

[1947] Lee and Mark brave the JR Yamanote Line in Tokyo, Japan
Lee and Mark brave the JR Yamanote Line in Tokyo, Japan

[1948] Please translate this! Tokyo, Japan
Please translate this! Tokyo, Japan

[1949] JR Yamanote line, Tokyo, Japan
JR Yamanote line, Tokyo, Japan

[1950] Paul, Craig, Jordan and Lee waiting for a train in Tokyo
Paul, Craig, Jordan and Lee waiting for a train in Tokyo

[1951] Hotel Sunny in rainy Tokyo
Hotel Sunny in rainy Tokyo

[1952] Lee and Jordan arriving at Narita, Japan
Lee and Jordan arriving at Narita, Japan

[1953] Over the Pacific, going to, Japan
Over the Pacific, going to, Japan

[1954] Yodabashi Camera, Shinjuku, Tokyo, Japan
Yodabashi Camera, Shinjuku, Tokyo, Japan

[1955] Nick, Shinjuku, Tokyo, Japan
Nick, Shinjuku, Tokyo, Japan

[1956] View from Park Hyatt, Tokyo, Japan
View from Park Hyatt, Tokyo, Japan

[1957] Shrine, Kyoto, Japan
Shrine, Kyoto, Japan

[1958] Mt Fuji on the Shinkansen to Kyoto, Japan
Mt Fuji on the Shinkansen to Kyoto, Japan

[1959] Mt Fuji on the Shinkansen to Kyoto, Japan
Mt Fuji on the Shinkansen to Kyoto, Japan

[1960] Adobe signs, Akihabara, Japan
Adobe signs, Akihabara, Japan

[1961] Nick in Shibuya, Tokyo, Japan
Nick in Shibuya, Tokyo, Japan

[1962] JR station, Tokyo, Japan
JR station, Tokyo, Japan

[1963] Suntory time, Tokyo, Japan
Suntory time, Tokyo, Japan

[1964] Apple Store in Ginza, Tokyo, Japan
Apple Store in Ginza, Tokyo, Japan

[1965] Roppongi, Tokyo, Japan
Roppongi, Tokyo, Japan

[1966] MINI store, Roppongi, Tokyo, Japan
MINI store, Roppongi, Tokyo, Japan

[1967] Ponte Vecchio store, Roppongi, Tokyo, Japan
Ponte Vecchio store, Roppongi, Tokyo, Japan

[1968] Roppongi, Tokyo, Japan
Roppongi, Tokyo, Japan