All Posts
Separating concerns and focusing on the important stuff
The phrase "separation of concerns" is one that I hear relatively often, but have never until now stopped to think properly about what it is, what it means. It's a concept discrete and...
read postRestricting access via facets with masked elements
Watching the inaugural episode of The Art & Science of CAP, in particular around 39 mins in, Daniel was showing an example of a projection where some of the details of the entity -- upon which the...
read postKeeping things simple in domain modelling with CDS
When embracing domain modelling with CAP, keep things simple. One of the greatest benefits of domain modelling done properly is having a domain expert on the team. Don't forget that domain expert,...
read postImmutable layers, file deletion and image size in Docker
While I've been vaguely aware of the idea of immutable layers in Docker images, a recent presentation on Docker images caused me to dig a little deeper into how the immutability of these layers means...
read postCAP plugins deconstructed - part 1 - understanding how the mechanism works
In this first of a three part series of blog posts, we explore the CDS Plugin mechanism in CAP to find out how it works, so we are well prepared to write our own plugin. Background This series of blog...
read postSetting up a cache server for apt packages
Some notes on setting up an apt-cacher-ng based cache server for Debian apt packages in my home operations ("homeops") context, including a section on using SSL/TLS origin...
read postNew source for LXD images on Crostini
I recently wanted to create a second Debian-based container in the Linux context of one of my ChromeOS devices. But I found I couldn't, as the image wasn't available any more. This post is a short...
read postUsing lazydocker with SSH-based remote contexts
A quick hack to work around the current issue with lazydocker and SSH-based remote Docker context definitions. I've used the excellent lazydocker before, but only occasionally, reverting to the docker...
read postAutomatic validation in OData and REST calls with CAP
There is automatic validation of data coming into CAP-based service endpoints. Up until recently, there was a difference on how this happened between "REST" and OData channels, but with the...
read postreduce - the ur-function
I often think of reduce as the "ur-function", as it's so primitive (in building block terms, not in power or utility terms) and ubiquitous (I'm often disappointed when a new language I come...
read postHighest value in JS - different ways
This month I'm running the Developer Challenge, which is on Reverse APIs. One of the 12 tasks is Task 6 - API endpoint with payload required where the participants must create a "REST" style...
read postTurning an OData expand into a cds.ql CQL query with a projection function in CAP
If, while serving a call to your provided CAP service, you want to construct some CQL to perform on your database in a similar way to how $expand works in OData, this post may help. Before I start,...
read postEnabling document fragment links for headings in SAP Community blog posts
I came up with a bookmarklet to allow me to get hyperlinks for pointing to specific sections of blog posts on the SAP Community platform. I'm running the Developer Challenge this month and for that I...
read postDigging into CSN diffs for CDS models
I wanted to increase my understanding of CSN a little by noting changes in it as I built up my CDS model, and ended up with a script csndiff to help me with that. To grok something complex, I try to...
read postCodeTalk interview - living and working on a narrowboat
I was honoured to be a guest again on CodeTalk, this time on the topic of living & working on my narrowboat. The primary format for CodeTalk is audio (podcast), and there's also a video from the...
read postUsing ARG in a Dockerfile - beware the gotcha
Today I learned about the subtleties of build arguments in Dockerfile definitions, specifically how the ARG instruction relates to - and is affected by - the FROM instruction. It's not entirely like a...
read postDefining a custom 'after' handler in CAP with 'each'
TL;DR: There's special behaviour if you use the each parameter name when defining an after handler, but the way this works and the way you should invoke it has changed. Adding custom logic to your CAP...
read postObtaining auth code grant type OAuth 2.0 tokens for Google APIs with a script
I wanted to programmatically append rows to a Google Spreadsheet recently. For this I needed to use the spreadsheets.values.append method in the Sheets API v4. The API resources are protected, and...
read postControlling automatic HTTP requests in CAP Node.js design time loops
CAP affords developers a great design time experience, with minimal setup and fast turnaround times when building out your model and code. Often what I like to do is run an OData query operation to...
read postSimple script for previewing CDS models in CSN - cdsray
The March 2024 release of CAP brought many great new features including one for VS Code users - CDS Previews From Editor Title Bars. It allows you to look, in realtime, at how your CDS model...
read postUsing @cap-js/sqlite in CF for your CAP services
I published a couple of short posts recently: Running non-production CAP services in CF Easily add an explicit cds.requires.db to your CAP project's package.json Both of them are related to going...
read postRunning non-production CAP services in CF
Sometimes I want to run test CAP services not only locally, but in the cloud. I don't want the trappings of production (which are of course important ... in production settings) such as a production...
read postEasily add an explicit cds.requires.db to your CAP project's package.json
In an experimental CAP project serving data in an in-memory SQLite persistence mechanism, seeded from CSV files (as per the classic starting point in CAP's Grow As You Go approach), I wanted to have...
read postImprove your CAP dev container shell prompt
In the current back to basics series on CAP Node.js we're using VS Code with a dev container, based on the definition in the repo for the series. The container image is based on this one: FROM...
read postAvoid design time CAP server restarts when maintaining local data files
Starting the CAP server with cds watch is great for tight development loops at design time, especially with the built-in in-memory SQLite persistence layer, seeded by data in CSV files. When the...
read postCAP, CDS, CDL, CSN and jq - finding associations
In CAP, relationships between entities can be expressed with associations. In digging into how these are represented internally, I found jq yet again to be invaluable in parsing out info from the...
read postCAP, CORS and custom headers
A colleague asked me if I could add CORS support to a service I was running, built with the SAP Cloud Application Programming Model (CAP). CAP already has some basic support for CORS, so I dug in....
read postTest drive Joule's generative AI features in SAP Build Code now!
TL;DR - SAP Build Code is GA, and for a limited time (1 month, starting now) you can test drive the generative AI features of Joule in SAP Build Code. Introduction This week, SAP Build Code is GA:...
read postCurating a collection of jq functions
I read a very interesting article DuckDB as the New jq today, plus an equally engaging conversation in the Lobsters thread about it. In the article the author Paul wants to summarise Go repos by...
read postISO content for common CAP types
There's an NPM package that provides default content based on the ISO specifications for CAP common types for countries, languages, currencies and timezones. In this post I explore what that package...
read postQuick conversion of multiple values using with_entries in jq
This blog post demonstrates how powerful the combination of jq's to_entries and from_entries can be, and show how with_entries is a great extension of that. I pulled some stats from the YouTube Data...
read postOpening files from the terminal in BAS dev spaces
In the comments to episode 4 of our back to basics series of live stream episodes on CAP, on the Hands-on SAP Dev show, there was a question on my use of code in VS Code, which, when invoked in the...
read postSuccessful double CodeJam in Wroclaw and Warsaw
I'm at Warsaw airport on my journey home after a great few days in Poland. My first flight is already delayed so I have a bit of time at the gate to write up some notes. I arrived in Wroclaw, in the...
read postGhost cratch fitted
My narrowboat has outside space at both ends. At the bow, there's the well deck. At the stern there's a large open space, it being a cruiser style design. Neither of these spaces have been covered,...
read postExploring codespaces as temporary dev containers
Codespaces seem to be at the intersection of a number of things I'm interested in, including containers in general, dev containers in particular, ephemeral environments, the command line, thin clients...
read postAccuracy and precision in language
If I suggest that an alternative title for this could be "Blog post, not blog!" you'll get a good idea of what this is about. Plus there's a bonus bit on how blogs, blog posts and feeds...
read postDeveloping CAP in containers - three ways
On Friday last week we had the first Hands-on SAP Dev live stream of 2024, and it was the first episode in a new "back to basics" series on the SAP Cloud Application Programming Model (or...
read postBattlestation 2024
On Lobsters there's a new 2024 thread on battlestations where folks share pics of their desk setups. So I thought I'd share a pic of mine. It's in the office space on the narrowboat that you can see...
read postA simple jq REPL with tmux, bash, vim and entr
In this quick post I show a simple JSON dataset explorer that gives me a multi-line filter editor. When it comes to exploring and processing JSON data, jq is my goto language. And for exploring, I...
read postUsing the docker CLI in a container on macOS
In this post I explain what I've done to be able to use the Docker client CLI from within a container on my macOS device. Dev containers I use dev containers everywhere. I hardly ever work outside of...
read postFrom Twitter to Mastodon
I'm moving off X (Twitter) at the end of this year. I've been thinking about doing it for some time, and while it's fairly arbitrary, I decided that the end of 2023 would be the end of my activities...
read postTmux plugin development with a local repo
This weekend I wrote a simple Tmux plugin, tmux-focus-status, mostly to learn how to do it, but also to modularise my Tmux configuration (perhaps organising chunks of configuration into plugins is a...
read postTIL - Two Tmux Plugin Manager features
I'm revisiting my working environment setup and configuration, which comprises, at its core, Bash, (Neo)vim and Tmux. This is essentially my IDE, or, to use a term I learned from TJ DeVries, my...
read postSolving the SAP TechEd Easter Egg on the Web
If you're at SAP TechEd 2023 in Bengaluru, India you may have seen a little Easter Egg in the form of some Node.js code. If you've seen it and are curious about it, and want to execute it but don't...
read postDevtoberfest - the best developer prep for SAP TechEd
Devtoberfest 2023 kicked off today, with a wealth of live sessions. Read on to find out why I think Devtoberfest is a great way for developers to get themselves ready for SAP TechEd. The Developer...
read postBash shell expansion inside double quotes
In the context of this month's SAP Developer Challenge on APIs, some participants working through today's task have tripped up on a Bash feature, a feature which is one of a family of features...
read postOData query operations and URL encoding the system query options with curl
You can use curl to send OData query operations with system query options that contain whitespace, and have it URL encode that whitespace for you. We're running an SAP Developer Challenge this month,...
read postCuring my stove aboard the narrowboat
It's been a few weeks since I took possession of my narrowboat and it's been pretty hot and humid the whole time. Today was the first day where it felt noticeably cooler, so I took the opportunity to...
read postMercia Marina to Shobnall Fields and Burton-on-Trent
After three days in Mercia Marina on a visitor mooring, it was time to leave. I must say that I was impressed with the marina - the facilities, the layout, and the staff. I'll be visiting again in...
read postResources for navigating the canal network
My good friend Sascha asked how folks navigate the canal network, given that Google Maps lacks directional detail. I thought this would be a great topic for a short post. Thanks Sascha! These are the...
read postOil change and a visit to Mercia Marina
Today was the day for the first service on the Barrus Shire 50 engine and gearbox. Specifically, the gearbox oil needs to be changed after 25 hours. While I'd participated in a great course at the...
read postSAP CodeJam report - service integration with CAP in Guetersloh, DE
I'm on the train back to Duesseldorf on an early Saturday morning, after another successful outing of our SAP CodeJam content that takes participants through the ins and outs of service integration...
read postSelecting the related endpoints from a GitHub API response using jq's with_entries
I often find myself searching for the related API endpoints for any given chunk of data returned from a call to the GitHub REST API. Let's take an issue as an example, one related to SAP's Open...
read postSAP CodeJam on Service Integration with CAP in Brescia
The SAP CodeJam programme continues apace. Yesterday I ran a CodeJam in Brescia, Italy, on the topic of service integration with CAP, the SAP Cloud Application Programming Model. Here's a quick...
read postLiving on a narrowboat - layout details of the stern
Previous post in this series: Living on a narrowboat - the stove as the heart of the home. In the first post in this series, I'm moving onto a narrowboat, I showed an image depicting the design of my...
read postImproving my interactive jq workflow with ijq, bash and tmux
I'm a big fan of ijq and how it allows me to explore JSON data interactively with jq expressions. With a small script I have improved my workflow by being able to capture the jq expression from ijq...
read postMore on the comma as generator, and streaming with select in jq
In the context of writing a short jq script to turn a JSON representation of an OData entity set into a set of CSV records, I came across something in jq that reminded me of something I'd discovered...
read postDouble SAP BTP goodness in Isernhagen
I'm on my way home from a great double event that took place this week at Inwerken AG in Isernhagen, just outside of Hannover. The overarching theme was the SAP Business Technology Platform. On Thu 13...
read postRecognising patterns and embracing the stream
I've been listening to discussions on Conor Hoekstra's Array Cast podcast and ADSP: The Podcast and watching some of the content on his YouTube channel, all of which I can highly recommend. While I...
read postLearning from community solutions on Exercism - part 3
In this post I continue to dwell on small details in the jq solutions to Exercism exercises. It follows on roughly from parts 1 and 2. Remote Control Car exercise I was just checking through my...
read postLiving on a narrowboat - the stove as the heart of the home
Previous post in this series: Living on a narrowboat - embracing constraints. In Living on a narrowboat - embracing constraints I briefly mentioned the stove I'm getting. This post is about choosing...
read postLearning from community solutions on Exercism - part 2
In response to the first part of this series, in relation to the rabbit hole in the Vehicle Purchase exercise, Mattias Wadman kindly shared some variants using generators, which I'll reproduce...
read postLearning from community solutions on Exercism - part 1
There's a relatively new jq track on Exercism, and I've been working through some of the exercises. There are at least a couple of features that appeal to me; one is the ability to easily write and...
read postSAP community memories
This year, SAP is celebrating 20 years of the web-based SAP Community platform. Happy anniversary! I thought I'd contribute to these celebrations with some memories of my own. Recently my good old...
read postA deep dive into OData and CDS annotations
In 2022 on our SAP Developers YouTube channel, I ran a series of live streams on the Hands-on SAP Dev show, where we went back to basics on OData. You can watch all of the episodes via this playlist:...
read postSAP CodeJam on the btp CLI and APIs in Heilbronn
The Developer Advocates are ramping up CodeJams this year. Following on from my visit to Utrecht to deliver a CodeJam on service integration with CAP, I was in Heilbronn last week to deliver another...
read postSAP CodeJam on Service Integration with CAP in Utrecht
Yesterday I ran an SAP CodeJam in Utrecht, in The Netherlands, on "Service Integration with the SAP Cloud Application Programming Model" (CAP), and I think it's fair to say it was a great...
read postLiving on a narrowboat - embracing constraints
Previous post in this series: Working from a narrowboat - Internet connectivity. It's no secret that a narrowboat is smaller than the vast majority of land-based homes (or offices for that matter)....
read postWorking from a narrowboat - Internet connectivity
Previous post in this series: I'm moving onto a narrowboat. Since publishing the first post about my plans to live on and work from a narrowboat (see I'm moving onto a narrowboat), I've had some...
read postI'm moving onto a narrowboat
I'm having a narrowboat built and am going to live on it and work from it. This post has been a long time coming, and the arrival of the new year has prompted me to start writing about it. I made the...
read postLearning from exploring a question on jq
In this post I explore different ways of achieving a simple goal in reformulating some JSON, with jq, and explain my thinking as I go. Occasionally I browse the Newest 'jq' questions on Stack Overflow...
read postArray push with autovivification in jq
I wanted to make a note to self about this. I'm using Advent of Code for an opportunity to practise and learn more about jq, and in Day 7: No Space Left On Device I think I need a way of appending...
read postExtracting blog post dates from URLs with jq
I had a JSON array of objects from a list of GitHub repo issues. Each object contained a blog post URL and a title. The URL had the post date embedded in the path, and I wanted to sort them all based...
read postSome notes on modular JSON Schema definitions
Here are a few rambling notes-to-self on understanding how a modular JSON Schema definition might be constructed. I've recently become acquainted with JSON Schema through the BTP Setup Automator...
read postMore Untappd data explorations with jq - my top ranking beer types (part 3)
This is a continuation of part 2 which you should read first. Part 2 finished with an array of category objects, each containing all the checkin ratings for that category, albeit in string form, with...
read postMore Untappd data explorations with jq - my top ranking beer types (part 2)
This is a continuation of part 1 which you should read first. Part 1 finished with a count and list of categories of beer (IPA, Bock, Belgian Tripel, etc), produced from some jq in untappd.jq that...
read postStop asking for slides in advance
I'm giving a talk next month and was asked by the organiser to send my slides to them no later than two weeks before the event. Further to my tweet on the subject, I decided to write a quick post to...
read postMore Untappd data explorations with jq - my top ranking beer types (part 1)
I've been exploring my Untappd data a bit more since analysing my top brewery countries, this time to see if my average ratings indicated anything about my preferred beer types. Here's what I've done...
read postUntappd data with jq - my top brewery countries
In this short post I explore my Untappd checkin data with jq, because it's a nice data set to practise my limited filtering fu upon, and also to get my blogging flowing again. I'm an Untappd...
read postUnderstanding jq's SQL style operators JOIN and INDEX
In this post I explore a couple of new (to me) operators in jq's arsenal: JOIN and INDEX, based on an answer to a question that I came across on Stack Overflow. The answer was in response to a...
read postSumming and grouping values with jq
Here's yet another note-to-self on using jq, this time to transform a flat list of order totals and dates into a summary of total order values by year. In doing some research for an upcoming live...
read postReshaping data values using jq's with_entries
Receipt of a JSON file containing valid tags for tutorial metadata gave me the perfect opportunity to explore it and learn a bit more jq in the process. For each of our tutorials in SAP's Tutorial...
read postMultiple level filters in jq
Here's another note-to-self on using jq to shape JSON representations of OData to match what's returned using system query options. Thsi time it's all filtering at two levels. In the Back to basics:...
read postProducts by supplier in OData and jq
This is more of a note-to-self. I'm enjoying comparing resource requests in OData with the equivalent shaping with jq. Here's a simple example. With the Northwind OData v4 service there are Products...
read postExploring JSON with interactive jq
I often use ijq, or "interactive jq", to explore JSON, and also to improve my jq fu, because it gives me immediate visual feedback. Here's an example. There's a wrapper around jq called ijq...
read postJSON object values into CSV with jq
I wanted to grab a CSV version of a JSON representation of an entityset in the Northwind OData service. Here's how I converted the JSON structure into CSV with jq, and along the way, I talk about...
read postExploring GitHub repo name distribution with jq
I wanted a brief rundown of the name prefixes for repositories in the SAP-samples organisation on GitHub. With the gh CLI it was easy to grab the names, and gave me the opportunity to practise a bit...
read postConverting strings to objects with jq
In preparing some data for another upcoming blog post (now published: Exploring GitHub repo name distribution with jq), I needed to convert a list of fully qualified GitHub repository names into a...
read postSome thoughts on jq and statelessness
I came across a great article via lobsters recently: Introducing zq: an Easier (and Faster) Alternative to jq. I posted some brief thoughts on it over on the lobsters thread, and in the spirit of...
read postBash notes 3
Another Exercism Bash track exercise, another opportunity to learn from the community solutions. This time I came across a few nice Bash language features that I'd probably known about but forgotten...
read postA classic example of yak shaving, and some stream editing
It's not often that I'm relaxed enough to be aware of how my mind is (or isn't) working, and what it's doing. So it was a surprise when I realised that what I've been doing for the past 15 minutes is...
read postBash notes 2
I looked at a couple of more solutions to another Exercism exercise in the Bash track - Scrabble Score. I was reminded of one particular feature of the case statement, and another solution was rather...
read postBash notes
Here are a few things I learned, or re-learned, while reading through a neat solution to a Bash track exercise in Exercism. I completed a very basic solution to the Proverb exercise in the Bash track...
read postUnderstanding jq's reduce function
It took me a bit of time to get my head around jq's reduce function. In this post I show how it relates to the equivalent function in JavaScript, which helped me understand it better, and might help...
read postSetting up my own Cloud Foundry
It was more difficult that I expected to get a local Cloud Foundry (CF) up and running, but I got there in the end. Here's a brief description of my journey. CF on Kubernetes in Docker, on my...
read postExercism and jq
I wanted to see how a jq track might work in Exercism. Here's what I tried out this morning. Exercism is a great resource for learning and practising languages. I've dabbled in a couple of tracks and...
read postHow I got involved in the SAP community
Here's a quick summary of how I got involved in the SAP community, from a discussion thread over there. There's a great discussion going on right now over on the SAP Community in the following...
read postAllowing my intangible core to catch up with the rest of me...
I've been lucky enough to have enjoyed a couple of trips on Queenie in the past few years, ambling up and down the Bridgewater Canal in the spring. The days and nights spent just, well, being, have...
read postTruncation and neat terminal output
I learned about the psFormat Docker configuration option recently, and it got me thinking about how I strive for neat terminal output. I'm unashamedly a fan of the terminal, of the command line...
read postControlling Chrome from the CLI
Here's how I used the chrome-cli tool to help me open up URLs in different tabs in a new Chrome window. From the command line. In analysing various GitHub issues and pull requests recently, I needed...
read postSetting up hadolint - a Dockerfile linter
Having something to help me write better Dockerfiles is useful. Here's what I did to set up a Dockerfile linter in my development environment. I'm writing more Dockerfiles, not least because I'm...
read postExploring fff part 2 - get_ls_colors
Continuing to read and learn from the source code to fff - this time, the getls_colors function. In part 1 I took a first look at fff, "a simple file manager written in Bash", focusing on...
read postEmbracing jq and JSON
Finding objects in a complex JSON structure isn't as scary as I thought with jq. My friend and colleague Rui was asking today about finding directory information for a given global account on SAP's...
read postSourcing vs executing in Bash
Checking the value of $0 allows me to source rather than execute an entire script. Today I wrote a script checksubmissions to check submitted pull requests in the SAP-samples/devtoberfest-2021 repo...
read postUsing functions more
Using functions more in my shell seems to bring benefits. Here's an example. Bash functions seem to sit in a sweet spot between aliases and full blown scripts. I've defined a number of functions in...
read postImproving shell fu with practice
Practising in the shell helps me improve and exposes me to new knowledge. Here's an example. At the end of the working day I'm tired, but there's often just enough energy left in my brain to explore...
read postExploring fff part 1 - main
Here's what I learned from starting to read the source code to fff - in particular, the main function. fff is "a simple file manager written in Bash". As I'm always on the lookout to learn...
read postLearning by rewriting - bash, jq and fzf details
One of the ways I learn is by reading and sometimes rewriting other people's scripts. Here I learn more about jq by rewriting a friend's password CLI script. My friend Christian Drumm published a nice...
read postToday's TIL trio
Here are three mini TILs from today, on minimum JSON, using tee, and netstat options. I enjoy finding time to catch up on reading blog posts and watching videos in my queue, but the time is often...
read postSession switching with the tmux menu
Here's a way to get a simple session switcher in tmux using a popup menu. I was looking at Waylon Walker's tmux fzf session jumper recently, and really liked it, so much so that I dug into the...
read posttmux output formatting
Here's what I learned today about FORMATS in tmux output. This week I came across Waylon Walker who is doing some lovely learning-and-sharing on the topic of tmux, the terminal multiplexer. He has a...
read postReopening pull requests and GITHUB_ACTOR
Today I learned that the GITHUB_ACTOR on a re-opened pull request reflects the person re-opening it, not the original creator. Over on the Community Guidelines content for SAP's Open Documentation...
read postUnix tooling - join, don't extend
Reading a paper from 1984 has helped crystallise an important axiom in Unix tool design, so much so that I found myself referring to it today when scripting. Rob Pike and Brian Kernighan authored a...
read postEarly thoughts on Warp
Here are some very early thoughts on Warp, the "pro terminal designed for everyday use". Today I was pointed in Warp's direction on Twitter by Christian Pfisterer and Christian Drumm. To...
read postThe APC SMT750IC UPS works with the Synology NAS DS1621+
I've successfully configured this setup, and the USB connection from the UPS to the NAS does indeed work to tell the NAS to shut down. TL;DR - My Synology DS1621+ NAS recognises the USB-connected APC...
read postRemote access to Docker on my Synology NAS
Here's what I did to enable remote access to the Docker install on my Synology NAS. This post describes the steps I took to set up remote access to Docker running on my NAS, in the simplest and...
read postAdding a drive to my Synology NAS
A brief summary of how things went adding a drive to my Synology DS1621+ NAS. Earlier this month I took delivery of my first Network Attached Storage (NAS) device - a Synology DS1621+. It has 6 drive...
read postEquality in tech
I support equality in tech, and so should you. This should go without saying, but alas, we're not in an ideal world. Equality in tech should be the backbone, the basis, upon which we run our industry....
read postSupporting developers with sponsorship
I've started to use the sponsors facility on GitHub to support developers. Here's my thinking. There are many folks that I observe giving to the community. This giving takes many forms, such as...
read postNotes on Markdown linting - part 2
More on Markdown linting, this time in the context of GitHub Actions. Yesterday I wrote up some initial notes on my foray into Markdown linting. Today I continue my journey of learning and discovery...
read postNotes on Markdown linting - part 1
Here's what I found out when I started to look into linting Markdown content. Thanks to some great direction and enlightenment from my colleague Tobias, I found myself getting my brain around Markdown...
read postSolving mysterious unrendered markdown headings
I finally spent some time getting to the bottom of why some headings in my markdown content weren't getting rendered properly. I've noticed over the years that occasionally the rendered version of my...
read postUnpacking Bash shell tips from a GitHub Actions workflow
Someone shared a GitHub Actions workflow step which was written to find out some pull request info, but I thought even the first couple of shell lines, using IFS and awk, were worth staring at for a...
read postGitHub Actions workflow browser
I wrote a simple workflow browser to help me refer to previous workflow definitions while I'm writing a new one, as I'm still learning the syntax and techniques. With a programming or definition...
read postProducing JSON with jq for appending issue titles
I learned how to use jq to produce JSON, while writing a script to enhance my Thinking Aloud journal entry titles. In my Thinking Aloud journal, the entries are issues in a GitHub repository. To...
read postMainframes, SDSF and GitHub Actions
GitHub Actions workflows, mainframes and SDSF. I can't get the combination out of my head. I started my computing adventure at the age of 11 on a minicomputer (see Computer Unit 1979) and then IBM...
read postNew tmux panes and windows in the right directory
I finally got round to looking into how to be in the "right" directory when I create a new window or pane in tmux. Here's what I did. I've been starting multiple tmux sessions, one for each...
read postDeeper connections to everyday tools
With some things, ignorance is not bliss. There are entire features of the tools I use every day that I know little about, and I want to change that. Something mildly profound emerged from the...
read postTwo-phase video uploads with YouTube API and curl
TIL how to use the YouTube API to upload a video, with curl, using a two-phase approach. I'm becoming more familiar with the YouTube API surface area, and a task recently required me to look into an...
read postLa Pavoni maintenance successful
I've successfully carried out maintenance on my La Pavoni espresso machine, and you can too. Here are some notes that may help. I'd been slightly apprehensive about replacing the gaskets on my La...
read postMass deletion of GitHub Actions workflow runs
Implementing a simple cleanup script for workflow runs, using gh, jq, fzf and the GitHub API Yesterday, while thinking aloud, I was wondering how best to mass-delete logs from GitHub Actions workflow...
read postA new journal experiment - Thinking Aloud
I'm trying out a new way of sharing thoughts in a GitHub issues based journal style blog called Thinking Aloud. TL;DR - My Thinking Aloud repo is where I am experimenting with journalling via GitHub...
read postAborting a script with parameter expansion
Use the :? form of shell parameter expansion to abort a script if a required parameter value is not set. I'm attracted to the somewhat arcane details of Bash shell expansions and it was while looking...
read postfzf - the basics part 2 - search results
Here’s more of what I learned from reading the first part of the fzf README and paying attention. Now I have a better setup and understanding of the basics and how to control the appearance, it's time...
read postThoughts on video content
Here are some thoughts on video content - form, length, frequency and more, especially in a learning and sharing context, and specificially in a developer advocate content. Just now my good friend...
read postfzf - the basics part 1 - layout
Here's what I learned from reading the first part of the fzf README and paying attention. Now I have a better setup and understanding of the basics, and in particular how to control the appearance. In...
read postDo less and do it better
In 2021 I want to consolidate and improve upon some skills I already have, rather than add more. Here's what I mean, and how I got inspired. In October last year Samir Talwar tweeted something simple...
read postColumnar layout with AWK
Here's a breakdown of a simple AWK script I wrote to format values into neatly aligned columns (Jump to the end for a couple of updates, thanks gioele and oh5nxo!) I'm organising my GitHub...
read postWaiting for jobs, and the concept of the shell
Bash's 'wait' builtin helps me understand Bash scripting as a language I was browsing the source code of the main script in the bash-http-monitoring project that had been shared on a social news site...
read postImplicit values in Bash for loop construct
Bash's 'for loop' construct can use implicit values - who knew? Not me ... I was browsing a Superuser question and answer this morning and the code in the accepted answer looked like this: set --...
read postThe myriad meanings of pwd in Unix systems
Last week I ran a poll on Twitter to see what people considered with respect to the meaning of 'pwd' in Unix and Linux systems. The results were varied, for perhaps good reason. At the end of Oct 2020...
read postComputer Unit 1979
I've transcribed an article about the arrival of the "Computer Unit" - a PDP-11/34 - at my school in 1979. The unit became the early focus of a fascination with computing that's never left...
read postThe subtle art of quoting newline characters
Putting a backslash at the end of a line in the shell (or in a shell script) means "continued on the next line!", right? Well yes, but it's more subtle, more simple and more beautifully...
read postCase modification operators in parameter substitution
Today I learned that in addition to the usual ways of uppercasing strings, Bash 4 brought the addition of case modification operators to the parameter substitution family. Spending a pleasant coffee...
read postMID$ and shell parameter expansion
While perhaps misunderstood and potentially confusing due to the different options, the ability to access and manipulate values in variables in Bash is rich and varied. I've just set up Exercism on...
read postUnderstanding declare
I've been looking into declare, and also how it compares to typeset and local. It turns out that there's a lot to know. After working my way through the small ix script in Mr Rob's dotfiles, writing...
read postDesnowballification with set -o errexit
I've started to use set -o errexit at the start of my scripts to make them more robust. There comes a time when you move from just hacking lines of shell script together into a file, to recognising...
read postImproving my shell scripting
I'm using a style guide along with the shellcheck and shfmt tools to help me improve the quality and consistency of my shell scripts. I'm doubling down on shell scripting, in particular Bash shell...
read postcurl and multipart/form-data
In reading through Mr Rob's ix script, I discovered something about curl that I hadn't known about. The script's key line is this: url=$(curl -s -F 'f:1=<-' http://ix.io) My gaze was immediately...
read postChecking a command is available before use
There's one final nugget in Mr Rob's ix script that I wanted to pick out. It's not earth shattering but still useful to have seen. At the end of the script, the URL generated from the newly created...
read postUsing exec to jump
In Mr Rob's dotfiles repo (see A new learning source for shell scripting) there's a treasure trove of content that is very pleasant to peruse. In one of his streams I saw him use ix and thereby...
read postA new learning source for shell scripting
Recently I discovered Mr Rob (and yes, I'll admit, it took me a day or so to realise the significance of 'rwx' in his website, and names on Twitch and YouTube). He has lots of experience and teaches...
read postShell parameter expansion with :+ is useful
Use the shell parameter expansion form :+ for expanding optional values I've been increasing my Bash scripting activities recently, not least in relation to some live stream episodes relating to...
read postReducing writing friction
I've created a simple script for myself to reduce writing friction. I saw a tweet from Simon Willison earlier this week pointing to Matt Webb's 15 rules for blogging, and my current streak. I decided...
read postYou can mask sensitive hostnames with wildcards and host aliases
The HOSTALIASES feature works well when combined with wildcard host definitions in SSH config I run my own DNS locally via Pi-hole, but I also like to have SSH configuration to specify various options...
read postThe open square bracket [ is an executable
In a shell script, the [ symbol is not syntax, it's an executable In my live stream episode this morning I added to a function so that it looked like this: getservicekey () { local instance=${1} ...
read postWhy we have /bin/ and /usr/bin/
There's a simple, historic reason why we have /bin/ and /usr/bin/ I'd half wondered for a while why many of the directories in the root filesystem (/) of a Linux installation are also to be found in...
read postString.prototype.replace() can take a function
You can use a function to dynamically provide the replacement value in a replace operation I was pondering different approaches to solving the Codewars kata Simple string reversal, and having...
read postcontinue-on-error can prevent a job step failure causing an action failure
Use continue-on-error: true in a GitHub Actions job spec to prevent failures from being flagged when a job step fails. For me, high (non-zero) return codes don't always necessarily denote failure;...
read postgit diff can emit different exit codes
You can combine git diff exit codes and the POSIX ! operator to control GitHub Actions job step execution based on git changes. When defining a job step in GitHub Actions, you can specify a condition...
read postIn an mta.yaml file you can use the service-name parameter to point to an existing resource
In mta.yaml files you can use the service-name parameter to point to an existing service instance with a different name than the resource. When the contents of a multi-target application file file...
read postRemoving the knob on a La Pavoni steam valve
This post documents how I went about removing the knob from the shaft of the steam valve on my La Pavoni lever coffee machine. I've had my La Pavoni PL lever espresso coffee machine for just over a...
read postRemote mount setup on the Raspberry Pi
This post documents what I did to set up mount points for, and connect to, an Apple Airport Time Capsule here on my homelab network and also my Google Drive. My interest in Raspberry Pis has increased...
read postInitial Pi configuration via Ansible
In the previous post we identified the freshly booted Pis on the network; now it's time to perform some initial configuration, using Ansible. This is a post in the "Brambleweeny Cluster...
read postCode at Home episodes
This post summarises the episodes streamed live (and available as recordings) on YouTube. Find out more about the Code at Home initiative in the main blog post: Let's learn to "Code at...
read postLet's learn to "Code at Home"
This post provides information on the simple Code at Home initiative - what it is and what you need to join in. Episodes on Mondays and Fridays at 15:30 UK time. Last episode in this first series...
read postStarting out with Raspberry Pi experiments
This post provides some background to why I've started to experiment with Raspberry Pis, and to list the hardware components that I bought and set up with my son Joseph over the Christmas...
read postPreparing the OS image
This post describes how I prepared the base OS image for each of the Raspberry Pis in my "Brambleweeny" cluster. This is a post in the "Brambleweeny Cluster Experiments" series of...
read postFinding the Pis on the network
Now that we have our Pis booted and up and running on the network, we need to find them to configure them further. This is a post in the "Brambleweeny Cluster Experiments" series of blog...
read postBrambleweeny Cluster Experiments
This is where the individual posts in the "Brambleweeny Cluster Experiments" series of blog posts are listed, in order. I'm experimenting with a cluster of Raspberry Pi computers, and...
read postCAP is important because it's not important
In this post, I consider what CAP really is, what it gives us, and why we should consider it a fundamental piece of the puzzle in the cloud context and beyond. Update (08 Nov): This blog post is...
read postShell power and simplicity
Sometimes we overlook the power of the shell, because the terminal context in which it's used is seen as outdated. That's far from the truth; in fact I think it would be a shame to lose sight of some...
read postNew podcast - Tech Aloud
I've created a new podcast called "Tech Aloud", where I read out loud tech articles and blog posts, so you can consume them while on the go. There's such a rich seam of material out there...
read postHitch Hiker's style in Sea of Sorrows
Is there a link between a scene in "Alien: Sea of Sorrows" and a scene in part 2 of The Hitch Hiker's Guide To The Galaxy? I think so, or perhaps I hope so. I'm listening to and rather...
read postWe can do better than 'polynimbus'
My attention was drawn to an interesting blog post over on the SAP Community: "Are you polynimbus". The word "polynimbus" jumped out at me, and not particularly in a good way....
read postThe Observer's Book of JS Style
In the 1970's I had a book which I cherished: The Observer's Book of Commercial Vehicles. It was pocket-sized & well thumbed, and listed various vans and trucks. I could identify a Volvo F88...
read postDavid Edward Adams
02 Sep 1944 - 11 Jul 2019 On the evening of Thursday 11 July 2019, after a long and latterly very painful struggle, dad passed away in his sleep. We were in the room at Park Hills Nursing Home with...
read postFirst thoughts on the 2019 Stack Overflow Developer Survey results
I've just finished perusing this year's Stack Overflow Developer Survey results and have some initial observations. Nothing earth shattering, and of course you will likely have other observations....
read postES6, reduce and pipe
In learning about functional programming, one thing that's worked for me is to take my time, and not rush over fundamental concepts. In fact, like a good beer or whisky, a fundamental concept is...
read postVim, Markdown and writing
Having got my personal space on the Web in order with some housekeeping this weekend, I can now turn my attention to my workflow and tools, where I intend to rebuild some skills in core technologies....
read postHousekeeping
Over the years since I've been blogging, I've used various systems (Blosxom, Moveable Type, WordPress, and latterly Ghost) which have all had their great features. In addition, I've been using a...
read postMy take on Wired's Google & URLs article
Something is surfacing that makes me rather uncomfortable. Google is rethinking the idea of the URL I saw a few tweets this week, including this one from Jon Udell which pointed me to a tweet and...
read postMonday morning thoughts: OData
In this post, I think about OData, in particular where it came from and why it looks and acts like it does. I also consider why I think it was a good protocol for an organisation like SAP to...
read postSAP CodeTalk sessions
My friend and colleague Ian Thain organises and hosts the excellent SAP CodeTalk series, that's been going for over five years now, with more than 240 episodes. Nice work, Ian! I've been very honoured...
read postCollaboration tools
If you're wanting to collaborate with me, on a document or other content, please understand I'll only be able to participate if appropriate tools are used. There are some amazing online tools that...
read postBalancing features with simplicity
I was browsing forum-based conversations on ChromeOS this evening and came across yet another thread that started along these lines: "I've just bought a Chromebook. How do I use Word on...
read postBecoming an SAP Mentor Alumnus
It was in 2009 that I was honoured to be recognised as an SAP Mentor for my contributions to the SAP community at large, co-creating the original SAP Developer Network back in 2003 (which, via the SAP...
read postThoughts on what's next for the SAP Community
This evening I watched a short video, What's Next for SAP Community?, with Björn Goerke, Chief Technology Officer and President of SAP Cloud Platform, and Thomas Grassl, Head of Developer Relations,...
read postApps Script - Privacy Policy
This is the Privacy Policy for the Apps Scripts made available for use. For example, one such script is SheetAsJSON, described in this blog post: SheetAsJSON - Google Spreadsheet Data as JSON. This...
read postComing Home
I first encountered SAP in 1987, where, fresh out of university and following an induction course for new graduates at Esso Petroleum in London, I started work in the Database Support Group, which...
read postDiscovering SCP Workflow
The SAP Cloud Platform Workflow service is a key component in the next generation of enterprise solutions - allowing us to coordinate processes and activities across cloud and on-premise systems. It's...
read postConsumption-based SCP Pricing - Initial Thoughts
Back in August 2017 I made some observations on SAP Cloud Platform Pricing. I had been somewhat underwhelmed by the clarity and flexibility, particularly for smaller projects and businesses. This week...
read postThings I do to make my work life better
IT and consulting. Two words that can conjur up thoughts of magic, awe and wonder. But like any other business, it has its challenges and you need to have your wits about you to survive and grow. Here...
read postSCP Business Rules Roadmap - 5 Observations
I discovered the relatively new Business Rules service on the SAP Cloud Platform (SCP) through recent SAP Community posts from Christian Loos, and from Murali Shanmugham. If you haven't read Murali's...
read postSAP Cloud Platform Pricing
I'm looking into the pricing for SAP Cloud Platform services and, well to be honest, not particularly liking what I see. Recently I've been pleasantly encouraged by new services such as Workflow and...
read postFix Blink
If you want to get rid of the rather distracting blinking text ("Supported browser versions") in the timesheet system, use this bookmarklet. Assuming you're using the Chrome browser (if you...
read postMeeting Request Details
Meetings are a fact of business life. Some are necessary, some less so. But in all cases, meetings can be improved by having a clear understanding of the intended discussion topics and the desired...
read postGoogle Cloud Functions + Sheets + Apps Script + Actions On Google = WIN
Sometimes, a perfect storm of technology comes along. I'd recently been teaching myself about Google Cloud Functions, and had created a function to service our Untappd beer searches in the #craftbeer...
read postYABP - Yet Another Blogging Platform
I've been blogging since the end of 2000. In that time, I've moved platform a few times. I've gone from Blogger/Pyra back in the beginning, through Moveable Type, the wonderful Blosxom, and more,...
read postBest practices for mobile reporting
To put together a mobile reporting solution, there's a lot to consider. In this post, we show you how to start off and remain on the right track to deliver a solution that really works for your...
read postThe beauty of recursion and list machinery
There are beautiful patterns inherent in the use of recursion that I've seen in my attempts to reboot my brain with a new, more functionally focused way of thinking about programming. This post...
read postReaching out to the new new kingmakers
Here's an insider's view from last week’s SAP Developer Advisory Board two day face-to-face meeting in Miami, USA. Here, the message was loud and clear: SAP's commitment to connect with developers...
read postDebugging SAP Fiori apps - the fifth "D"
It's all very well designing and building a delightful Fiori app. But what about the long tail - supporting that app through its lifetime, with fixes and changes that come along? There's a fifth...
read postExcluding with vim's wildignore
I found it more difficult than usual to get the wildignore setting working properly in vim, so I thought I'd document it here. The wildignore setting is used in conjunction with the path and other...
read postBetter collaboration through chemistry
Well actually it's not chemistry but I couldn't resist an oblique reference to a floppy disk album cover from 1996 (I'll leave you to work out to what I'm referring). I'm working alongside a client,...
read postF3C Parts 9 and 10 - Functors
FunFunFunction Videos: Functors - FunFunFunction #10 and Functors: I was WRONG! - FunFunFunction #11 (yes, the sequence numbers are a bit mixed up, don't worry though) (This post is part of the F3C...
read postF3C Part 8 - Promises
FunFunFunction Video: Promises - Part 8 of Functional Programming in JavaScript (This post is part of the F3C series) This video episode was recorded over a year ago. Since that time, a native...
read postF3C Part 7 - Recursion
FunFunFunction Video: Recursion - Part 7 of Functional Programming in JavaScript (This post is part of the F3C series) "Recursion is when a function calls itself, until it doesn't" --...
read postF3C Part 6 - Currying
FunFunFunction Video: Currying - Part 6 of Functional Programming in JavaScript (This post is part of the F3C series) The "what" part of currying is quite straightforward. The...
read postF3C - A FunFunFunction Companion Series
I came across a great YouTube video series on functional programming. It's by Mattias P Johansson ("MPJ" for short), whose YouTube channel is funfunfunction. Before you do anything else,...
read postF3C Part 5 - Closures
FunFunFunction Video: Closures - Part 5 of Functional Programming in JavaScript (This post is part of the F3C series) Functions have a signature (the parameters) and the body. The body is defined in a...
read postF3C Part 4 - Reduce advanced
FunFunFunction Video: Reduce advanced - Part 4 of Functional Programming in JavaScript (This post is part of the F3C series) Reduce is powerful, much more than its siblings. You can use it not only to...
read postF3C Part 3 - Reduce basics
FunFunFunction Video: Reduce basics - Part 4 of Functional Programming in JavaScript (This post is part of the F3C series) Higher-order functions map, filter and reject perform list transformations,...
read postF3C Part 2 - Map
FunFunFunction Video: Map - Part 2 of Functional Programming in JavaScript (This post is part of the F3C series) Moving on from the higher-order function filter in the previous video, another...
read postF3C Part 1 - Higher-order functions
FunFunFunction Video: Higher Order Functions - Part 1 of Functional Programming in JavaScript (This post is part of the F3C series) Functional programming makes you a better programmer because you're...
read postThe Fiori revolution - disruption at its best
SAP Fiori has heralded and enabled a revolution in the User Experience (UX) for enterprises the world over. There's plenty of disruption here that you can harness, disruption that will give you a...
read postCommunity and Collaboration at SAP Inside Track Manchester
Earlier this month, around 40 folks gathered for a two day event in Manchester's Northern Quarter for SAP Inside Track Manchester 2016. Read on to find out more about this event and others like it,...
read postUnderstanding the SAP Fiori Cloud Edition
The SAP Fiori Cloud Edition is upon us. What is it? How does it work, and what benefits does it bring? Find out answers to these questions, and more, in this overview of SAP's offering of Fiori in the...
read postTop 10 misconceptions about Fiori
As SAP Fiori matures as a concept, as a series of apps and as SAP's approach to UX across all its products, so grow the number of misconceptions about what it is, and what it isn't. In this post, I...
read postFOFP 2.1 A look at filter
Part of the Fundamentals of Functional Programming document. Prev: FOFP 1.5 Creating functions We've already seen our first higher-order function, map, in action. A close sibling is filter. filter has...
read postFOFP Fundamentals of functional programming
This document is for me to use during, and to distribute after, a lecture at Manchester's Xaverian College, where I'm very honoured to be able to help introduce some core concepts in functional...
read postFOFP 1.5 Creating functions
Part of the Fundamentals of Functional Programming document. Prev: FOFP 1.4 A different approach with map In our previous example, we defined a helper function square and used it like this: function...
read postFOFP 1.4 A different approach with map
Part of the Fundamentals of Functional Programming document. Prev: FOFP 1.3 Some basic list processing In our second attempt at basic list processing, we used the Array object's push function. There...
read postFOFP 1.3 Some basic list processing
Part of the Fundamentals of Functional Programming document. Prev: FOFP 1.2 Trying things out Let's explore the difference between imperative and functional programming approaches with the simple...
read postFOFP 1.2 Trying things out
Part of the Fundamentals of Functional Programming document. Prev: FOFP 1.1 Introduction To start exploring some of the fundamental concepts of functional programming, you don't need anything more...
read postFOFP 1.1 Introduction
Part of the Fundamentals of Functional Programming document. This document introduces some fundamental building blocks in the functional programming world. A definition Just so we start out on the...
read postLanguage minutiae and learning to SWIM
Further to Enlightenment in action, here's a tiny bit more light that I discovered on my journey up to Newcastle this morning. I solved 4Clojure puzzle 100 (Least Common Multiple) with this code: (fn...
read postFinding a wonderland number
I came across a simple puzzle this evening, on Wonderland Clojure Katas. My brain is half dead from starting work extra early and slogging through the day, but I wanted to include a tiny bit of...
read postEnlightenment in action
One of the ideas that Clojure embraces is this Perlism: It is better to have 100 functions operate on one data structure than 10 functions on 10 data structure This makes a lot of sense. But it also...
read post"fiux2" Week 7 - Build Your Own SAP Fiori App
(See first post in this series — “fiux2″ – The openSAP Fiori Course – 2016 Edition — for links to the other posts). We’re into week 7, the final week of this openSAP course “Build Your Own SAP Fiori...
read post4Clojure Puzzle 66
In my quest to teach myself more Clojure, I'm solving puzzles. Puzzles from websites such as Project Euler and Advent of Code. More recently I've been plugging away at puzzles on 4Clojure. One of the...
read post"fiux2" Week 6 - Extend SAP Fiori Apps
(See first post in this series — “fiux2″ – The openSAP Fiori Course – 2016 Edition — for links to the other posts). Well we’re on to the penultimate week of learnings, in the midst of the Design...
read post"fiux2" Week 5 - Enhance an SAP Fiori Master Detail App
(See first post in this series — “fiux2″ – The openSAP Fiori Course – 2016 Edition — for links to the other posts). So week 5 came and went rather quickly – perhaps it was the Bank Holiday weekend!...
read postThe SAP Fiori Launchpad as a dashboard for my running KPIs
I'm a hobby runner, and love stats. I've been experimenting with using the SAP Fiori Launchpad to surface some key performance indicators - literally! Read on to find out how I went about it, and how...
read postQuick HCP title hack with the Navigation Manager
One of the great things about the new SAP is that it has embraced open standards and protocols, and is building the UX and UI present and future on HTML5. A by-product of that is the ability to see...
read post"fiux2" Week 4 - Create Your First SAP Fiori App
(See first post in this series — “fiux2″ – The openSAP Fiori Course – 2016 Edition — for links to the other posts). Well we’re pretty much at the half-way point in this course, and it’s going well....
read post"fiux2" Week 3 - Get Ready to Create Your First App
(See first post in this series — “fiux2″ – The openSAP Fiori Course – 2016 Edition — for links to the other posts). It’s around this time of the week that the changeover between each week’s worth of...
read postThe evolution of the SAP community
This week, the new SAP Mentors Advisory Board has been formed, and I am very honoured to have been elected as a member. In this post, I take my own brief look at how the SAP community as a whole has...
read post"fiux2" Week 2 – Design Your First SAP Fiori App
(See first post in this series — “fiux2″ – The openSAP Fiori Course – 2016 Edition — for links to the other posts). Well, the weeks certainly come around fast in these openSAP courses, and so we find...
read post"fiux2" - The openSAP Fiori Course - 2016 Edition
Links to the rest of the series: “fiux2″ Week 2 – Design Your First SAP Fiori App “fiux2″ Week 3 – Get Ready to Create Your First App “fiux2″ Week 4 – Create Your First SAP Fiori App “fiux2″ Week...
read postBuilding blocks of language, structure and thought
As I travel on my path to perhaps what I deem as some sort of enlightenment, back in time via Clojure to one of the great ancestors of language, structure and computational thought (Lisp), I continue...
read postThe future of app building on the SAP HANA Cloud Platform
The SAP HANA Cloud Platform, or HCP for short, is multi-faceted, and you need to realise that now. Here's my take on one particular facet. Read on to find out what that is, and for a link to an...
read postDigital devolution in local authorities - putting people first
In a couple of weeks' time, Bluefin Solutions is running a one day event on delivering digital devolution in local authorities. If you look closely there's a clear user-centric pattern that is...
read postImpromptu JS session at UKISUG15
We’re hearing a lot about Fiori at #UKISUG15 this year, of course. Many of you (perhaps especially those reading this) realise that Fiori is built using the power of HTML5, and specifically with the...
read postSpeaking at SAP TechEd EMEA 2015
I’m looking forward to a packed set of days next week in Barcelona, where SAP TechEd EMEA 2015 is taking place. It’s packed in many ways: so much to share, so much to learn, so many people to meet...
read postCelebrating the engine of the Fiori revolution - the 30UI5 ebook
Last month saw the milestone release of 1.30 of SAP's UI5 toolkit, the engine that is powering the vast majority of the Fiori User Experience (UX) revolution. For SAP TechEd 2015 we're releasing a...
read postMy journey to Clojure
I'm learning Clojure. Slowly, but hopefully surely. Clojure is a Lisp, which I like saying, because it makes me sound as though I know what I'm talking about and that my language experience is as old...
read postGive me a browser, and I'll give you the world
With the cloud, not only are apps and systems going virtual, but also developer workflows. It might seem obvious in hindsight, but a Web-only developer workflow is possible right now, and it works....
read postThe advent of UI5 1.30 and what it means for us
SAP's UI5 toolkit, the main technical foundation for SAP's User Experience (UX) revolution, has reached a milestone release. While 1.30 is just another step up from the previous public release of...
read postCookies
This site uses cookies. If you don’t like that, or don’t understand that, then please: Get. Off. The. Web. If you can’t be bothered to check out how the web works, or can’t be bothered to look up the...
read postBuilding blocks for the future normal
S/4HANA is here. It's now. It's cloud ready, HANA powered, and has an awesome user experience in the form of SAP Fiori. SAP Fiori is powered by the UI5 toolkit. To successfully understand and embrace...
read postThe origin of becoming a fundamental enabler for Fiori
30 Days of UI5 — Day 30 by Sam Yen, Chief Design Officer, SAP Not too long ago, before Fiori was Fiori, SAP had tried several times to refresh the user experience. I’m aware of over 20 different UI...
read postRevisiting the XML Model
30 Days of UI5 — Day 29 by DJ Adams It’s been more than a couple of years since I first had a look at XML data in the context of UI5. In my “Re-presenting my site with SAPUI5” video I used an XML...
read postUI5 Version Info
30 Days of UI5 — Day 28 by DJ Adams Yesterday Peter Müßig from the UI5 team at SAP in Walldorf announced the multi-version capability for SAPUI5. He also documented the details in a post on the SAP...
read postA non-techie PM's view of UI5
30 Days of UI5 — Day 27 by Jon Gregory I’m mid-flight in my first UI5/Gateway project, working with a great team of developers who have all contributed to this 30 Days of UI5 series. As a non-techie...
read postUI5 - looking back and forward
30 Days of UI5 — Day 26 by DJ Adams It was in the spring of 2012 when I wrote this piece about the new kid on the block, SAPUI5: SAPUI5 – The Future direction of SAP UI Development? The fledgling...
read postThe experimental Client operation mode
30 Days of UI5 — Day 25 by DJ Adams A few months ago a preview release of 1.28 was made available. In the blog post that accompanied it, a number of the new features were introduced. Without much...
read postAn introduction to sap.ui.define
30 Days of UI5 — Day 24 by DJ Adams If you’ve followed this series you’ll have come across the OpenUI5 Walkthrough, a “a great multi-step walkthrough of many of the features and practices of UI5...
read postTaming the Resource Model Files
30 Days of UI5 — Day 23 by Nathan Adams UI5’s support for multiple-languages, out of the box (see the post “Multi-language support out of the box – UI5’s pedigree” in this series) is impressive and...
read postMerging lists with UI5
30 Days of UI5 — Day 22 by Chris Choy Whilst recently developing a custom UI5 app with an SAP PI backend, I came across some useful mechanisms. My aim was to merge 2 sets of data from 2 service calls...
read postSpreading the UI5 Message
30 Days of UI5 — Day 21 by DJ Adams Photo by Janina Blaesius If you’re reading this post, or this whole series, it’s very likely that you already know something about UI5. Whether that’s coming from...
read postFragments and Minimum Viable Code
30 Days of UI5 — Day 20 by DJ Adams In an earlier post in this series, MVC – Model View Controller, Minimum Viable Code, I showed how you could write a single-file UI5 app but still embrace and use...
read postA Short UI5 Debugging Journey
30 Days of UI5 — Day 19 by DJ Adams In an earlier post in this series, entitled “The UI5 Support Tool – Help Yourself!“, we looked at the Support Tool, examining the information available in the...
read postMVC - Model View Controller, Minimum Viable Code
30 Days of UI5 — Day 18 by DJ Adams The solid Model View Controller implementation in UI5 forces the separation of concerns. The logical place for models, views and controllers are files, in...
read postUI5 and Fiori - The Story of Open and Free
30 Days of UI5 — Day 17 by John Appleby DJ kindly asked me to write a blog for his 30 days of UI5 series to celebrate version 1.30 of UI5. My immediate reaction was what, me, what do I have to add to...
read postUI5 and Coding Standards
30 Days of UI5 — Day 16 by DJ Adams At one end of the spectrum, coding standards can be regarded as essential. At the other, they’re the subject of many a passionate debate, second perhaps only to...
read postThe UI5 Support Tool - Help Yourself!
30 Days of UI5 — Day 15 by DJ Adams Building anything but the most trivial native apps (that’s web native, of course) is not an easy ride. There are so many factors to get right. Debugging one of...
read postSpeeding up your UI5 app with a Component preload file
30 Days of UI5 — Day 14 by John Murray In this post we’ll be looking at how you can speed up the load times of your UI5 applications by using a Component preload file. Those of you who are familiar...
read postMulti language support out of the box - UI5's pedigree
30 Days of UI5 — Day 13 by DJ Adams I was browsing through the controls that were new with 1.28, using the OpenUI5 SDK’s Explored app’s filter-by-release feature, and came across the Message Page...
read postBase Classes in UI5
30 Days of UI5 — Day 12 by Thilo Seidel Learning your way around UI5 can be hard sometimes. With the new tutorials and improved structure in the developer guide, help on the journey to UI5...
read postHandling Dates with the Date Picker
30 Days of UI5 — Day 10 by James Hale When creating applications, the experiences of the user should be one of the key considerations that drives build and development. One aspect of this is the way...
read postBootstrapping UI5 Locally and in the Cloud
30 Days of UI5 — Day 9 by DJ Adams Like many developers who find themselves building a lot with UI5, I find my working environment is mostly a local one, supplemented by activities in the...
read postUser Notifications with the Message Popover
30 Days of UI5 — Day 8 by by Sean Campbell Giving an end user good feedback regarding their interaction with the application or the application’s interactions with the back end has always been a bit...
read postThe App Descriptor
30 Days of UI5 — Day 6 by Thilo Seidel Writing your component based applications in UI5 you might be familiar with a long list of settings in your metadata section making you scroll down for hours...
read postOpenUI5 Walkthrough
30 Days of UI5 — Day 5 by DJ Adams Explored, before its promotion. OpenUI5, like its twin sibling SAPUI5, has a great SDK. The SDK contains plenty of example code snippets, especially in the...
read postCreating Native Applications with UI5
30 Days of UI5 – Day 4 by John Murray Whilst web apps are great, and suit the vast majority of situations perfectly, sometimes they just don’t quite cut the mustard. It is in these situations that we...
read postSemantic Pages
30 Days of UI5 — Day 3 by DJ Adams (This book was a close companion in an earlier life.) My degree in Latin and Greek is not entirely without foundation or reason, and it provides me with at least a...
read postExpression Binding
30 Days of UI5 — Day 2 by DJ Adams The expression binding feature was introduced with version 1.28, and allows logic to be included directly in an embedded binding. It’s a very useful feature, but a...
read postLightweight notifications with the Message Strip
30 Days of UI5 — Day 11 by DJ Adams The Message Strip is a nice new control with 1.30. It’s in the main (sap.m) library of controls, and for me, appeals because it bridges the gap between no message...
read postJavaScript Do's and Don'ts for UI5
30 Days of UI5 — Day 7 by DJ Adams In recent versions of the SDK you’ll find a new section called “Coding Issues to Avoid“. It’s great to see this take shape and start to become formalised. Some of...
read postWelcome to 30 Days of UI5!
30 Days of UI5 — Day 1 by DJ Adams UI5, the collective short name for both SAPUI5 and OpenUI5, is soon to reach a milestone, with the release of 1.30. There’s already a preview release available. The...
read postEmail Discipline
If you’re wondering why I don’t reply to your email straight away, it’s because I try to discipline myself to email tasks generally twice a day. Once in the morning, and once again around lunchtime or...
read postJSON List Binding and maps
This morning, on a long train journey up from near Reading to Barnsley, I was hacking on a UI5 app. I had a custom module to munge some JSON data into the shape I needed, and was binding the items...
read postopenSAP Experiences
(Please see the update from later the same day as I posted this, at the bottom.) Don’t get me wrong, the openSAP initiative is excellent, free learning materials of high quality? Yes please and thank...
read postThis Week in Fiori (2015-16)
Greetings! It’s time yet again to share a few newsworthy items that caught my eye this week in the world of Fiori. Let’s get to it! Ariba Total User Experience by Ariba We start out with something...
read postThis Week in Fiori (2015-15)
Well hello there folks. This week sees the start (for me) of a week off on holiday, but not before I put out this latest episode of TWIF for a quick roundup of things that caught my eye in the world...
read postThis Week in Fiori (2015-14)
Well hello again, this episode is brought to you from my woodstore at the bottom of the garden, where it’s actually warm enough to sit outside for the first time. The birdsong is prominent, I guess...
read postThis Week in Fiori (2015-13)
Well, another week has gone by, which means it must be time for This Week in Fiori! The Fiori juggernaut continues to rumble on, and this week was no exception. Let’s get to it! Build Your Own SAP...
read postThis Week in Fiori (2015-12)
Greetings! Last week saw the return of the This Week in Fiori series, with a video from me and Brenton. More on that video shortly. Before last week, the previous episode had been in October last...
read postMaking Information More Useful
If you’re reading this, it’s because you’ve followed a “what is this?” type link from something I’ve written. I recently wrote about trying to become more effective and efficent in “The Maker’s...
read postThe Maker's Schedule, Restraint and Flow
A few years ago Paul Graham published a short essay “Maker’s Schedule, Manager’s Schedule“. It described succinctly how, and perhaps more importantly why calendar entry driven task scheduling, and in...
read postThis Week In Fiori (2015-11)
Well hello again and welcome to TWIF readers old and new alike. Last year I started the “This Week In Fiori” (TWIF) series looking at news, events and articles in the Fiori world. The last post...
read postWhy I'm Staying Close to UI5
I recently came across an article by Greg Donaldson – “Why We Are Staying Clear of SAPUI5“. Everyone is entitled to their opinions, and I do like challenges to assumptions and the status quo, so I...
read postCan I build a Fiori app? Yes you can!
This started out as an essay as preparation for my keynote at Mastering SAP Technologies in Johannesburg, Feb 2015. I've split it out into two parts, the second of which will give you 10 tips to get...
read post10 tips to get you started on your Fiori development journey
A developer's journey to a new set of technologies is a very personal one, but there are definitely a few pointers that I can give you based upon my own experience. Following on from my previous post...
read postUI5 features for building responsive apps
To build a Fiori app, there are a number of considerations to take into account. One of these considerations is the responsive nature of the app; it should work on different devices (desktops, tablets...
read postSpeaking at Mastering SAP Technologies
Next week I’m travelling to Johannesburg, to attend and speak at the Mastering SAP Technologies conference. It’s a great honour to have been invited, and I’m excited at the prospect of the topics...
read postFiori & UI5 Related Videos
I thought it would be worth collecting together a lightly annotated list of Fiori and UI5 public videos that I’ve published on my YouTube channel. (I say public, as there are quite a few OpenUI5...
read postMorning Fiori Fix
John Moy tweeted today about the Fiori App Reference Library showing duplicate entries recently. It’s something I’d noticed too, after checking the app following the publication of information on SCN...
read postOpenUI5 at FOSDEM 2015
I just returned from FOSDEM, the conference for free and open source software developers that’s held annually in Brussels. It’s a super event that has a long pedigree already, and has managed to...
read postAtom, Snippets, Tabs and CSON parsing
This morning on the train down from Manchester to Bristol I fired up the Atom editor and noticed that when trying to load a snippets file from my ui5-snippets package, I got an error: Between...
read postFiori App Data into a Spreadsheet? Challenge Accepted!
In October last year, following the original meta SAP Fiori App ;-), SAP announced their own long-awaited SAP Fiori Apps Reference Apps Library. At the time, Brenton and I chatted about it in “SAP...
read postRunning: 2014 in review, and some Clojure
I enjoyed running in 2014 and logged each one via Endomondo. This post is a random collection of thoughts about the running, the data and some simple analysis, in Clojure. Watches I’ve been using a...
read postDNA is still in our DNA
Via a tweet that was retweeted by Ben Nuttall, I came across a recent article in the Independent “Microsoft to replace Internet Explorer with new, streamlined browser“. The article has some classic...
read postThe inaugural SAP architect and developer summit
I was honoured to have been invited to speak at the inaugural SAP Architect & Developer Summit which happened last week (20-21 Nov 2014) in Sydney. It was a fantastic event, mainly due to the...
read postCreation & Reload of UI5 UIs in the Chrome Developer Console
At the inaugural SAP Architect & Developer Summit last week, one of the things that I did was prepare and deliver a 2 hour hands-on workshop: “Learn To Drive Fiori Applications From Underneath And...
read postAddressing Emails
I use filters to manage my emails and auto-filter all incoming emails that have me only in the CC list, and not in the TO list, into a separate folder. I review emails in this folder no more...
read postThis Week in Fiori (2014-43)
Hello everybody, Brenton here in for DJ this week. For those of you who don’t know me, I work in the Fiori and User experience space with DJ and I am a fellow SAPUI5/OpenUI5 advocate for a long time...
read postThis Week in Fiori (2014-42)
Well hello again, I’m back. I couldn’t miss the most significant week number, now, could I? :-) And next week I have something special for you — the TWIF episode will be written by a guest author....
read postSpeaking at the SAP Architect & Developer Summit
Next month, in Sydney, the inaugural SAP Architect & Developer Summit is taking place, on the 20th and 21st of November. This is quite an exciting direction for an SAP event; yes, we have SAP...
read postThis Week in Fiori (2014-40)
Another week, another set of Fiori links. Let’s get to it! Fiori App Reference Library app, via Luis Felipe Lanz Well it was bound to happen, and I’m celebrating that. Luis tweeted a link to a lovely...
read postThis Week in Fiori (2014-39)
Hello there folks. That time has come around again to pull together a few links on some of the Fiori related stories and articles this week. Let’s get right to it. Transactional Fiori App...
read postThis Week in Fiori (2014-38)
Hello again, I’m back again after a week off TWIF, a week where I managed to participate in two great events in the north of England. First, on Sat 13 Sep there was SAP Inside Track Sheffield,...
read postScratching an itch - UI5 Icon Finder
There are a huge number of icons as standard in the UI5 library, both in the SAPUI5 and OpenUI5 flavours. Here’s the Icon Explorer from the SDK. One of the problems I have is that when I’m looking for...
read postThis Week in Fiori (2014-36)
When you write a series of weekly posts, you’re acutely aware of how fast the actual weeks fly by. And this last one was no exception. Lots of movement and activity in the SAP Fiori world … let’s get...
read postThis Week in Fiori (2014-35)
Hello and welcome to another episode in This Week in Fiori (TWIF) – for week 35, the last week in August already. This week it’s an all-SAP affair. Without further ado, let’s get to it. Catalog of...
read postThis Week in Fiori (2014-34)
Another week gone! I’m sitting in my “second living room”, North Tea Power, drinking a fab coffee and sifting through the Fiori related articles that came to my attention this week. And just this...
read postThis Week in Fiori (2014-33)
Hello again. Another week has passed, and the writing of this week’s TWIF should have found me in the Lake District, but alas due to circumstances too tedious to go into now, finds me about 90 miles...
read postThis Week in Fiori (2014-32)
Here we are, another week into the new Fiori flavoured world, and as always, there are things to talk about and posts to mention. While it’s been a relatively quiet week there have still been various...
read postThis Week in Fiori (2014-31)
Well, yet another week has gone by and we have new Fiori related content to consume. And I was reminded of that early this morning after seeing a tweet and a screenshot from Tony de Thomasis showing...
read postThis Week in Fiori (2014-30)
Well what a week that was. I spent it in Portland, Oregon, which for me being a fan of great coffee and great craft beer, was a fantastic city to be in. It was in Portland that O’Reilly’s Open Source...
read postKeyed vs Non-Keyed Root JSON Elements & UI5 Binding
In a screencast this week (OpenUI5 MultiComboBox First Look) I explicitly used the model mechanism’s requestCompleted event to get to the model data and manipulate it, adding a key to the root array....
read postOpenUI5 Tutorial at OSCON 2014
This week finds me in Portland, Oregon, for O’Reilly’s Open Source Convention (OSCON), an amazing conference with a wonderfully diverse range of topics (over 20 of them). I attended OSCON as a speaker...
read postThis Week in Fiori (2014-29)
I’m currently writing this episode of This Week in Fiori (TWIF) on a flight from Manchester via Philadelphia to Portland for O’Reilly’s Open Source Convention OSCON. It’s a super conference on all...
read postThis Week in Fiori (2014-28)
Already a week has passed since my first post in this series and the Fiori related content is increasing. A lot of that is technical, as folks get to grips with the configuration and development...
read postWebinar and more - Understanding SAP Fiori
On Thursday 19 June, Brenton O'Callaghan and I hosted a free, hour-long webinar entitled "Understanding SAP Fiori". We followed it up with a "Director's Cut" deep dive video into...
read postThis Week in Fiori (2014-27)
The interest in SAP Fiori and the User Experience (UX) renewal at SAP is growing week on week. Ever since the launch of SAP Fiori Wave 1 back in summer 2013, with 25 Employee Self Service / Manager...
read postUnderstanding SAP Fiori Webinar - The Director's Cut
Yesterday Brenton O'Callaghan and I hosted a public webinar "Understanding SAP Fiori", which was well attended and also a lot of fun to do. There was never going to be enough time to cover...
read postSAP Developer Advisory Board - Your Input!
Gregor Wolf and I are attending the SAP Developer Advisory Board meeting on Tue 22 Apr 2014. We'd like to ask you, as members of the general SAP Developer Community, for your thoughts. There isn't a...
read postSAP Mentor Monday on UI5 - Links
Today I was privileged to host a public SAP Mentor Monday on UI5, with Andreas Kunz as special guest. This is a collection of links that were mentioned in the session. Session The recorded session is...
read postPaying IT Forward Links
Today I recorded another SAP CodeTalk session with Ian Thain, this time on the topic of teaching kids computational thinking, teaching them to code: Paying IT Forward … IT Does Compute. Here’s a...
read postOpenUI5 CodeTalk Links
I was honoured to be a guest again on SAP CodeTalk with Ian Thain. This time we talked about OpenUI5 - the open source version of SAPUI5, SAP’s UI development toolkit for HTML5. Here are the links to...
read postSmall steps - OpenUI5 toolkit now in jsbin.com
In our continued efforts to spread the word of SAPUI5 in general and OpenUI5 in particular, we try to make small steps forward. Here's some quick news about a small step forward with respect to...
read postReaching Out
As a technology company SAP is over 4 decades old. Over that time it's innovated at a tremendous pace, and along the way it has abstracted, invented and reinvented technologies like no other company I...
read postMocking up the Payroll Control Center Fiori App
Following on from a great debate about Fiori and Freeori that stemmed from a post by John Appleby there were some comments about HCM app renewals. Latterly John Moy pointed out a post Improve payroll...
read postThe essentials - SAPUI5, OpenUI5 and Fiori
The SAP User Interface (UI) and User Experience (UX) revolution is truly underway. There are some tactical solutions out there, but the chief strategic solution that SAP is basing its UI/UX future on...
read postPublic SAP Mentor Monday 24 Mar 2014 - UI5 with Andreas Kunz
On Monday 24 March 2014 we will have a public SAP Mentor Monday session on the subject of UI5. UPDATE 25/03/2014: Links to the recording and items mentioned in this session are available. For those of...
read postM is for 'responsive'
Even if you count the well-meant but ultimately misguided initial attempt at pre-smartphone mobile interactivity, in the form of WAP and WML, the rise of mobile focused activity has been nothing short...
read postAlt-K: Reading Notes
With my Kindle, and the Send to Kindle Chrome extension, I have a nice workflow for saving stuff (with a quick alt-k keypress) to read later. The nice thing about the way the Kindle displays new...
read postXML Views and Resource Bundle Declarations
Just a quick post on the train on the way down to London this morning. The other day, Andreas Kunz pointed to an overview of the MVC options which contains very detailed information - an interesting...
read postUI5 XML Views - Another Example
I've been diving into UI5 XML views and sharing the love recently - see Mobile Dev Course W3U3 Rewrite - XML Views - An Intro (as part of Mobile Dev Course W3U3 Rewrite - Intro), and the XML view...
read postHelp Us To Help You - Share Your Code
Yesterday I tweeted: "We should encourage folk to post full Gists with their ui5 issues, for easier debugging and analysis (http://scn.sap.com/message/14665116)". So I decided to put my...
read postMeta education - or teaching the teachers
I'm currently involved in a number of initiatives relating to our computational future, and am passionate about teaching coding and data skills to children (see below for some links). I have a great...
read postQuick hack: Calendar Inviter
Working in different organisations sometimes means having different email addresses and calendars. Currently I have two Outlook instances I have to manage (one for Bluefin and one for a client) on top...
read postMobile Dev Course W3U3 Rewrite - XML Views - An Analysis
I rewrote the mobile dev course sample app from W3U3. Then I created a new branch 'xmlviews' in the repo on Github and rebuilt the views in XML. I then took a first look at XML views in general. Now...
read postCustom Sorting and Grouping
Summary: Learn how to control the order of groups in a sorted list. You don't do it directly with the grouper function, you do it with the sorter function. One of the features of the app that the...
read postSAP UK & Ireland User Group Conference - Demo Jam!
The conference season for this year is almost at an end. But it’s not complete without the annual UK & Ireland SAP User Group Conference, held this year in Birmingham, from Sunday 24 to Tuesday 26...
read postCodeTalk - SAPUI5 and SAP Fiori
Yesterday I was honoured to be a guest on Ian Thain's CodeTalk series of video interviews. The subject was SAPUI5 and SAP Fiori, and the published interview is split over two videos on YouTube. Here's...
read postMobile Dev Course W3U3 Rewrite - XML Views - An Intro
I rewrote the mobile dev course sample app from W3U3. Then I created a new branch 'xmlviews' in the repo on Github and rebuilt the views in XML (they were originally in JavaScript). This post talks...
read postMobile Dev Course W3U3 Rewrite - ProductList, ProductDetail and SupplierDetail
I rewrote the mobile dev course sample app from W3U3. This post explains what I changed in the ProductList, ProductDetail and SupplierDetail views / controllers. See the links at the bottom of the...
read postMobile Dev Course W3U3 Rewrite - App and Login
I rewrote the mobile dev course sample app from W3U3. This post explains what I changed in the App and Login views / controllers. See the links at the bottom of the opening post to get to explanations...
read postMobile Dev Course W3U3 Rewrite - Index and Structure
I rewrote the mobile dev course sample app from W3U3. This post explains what I changed in the index.html file, and why. It also takes a look at the general app structure of directories and...
read postMobile Dev Course W3U3 Rewrite - Intro
tl;dr - the Github repo "w3u3_redonebasic" is a simple re-write of one of the open.sap.com mobile course sample SAPUI5 apps to fix some fundamental issues. In the current open.sap.com course...
read postBuilding SAP Fiori-like UIs with SAPUI5
SAP TechEd 2013 is fast approaching, and the excitement is building. Interested in SAPUI5 (you're reading this blog post in the SAPUI5 Developer Center space on SCN already!), you're looking to see...
read postSheetAsJSON - Google Spreadsheet Data as JSON
This is a short post to explain how to expose a 'typical' Google spreadsheet (rows of columnar data, with first header row) as JSON, via HTTP. It might sound somewhat esoteric but believe me it’s...
read postAn Amazing 36 Hours at SAP Labs Israel
I'm sitting in TLV airport waiting for my flight back to MAN via FRA. I've just spent a whirlwind 36 hours, more or less, in an amazing developer engine also known as SAP Labs Israel. Before I start...
read postEngaging the Next Generation
As many of you might know (from my #YRS2013 tweets this month), I was involved again in Young Rewired State, an initiative that gathers kids all around the country, gives them a week-long opportunity...
read post#YRS2013 Hacks on Github
Well we’re in the midst of the Young Rewired State Festival Of Code weekend here at the Custard Factory in Birmingham and one of the amazing by-products of all the hacking is the power of Open Source...
read postHappy Birthday SCN, Old Friend
Happy Birthday, SAP Community Network, or, to give it it's original name (which gives you a clue to its origins) the SAP Developer Network - SDN. Finding myself sending birthday greetings to an...
read postSimple SAPUI5 Chrome icon for lazy developers like me
I created a Chrome “hosted app” manifest to get a large start page icon with which I could navigate directly to this excellent content resource. Now I can get to my favourite area on SCN in even less...
read postCodeClub Thoughts
I’ve been a CodeClub leader for a while now at my local primary school, Woodhouses Voluntary Controlled Primary School, in Manchester. The club is after school on Friday afternoons and each session...
read postReview of Dark Reserve Nr 3 from Lovibonds
Lovibonds. Why does that name ring a bell? Apart from representing a long tradition of brewing, which we'll dive into in a moment, it is also a name well known throughout the brewing and food science...
read postFunctional Python - Itertools Exploration
Well, time passes, and my 30days challenges are continuing. January: no Twitter, February: no beer, and the month just passed, March: Meditation. I didn’t do too well on the meditation front, but that...
read postOur computational future
If you're reading this blog post, chances are that you're aware of, or directly involved in the Information Technology (IT) industry in the UK. Whether that's as a means to an end (you're a business...
read post30 Day Challenge: No Beer!
Well goodness me it’s already February. January went by very fast indeed, and it turns out I managed my January challenge (no Twitter) very well. I uninstalled my Twitter clients (Tweetdeck for Chrome...
read postPublic Github repo sapui5bin available
Recently I've found myself making references to a small but growing collection of runnable SAPUI5 snippets that I've been collecting together, called "sapui5bin". It started from early...
read postJump to Shell Workset Item from URL
During SAP TechEd 2012 I attended CD163 "SAP HANA - Application Services Basics" which really helped firm up my knowledge of XS, thanks to the great presentation and exercises. What was...
read post30 Days Challenges
Inspired by Matt Cutts and his 30 Days Challenges, I’ve decided to have a go myself, instead of setting any specific (and year-long-lasting, doomed-to-failure) New Year Resolutions. The challenges I...
read postReview of Fourth Dementia Old Ale from Kuhnhenn Brewing Company
Just over one week to go before Christmas, and the shoppers in Manchester are in full swing, dashing round town, bags in hands, pensive thoughts on faces. A few spouses are holed up here at Port...
read postCodeClub and becoming a STEM Ambassador
CodeClub is a nationwide network of volunteer-led after-school coding clubs, and its mission is to give every child in the UK the chance to learn to code. When CodeClub started earlier this year, I...
read postThe Silent Club and Recharging Alone
A month back, Emma Mulqueeny wrote about her Silent Club. It’s not really a club – there is no explicit membership to speak of, there are no meetings, there isn’t even a website (although there is a...
read postOData Everywhere
We're well into Day 1 at SAP TechEd 2012 in Madrid, and while SAP NetWeaver Gateway has already been mentioned in this morning's keynote (even though the keynote was more Sapphire-focused than...
read postBlog It Forward - DJ Adams
Well hello there. I guess if you're reading this you know already about the great Blog It Forward initiative here on SCN. I've been nominated by the great (Austrian!) Matthias Steiner on his BIF post,...
read postReview of Norwegian Wood from Haandbryggeriet
Haandbryggeriet – what a mouthful, and we haven't even got to the name of the brew yet! Actually, when you break it down, this name is from two Norwegian words and simply translates to "Hand...
read postRecent Interests
I fed the latest posts from this weblog to Wordle and this is what it came up with as a representation of my recent...
read postSerial interest in the Raspberry Pi
Joseph and I took delivery of our Raspberry Pi earlier this year, and today attended the Manchester Raspberry Jam held at Madlab, a group of Raspberry Pi enthusiasts getting together to share...
read postSAPUI5 - the future direction of SAP UI development?
Update Jan 2014: Things in the SAPUI5 world have certainly moved on since I wrote this introductory article over 18 months ago, and all for the better. SAPUI5 is here to stay. It powers the SAP Fiori...
read postTwo tools for Gateway trial host nplhost
The SAP NetWeaver Gateway trial system is a great way to get your hands on all that OData and HTTP goodness. There are a couple of tools that I find myself re-installing when I build a new copy of the...
read postOn Enterprise Geeks Podcast
Last month at SAP DKOM, where I rediscovered SAP’s Developer Connection, I bumped into an old friend, Craig Cmehil. Craig is one part of the Enterprise Geeks, a loose collective of geeks and hackers...
read postFirebase and SAPUI5
I took a look at Firebase this weekend, approaching it within the context of the relatively new concept of “backend as a service” (BaaS) as exemplified by Parse and others. Add server-side storage to...
read postThe Developer Connection: Connect Like Never Before
At SAP TechEd Madrid (November last year) I wrote about the Developer Renaissance, covering my interview with Aiaz Kazi from the Technology & Innovation Platform, and SAP’s re-focus on...
read postSAPUI5 Powered SCN Forum Finder
With the advent of the new SAP Community Network platform, people have been wondering where the old SDN forums have gone. To this end, there’s a very useful “Forum Finder for the New SCN” which...
read postNew Omniversity Course Video!
As I mentioned earlier this year, we were going to create a new video for my course “Web Programming with SAP’s Internet Communication Framework” at the Omniversity of Manchester at Madlab. And we...
read postReview of Red Rice Ale from Hitachino Nest
And now for something completely different. Last week Port Street Beer House took delivery of a small number of cases of beer from the Kiuchi brewery based in Ibaraki-Ken, Japan. Craft beer from the...
read postSAPUI5 says "Hello OData" to NetWeaver Gateway
So following a very interesting podcast from Rui Nogueira with SAP's Michael Falk and Tim Back on the HTML5-based UI Toolkit for SAP NetWeaver Gateway (aka "SAPUI5") earlier this month, a...
read postMaking OData from SAP accessible with the ICM's help
I'm totally enamoured by the power and potential of SAP's NetWeaver Gateway, and all it has to offer with its REST-informed data-centric consumption model. One of the tools I've been looking at in...
read postSAP ICF course marketing: video!
I dropped by Madlab and the Omniversity yesterday evening to see Hwayoung and Dave and talk about the upcoming Web Programming with the SAP Internet Communication Framework course in early March....
read postOn the Information Diet
There seems to be a movement currently gaining momentum from the flurry of New Year resolutions, a movement on information consumption. Last week, I read about a noble and desirable goal to consume...
read postThe Developer Renaissance
At SAP TechEd in Madrid this year, I had the privilege of interviewing SAP’s Head of Technology & Innovation Platform (TIP) Marketing, Aiaz Kazi, on the SAP TechEd Live TV channel. The interview...
read postHTML5 @ SAP
Over the years SAP has been slowly but surely turning itself inside out towards the wider, open community. Open as in open source, open protocols and open data. One facet of this long-term tanker...
read postSAP Developer Center
At SAP TechEd Madrid 2011 I stopped by booth 104 in the Technology Innovation area of Hall 10 after lunch and chatted to David Brutman, from SAP’s Technology and Innovation Platform Marketing. SAP...
read postMovember - please donate!
I’m taking part in Movember, a fun and serious movement where moustaches are grown, ridicule is thrown, and hopefully people become more aware of men’s health in general, and prostate and testicular...
read postWeb Programming with SAP's ICF: new course dates
I’m pleased to announce that my 2-day Omniversity course Web Programming with SAP’s Internet Communication Framework is coming up again a couple of times in the first half of next year. SAP’s Internet...
read postMoving on ... to Bluefin Solutions
Since moving back to the North West in 2005 I’ve been contracting most of the time at AstraZeneca, in Macclesfield, Alderley Edge and Chorlton. I’ve been involved in a number of great projects, from...
read postReview of Milk Stout from Left Handed Brewing Co
Sometimes you're not in the mood for what everyone else is having. That's the tagline of this Longmount, Colorado brewer Left Hand Brewing Co's Twitter presence. As I approach the bar at Port Street...
read postReading List Mark 2 - Part 5
This is Part 5, the last part in a series about an example app that I put together to demonstrate and describe the use of various Google Apps Script features. See Part 1 for an introduction. This part...
read postReading List Mark 2 - Part 4
This is Part 4 in a series about an example app that I put together to demonstrate and describe the use of various Google Apps Script features. See Part 1 for an introduction. This part is...
read postReading List Mark 2 - Part 3
This is Part 3 in a series about an example app that I put together to demonstrate and describe the use of various Google Apps Script features. See Part 1 for an introduction. This part is “Using the...
read postReading List Mark 2 - Part 2
This is Part 2 in a series about an example app that I put together to demonstrate and describe the use of various Google Apps Script features. See Part 1 for an introduction. This part is “Using the...
read postReading List Mark 2 - Part 1
Over on the Google Apps Scripts articles section of the Google Code site there’s a great article “Integrating with Google APIs – Creating a simple reading list” which takes the reader through a nice...
read postAutomated email-to-task mechanism with Google Apps Script
Last night at the Manchester Google Technology User Group (GTUG) meetup we looked in detail at an example script that used various Google Apps Script services. More on that another time. At the end of...
read postAd-hoc Data Workflows with Google Apps Script
At tonight’s Manchester Google Technology User Group’s meetup at Madlab, I gave a talk on building ad-hoc data workflows with Google Apps Script. The Google Apps application set, combined with the...
read postStand steady on the shoulders of giants
Or: Why you should attend my 2-day Omniversity course “Web Programming with the SAP Internet Communication Framework“ Last week I had the opportunity to attend an SAP Mentor Webinar on SAP Netweaver...
read postReview of Torpedo from Sierra Nevada
The start of Port Street Beer House’s American Beer Festival starting Mon 27th June, until the beer runs out, is clearly an ideal time to review Torpedo, an IPA from one of America’s most respected...
read postBeer review: Dark Star's Saison
I was honoured to be asked by the folks at Port Street Beer House to review one of their cask beers, Saison, from the West Sussex brewery Dark Star. I went down last Saturday, received a pint, sat...
read postSOA scaffolding and development architects
In “Quo vadis SOA“, Matthias Steiner has written a very readable blog post about where SOA is today, in SAP and beyond, casting a critical but balanced eye on what the service orientation approach has...
read postReview of Saison from Dark Star
A dusky Saturday evening finds me in Port Street Beer House in Manchester's Northern Quarter. An escape from the Champions League final, and respite from the constant threat of cloudburst. A usual...
read postDanger! Graduate Conveyor-belt!
John Appleby wrote a thought-provoking piece on university degree courses and how they relate to the IT industry in “When will graduates learn to monetize their education?“. I thought it was worth...
read postJSON and Other Animals - talk at Manchester jQuery Meetup
The Manchester Digital Laboratory (MadLab for short) is the arts-craft-tech gravity centre of Manchester, and our gracious hosts for the Manchester Google Technology User Group. Recently a new group...
read postGmail Contextual Gadgets - talk at Manchester GTUG
I gave a talk at the Manchester Google Technology User Group March meetup on Gmail Contextual Gadgets. Partly so I can keep track of what slides I’ve used where, and partly to share them with a wider...
read postMy browser A-Z
Inspired by a post “Letter Sweep” by Tim Bray, here’s my browser A-Z, a list of the URLs that appear when the browser tries to guess, on a single letter press, where I want to go, based on past...
read postThe past and future of SAP integration: guest Bluefin blog post
I was honoured to be invited to write the first guest blog post on Bluefin‘s website. To start the ball rolling, I decided to take a whirlwind history tour of data and function integration with SAP’s...
read postProject Gateway. A call to arms. Or at least to data.
Here I'll plot a brief history of SAP integration tools and technologies, and look forward to what Project Gateway promises: Uniform, resource orientated access to your enterprise functions and...
read postHacking the Delicious extension for Chrome
I’ve recently moved from Firefox to Chrome. I use Delicious for managing my public and private bookmarks, and have installed the plugins for both browsers. In moving to Chrome and installing the...
read postGoogle Visualization API: Manchester GTUG Talk
I gave a talk at this month’s Manchester Google Technology User Group meetup on the Google Visualization...
read postNot your father's SAP
I had the good fortune to be invited to SAP’s Innovation Weekend 2010 in Berlin, a pre-cursory hackfest and idea exchange in the two days prior to the main SAP TechEd event at Messe Berlin. Walking...
read postGetting started with Gmail Contextual Gadgets
Gmail contextual gadgets were announced by Google a few months back and were made available to developers in May this year, just before making a strong appearance at Google IO. Expanding upon the...
read postScratching an itch - Magic The Gathering card info
Well over 10 years ago I bought a box set of Magic The Gathering (MTG) cards. I wasn’t really sure what they were, but they looked fascinating. Unfortunately, they gathered dust after a while, mostly...
read postREpresentational State Transfer (REST) and SAP
REST (which stands for REpresentational State Transfer) is an architectural style that is informed to a large extent by, but theoretically not limited to, the HTTP application protocol (yes,...
read postTech Skills Chat with JonERP - A Follow-on Story
Sitting in a traffic jam on the A34 this week, twice, I got the opportunity to catch up with the excellent Enterprise Geeks podcasts. In one particular TechEd Phoenix episode "Tech Skills Chat...
read postREST orientation - Controlling access to resources
Background Using my new REST handler / dispatcher for the ICF, I can adopt a Resource Orientated Architecture (ROA) approach to integration. This gives me huge advantages, in that I can avoid...
read postA new REST handler / dispatcher for the ICF
One of the best underlying mechanisms to be introduced into the Basis / NetWeaver stack in the past few years is the Internet Communication Framework (ICF), which is a collection of configuration,...
read postMainframes and the cloud - everything old is new again
Cloud computing, virtual machines. It’s big business. Amazon has its Elastic Compute Cloud (EC2) which provides “resizable compute capacity in the cloud“, Microsoft has Azure, providing “on-demand...
read postSAP and Google Wave - Conversation Augmentation
It's been pretty much six years to the day since I last wrote here about Dashboard, Nat Friedman's project and implementation of a realtime contextual information system. So I thought it fitting to...
read postBook review - SAP Business ONE Implementation
A short while ago I was sent a review copy of “SAP Business ONE Implementation”, by Wolfgang Niefert, published by Packt Publishing. On receipt, I skimmed through it, and my first impressions were...
read postOne way of dealing with blogtheft from SDN - through images
I’m sure you’re all aware of the recent #blogtheft issue – where some rogue has been lifting content lock stock and barrel from here and reproducing it – sans author name – on their website...
read postDealing with "#blogtheft" from SAP's Developer Network
Recently it has come to people’s attention that there is a website www.sap-abap4.com out there with a lot of very interesting content … which seems to have been completely “lifted” from the SAP...
read postCommand lines of the future, and simplicity of integration
This is a bit of a hand-wavy post, but I wanted to get my thoughts down. Recently there’s been a spate of interest around interaction with devices, applications and systems ... via a chat-style...
read postCoffeeshop screencast: HTTP conneg, resource representations and JSON
After yesterday’s screencast showing the use of coffeeshop from the command line, here’s one that expands upon the direction I’m taking the implementation, following the REST/HTTP philosophy. It...
read post2nd coffeeshop REST/HTTP screencast
To follow on from the first coffeeshop demo screencast, I thought I’d make another. This time it’s to highlight the fact that coffeeshop is fundamentally a REST-orientated, HTTP-based pubsub...
read postGoogle Wave, XMPP and complexity
Anil Dash provides food for thought in his post “What Works: The Web Way vs The Wave Way“. While I agree with him on the importance of the incremental approach to technology progression on the web...
read postWebhooks postbin example for Coffeeshop
There’s an interesting article “HTTP PubSub: Webhooks and PubSubHubBub” that covers working with webhooks and points to a great HTTP / webhook developer utility “PostBin“, which: “lets you debug web...
read postFirst coffeeshop demo screencast
To demonstrate some of the basic coffeeshop features, I put together a screencast, and after getting over the shock of hearing my own voice in the recorded voiceover (last time I chickened out and...
read post'Coffeeshop' - lightweight HTTP-based pubsub
‘Coffeeshop‘ is a lightweight, REST-orientated HTTP-based publish/subscribe implementation that I’ve been working on for the last few days. It is a culmination of: an early and long-standing interest...
read postInformation vs Behaviour
I read a couple of chapters of two different books recently: Ch.5 of O’Reilly’s “Beautiful Architecture“: Resource-Oriented Architectures: Being ‘In The Web’ by Brian Sletten Ch.1 of Manning’s “SOA...
read postA return to the SDN community, and a touch of Javascript
A few days ago, Mark Yolton pointed out to me that this Friday, 30th May will mark 6 years since my first SDN blog post “The SAP/MySQL Partnership“, in SDN’s first month. My oh my, how things have...
read postTarpipe REST connector in 5 minutes
Tarpipe implemented a REST connector a short while ago. This is something that I and others have been wanting for a while now, so it’s great news. The announcement was quite short and didn’t have much...
read postTwitter's success
Yes yes, I know I’m late to the game, and everyone and his dog has given their angle on why Twitter is so successful, but I’d like to weigh in with a few thoughts too. The thoughts are those that came...
read postAnalysing CV searches with Delicious
I put my CV online recently, and having the machine that serves this website (an iMac running Ubuntu Linux) sitting in the study, I can almost ‘feel’ the HTTP requests entering the house, going down...
read postSAP everywhere!
I remember back in the ’90s joking with my friend Piers When I see the first book on SAP hit the bookstores, it’s time to move on :-) In those days there were no books on SAP, and I was still in...
read postAn HTTP connector for Tarpipe: 'tarbridge'
One thing that Tarpipe would really benefit from is a connector that would enable an HTTP request (I’m thinking of POST, here) to be made on an arbitrary resource (URL). This is something that other...
read posttarpipe.com - Programming 2.0?
Is tarpipe.com an early example of a “Programming 2.0″ concept? I first read about Tarpipe from Curt Cagle’s "Analysis 2009". In turn, Curt points to Jeff Barr’s post which describes the...
read postOld feed URLs fixed with a bit of mod_rewrite voodoo
As feeds are the new blogs (quoting myself, oh dear!) I thought it important to make sure that the feed bots that have been continuously polling my weblog’s feed and getting 404s (since 2005, I guess)...
read postBack from Real Life
I’m back online, after an eXtended Away in Real Life. I don’t think my online presence will ever be what it was (I can’t believe how much I posted in the past few years) but blogging isn’t the same...
read postOssNoteFix script updated for Greasemonkey 0.6.4 and Firefox 1.5
Last year, I got so frustrated at the pain of using the SAP Service Marketplace, and particularly OSS notes, that I got up and did something about it – I wrote ‘OssNoteFix’, a Greasemonkey script...
read postJava and Gosling's FUD - madness or desperation?
For a while now, people have been talking about the fall from favour of Java (aka the new COBOL). Today Obie Fernandez points to some hopelessly weak arguments against scripting / dynamic languages …...
read postSAP and Open Source: the debate continues
I wrote a blog entry on SDN almost two weeks ago entitled “SAP and Open Source: an analysis and letter to SAP and Shai“. It followed the flurry of comment that was made after Shai made some alarming...
read postAcorn Atom and my start in computing
I wrote a little piece for the O’Reilly Radar on how I got into computers. It brought back lots of memories, a strong one of which was the hours, days, weeks I spent on my Acorn Atom. I have my...
read postSAP and Open Source - an analysis and letter to SAP and Shai
Well this has certainly been an interesting few days in the intersecting worlds of SAP and Open Source. There’s been a lot of comment and discussion already, but having listened to the whole Churchill...
read postMoonOverFailsworth
MoonOverFailsworth Originally uploaded by qmacro. The moon was huge and very present as I drove up the M6 the other night. It was still hanging around in the morning, as you can see. In the distance...
read postWhither SAP?
I’ve been thinking a lot recently about where SAP is going and what SAP is doing today, especially in the light of where it went and what it did in the past. To be honest, the thinking has been...
read postHacking the SAP service portal to make OSS notes better
Using OSS notes on SAP’s service portal is extremely cumbersome. I used Greasemonkey to hack the UI to make it a little better. I had written it up on my SDN blog: Hacking the SAP service portal to...
read postSDN, Blogging, and Planet SAP
In May I was approached by a chap at SAP in Walldorf who wanted to ask me some questions on blogging (I have a blog over on the SAP Developer Network) for an article he was writing for an SAP-internal...
read postThe SAP developer community 10 years ago
Yesterday Alan pointed us (Whopping big collection of tips for developing workflows) to a collection of tips on developing workflows, hosted by MIT, on a mailing list called ‘SAP-WUG’. I guessed that...
read postTurnkey MVS 3.8J on Hercules S/370 Screenshot
As an ex MVS chap (I managed VSAM (DL/1) based SAP R/2 systems on IMS DB/DC at the start of my career) I was amazed some months back to find Hercules, the open source S/370 emulator. So imagine my...
read postSAP: temporary loss of touch with reality?
At this year’s Sapphire in Boston, Shai Agassi came out with some astounding and questionable views on free and open source software: “Open-source technologies such as Python and PHP, to name just...
read postHacking the SAP service portal to make OSS notes better
Ahh, OSS notes – a topic close to my heart (see Improving the OSS note experience and FOSDEM, and small OSS Notes Browser Hack). The OSS Notes Experience The other day I decided to stop going on about...
read postUbuntu? Thanks. But no thanks.
Lots of people seem to be very impressed with Ubuntu, the slick new Linux distro based on Debian, running Gnome. Even my friend and colleague Piers has been bitten by the bug. To provide balance for...
read postEurope, SAP, and two-way conferences
It’s the end of the week that saw the SDN Meets Labs down in Walldorf. There was plenty of interest (apparently over 300 people attended, way more than in the similar event held in Palo Alto earlier...
read postFlickr Pro from Robert
Wow, Robert just gave me a Flickr Pro account, thanks Robert! I’m going to have to think of ways to make use of the extra bandwidth and picture storage capabilities, aren’t I? This comes in handy...
read postSDN Meets Labs
Rain. Lots of it. And I drove through it all this morning, all the way down the A61, to get to SAP University in Rot, near Walldorf. I’m at the SDN Meets Labs event that’s taking place today and...
read postSDN Meets Labs gets underway at SAP University
The SDN Meets Labs at Walldorf-Rot gets underway at Walldorf-Rot. I’ve written a post on my weblog that I uploaded during the Keynote by Klaus Kreplin and Ivo Totev (Ivo’s just telling us about visual...
read postMuscle cars
Muscle cars Originally uploaded by qmacro. Driving down from Manchester to Midhurst, I stopped at the Oxford services on the M40, and parked up next to these monster-engined cars. Being still a kid...
read postAn overcorrection too far?
Norman Walsh gives up ‘wrestling his way through the arcana of WSDL’. He describes his frustrations with WSDL complexities and the difficulty of getting things done. He goes on: Now suppose the...
read postPostcode bookmarklet
We’ve been spending time recently looking at property in the North West. I found myself often cutting and pasting a property’s postcode from the property particulars page into Multimap to see exactly...
read postWeblog happy in new home - note new URLs!
If you subscribed to my weblog via RSS and read it solely in RSS readers, you might have wondered what had happened recently when the RSS feeds disappeared. Well, it’s moved. I’m having a fresh start,...
read postRalphm on sjabber
I had a nice conversation with Ralph Meijer this afternoon; he had grabbed a very old program that I’d written — sjabber, a console-based Jabber groupchat client — because he’d been having some...
read postHonest application requirements
Working, as I do, on large (SAP-based) projects, I get my fair share of ridiculous and badly-thought-out requirements. So it was nice to see this in the design goals list for julie, an MP3 and OGG...
read postBlosxom entries into MT
After setting up this blog, it was only natural to bring across my earlier blog posts that were previously served with Blosxom. (I haven’t fallen out with Blosxom, I just wanted a change of scenery...
read postClaphamJunction2
I spend a lot of time at Clapham Junction. And as much as I don’t like waiting around for trains, there definitely is something about that station that...
read postA fresh start
A couple of weeks ago, Piers and I noticed some odd system messages on gnu.pipetree.com’s console. It looked like we might be under attack. Following some oddness all round, including the network...
read post(Mini) Installfest in the SDN clubhouse at TechEd
Piers and I got hold of the latest WAS 6.40 demo system (NW4) from the LinuxLab guys’ stand here at SAP TechEd. It contains ABAP service pack 3 and Java/J2EE service pack 7. Since I had my small...
read postPhotos from SAP TechEd Munich
(The third weblog in two days … what’s going on? Well, Mark is a hard taskmaster, obviously 🙂) There’s a group photo pool on Flickr for SAP TechEd this year; I’ve just uploaded a load of photos (of...
read postThe meaning of LIFETIME_RC
Last week, during some preparation for my talk at TechEd on Thursday this week, I’d been wondering about something in the ICF that hadn’t seemed quite right. Interface IF_HTTP_EXTENSION, which is what...
read postSAP TechEd first day - notes from Munich
Well, after a nightmare getting here (V-Bird, the airline I was booked with, went bust) I’m now in Munich at a decidedly disconnected TechEd 04 (more on the disconnected misery later). After...
read postSAP TechEd here I come ... with session slides!
SAP TechEd is looming large, and this year it’s in Munich. (If you’re not in Europe, then SAP are holding TechEd events in Bangalore, Tokyo, and San Diego too). I went last year (in Basel), and was...
read postSAP TechEd here I come ... with session slides!
SAP TechEd is looming large, and this year it’s in Munich. (If you’re not in Europe, then SAP are holding TechEd events in Bangalore, Tokyo, and San Diego too). I went last year (in Basel), and was...
read postThe integration irony of SAP's technology directions
I’ve finally realised what it is that’s been bugging me about the new arena of SAP technology. I’ve felt slightly uneasy, or unbalanced, by something that I couldn’t quite put my finger on. From...
read postThe Curious Incident Of The Dog In The Night-Time
I bought three books at Manchester airport yesterday. One of them was The Curious Incident Of The Dog In The Night-Time by Mark Haddon. I started reading it this afternoon, and have just stopped to...
read postIs this thing still on?
Tap, tap …...
read postA little taste of SAP at EuroFoo
I’m in Enschede (Netherlands) this weekend for EuroFoo – a mini-conference get-together for hackers and geeks of different persuasions. It’s a great mix of ideas, skills, and energy, where the talks...
read postSDN Meetup in Walldorf - a summary
Well, 24 hours (almost to the minute) have passed since I got off the train at Wiesloch-Walldorf station yesterday. I’ve just got on the train again to go home. Yesterday was quite a day. There was a...
read postSDN Meetup in Walldorf - pictures
I arrived in Walldorf this morning and was met and looked after very well by Mark. I’ve just taken some pictures with my trusty mobile phone and posted them on the web. There’s lots of great...
read postTechEd talk winners - congrats
Congratulations to the three TechEd talk winners Luke, Jayakumar and Andreas. The winning talks look really good – I’m looking forward to hearing them. It’s interesting that two of the three are BW...
read postForget SOAP - build real web services with the ICF
I don’t like getting into a lather when it comes to data and function integration. Rather than using SOAP, I prefer real web services, built with HTTP. As an example of taking the RESTian approach to...
read postNW4, OSS1 and logon group selection for OSS
While waiting for the DD ACTIVATION phase of an add-on installation to finish, my mind wandered off to something I’d noticed with my new WAS 6.40 testdrive for Linux is here! system, with the SID...
read postSAP at JAX 2004
My friend Matthew Langham reports on SAP at JAX 2004 in Frankfurt (Matthew is giving a total of three sessions at JAX). It’s not that SAP hasn’t had a presence at other non-SAP events before now; it’s...
read postWAS 6.40 testdrive for Linux is here!
Phew. What a day yesterday at the world’s biggest IT fair. I arrived by train and joined the masses along the CeBIT skywalk to enter Aladdin's cave. I made a beeline for the main SAP area in Hall 4,...
read postTim O'Reilly and the three 'C's
Well, I made it to FOSDEM this morning with time to spare. Bumped into Sarah and Josette setting up the O’Reilly book stand. Dave Cross is here, as are Leon Brocard and Richard Kilmer, whom I snapped...
read postFOSDEM, and small OSS Notes Browser Hack
Tomorrow morning I’m off to Brussels for FOSDEM – the Free and Open Source Software Developers’ Meeting. Some people might wonder what this has to do with SAP, but don’t forget that lots of people...
read postVenus Soul and Fun(k)
I went out with my skiing friends last night, to work out who’s driving with whom on the way to Ischgl (“… du mein Traum!”) at the end of the month. We ended up at Kurios, a live music bar in Krefeld,...
read postFOSDEM and Brussels, here I come!
I’ve been umming and arring over conferences this year. One that I don’t want to miss is FOSDEM – the Free and Open source Software Developers European Meeting, on a weekend next month in...
read postHawo's Queen of Grain Mills
I’ve been baking bread now for quite a while now. The bread baking bug first got ahold of me when visiting friends. They had a bread making machine – something that you put all the basic ingredients...
read postHello, 2004
2004 is here. Neues Spiel, neues Glück. Although I’ve tried to avoid meta-blogging, I’ll make an exception this time. For whatever reason my blogging went quiet towards the end of last year. Work and...
read postEvaluation WAS 6.40 on Linux - top reason for attending CeBIT 2004
Ahh, it’s always great to be able to attend the world’s biggest ICT (information and communication technology) fair – CeBIT. And of course being an SAP hacker, it goes without saying that a visit to...
read postFood for thought - LDBs and ABAP Objects
During part of this week I’ve been fighting with an old adversary, output determination. In the fracas, I spent some time inside RSNAST00 (the selection program for issuing output) and couldn’t help...
read postPowergen fails to 'get' the Interweb
For whatever reason, our gas and electricity company is changing to Powergen. It promised the ability to manage our account online and listed useful features which I looked forward to...
read postBSP - Mangled URL Decoder
The BSP mangles URLs. Deep down. In BSP In-Depth: URL Mangling, Brian McKellar did a splendid job of both feeding hunger for information and increasing one’s appetite. He mentioned the BSP application...
read postSAP TechEd - Collaborative notes
I’m off to SAP TechEd this week in Basel. Fantastic. It was a bit of a bumpy start – the online-registration process was a bit of a shambles, and I had to ring up to complete the transaction as the...
read postDashboard as extension to R/3 and SAPGUI client
How do your users work with SAP data? Exclusively through SAPGUI or with other desktop apps too? If it’s the latter, read on. Dashboard is an intriguing project headed up by Nat Friedman. The concept...
read postPlums and the antithesis of technology
I haven’t been online much recently. As well as enjoying a relaxing family holiday in England (where better when the weather’s right?), I’ve been living in a world distant from technology. Maybe it’s...
read postImproving the OSS note experience
I remember the time when OSS was a fledgling service, and it ran on an R/2 system in Walldorf. You accessed it via the R/2 SAPGUI just as any other R/2 system. It was great, and the volume of notes...
read postSAP InfoTag on Web Application Server
SAP are running an Infotag on the Web Application Server in early September. It’s in Ratingen (Duesseldorf), just around the corner – literally, in fact – from where I used to hack on R/2 at...
read postSAP talk at OSCON, and RSS
We got a pretty good attendance at our talk on SAP R/3 at OSCON this year. We had people who were using R/3 in a corporate environment already, and people who were just curious about the famous ERP...
read postGoogle Pocket Guide out now
I don’t think I mentioned it directly here (perhaps partly a cause and effect of the recent blogging hiatus) but the Google Pocket Guide has recently been released. Hurrah! It’s a book I worked on...
read postAnother great OSCON
Well, OSCON 2003 is over, and I guess all the attendees are more or less home by now. I got home on Monday night, after a detour to work in London. Tons of ideas and inspiration came forth during and...
read postThanks, Randal
I’m sitting here in a wonderful arcade of 80s arcade games, listening to Rush, arguably the best rock band ever, drinking beer, and enjoying WiFi, all courtesy of Stonehenge, and in particular Randal...
read postDashboard, a compelling articulation for realtime contextual information
Miguel de Icaza and Nat Friedman were keynoting at OSCON this morning. It was a great talk about the Mono project and a cool demo of Dashboard. I managed to convey some of the presentation to the...
read postSAP and Open Source BOF at OSCON
If you’re at OSCON or around the Portland area this Wednesday (9th July), come along to the SAP and Open Source BOF to chat with SAP and Open Source hackers about where the crossovers between the two...
read postBittersweet
On each occasion I’ve travelled to the USA, either on business or for pleasure, I’ve entered the country with a rather bitter taste in my mouth. Each and every time I’ve been grilled by rather...
read postThinking vs doing
In the past, I’ve mentioned to friends some of the thinking I’ve had about the Semantic Web, RDF, and related stuff (FOAF, RSS, and so on). Yesterday’s stuff, for example. On more than one occasion...
read postSome ramblings on URIs and identity
Coming back from a short break from the tech world recently, I started to reacquaint myself with FOAF and RDF, amongst other things. Looking at the FOAF data for various people, I was reminded of the...
read postSAP stuff at OSCON
My partner-in-(code)-crime Piers Harding and I are speaking at this year’s OSCON (Open Source Convention). What can the desperate open source hacker do in and around R/3? Plenty! If you’re going to...
read postThe SAP/MySQL Partnership
I keep hearing reports that the recent announcement of cooperation between SAP AG and MySQL AB has been making the community unhappy. What’s the deal? I don’t understand what’s not to like here. SAP...
read postHow do I get plugin Y to run before plugin X?
It might be the case that you want plugin Y to run before plugin X, because of what X does with what Y is supposed to have already done. Blosxom loads plugins in filename order, so make sure the...
read postWhy does my newly installed plugin not work, and not produce errors either?
It could be that the name of the plugin (from unpacking it) contains dashes or things like that. Blosxom only loads plugins whose names contain alphanumeric or underscore characters (i.e. A-Z, 0-9,...
read postWhy don't my readme file contents show up in my blog?
When you create a readme or readme.html file, its contents will only be displayed when you navigate to that part of your blog: http://www.example/food/italian/ should display any readme or readme.html...
read postHow can I access the entire URL in my plugin?
Use the CGI.pm module in the plugin: use CGI qw/:standard/; $url = url(); $path_info = path_info() You, unfortunately, can’t get to the #entry bit since that’s never sent to the Web server. That’s...
read postWhere do I have to put the Tiki.pm file for the tiki plugin to work?
The tiki plugin assumes you’ve placed Tiki.pm in a Text subdirectory of your...
read postHow do I detect the presence of another plugin?
All installed plug-ins: keys %blosxom::plugins All “on” plug-ins: grep {$blosxom::plugins{$_} > 0} keys %blosxom::plugins And if you’re interested in the order: print join ', ',...
read postSpeaking at OSCON 2003
Hurrah! Piers and I are giving a talk at OSCON, where the theme this year is “Embracing and Extending Proprietary Software”. Our talk is entitled “Integrating SAP R/3 and Open Source Software“. I...
read post"A brilliant literary mash-up"...
… is a great way to describe, as Kevin Marks did, the fusion of Hogwarts and Molesworth by Alice Dryden, who describes it thus: Wot hapen when nigel molesworth, the curse of st custards, find himself...
read postHow can I turn off a plugin for a certain flavour?
Use the config plugin and create a config.flavour (for the flavour you’d like it off) containing: $blosxom::plugins{'smartypants'} =...
read postHow can I convert Moveable Type entries to Blosxom?
There’s a script Mt2blosxom available, described [[Yahoo:769...
read postWeblogs and Wikis - Blurring the Boundaries
Early this morning Rael‘s Blosxom plugin ‘wikiwordish‘ found its way to the plugin registry. And a very nice plugin it is too. It allows you to use ‘wikiwordish’ notation like [[this]] to point to...
read postNew Blosxom plugin 'submission'
I’ve just written a plugin ‘submission‘ which provides Blosxom with a mechanism for accepting content POSTed to it. I wrote it initially as a mechanism for people to submit plugin information to the...
read post'Conneg' and the duality of weblogs.
Q: When is a blog not a blog? A: When it’s an RSS feed. I’ve pondered the relationship between weblog and RSS before, and in an Old Speckled Hen-induced philosophical state of mind, have decided for...
read postTiki parser for MoinMoin
Tim Appnel recently created TikiText, a Wiki-like markup language for which Rael recently created a Blosxom plugin. While theoretically interesting, I wasn’t sure how I’d get to know and be able to...
read postBlosxom 2.0 Beta1
My favourite blogging software just got better. Congratulations to Rael in releasing the plugin-enabled 2.0 Beta1 of Blosxom. I dropped it into my cgi-bin directory, tweaked a few things, and it...
read postRSS aggregators and user-agent information for Blagg
Prompted by a post on the re-awakened WriteTheWeb, I made a small mod to Blagg so that more detailed information is sent in the User-Agent header – announcing that the RSS aggregator ‘blagg’ is the...
read postTinkering with RSS and NNTP
RSS via NNTP is certainly not a new concept – I first read about the idea on Matt Webb‘s site almost three years ago. More recently there’s been mention over at Jon’s (Crossing the bridge of weak...
read postYour wishlist in 'consumable' XML
While experimenting with wishlist data, it occurred to me that it might be desirable to have one’s wishlist exposable directly from a URL, and in a consumable format. This would lend itself quite...
read postAsleep in 2002
Was I asleep in parts of 2002? Or is my memory really as bad as people tell me it is? Of course Amazon offer consumable XML. Now that an email from Chanticleer has jogged my grey matter, I have found...
read postThe fragility of retro-engineering
I just discovered that while the CPAN module WWW::Amazon::Wishlist pulled ASINs out of amazon.co.uk-based wishlists, it seems not to be able to find ASINs in amazon.com-based ones. I guess that the...
read postTransferring my Amazon wishlist to AllConsuming.net
Now that I can monitor comments about books I have in my AllConsuming collection, I thought it would be nice to add those books in my Amazon wishlist to that AllConsuming collection so that I could...
read postPresentations, Wikis, and Site Navigation
A while ago, inspired by others, I was looking at adding metadata to this weblog in the form of link rel=’…’ tags that link to related resources. The classic use of such tags in weblogging is for a...
read postContent-Type and Blosxom's RSS
Agreeing with Sam on what content-type should be used for the weblog’s feed (basically it should be whatever you specify in your link tag for that feed), last night I changed the appropriate Blosxom...
read postWisdom, diplomacy, or serendipity?
allconsuming.net has a SOAP interface. Nice and easy to call and use. But for those (including me) who (also) have a REST bent, there is also a tip-o’-the-hat style flavour that has interesting...
read postThe universal canvas and RSS apps
It seems that beyond carrying syndication information, RSS is a very useful and flexible way to get all sorts of application data pushed to a user over time. In the same way that a web browser is a...
read postThe disruptive engineering spectrum, and "booktalk", an AllConsuming app
At one end of the spectrum, along which building blocks for future cooperative web applications lie, we have the library software vendors who were unwitting participants in a great web service...
read postCreating the "Entry index"
Often I’d be discussing something and remember that I’d written something about it on this weblog. Manually searching through the files that contain the weblog entry texts was more painful than I...
read postA new year and a new approach
Well, after a rather long pause, I have found my way back to the keyboard. More and more Real Life started intervening during winter and I had less and less time around “here”. Not that I’m...
read postStartups and software patents
Dave W points to Strangeberry, a startup that are doing a Java rendition of Rendevous. “Interesting!” I think, as I go to their site and browse the founders’ resumes, where I find something rather...
read postFor REST, read 'Architectural Style'
In the swirling mass of memes surrounding web services (whatever they are) it’s sometimes easy to forget that REST is an architectural style, an approach, rather than something that you install or...
read post"Assaults on the Internet's end-to-end-architecture"
Jon Udell wrote about whitelisting and ChoiceMail earlier this month, and rightly pointed out that such mechanisms were in some ways evidence that in trying to combat UCE we were losing the general...
read postBen's RSS book
A (slightly) belated congrats to Ben on the publication of his book, Content Syndication with RSS. Just in time for my Christmas list. Having shared a similar experience I can appreciate the effort he...
read postRESTifying RT
After a rather longer-than-expected hiatus (I’ve been soaking up some of my online / technology saturation with some good old fashioned cooking, baking and sudden interest in antiques) I’m back in...
read post'Practical RDF' book up for public review
Great stuff – Shelley‘s forthcoming book, “Practical RDF”, is going to be available for public review. I’m looking forward to...
read postNotes to self: What should the rdf:about point to?
If nothing else, RSS 1.0 is a great source of contemplation and wondering. This morning, I’ve been considering the thoughts surrounding the rdf:about attribute in the channel element: ... What...
read postA moment of clarity: The significance of RSS 1.0 as an RDF application
Walking on the beach this morning (yes we’re on holidays) I suddenly had a moment of clarity. It may be obvious to you, but I’ve been struggling to see what the theme was that lay beyond the clutter...
read postThe case of the missing rdf:Description
RDF is a framework for describing resources. We know that. We also know (from various sources, such as the RDF Model and Syntax Specification, or Pierre-Antoine Champin’s RDF Tutorial (recommended!))...
read postMore thoughts to ponder
Here are two or three, er, thoughtbites, that I’ve come across over the past few days and that have stayed with me. I just thought I’d share them here as it’s the weekend and often a good time to...
read postXML Scripting, data manipulation, and RDF
I’ve just read Jon’s latest post on XML Scripting, which mentions Adam Bosworth’s thoughts about an XML scripting language that could natively support XML. While the advent of XML scripting sounds...
read postMoving from description to content:encoded in my RSS 1.0 feed
After spotting a comment on #rdfig regarding the contents of my RSS 1.0 feed’s <description>, I decided to take the plunge and use the draft part of RSS 1.0’s mod_content module, namely the...
read postFrom RSS 0.91 to 1.0
Now that I understand what the RDF in RSS is, I’m ready to move up to RSS 1.0. I’m using Blosxom which generates RSS 0.91 by default. Flushed with a previous success using XSLT, I thought I’d use that...
read postThe RDF in RSS
Ironically, it’s only been the recent and ongoing hubbub about the direction of RSS that’s got me wondering what the real truth is about the RDF in RSS. In a still handwavy sort of way, I understand...
read postMoving between Mozilla tabs with the keyboard
Thanks to Leandro Mariano Lopez, Andy McMullan, damaged justice (ian), and Brian Donovan, who all emailed me to tell me that it’s Ctrl-PgUp/PgDown, I’m one step closer to mouseless nirvana… Now, if I...
read postMozilla "Bookmark This Group of Tabs"
I was just reading some background stuff before I posted my comment just now over on the interesting discussion on REST and idempotency over on Sam’s site (the comment is also partially in response to...
read postREST, Google, and idempotency
Sam has asked Mark Baker a question, or rather, presented an apparent conundrum. It was a pleasant subject to ponder as I was rolling out the pastry for some apple and blackberry pies, and on...
read postCacheing on XSLT service
To speed things up on the experimental RSS-in-Mozilla-sidebar thingy, I’ve added in some cacheing (using a little MySQL db) to the simple XSL-Transform service that’s used to transform RSS to HTML on...
read postSidebars, Mozilla, RSS: old and new
Back in the spring of 2000, I wrote MySidebar, a concoction of Mozilla sidebars, XUL and RSS. It allowed you to specify an RSS URL and would generate XUL from it and install it in Mozilla’s sidebar....
read postYou know you're getting old ...
…when it takes you over two weeks to recover from OSCON. What with the travel (ok, including a connectionless week in Manchester visiting relatives), the email backlog, and the catch-up at work, not...
read postThe OS tables are turning...
I recently bought a Hama multi-slot card reader, primarily for reading the Smart Media cards used in our camera. It came with software for Windows. I installed it on our Windows 98 machine, and...
read postJust finished re-reading: The Player Of Games (Iain M Banks)
I read this a few years ago, and don’t think I appreciated some of the finer points (how many books don’t deserve a re-reading?). You can find out about the book at Amazon so I won’t bother with the...
read postThe mist is clearing ...
… but I’m not sure yet whether what’s being revealed is a bright sun, a dense forest, or more mist. In any case, it’s an interesting journey, and on the whole, enlightening. I’m trying to understand...
read postFrom REST to URIs, the Semantic Web, RDF, and FOAF
Good grief. Anyway, this exploration is certainly opening more doors than it’s closing. Actually, that’s not quite right. It’s showing me new doors that I choose to go through. This one had FOAF...
read postThe 80/20 of HTTP
I don’t know about you, but when I think of HTTP in action, I think of GET, POST, 200, 404, and 500. It seems that most of the HTTP work today (the 80%) is done in the context of these verbs and...
read postReflecting weblogs.com 'ping's with SOAP, Jabber, and Pubsub
Last month, Simon answered a cry for help from someone in the weblog community by creating blogToaster, a neat little IM-based app that alerts people about updates (coordinated through...
read postProgramming Jabber review
Cool, my book gets a nice review over at IBM DeveloperWorks. It’s been about a year now since I originally started researching and writing it; I’d taken a few months off work to devote time to it. It...
read postAccessibility and Blosxom
Catching up with things today, I read what Mark‘s been doing on the accessibility front. A great job it is too. I thought I might contribute a tiny bit of the jigsaw for the Blosxom users,...
read postA change and a rest
Just returned from a very relaxing holiday; we stayed at the Saunton Sands Hotel in Devon. Great place, wonderful views, and good service. We spent most of the time flying kites on the huge beach –...
read post'Blosmail' - add and maintain your blog entries via email
I’ve just put together a little script, blosmail, that lets you add (and modify) your Blosxom-powered weblog entries via email. The idea is that you can send emails to yourself with a specifically...
read postStanding on the shoulders ... Exploring Weblog Neighbourhoods with Blogdex
Inspired by Mark, and Dave, I’ve been doing a bit of neighbourhood exploration hacking of my own. Last week, I was alerted to Blogdex by Ben (through the funny little Metalinker Javascript-induced...
read postSmall Blagg mod to enable custom formatting of 'blaggregated' items
Well, further to the little formatting blaggplug I wrote yesterday to reformat the blaggregated items for my Morning Reading, I decided to go a step further and add a tiny template mechanism to Blagg...
read postChanged link tags
Following Dan Brickley’s point about the RSS mime-type, and Ben‘s and Mark‘s notes, I’ve made the required changes to the attribute contents for the pointer to this weblog’s RSS feed. Furthermore,...
read postHTML link tag for Blogroll
Mark is doing some very interesting social network scripting with a script that recursively follows and compiles bloggers’ blogrolls. It occurred to me, in the context of the RSS autodiscovery flurry...
read postCollapse/Expand feature for my Blaggregated display
Marc Barrot’s weblog, ‘slam’, has some great collapse/expand features for the display of his items. I’ve adopted his idea, using his javascript, to make the display of my “Morning Reading” neater and...
read postExtreme Computing 2002
Great. Looks like I’ll be going to the NTK/Mute Festival of Inappropriate Technology. I get the feeling that it’s going to be a combination of a computer fair (with second-hand and ‘antique’ kit),...
read postRSS's underlying structure, and meta-RSS.
I’ve been pondering the nature of RSS, the lightweight syndication and feed format which is a heavy contender for the most talked-about XML format these days (uh, I suppose this post goes some way to...
read postHTML LINK to RSS source
I’m doing my bit for the weblog community domino effect. Mark, and others, have added tags to their weblog HTML, to point to the RSS feeds for the respective weblogs. I think this is a good idea, so...
read postTop tip
If you want to avoid a stint in Accident & Emergency in-patients, and a bandaged ankle, don’t bolt down the stairs at Clapham Junction station two at a time and then miss your footing before you...
read postETag-enabled wget
Well, a little evening hack while watching Inspector Morse has produced a minimalist script wget.pl – a tiny wrapper around the wget command so that you can be more polite when retrieving HTTP based...
read postMore thoughts on HTTP, Email, and Jabber
Since writing the previous entry, some more thoughts have drawn themselves to my attention. There are advantages that HTTP does have over email. Built-in authentication for one thing. I’ve only used...
read post"Web^H^H^HInternet Services"? Some Ramblings.
I’ve been pondering the term “Web Services”. While I completely understand and agree with all the reasonings behind the term (the ‘original’ services were accessible via web clients, HTTP is the...
read postThe Panopticon
Everything that goes around, comes around. What thing links my old University (UCL), Jeremy Bentham, (whose preserved figure sits in UCL’s South Cloisters), and this year’s Emerging Technology...
read postJabberconf Blaggplug version 0+1b
I’ve just updated the ‘jabberconf‘ Blaggplug from 0+1 to 0+1b. This new version escapes the entities transferred as text to the Jabber conference room, stopping any XML-related chundering on Jabber’s...
read post(Jabber-)Browsing the Panopticon data
Ok, further to my initial Panopticon/Jabber experiments, I’ve extended the panpush.pl script to respond to jabber:iq:browse requests. As the script starts, and receives the initial gush of data from...
read postAmphetadesk Links
I was just chatting to Morbus in the Emerging Tech. Conference IRC channel (#etcon on irc.openprojects.net) and he mentioned his Amphetadesk news aggregator had a ‘subscribe to this’ feature for RSS...
read postSubscription from Radio
Sam has just had some difficulties subscribing to this weblog’s RSS feed. I checked the message he got, and looked at the XML produced by Blosxom. I’ve just added a tag and a tag (!) in the ...
read postMr 80-Percent
Nick Denton wrote an interesting article last month on how many hours people can, do, and should work in a week. It’s clear that he favours ‘80%ers’ over ‘120%ers’. I do too; having been in the...
read postBlaggplug: jabberconf
Q: What do you get when you cross really simple aggregation with ‘messaging to spaces’ and ideas of “poor man’s” pubsub? A: The ‘jabberconf‘ Blaggplug – a plugin for Blagg that pushes RSS item info to...
read postYARM: Yet Another Referers Mechanism
I’ve been reading what some people have been thinking and doing about referers and...
read postOne small step ... one giant leap ...
Yeow! "im://jabber/bull@mancuso.org" .examples.getStateName (12) See How to call a procedure over IM By ‘eck, it takes me back…. A hearty congrats to Dave (and Jeremy and Eric of course). “This...
read postCalendar code
I forgot to mention, the little script I used to produce the calendar on the right is...
read postBring on the SSI
As a kid, I used to regularly re-arrange my bedroom at home, not because I was unhappy with the layout, but simply because I could. I think this trait has remained with me, as I’ve just completed a...
read postBlosxom vs the world
In case you’re wondering why I’m using Blosxom instead of other fine weblogging tools like Radio Userland, Blogger, or Moveable Type, I’ll tell you. Not because I don’t want to pay the minimal (or...
read postBlog software review
I found a pointer on Dave W’s site to a survey of weblog tools. It’s a high-level but nevertheless interesting article that looks at some of the major weblogging software out there, and describes some...
read postcommunity(disagreement + debate) = inspiration
Not a period goes by in the extended computing community without a juicy debate or two. This time it’s SOAP and RPC vs REST, on afterburn with a Google API in(ter)jection. I can’t remember when a...
read post"Blog Locally, Publish Globally"
I’d been thinking of using cvs to help manage offline file-based blogging with Blosxom, but I recently read a couple of posts by Marc Nozell and Rael (to whom the title of this post is attributed)...
read postOther side of the coin: 5335 now resurrected
To complement the script that allows me to share my feed list with others, including Radio Userland users (with the coffee mug link), I’ve now written a simple pair of scripts which do the equivalent...
read postOriginal Peerkat-based weblog back up for reference
Well, I got everything back in order relating to the old experimental weblog, and I’m running an instance of Peerkat to expose the blog data. It’s back at the same address...
read postCoffee Mugs and weblog interop
In the same vein as the experiment with Peerkat, I’ve now exposed the feeds data for Blagg (which is the RSS aggregator mechanism I’m using with Blosxom) as a list on the right hand side of the weblog...
read postCross pollination and blossoming of scripts
There seems to be a wonderful, um, blossoming of scripts, tools, and ideas arould Rael‘s Blosxom and the new Blagg mechanisms. How about a Blogger API interface for Blosxom, or a plug-in architecture...
read postMy bookmarks
The essence of Blosxom, using basic tools and OS-level building blocks, inspires one to keep things simple, and celebrate the humble file as the lowest common denominator for data interchange. Now...
read postOff with the (relatively) old, on with the new
The move from Peerkat to Blosxom coincided with open disk surgery on our colo box that hosts this website. I’ve got this weblog up and running but need to install Python so I can boot my Peerkat-based...
read postInterview on jabber.org
My interview on jabber.org has been posted. Yikes! It's reproduced below. Jabber Interviews: DJ Adams (qmacro) JSF > People > Interviews > DJ Adams Everyone in the Jabber world seems to have...
read postHello Blosxom
Well, after having a look at Peerkat, from the pen of that maven Rael Dornfest, I turned my attention to his Blosxom project, a beautifully simple weblog mechanism that celebrates the power of the...
read postBot window as command line of the future
I visited Matt’s blog today after finding his Google script that I’ve adopted, and followed an interesting link to an article, “Search the web via IM”, in which Matt is interviewed regarding...
read postFOSDEM interview
(Transcript of an interview by Raphaël Bauduin for FOSDEM) Read how DJ Adams talks about Jabber ... It's Thursday, so it's interview time ! Today we receive someone who's name is now definitely...
read postWhat is a Jabber client?
"A rose is a rose, by any other name." But is the same true for a Jabber client? I don't think so. To answer this question, we first have to decide what a Jabber client is. To many, it is a...
read post