Talk about API technical writing in Silicon Valley next Monday

I’ll be speaking at the meeting of the STC Silicon Valley Chapter in Santa Clara on Monday 25th August. Thanks to Tom Johnson for organising this get-together! I’m excited to meet the Silicon Valley writers. 

The talk is titled, “API Technical Writing: What, Why, and How“. The meeting announcement has the details.

Have you ever wondered what API technical writers do, and how they go about it? Perhaps you’d like to move into developer-focused documentation yourself, and need some tips on getting started.

Join us to discuss what an API is and poke some easy-to-use APIs that you can play with later yourself. Examine examples of API documentation, pick up a few useful tools, and grab some ideas on getting started in this field. It’s an exciting and rewarding area of technical communication.

Date and time:

August 25th, at 6pm for socialising. The talk starts at around 7pm.

Location: 

IHOP Restaurant
4200 Great America Parkway
Santa Clara, CA 95054-1210
408-980 8887

Lunch-time talk on API technical writing

I’ll be speaking at the lunchtime meeting of the Sydney CBD Technical Writers’ Group on Wednesday 6th August. This group is led by Bede Sunter on behalf of the Australian Society for Technical Communication NSW. The session is free of charge, and open to all. You’re invited! (Please bring your own lunch.)

The talk is titled, “API Technical Writing: What, Why, and How“.

Have you ever wondered what API technical writers do, and how they go about it? Perhaps you’d like to move into developer-focused documentation yourself, and need some tips on getting started.

Join us to discuss what an API is and poke some easy-to-use APIs that you can play with later yourself. Examine examples of API documentation, pick up a few useful tools, and grab some ideas on getting started in this field. It’s an exciting and rewarding area of technical communication.

Date and time: Wednesday 6 August, from 12:30 to 1:30.

Location: 

Level 21, HSBC Building
580 George Street – close to Town Hall Station
Sydney, Australia
Map: http://goo.gl/maps/7UdRH
Offices of TP3 Group
Ask at reception on level 21 for the room number

RSVP: Please add a comment to this page if you’re coming, so that we know how many people to expect over and above the usual crowd. :)

Hobbies and pastimes of technical writers everywhere

Hallo fellow techcomm folks! Do you have a hobby?

Mine is fairly pedestrian. I like to go walking in the bush. It blows away the cobwebs. Well, actually, I often have to blow away the cobwebs myself. They festoon the pathways in the early morning. It’s best to keep your mouth closed when strolling in the Australian bush, or you’ll find yourself spitting spiders.

Hobbies of technical writers

Sometimes a bird pops out and does something interesting, and I blog about it.

Of a dark winter’s eve I can perchance be found tickling the ivories. Perhaps significantly, other members of the household are usually to be found in the furthest corners of the house.

So fess up

What do you get up to when the pleasures of the pen pall? (Aside from avoiding sentences like that.)

For years I had a Calvin and Hobbes cartoon pasted above my desk. It showed Calvin’s father with a mangled bicycle, obviously the result of a bad stack. The caption read: “The secret to enjoying your job is to have a hobby that’s even worse.”

How to build a map using a spreadsheet and JavaScript

This week I published a post on the Google Geo Developers Blog describing the building blocks of Tech Comm on a Map. That post assumes some knowledge of the Google Maps JavaScript API, so I’ve decided to write a top-up post with a little more detail.

Tech Comm on a Map puts technical communication titbits (societies, groups, businesses and conferences) onto an interactive map, together with the data and functionality provided by Google Maps. You can grab a copy of the code from GitHub. The most relevant bits are the HTML that defines the web page (index.html) and the JavaScript that defines and interacts with the map.

Loading the Google Maps JavaScript API

The first thing is to get hold of a map via the Google Maps JavaScript API. An HTML <script> element imports the Google Maps JavaScript API library into the web page:

<script type="text/javascript"
     src="https://maps.googleapis.com/maps/api/js?key=[MY-API-KEY]
     &libraries=places">
 </script>

Now all the functions of the Google Maps JavaScript API are available to the web page, and I can call them from my own JavaScript. With just a few lines of code I get an interactive Google map, loaded with geographical data and offering the default set of user functionality: zoom, pan, the choice of map view or satellite view, and Street View. To get started, see the Google Maps JavaScript API documentation.

You may have noticed the libraries parameter in the above <script> element:

&libraries=places

I’ve added that parameter to request the Places library, which I use for the search box on the map as described later in this post.

Putting the map into the HTML page

The HTML file contains a <div> element, with an ID, to define a place to put the map. In this case, I’ve called it “map-canvas”.

 <div id="map-canvas"></div>

Now the JavaScript can refer to that <div> when inserting the map onto the page. In essence, the JavaScript consists of two sections:

  • A function, here called “initializeMap()”, that sets up the map options and then adds the map to the page.
  • A listener that waits until the page has finished loading, then adds the map by calling the “initializeMap()” function.

Below is part of the “initializeMap()” function. It creates the map object, google.maps.Map, passing it the <div> element that will contain the map, and a number of parameters that define the map centre, zoom factor, and other options:

function initializeMap() {
  map = new google.maps.Map(document.getElementById("map-canvas"), {
    center: {lat: 35.55, lng: 16.50},
    zoom: DEFAULT_ZOOM,
    panControl: false,
    streetViewControl: true,
    streetViewControlOptions: {
      position: google.maps.ControlPosition.LEFT_BOTTOM
    },
    zoomControl: true,
    zoomControlOptions: {
      position: google.maps.ControlPosition.LEFT_BOTTOM
    }
  });
}

And this is the listener that calls the function to load the map:

google.maps.event.addDomListener(window, 'load', initializeMap);
Great, now we have a map, and I can start adding the bits and pieces that make up Tech Comm on a Map.

Visualising tech comm data on the map

Tech Comm on a Map contains information of the following types, all related to technical writing and technical communication:

  • Conferences (purple circles).
  • Societies (yellow circles), which includes societies and associations.
  • Groups (pink circles) for smaller groups and regular meet-ups of technical communicators, either as part of a larger society/association, or as an independent group.
  • Businesses  (green circles) for commercial organisations specialising in tech comm, such as consultancies, recruiters, publishers, independent technical writers, and so on.
  • Other (blue circles), a grab bag to catch anything that doesn’t fit into the above categories.

The data is held in a Google Docs spreadsheet. Any changes we make in the spreadsheet are immediately reflected on the map. For details on setting up such a spreadsheet, and pulling the information into the map, see my post on the Google Geo Developers Blog.

The Place Autocomplete search box

The last piece of the puzzle is to let users search for a specific location on the map, so that they can zoom in and see the events in that location. The location search box on the map is provided by the Place Autocomplete widget from the Google Places API.
The HTML defines an input field for the search box:
<input id="place-search" type="text"
  placeholder="Search for a location">
The JavaScript adds the search box to the page, and creates a listener to react when the user starts typing in the search box:
var input = /** @type {HTMLInputElement} */(
    document.getElementById('place-search'));

var types = document.getElementById('type-selector');
var branding = document.getElementById('branding');
map.controls[google.maps.ControlPosition.TOP_LEFT].push(branding);
map.controls[google.maps.ControlPosition.LEFT_TOP].push(types);
map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);

var autocomplete = new google.maps.places.Autocomplete(input);

// When the user searches for & selects a place, zoom in & add a marker.
var searchMarker = new google.maps.Marker({
  map: map,
  visible: false,
});

autocomplete.addListener('place_changed', function() {
  searchMarker.setVisible(false);
  var place = autocomplete.getPlace();
  if (!place.geometry) {
    return;
  }

  // If the place has a geometry, then show it on the map.
  if (place.geometry.viewport) {
    map.fitBounds(place.geometry.viewport);
  } else {
    map.setCenter(place.geometry.location);
    map.setZoom(AUTO_ZOOM);
  }
  searchMarker.setIcon(/** @type {google.maps.Icon} */({
    url: place.icon,
    size: new google.maps.Size(71, 71),
    origin: new google.maps.Point(0, 0),
    anchor: new google.maps.Point(17, 34),
    scaledSize: new google.maps.Size(35, 35)
  }));
  searchMarker.setPosition(place.geometry.location);
  searchMarker.setVisible(true);
});

What’s next?

Thanks to everyone who has contributed to this project. We’ll continue adding data items to the spreadsheet. We technical communicators are putting ourselves on the map!

As far as the code is concerned, there are already a few ideas for new features:

  • Add marker clustering, so that it’s easier to read the map when there’s a large number of items in a small area.
  • Make it possible to share a link to a particular item on the map, for example by creating and storing a hash fragment in the URL.
  • Add a data type for training/courses.

Would you like to contribute? The code is on GitHub.

Documentation that developers need to do their jobs

A fellow technical writer asked me this week about the documentation that developers need to do their jobs. He was thinking not of the guides people need when they want to integrate their systems with another organisation’s systems, but rather the internal guides developers may write for themselves about their projects and tools.

That’s a very good question. I’ve thought about it over the last couple of days, and pulled together a list of the types of developer-focused documentation I’ve come across. If you have any to add, please do!

The list is confined to documents relating to the role of software engineer/developer. It doesn’t include more general information that all employees need, such as human resources and facilities.

Information about the project and system they’re working on

  • Who the people are: engineering team members, product managers, technical writers, stakeholders.
  • Customers: Who they are and what they do, or would like to do, with the system or application that the team is developing.
  • Goals: Mission, vision, goals for the upcoming month/quarter/year.
  • Product requirements document for the system, application, or major feature that they’re working on.
  • Design documents.
  • Architectural overview, preferably in the form of a diagram.
  • Comments in the code, written by their fellow developers.

Help with their development environment

  • How to set  up the development environment for the application/system that the team is developing.
  • Guides to specific tools, whether built in-house or third party, including the IDE of choice, build tool, source repository.
  • A pointer to the issue tracker used by the team.
  • Guide to the team’s code review tool and procedures.
  • Best practices for writing automated tests, and information about existing code coverage.
  • Links to the team’s online chat room, useful email groups, and other communication tools used by the team.
  • Where to go with technical and tooling problems.

Coding guides

  • Coding style guides for each programming language in use.
  • Guidelines for in-code comments: style; where to put them; how long they should be; the difference between simple comments and those that are intended for automated doc generation such as Javadoc; and encouragement that comments in the code are a Good Thing.
  • Best practices for code readability.

Sundry useful guides

  • Communication guidelines, if the developer’s role will involve significant liaison with third-party developers, customers, or important stakeholders.
  • A map to the nearest coffee machine, preferably reinforced by a path of glowing floor lights.

Too much information can be a bad thing. :) I spotted this sign on a recent trip to Arizona:

Too Much Information

Follow

Get every new post delivered to your Inbox.

Join 1,454 other followers

%d bloggers like this: