whoami
Lucas Jenß
cat /etc/motd
The Coding Journal ツ — Notes taken on an epic coding journey. Technical solutions, debugging notes, and practical guides from the trenches of software development.
ls -la ~/languages/
- drwxr-xr-x
- ▶ PHP
- ▶ Ruby
- ▶ Scala
- ▶ C#
- ▶ JavaScript
- ▶ Objective-C
- ▶ Shell Scripting
ls -la ~/toolchain/
- drwxr-xr-x
- ▶ Typo3
- ▶ Akka
- ▶ Capistrano
- ▶ Git
- ▶ MAMP
- ▶ Adobe Illustrator
- ▶ NSTrackingArea (Cocoa)
uname -a
- drwxr-xr-x
- ▶ Mac OS X
- ▶ Unix
Preserve Illustrator layers and metadata in SVG exports
An Illustrator SVG can carry both visual structure and descriptive information, yet the two are easy to lose. Enabling the right export settings can retain Illustrator layers as SVG groups, keep editable text, and embed selected document properties. The important distinction is that layer preservation is structural, while metadata is supporting information; neither automatically creates useful alternative text for screen readers.
Australian projects add practical constraints. Designers in Sydney, Melbourne, Brisbane and Perth often hand the same brand artwork to developers in different states, while daylight-saving changes can compress review windows. Small retailers, franchise networks and direct-to-consumer sellers may reuse one logo across a shopfront, an online storefront, an app and a campaign landing page, so one small export defect can multiply across channels.
Everyday mobile use makes that risk visible. Shoppers checking products on a phone, commuters viewing route diagrams and staff opening dashboards on a tablet expect artwork to remain sharp without blocking the page. Preserved groups also help front-end teams maintain assets when a visual update becomes a coding task rather than a complete redraw.
Metadata deserves the same care as pixels. Under the Australian Privacy Act 1988, personal information in an exported file can matter if the publishing organisation is covered, and copyright or trade-mark information should reflect the actual rights holder rather than a designer’s default document properties. Accessibility adds another test: descriptive SVG content must work for assistive technology, not merely look tidy in an XML viewer.
Why SVG export fidelity matters
SVG gives browsers a resolution-independent drawing in a format developers can inspect. It suits product icons, maps, diagrams and brand assets where a crisp appearance on a high-density phone matters. CSS and JavaScript can also handle hover, focus and disabled states without requesting another image.
An Illustrator export is a translation rather than a simple save. The exporter decides how to represent text, effects, colour definitions and object groups, and each target profile handles those features differently. A file can render correctly in Illustrator and still produce awkward markup, brittle selectors or unnecessary weight in a browser.
Engineering teams need that translation to be repeatable. A team such as CCJ Engineering may publish front-end assets alongside application code, so a controlled export reduces surprises during later releases. Documenting the chosen profile and cleaning step gives designers and developers one shared source of truth.
Choose the right Illustrator export profile
In Illustrator, use File > Export > Export As, choose SVG, and open SVG Options before confirming the filename. Controls vary by version, but look for layer, font, styling and XMP metadata options. A clear name such as logo-primary.svg prevents a draft or optimised file from being mistaken for the release asset.
Choose SVG 1.1 for broad browser support unless there is a tested reason to use another profile. SVG 1.1 with CSS can support shared style rules. YAGP profiles cover Adobe’s extended graphics features, while SVG Tiny reduces features and markup; Tiny is rarely sensible for modern phones. Test unusual effects in target browsers instead of inferring support from the profile name.
Styling affects size and maintainability. Presentation attributes keep formatting near objects, CSS classes create reusable rules, and an internal CSS block centralises control. Generated class names can change between exports, so stable names are safer integration points. Keep text editable when it must be translated or restyled; convert it to paths for a fixed logo that must render identically without the licensed font.
Keep Illustrator layers as usable groups
Enable the option labelled Export Layers, Layers or Keep Illustrator Editing Capabilities, depending on version. Illustrator layers then appear as nested <g> elements, often with an id based on the layer name. This does not recreate editable Illustrator layers, and hidden layers are normally omitted, but it gives developers meaningful groups.
Give every exported layer and important object a unique, durable name. Names such as icon-navigation-home or chart-legend are more useful than Layer 7, although spaces and punctuation must remain valid in XML identifiers. An exported layer commonly becomes id="icon-navigation-home". Duplicate names can create duplicate IDs, causing a browser or script to target the wrong element.
Preserving names also creates a maintenance benefit. A CSS rule can target #icon-navigation-home path without relying on Illustrator’s temporary styling names. The same separation of concerns appears in this Ruby refactoring example: isolating a meaningful responsibility makes later changes safer. Stable SVG groups give front-end code a comparable boundary, provided the exported source confirms the structure.
Control metadata, privacy and accessibility
Set the source document properties before exporting, including the title, author, description, keywords and rights where they apply. Enabling Include SVG XMP, where available, can place an XMP packet and RDF properties inside the SVG’s <metadata> element. Treat the export as a separate publication: a designer’s working-file author, internal title or client reference may be irrelevant or inappropriate for a public asset.
Australian privacy law makes that review concrete. The Privacy Act 1988 generally covers private-sector organisations with turnover of at least AUD 3 million, organisations trading in personal information, and government agencies, subject to exceptions. A small business may fall outside some provisions, but metadata can still expose a name, email address, project code or other identifier. Remove such values and inspect comments and embedded properties, not just visible artwork.
Copyright and trade-mark records also need accurate wording. The Copyright Act 1968 and Trade Marks Act 1995 may affect reuse of logos, while a metadata rights field does not replace a licence or prove ownership. Australian Government services are generally assessed against WCAG AA through the Digital Service Standard. Add <title>, <desc>, an appropriate role and aria-labelledby where needed; XMP remains invisible to many assistive technologies. Before release, compare changes with the deployment notes, since a CDN-cached SVG can preserve unwanted metadata longer than its source file.
Compare practical export outcomes
The best settings depend on how the asset will be used, so match each delivery goal to one deliberate export decision:
| Delivery goal | Illustrator export choice | Expected result | Final check |
|---|---|---|---|
| Maintain layer structure | Enable layer export and use unique names | Nested SVG groups with useful IDs | Inspect the source for correct groups |
| Reuse styles | Choose CSS classes and stable object names | Compact, targetable style rules | Avoid generated class names in application code |
| Keep editable copy | Keep text as text and subset approved fonts | Selectable, translatable <text> elements |
Check fallback rendering and font licensing |
| Fix a logo’s appearance | Convert text to paths | Portable outlines with no font dependency | Compare against the approved artwork |
| Retain document information | Enable SVG XMP and review document properties | An embedded metadata and RDF packet | Search for personal or internal values |
| Expose accessible meaning | Add title and description after export | A meaningful name and description for users | Test with a screen reader and browser |
A clean export can still be altered downstream. Optimisation pipelines may remove IDs, titles, descriptions or metadata, or flatten groups. In SVGO, review cleanupIds and avoid enabling removeTitle or removeDesc when those elements are required. Keep optimisation configuration beside the export preset and inspect the final file after every build transformation.
Build a reliable export checklist
Use a repeatable process rather than relying on whichever export dialog appeared last. Keep the source artwork organised, document the Illustrator version and selected options, and make the final inspection part of release preparation rather than an optional extra.
- Name layers and objects with unique, semantic names that will still make sense after redesign.
- Enable layer export when group structure matters, then confirm the expected
<g>elements in the SVG source. - Choose the SVG profile and text treatment for the delivery context, including font licensing and fallback behaviour.
- Complete the document properties, enable SVG XMP where useful, and remove personal or internal metadata.
- Add accessible
<title>and<desc>content, then check keyboard and screen-reader behaviour for meaningful graphics. - Compare the exported SVG with the approved artwork in target browsers and at representative screen sizes.
- Run the same optimisation, validation and deployment steps used by the project before publishing the asset.
Save these choices as a documented export preset or script where Illustrator and project tooling allow it. Store the resulting SVG, its source artwork and a small visual regression reference in the same release area, so later changes are reviewed against a known baseline.
Use this workflow on the next Illustrator export: publish one verified SVG, attach its source and settings to the release record, and make every subsequent delivery flow through the same repeatable path.
cat ~/interests.json
| Key | Value |
|---|---|
| editor | Terminal-first workflow |
| os | Mac OS X / Unix |
| vcs | Git, distributed version control |
| deploy | Capistrano, cron automation |
| graphics | SVG, Adobe Illustrator troubleshooting |
| networking | IP validation, SSH, VPN |
git log --oneline --reverse
Solving SVG import issues in Adobe Illustrator CS6 and CC
When importing an SVG into Illustrator, the operation fails with an unknown error [CANT]. A workaround for this Adobe-side bug.
Solving NDK build issues on OS X
Troubleshooting native development kit compilation problems on Mac OS X.
Programmatically adding PHP generated TypoScript to the backend configuration
Integrating dynamically generated TypoScript into Typo3 backend setups using PHP.
ArgumentError: Could not parse PKey: no start line
Debugging an SSH key parsing error encountered during deployment.
Validating IP-Addresses in PHP
Using PHP filter functions with flags like FILTER_FLAG_IPV4 and FILTER_FLAG_IPV6, and understanding how filter_var handles reserved IP addresses.
Cocoa: Using NSTrackingArea
A short tutorial on using Cocoa's NSTrackingArea to capture mouseEntered and mouseExited events.
cat ~/contact.txt