Why Call it Mungenetengine?


The Story Behind the Name

munging is a term describing processing things. Converting stuff. Or as the Munge Brothers said, turning data into information. Hey, and we said this wayyy before Uncle Bill started talking about Information at your Fingertips (now where has that gone?)

So, after the breakup of the Munge Brothers, I named my web site in honour of that time in my working career. There are a scant few times in your work-life where you mix and connect with a bunch of collegues and do some really cool stuff.

Anyway, the mungenetengine is just the latest incarnation of using the munge term and applying to something completely different. To make the URL shorter, I have renamed the mungenetengine into mne.

For further information on the Munge Brothers, please do not consult your local library:
Who are the Munge Brothers?

InDesign 2.0: Word Count using Visual Basic


Adding a Word Count to InDesign 2.0

TextCounter (Win) on Adobe Studio Exchange

One of the features missing from InDesign since its first version is a word count feature. In a fit of quiet rage and sheer stupidity, I wrote this simple Visual Basic 6.0 application that pops up a small window displaying the word count of the current selected story.

There is a Timer named tLexLuthor that waits around for a period of time

[1008] 01 lois lane timer

Just in case the user doesn’t want this turned on, there is a status button called bStart that toggles the timer tLexLuthor on and off.

[1009] 02 lois lane button

And finally there is a status field (read only) called lStatus. This is where the current word count is stored.

[1010] 03 lois lane label status

… And when running, this is how it looks.

[1011] 04 lois lane in action

The Visual Basic source that sits behind this small application is as follows:


Dim myInDesign As InDesign.Application

Dim myPub As InDesign.Document

'button named bStart (toggles on/off of Timer)

'lStatus as a label that contains the word count text

'tLexLuthor as a Timer object

Private Sub bStart_Click()
If (bStart.Caption = "Start") Then
bStart.Caption = "Stop"
tLexLuthor.Enabled = True
lStatus.Caption = ""
Else
bStart.Caption = "Start"
tLexLuthor.Enabled = False
lStatus.Caption = "waiting"
End If

End Sub

Private Sub tLexLuthor_Timer()
processEvent

End Sub

Private Sub processEvent()
Dim mySel As Object 'untyped object because we don't know what the selection is
On Error GoTo fail 'if anything goes wrong, don't call me
Set myInDesign = CreateObject("InDesign.Application")
Set myPub = myInDesign.ActiveDocument
Set mySel = myPub.Selection(1) 'a selection can be multiple objects, this time just get the first (and potentially only)
If (TypeOf mySel(1) Is InDesign.TextFrame) Then 'if it is a text frame, then
myCount = mySel(1).ParentStory.TextWords.Count 'get the word count from the text frame
ElseIf (TypeOf mySel(1) Is InDesign.InsertionPoint) Then 'or if its a insertion point, that is the user is typing
myCount = mySel(1).ParentTextFrame.ParentStory.TextWords.Count 'get the word count through the frame's text object
End If
lStatus.Caption = "word count: " & CStr(myCount) 'set the status
Exit Sub

fail:
lStatus.Caption = ""

End Sub

The project and executable is here:Lois Lane example downloadable (3K)

Warping Text using Illustrator 10’s Warping Tools

NOTE: Technique for the latest version of Illustrator CS3 

Adobe Illustrator 10 has a collection of new Warping tools. These tools do not directly work with text. At first, this looks like a serious ommission. But hark! There is a little technique that will serve us well.

Firstly, let’s assume you have created some text in your Illustrator document.

[1000] 01 initial text

Create a rectangle that bounds the text exactly. This rectangle will not be visible: its used for the Envelope tool…

[1001] 02 rectangle

Select both the new rectangle and the text frame underneath. Go to Object>Envelope Distort>Make with Top Object.

This will take the underlying text and ‘distort’ it into the shape of a rectangle. The text probably hasn’t changed that much. But the beauty of Illustrator 10 is that we can now Warp the envelope shape.

[1002] 03 warp

Voila! we can now warp text!

To edit the text, you can select this object and go to Object>Envelope Distort>Edit Contents. Here you can edit the text rather than the envelope shape itself.

In this simple example, we are changing the shape of the envelope that the text is being stretched into.

Now, this alone is interesting and worthwhile. But there is another “thing” we can do…

By simply adding a Warp Envelope to our text object by going to Object>Envelope Distort>Make with Warp

[1003] 04 envelope with warp

We can change the shape the text is ‘enveloped’ into. These warp styles closely reflect the style in Photoshop 6.0. However, what is different is that there is an underlying shape that we can manipulate the effect the shape the text is warped into.

[1004] 05 warp envelope warp

Apart from using the ‘white arrow’ (direct select tool) to change the envelope, or we can use the Warping tools to change the shape.

Sweet.

Why Did I Write My Own Content Management System?


Why Write Your Own?

A Content Management System, in my definition anyway, is a piece of software that takes all the content: text, images, links etc and manages them. It also understands the relationship between items. It also has enough intelligence to be able to present the content to the end user.

Previously on mungenet I have used Userland Frontier – and specifically a piece of code I wrote myself for Fairfax@Atlanta. The main lesson I learnt from writing this was that “structure defines navigation” and that “structure should be described in the database”. Therefore, its easy to add to the structure of the site – and the navigation will follow. The central premise of this is that the relationship between items is key to the rendering of the navigational pieces on the site.

After moving away from my home grown Fairfax@Atlanta system, I transitioned to a combination of GoLive for the bulk of the content and a variety of systems for the “blogging” first page.

Initially, I used Blogger for easily adding notes on a daily basis. Followed by Radio Userland – a free piece of software based on Frontier. For about 2 months in late 2001 I used a combination of PHP and MySQL as my first foray into PHP coding.

The mungenetengine as you see it today is a full PHP and MySQL based content management system that also contains and serves binary elements (PDF, images, SWF) as well as the HTML snippets. It renders the navigation from the relationship hierachy in the system from templates, as well as permitting arbitary pieces of code to run server side.

The most recent additions to the server-side code is the ability to switch content snippets and templates based on the client’s browser environment. There are alternate templates for Netscape 4.7 and earlier.

Once the data is stored in a database, it becomes extremly easy to bolt on features that permit easier creation and editing of content. In May 2002, a SOAP interface was added for a VB client application. In July 2002 a RSS XML feed was added.

There are many, many other systems that manage content for web sites. Each has their own strengths and weaknesses. As I consider cutting code a hobby rather than a profession, its really cool to have something you have written working in production on a daily basis.

My Next Car

Mini Cooper, my next car Its all about the style. Yeah, baby! my car, a new mini cooper s

How did I miss out on The Smiths in my younger days? Morrissey and Marr rock! How Soon Is Now is a classic I remember from the 80s, but their music is really, really… good. The line I am the son/and the heir sounds almost like I am the sun/and the air – a completely different meaning and spin on the song altogther. This creativity in lyric and music is equally only by early Lennon/McCartney and of course, Neil Finn.

I just love it when the software you create does something that you don’t expect! In the Adobe PDF & Acrobat section, I’ve added the links to the updaters to Acrobat 5.0.5. They now appear in the overview for this section – and the navigation on the right handside. The layout of these areas are automatically created from the content in the database. This wasn’t designed, and not the intent when creating the feature. But works the way you would (sort) of expect. Cool.

Last year I purchased a baby Firewire hard drive. I’ve plugged it into my Windows XP Dell Latitude C800 (which has built in Firewire) and reformatted the 10Gb drive. I selected FAT32 as I know that MacOS X can read this, too. Backed up my data, and mounted the same drive on the Titanium PB. MacOS X can see the FAT32 volume (albeit not reading the volume label/name correctly) and read/write data too! I don’t think I would trust all of these devices plugged in together at the same time…

WindowsXP Likes: faster hibernation, neater hardware removal interface, hiding service icons, new control panel interface and ‘helpers’ on the left in explorer windows, nesting of windows for an application in its icon on the start bar. All minor.

Oh, also some work related stuff. The MacOS Acrobat 5.0.5 Updater is now available. (Most) of the components are MacOS X native.

InDesign 2.0: Hidden Baseline Grids


Exposing a Hidden Feature of InDesign 2.0

Does this describe you: Type is your thing. Ensuring that the baselines are consistent is causing a relationship breakdown between you and your partner, dog or manager. You wake up in a cold sweat thinking about bad hyphenation decisions you made during the day.

If so, its time to look at this little hidden feature of InDesign 2.0. It’s not as frivilous as zooming, zapping aliens – but it may change your life. At least a little.

Here’s the problem: you have two flows of text on a page; one master column contains the body copy; and there is also a second column that contains a pull quote, or margin notes that refer to the main body text.

To typeset the text to ensure readability, the appropriate process is to align the baseline of the first lines of each paragraph, with the main body paragraph flowing on the document-wide baseline; and the margin note starting on the same baseline, but the leading flowing appropriate to its smaller type size.

Setting this type manually is a chore. You have to exactly align the baselines of the two text frames. If the text reflows, or the margin quote needs to move – there is many minutes (to hours) of rework to realign your text.

InDesign 2.0 has what Tim Cole (Adobe’s InDesign Evangelist) calls a double-secret feature. Its a little hidden, but worth the effort to uncover to solve this problem and hopefully save the relationship with your pet.

Firstly, we need to ensure that the document has a baseline grid set. To do this, go to Edit>Preferences>Grids. The grouped area “Baseline Grid” contains the settings. Start is the starting position from the top of the document, Increment Every is the baseline setting.

[993] 01 preference

Set the baseline to the appropriate baseline grid for your document.

[994] 02 starting paragraph

[995] 03 align master paragraph

And assign to a paragraph by using the Type>Paragraph palette. The “Align to Baseline Grid” button is in palette as shown.

I have also turned on View>Show Baseline Grid to see where the baselines are… it helps visualise what is going on in our document.

The second paragraph in this instance lies to the right of the body paragraph. Its Character settings are completely different: different point size, leading.

[996] 04 second aligned

If you have not created a custom keyboard shortcut set, Click on the “New Set” button.

Now it is time to sneak up on the double secret feature. It is hidden in the Edit>Keyboard Shortcuts, specifically in the Text and Tables section. Scroll down until you see “Only Align First line to Grid” You will see that there is no keyboard shortcut assigned to this option.

We also need to assign a keyboard shortcut to this option. Click in the New Shortcut area, and type a new Shortcut. Press the keys for your new keyboard shortcut. If the key sequence is currently being used for another command, InDesign displays that command under Current Shortcuts.

The context here is important. The context ensures that the shortcut performs the way you intended. For example, you can assign Ctrl+G to group two cells together (Table context) and Ctrl+G to insert special characters (Text context).

[997] 03a keyboard settings

To enable this feature, assign it to a keyboard shortcut.

Now, back in our original document, we have a right hand “hanging” paragraph. The first step is to set it to the document’s baseline grid. Of course, all of the lines are now aligned to the document’s baseline. We’re one step on the way.

[996] 04 second aligned

Now we use the keyboard shortcut. In my keyboard set, they were assigned using the “Default” context. This means I have to select the text frame using the black arrow (Selection Tool) and type the new shortcut. Voila!

[998] 05 new feature turned on

Please note as I move the right hand paragraph down the page, the baseline for the first line stays aligned to the baseline grid whilst the following lines follow the leading for the paragraph.

[999] 06 moved paragraphs

Note that the you doesn’t have to use the keyboard shortcut on each paragraph. Though there is no UI in the palettes for this feature, it can be saved/captured as part of a paragraph style…the create and redefine functions both ‘see’ this attribute on a paragraph level.

[1006] 07 saved in para styles

The Edit>Keyboard Shortcuts is worth serious investigation. Next time you wake in a cold sweat, just jump onto your InDesign and have a look. Hopefully it will not send you back to sleep…

Thanks to: Tim Cole, Sandee Cohen.