RSS.Social

DJ Adams

follow: @[email protected]

Posts

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