DJ Adams
Auto formatting extensionless Bash scripts in Neovim
Neovim configuration for file and module navigation in CDS models
Excluding specific diagnostics in Neovim
A reCAP intro to the cds REPL
A modern and clean Neovim setup for CAP Node.js - configuration and diagnostics
Point free coding and function composition
Adjusting the preview width in Telescope's horizontal picker
FP, function chains and CAP model loading
Array.prototype.reduce and the optional initial value
Functional programming resources
How I run executables in containers
Level up your CAP skills by learning how to use the cds REPL
Migrating GitHub issue based URL bookmarks to wallabag
TASC Notes - Part 9
TASC Notes - Part 8
TASC Notes - Part 7
CAP Node.js plugins - part 3 - writing our own
CAP Node.js plugins - part 2 - using the REPL
CAP Node.js Plugins
TASC Notes - Part 6
Functions as first class citizens in SICP Lecture 1A
TASC Notes - Part 5
TASC Notes - Part 4
The elements of programming with respect to CDL and SICP
The Art and Science of CAP
TASC Notes - Part 3
TASC Notes - Part 2
Creating the new Tech Aloud intro and outro music
Flattening the hierarchy with mixins
Five reasons to use CAP
Separating concerns and focusing on the important stuff
Restricting access via facets with masked elements
Keeping things simple in domain modelling with CDS
Immutable layers, file deletion and image size in Docker
CAP Node.js plugins - part 1 - how things work
TASC Notes - Part 1
Setting up a cache server for apt packages
New source for LXD images on Crostini
Using lazydocker with SSH-based remote contexts
Automatic validation in OData and REST calls with CAP
reduce - the ur-function
Highest value in JS - different ways
Turning an OData expand into a cds.ql CQL query with a projection function in CAP
Enabling document fragment links for headings in SAP Community blog posts
Digging into CSN diffs for CDS models
CodeTalk interview - living and working on a narrowboat
Using ARG in a Dockerfile - beware the gotcha
Defining a custom 'after' handler in CAP with 'each'
Obtaining auth code grant type OAuth 2.0 tokens for Google APIs with a script
Controlling automatic HTTP requests in CAP Node.js design time loops
Simple script for previewing CDS models in CSN - cdsray
Using @cap-js/sqlite in CF for your CAP services
Running non-production CAP services in CF
Easily add an explicit cds.requires.db to your CAP project's package.json
Improve your CAP dev container shell prompt
Avoid design time CAP server restarts when maintaining local data files
CAP, CDS, CDL, CSN and jq - finding associations
CAP, CORS and custom headers
Test drive Joule's generative AI features in SAP Build Code now!
Curating a collection of jq functions
ISO content for common CAP types
Quick conversion of multiple values using with_entries in jq
Opening files from the terminal in BAS dev spaces
Successful double CodeJam in Wroclaw and Warsaw
Ghost cratch fitted
Exploring codespaces as temporary dev containers
Accuracy and precision in language
Developing CAP in containers - three ways
Battlestation 2024
A simple jq REPL with tmux, bash, vim and entr
Using the docker CLI in a container on macOS
From Twitter to Mastodon
Tmux plugin development with a local repo
TIL - Two Tmux Plugin Manager features
Solving the SAP TechEd Easter Egg on the Web
Devtoberfest - the best developer prep for SAP TechEd
Bash shell expansion inside double quotes
OData query operations and URL encoding the system query options with curl
Curing my stove aboard the narrowboat
Mercia Marina to Shobnall Fields and Burton-on-Trent
Resources for navigating the canal network
Oil change and a visit to Mercia Marina
SAP CodeJam report - service integration with CAP in Guetersloh, DE
Selecting the related endpoints from a GitHub API response using jq's with_entries
SAP CodeJam on Service Integration with CAP in Brescia
Living on a narrowboat - layout details of the stern
Improving my interactive jq workflow with ijq, bash and tmux
More on the comma as generator, and streaming with select in jq
Double SAP BTP goodness in Isernhagen
Recognising patterns and embracing the stream
Learning from community solutions on Exercism - part 3
Living on a narrowboat - the stove as the heart of the home
Learning from community solutions on Exercism - part 2
Learning from community solutions on Exercism - part 1
SAP community memories
A deep dive into OData and CDS annotations
SAP CodeJam on the btp CLI and APIs in Heilbronn
SAP CodeJam on Service Integration with CAP in Utrecht
Living on a narrowboat - embracing constraints
Working from a narrowboat - Internet connectivity
I'm moving onto a narrowboat
Learning from exploring a question on jq
Array push with autovivification in jq
Managing resources on SAP BTP - what tool do I choose?
Extracting blog post dates from URLs with jq
Some notes on modular JSON Schema definitions
More Untappd data explorations with jq - my top ranking beer types (part 3)
More Untappd data explorations with jq - my top ranking beer types (part 2)
Stop asking for slides in advance
More Untappd data explorations with jq - my top ranking beer types (part 1)
Untappd data with jq - my top brewery countries
Understanding jq's SQL style operators JOIN and INDEX
Summing and grouping values with jq
Reshaping data values using jq's with_entries
Multiple level filters in jq
Products by supplier in OData and jq
Exploring JSON with interactive jq
JSON object values into CSV with jq
Exploring GitHub repo name distribution with jq
Converting strings to objects with jq
Some thoughts on jq and statelessness
Bash notes 3
A classic example of yak shaving, and some stream editing
Bash notes 2
Bash notes
Understanding jq's reduce function
Setting up my own Cloud Foundry
Exercism and jq
SAP Tech Bytes: btp CLI - new home for configuration
How I got involved in the SAP community
Allowing my intangible core to catch up with the rest of me...
Truncation and neat terminal output
Controlling Chrome from the CLI
Setting up hadolint - a Dockerfile linter
Getting BTP resource GUIDs with the btp CLI – part 2 - JSON and jq
Getting BTP resource GUIDs with the btp CLI - part 1
UTFRW - Unofficial TechEd Fun Run / Walk / Roll - Share Your Pics!
Exploring fff part 2 - get_ls_colors
Embracing jq and JSON
Sourcing vs executing in Bash
SAP Tech Bytes: btp CLI - autocompletion
Using functions more
SAP Tech Bytes: btp CLI - managing configuration
Improving shell fu with practice
SAP Tech Bytes: btp CLI – logging in
Exploring fff part 1 - main
SAP Tech Bytes: btp CLI - installation
Learning by rewriting - bash, jq and fzf details
Today's TIL trio
Session switching with the tmux menu
tmux output formatting
Reopening pull requests and GITHUB_ACTOR
Unix tooling - join, don't extend
Early thoughts on Warp
The APC SMT750IC UPS works with the Synology NAS DS1621+
Remote access to Docker on my Synology NAS
Adding a drive to my Synology NAS
Equality in tech
Supporting developers with sponsorship
Notes on Markdown linting - part 2
Notes on Markdown linting - part 1
Solving mysterious unrendered markdown headings
Unpacking Bash shell tips from a GitHub Actions workflow
GitHub Actions workflow browser
Producing JSON with jq for appending issue titles
SAP Tech Bytes: Exploring SAP-samples with gh and fzf
Mainframes, SDSF and GitHub Actions
New tmux panes and windows in the right directory
Deeper connections to everyday tools
Two-phase video uploads with YouTube API and curl
La Pavoni maintenance successful
Mass deletion of GitHub Actions workflow runs
A new journal experiment - Thinking Aloud
Aborting a script with parameter expansion
SAP TechEd Developer Keynote - Info Central
SAP Tech Bytes: Approuter User API Service
fzf - the basics part 2 - search results
Thoughts on video content
fzf - the basics part 1 - layout
Do less and do it better
Columnar layout with AWK
From Classics to Developer Advocate
Updating your fork of the Developer Keynote repository
Waiting for jobs, and the concept of the shell
SAP TechEd 2020 Channel 1 at home
Implicit values in Bash for loop construct
UTFRW - Unofficial TechEd Fun Run / Walk
SAP TechEd Developer Keynote DK100 - The Story
My SAP TechEd 2020 - what I'm looking forward to
An overview of SAP Developers video content
The myriad meanings of pwd in Unix systems
Computer Unit 1979
The subtle art of quoting newline characters
Case modification operators in parameter substitution
MID$ and shell parameter expansion
Understanding declare
Desnowballification with set -o errexit
Improving my shell scripting
curl and multipart/form-data
Checking a command is available before use
Using exec to jump
A new learning source for shell scripting
Shell parameter expansion with :+ is useful
Reducing writing friction
Programmer's Day Mission 2020
You can mask sensitive hostnames with wildcards and host aliases
The open square bracket [ is an executable
Why we have /bin/ and /usr/bin/
String.prototype.replace() can take a function
continue-on-error can prevent a job step failure causing an action failure
git diff can emit different exit codes
In an mta.yaml file you can use the service-name parameter to point to an existing resource
SAP NPM packages now on npmjs.org
Removing the knob on a La Pavoni steam valve
SAP Community Coding Challenge 2 - Finalists
SAP Community Coding Challenge 2 - Contestants
Remote mount setup on the Raspberry Pi
SAP Community Coding Challenge 2 - Update
Terminal Tip: a CF remote monitor script
SAP Community Coding Challenge Nr.2
Terminal Tip: remotely monitor a CF deployment
Terminal Tip: switching CF targets
Terminal Tip: parsing CF app logs
Terminal Tip: truncating CF output
Initial Pi configuration via Ansible
Code at Home episodes
Let's learn to "Code at Home"
Starting out with Raspberry Pi experiments
Preparing the OS image
Finding the Pis on the network
Brambleweeny Cluster Experiments
Mini adventures with MTAs and the Cloud Foundry CLI
Scripting Cloud Foundry activities in trial
My learning list for 2020
Help us to help you - good questions beget good answers
Mission 'Use CAP and SAP Cloud SDK to Extend S/4HANA' - an overview
CAP is important because it's not important
Shell power and simplicity
Submit suggestions for Tech Aloud during SAP TechEd 2019
Tech Aloud podcast - an introduction
New podcast - Tech Aloud
Happy Programmers Day!
Hitch Hiker's style in Sea of Sorrows
Computed field example in CAP
We can do better than 'polynimbus'
The Observer's Book of JS Style
David Edward Adams
Double SAP CodeJam Athens - a report
Revisiting UI5 on CodeTalk
First thoughts on the 2019 Stack Overflow Developer Survey results
ES6, reduce and pipe
Vim, Markdown and writing
Housekeeping
Monday morning thoughts: looking back and forwards
Monday morning thoughts: digging deeper
Monday morning thoughts: indirect influence
Monday morning thoughts: learning media and mechanisms
Monday morning thoughts: rethinking like the web
Monday morning thoughts: longevity and loose coupling
Monday morning thoughts: on starting blogging
Monday morning thoughts: exploring reuse
Monday morning thoughts: dynamic language
Set up VS Code on Chrome OS for local Application Programming Model development
Monday morning thoughts: big school and community
SAP Cloud Application Programming Model (CAP) - start here
Monday morning thoughts: more on ABAP in the cloud
Monday morning thoughts: impostor syndrome
Monday morning thoughts: growth is upwards
Monday morning thoughts: Workflow Forms and the definition of a developer
Monday morning thoughts: ABAP in the cloud
My take on Wired's Google & URLs article
Monday morning thoughts: considering GraphQL
Monday morning thoughts: a good blog post
Monday morning thoughts: OData
Monday morning thoughts: the cloud is the computer
Monday morning thoughts: mainframes and message documentation
SAP CodeTalk sessions
Monday morning thoughts: local http servers and containerisation
Monday morning thoughts: what not how
Monday morning thoughts: abstraction
Monday morning thoughts: curiosity and understanding
Monday morning thoughts: developers and advocacy
Monday morning thoughts: programming models
Interview with Rui Nogueira on the new Application Programming Model for SAP Cloud Platform
Monday morning thoughts: community engagement
Monday morning thoughts: Core Data Services
Monday morning thoughts: the learning continuum
Monday morning thoughts: programmers and identity
Collaboration tools
The Business Rules service - overview and getting started
Monday morning thoughts: milestones
Monday morning thoughts: functions - what functions?
Balancing features with simplicity
Monday morning thoughts: containers and silence
Monday morning thoughts: editors and editing
Monday morning thoughts: debugging approach and Greasemonkey revival
Monday morning thoughts: upload / download in a cloud native world
Monday morning thoughts: a cloud native smell
Introduction to SAP Cloud Platform Workflow - Summary
Monday morning thoughts: cloud native
Becoming an SAP Mentor Alumnus
Thoughts on what's next for the SAP Community
Apps Script - Privacy Policy
Coming Home
Discovering SCP Workflow
Consumption-based SCP Pricing - Initial Thoughts
Things I do to make my work life better
SCP Business Rules Roadmap - 5 Observations
SAP Cloud Platform Pricing
Fix Blink
Functional programming - baby steps
Meeting Request Details
Google Cloud Functions + Sheets + Apps Script + Actions On Google = WIN
YABP - Yet Another Blogging Platform
Best practices for mobile reporting
The beauty of recursion and list machinery
Reaching out to the new new kingmakers
Debugging SAP Fiori apps - the fifth "D"
Excluding with vim's wildignore
Better collaboration through chemistry
F3C Parts 9 and 10 - Functors
F3C Part 8 - Promises
F3C Part 7 - Recursion
F3C Part 6 - Currying
F3C - A FunFunFunction Companion Series
F3C Part 5 - Closures
F3C Part 4 - Reduce advanced
F3C Part 3 - Reduce basics
F3C Part 2 - Map
F3C Part 1 - Higher-order functions
The Fiori revolution - disruption at its best
Community and Collaboration at SAP Inside Track Manchester
Understanding the SAP Fiori Cloud Edition
Top 10 misconceptions about Fiori
FOFP 2.1 A look at filter
FOFP Fundamentals of functional programming
FOFP 1.5 Creating functions
FOFP 1.4 A different approach with map
FOFP 1.3 Some basic list processing
FOFP 1.2 Trying things out
FOFP 1.1 Introduction
Language minutiae and learning to SWIM
Finding a wonderland number
Enlightenment in action
"fiux2" Week 7 - Build Your Own SAP Fiori App
4Clojure Puzzle 66
"fiux2" Week 6 - Extend SAP Fiori Apps
"fiux2" Week 5 - Enhance an SAP Fiori Master Detail App
The SAP Fiori Launchpad as a dashboard for my running KPIs
Quick HCP title hack with the Navigation Manager
"fiux2" Week 4 - Create Your First SAP Fiori App
"fiux2" Week 3 - Get Ready to Create Your First App
The evolution of the SAP community
"fiux2" Week 2 – Design Your First SAP Fiori App
"fiux2" - The openSAP Fiori Course - 2016 Edition
Building blocks of language, structure and thought
The future of app building on the SAP HANA Cloud Platform
Digital devolution in local authorities - putting people first
Impromptu JS session at UKISUG15
Speaking at SAP TechEd EMEA 2015
Celebrating the engine of the Fiori revolution - the 30UI5 ebook
My journey to Clojure
Give me a browser, and I'll give you the world
The advent of UI5 1.30 and what it means for us
Cookies
Building blocks for the future normal
The origin of becoming a fundamental enabler for Fiori
Revisiting the XML Model
UI5 Version Info
A non-techie PM's view of UI5
UI5 - looking back and forward
The experimental Client operation mode
An introduction to sap.ui.define
Taming the Resource Model Files
Merging lists with UI5
Spreading the UI5 Message
Fragments and Minimum Viable Code
A Short UI5 Debugging Journey
MVC - Model View Controller, Minimum Viable Code
UI5 and Fiori - The Story of Open and Free
UI5 and Coding Standards
The UI5 Support Tool - Help Yourself!
Speeding up your UI5 app with a Component preload file
Multi language support out of the box - UI5's pedigree
Base Classes in UI5
Handling Dates with the Date Picker
Bootstrapping UI5 Locally and in the Cloud
User Notifications with the Message Popover
The App Descriptor
OpenUI5 Walkthrough
Creating Native Applications with UI5
Semantic Pages
Expression Binding
Lightweight notifications with the Message Strip
JavaScript Do's and Don'ts for UI5
Welcome to 30 Days of UI5!
Email Discipline
JSON List Binding and maps
openSAP Experiences
This Week in Fiori (2015-16)
This Week in Fiori (2015-15)
This Week in Fiori (2015-14)
This Week in Fiori (2015-13)
This Week in Fiori (2015-12)
Making Information More Useful
The Maker's Schedule, Restraint and Flow
This Week In Fiori (2015-11)
Why I'm Staying Close to UI5
Can I build a Fiori app? Yes you can!
10 tips to get you started on your Fiori development journey
UI5 features for building responsive apps
Speaking at Mastering SAP Technologies
Fiori & UI5 Related Videos
Morning Fiori Fix
OpenUI5 at FOSDEM 2015
Atom, Snippets, Tabs and CSON parsing
Fiori App Data into a Spreadsheet? Challenge Accepted!
Running: 2014 in review, and some Clojure
DNA is still in our DNA
The inaugural SAP architect and developer summit
Creation & Reload of UI5 UIs in the Chrome Developer Console
Addressing Emails
This Week in Fiori (2014-43)
This Week in Fiori (2014-42)
Speaking at the SAP Architect & Developer Summit
This Week in Fiori (2014-40)
This Week in Fiori (2014-39)
This Week in Fiori (2014-38)
Scratching an itch - UI5 Icon Finder
This Week in Fiori (2014-36)
This Week in Fiori (2014-35)
This Week in Fiori (2014-34)
This Week in Fiori (2014-33)
This Week in Fiori (2014-32)
This Week in Fiori (2014-31)
This Week in Fiori (2014-30)
Keyed vs Non-Keyed Root JSON Elements & UI5 Binding
OpenUI5 Tutorial at OSCON 2014
This Week in Fiori (2014-29)
This Week in Fiori (2014-28)
Webinar and more - Understanding SAP Fiori
This Week in Fiori (2014-27)
Understanding SAP Fiori Webinar - The Director's Cut
SAP Developer Advisory Board - Your Input!
SAP Mentor Monday on UI5 - Links
Paying IT Forward Links
OpenUI5 CodeTalk Links
Small steps - OpenUI5 toolkit now in jsbin.com
Reaching Out
Mocking up the Payroll Control Center Fiori App
The essentials - SAPUI5, OpenUI5 and Fiori
Public SAP Mentor Monday 24 Mar 2014 - UI5 with Andreas Kunz
M is for 'responsive'
Alt-K: Reading Notes
XML Views and Resource Bundle Declarations
UI5 XML Views - Another Example
Help Us To Help You - Share Your Code
Meta education - or teaching the teachers
Quick hack: Calendar Inviter
Mobile Dev Course W3U3 Rewrite - XML Views - An Analysis
Custom Sorting and Grouping
SAP UK & Ireland User Group Conference - Demo Jam!
CodeTalk - SAPUI5 and SAP Fiori
Mobile Dev Course W3U3 Rewrite - XML Views - An Intro
Mobile Dev Course W3U3 Rewrite - ProductList, ProductDetail and SupplierDetail
Mobile Dev Course W3U3 Rewrite - App and Login
Mobile Dev Course W3U3 Rewrite - Index and Structure
Mobile Dev Course W3U3 Rewrite - Intro
Building SAP Fiori-like UIs with SAPUI5
SheetAsJSON - Google Spreadsheet Data as JSON
An Amazing 36 Hours at SAP Labs Israel
Engaging the Next Generation
#YRS2013 Hacks on Github
Happy Birthday SCN, Old Friend
Simple SAPUI5 Chrome icon for lazy developers like me
CodeClub Thoughts
Review of Dark Reserve Nr 3 from Lovibonds
Functional Python - Itertools Exploration
Our computational future
30 Day Challenge: No Beer!
Public Github repo sapui5bin available
Jump to Shell Workset Item from URL
30 Days Challenges
Review of Fourth Dementia Old Ale from Kuhnhenn Brewing Company
CodeClub and becoming a STEM Ambassador
The Silent Club and Recharging Alone
OData Everywhere
Blog It Forward - DJ Adams
Review of Norwegian Wood from Haandbryggeriet
Recent Interests
Serial interest in the Raspberry Pi
SAPUI5 - the future direction of SAP UI development?
Two tools for Gateway trial host nplhost
On Enterprise Geeks Podcast
Firebase and SAPUI5
The Developer Connection: Connect Like Never Before
SAPUI5 Powered SCN Forum Finder
New Omniversity Course Video!
Review of Red Rice Ale from Hitachino Nest
SAPUI5 says "Hello OData" to NetWeaver Gateway
Making OData from SAP accessible with the ICM's help
SAP ICF course marketing: video!
On the Information Diet
The Developer Renaissance
HTML5 @ SAP
SAP Developer Center
Movember - please donate!
Web Programming with SAP's ICF: new course dates
Moving on ... to Bluefin Solutions
Review of Milk Stout from Left Handed Brewing Co
Reading List Mark 2 - Part 5
Reading List Mark 2 - Part 4
Reading List Mark 2 - Part 3
Reading List Mark 2 - Part 2
Reading List Mark 2 - Part 1
Automated email-to-task mechanism with Google Apps Script
Ad-hoc Data Workflows with Google Apps Script
Stand steady on the shoulders of giants
Review of Torpedo from Sierra Nevada
Beer review: Dark Star's Saison
SOA scaffolding and development architects
Review of Saison from Dark Star
Danger! Graduate Conveyor-belt!
JSON and Other Animals - talk at Manchester jQuery Meetup
Gmail Contextual Gadgets - talk at Manchester GTUG
My browser A-Z
The past and future of SAP integration: guest Bluefin blog post
Project Gateway. A call to arms. Or at least to data.
Hacking the Delicious extension for Chrome
Google Visualization API: Manchester GTUG Talk
Not your father's SAP
Getting started with Gmail Contextual Gadgets
Scratching an itch - Magic The Gathering card info
REpresentational State Transfer (REST) and SAP
Tech Skills Chat with JonERP - A Follow-on Story
REST orientation - Controlling access to resources
A new REST handler / dispatcher for the ICF
Mainframes and the cloud - everything old is new again
SAP and Google Wave - Conversation Augmentation
Book review - SAP Business ONE Implementation
One way of dealing with blogtheft from SDN - through images
Dealing with "#blogtheft" from SAP's Developer Network
Command lines of the future, and simplicity of integration
Coffeeshop screencast: HTTP conneg, resource representations and JSON
2nd coffeeshop REST/HTTP screencast
Google Wave, XMPP and complexity
Webhooks postbin example for Coffeeshop
First coffeeshop demo screencast
'Coffeeshop' - lightweight HTTP-based pubsub
Information vs Behaviour
A return to the SDN community, and a touch of Javascript
Tarpipe REST connector in 5 minutes
Twitter's success
Analysing CV searches with Delicious
SAP everywhere!
An HTTP connector for Tarpipe: 'tarbridge'
tarpipe.com - Programming 2.0?
Old feed URLs fixed with a bit of mod_rewrite voodoo
Back from Real Life
OssNoteFix script updated for Greasemonkey 0.6.4 and Firefox 1.5
Java and Gosling's FUD - madness or desperation?
SAP and Open Source: the debate continues
Acorn Atom and my start in computing
SAP and Open Source - an analysis and letter to SAP and Shai
MoonOverFailsworth
Whither SAP?
SDN, Blogging, and Planet SAP
The SAP developer community 10 years ago
Turnkey MVS 3.8J on Hercules S/370 Screenshot
SAP: temporary loss of touch with reality?
Hacking the SAP service portal to make OSS notes better
Ubuntu? Thanks. But no thanks.
Europe, SAP, and two-way conferences
Flickr Pro from Robert
SDN Meets Labs
SDN Meets Labs gets underway at SAP University
Muscle cars
An overcorrection too far?
Postcode bookmarklet
Weblog happy in new home - note new URLs!
Ralphm on sjabber
Honest application requirements
Blosxom entries into MT
ClaphamJunction2
A fresh start
(Mini) Installfest in the SDN clubhouse at TechEd
Photos from SAP TechEd Munich
The meaning of LIFETIME_RC
SAP TechEd first day - notes from Munich
SAP TechEd here I come ... with session slides!
The integration irony of SAP's technology directions
The Curious Incident Of The Dog In The Night-Time
Is this thing still on?
A little taste of SAP at EuroFoo
SDN Meetup in Walldorf - a summary
SDN Meetup in Walldorf - pictures
TechEd talk winners - congrats
Forget SOAP - build real web services with the ICF
Real Web Services with REST and ICF
NW4, OSS1 and logon group selection for OSS
SAP at JAX 2004
WAS 6.40 testdrive for Linux is here!
Successful installation of EP plugin into testdrive WAS 6.10 system
Tim O'Reilly and the three 'C's
FOSDEM, and small OSS Notes Browser Hack
Venus Soul and Fun(k)
FOSDEM and Brussels, here I come!
Hawo's Queen of Grain Mills
Hello, 2004
Evaluation WAS 6.40 on Linux - top reason for attending CeBIT 2004
Food for thought - LDBs and ABAP Objects
Powergen fails to 'get' the Interweb
BSP - Mangled URL Decoder
SAP TechEd - Collaborative notes
Dashboard as extension to R/3 and SAPGUI client
Plums and the antithesis of technology
Improving the OSS note experience
SAP InfoTag on Web Application Server
SAP talk at OSCON, and RSS
Google Pocket Guide out now
Another great OSCON
Thanks, Randal
Dashboard, a compelling articulation for realtime contextual information
SAP and Open Source BOF at OSCON
Bittersweet
Thinking vs doing
Some ramblings on URIs and identity
SAP stuff at OSCON
The SAP/MySQL Partnership
How do I get plugin Y to run before plugin X?
Why does my newly installed plugin not work, and not produce errors either?
Why don't my readme file contents show up in my blog?
How can I access the entire URL in my plugin?
Where do I have to put the Tiki.pm file for the tiki plugin to work?
How do I detect the presence of another plugin?
Speaking at OSCON 2003
"A brilliant literary mash-up"...
How can I turn off a plugin for a certain flavour?
How can I convert Moveable Type entries to Blosxom?
Weblogs and Wikis - Blurring the Boundaries
New Blosxom plugin 'submission'
'Conneg' and the duality of weblogs
Tiki parser for MoinMoin
Blosxom 2.0 Beta1
RSS aggregators and user-agent information for Blagg
Tinkering with RSS and NNTP
Your wishlist in 'consumable' XML
Asleep in 2002
The fragility of retro-engineering
Transferring my Amazon wishlist to AllConsuming.net
Presentations, Wikis, and Site Navigation
Content-Type and Blosxom's RSS
Wisdom, diplomacy, or serendipity?
The universal canvas and RSS apps
The disruptive engineering spectrum, and "booktalk", an AllConsuming app
Creating the "Entry index"
A new year and a new approach
Startups and software patents
For REST, read 'Architectural Style'
"Assaults on the Internet's end-to-end-architecture"
Ben's RSS book
RESTifying RT
'Practical RDF' book up for public review
Notes to self: What should the rdf:about point to?
A moment of clarity: The significance of RSS 1.0 as an RDF application
The case of the missing rdf:Description
More thoughts to ponder
XML Scripting, data manipulation, and RDF
Moving from description to content:encoded in my RSS 1.0 feed
From RSS 0.91 to 1.0
The RDF in RSS
Moving between Mozilla tabs with the keyboard
Mozilla "Bookmark This Group of Tabs"
REST, Google, and idempotency
Cacheing on XSLT service
Sidebars, Mozilla, RSS: old and new
You know you're getting old ...
The OS tables are turning...
Just finished re-reading: The Player Of Games (Iain M Banks)
The mist is clearing ...
From REST to URIs, the Semantic Web, RDF, and FOAF
The 80/20 of HTTP
Reflecting weblogs.com 'ping's with SOAP, Jabber, and Pubsub
Programming Jabber review
Accessibility and Blosxom
A change and a rest
'Blosmail' - add and maintain your blog entries via email
Standing on the shoulders ... Exploring Weblog Neighbourhoods with Blogdex
Small Blagg mod to enable custom formatting of 'blaggregated' items
Changed link tags
HTML link tag for Blogroll
Collapse/Expand feature for my Blaggregated display
Extreme Computing 2002
RSS's underlying structure, and meta-RSS.
HTML LINK to RSS source
Top tip
ETag-enabled wget
More thoughts on HTTP, Email, and Jabber
"Web^H^H^HInternet Services"? Some Ramblings.
The Panopticon
Jabberconf Blaggplug version 0+1b
(Jabber-)Browsing the Panopticon data
Amphetadesk Links
Subscription from Radio
Mr 80-Percent
Blaggplug: jabberconf
YARM: Yet Another Referers Mechanism
One small step ... one giant leap ...
Calendar code
Bring on the SSI
Blosxom vs the world
Blog software review
community(disagreement + debate) = inspiration
"Blog Locally, Publish Globally"
Other side of the coin: 5335 now resurrected
Original Peerkat-based weblog back up for reference
Coffee Mugs and weblog interop
Cross pollination and blossoming of scripts
My bookmarks
Off with the (relatively) old, on with the new
Interview on jabber.org
Hello Blosxom
Bot window as command line of the future
FOSDEM interview
What is a Jabber client?
Upcoming talks in autumn 2025