Skip to Content
Event Information
Author's profile photo DJ Adams

Hands-on SAP dev with qmacro – onwards and upwards!

My first live stream happened last week, and I think on balance I can say it was successful. Read more about it here.

On Friday last week I live streamed for the first time, on Twitch. A couple of days beforehand, I published the post “Hands-on SAP dev with qmacro – new live stream series” to give folks a heads up. That post is still relevant, and it’s where you can find out more about the idea for live streaming, the plans, a schedule, and how to watch.


I’d set up as much as could beforehand, in terms of hardware and software (I plan to write a separate blog post on the details of this setup, it’s a fascinating area and was completely new to me).

In my streaming software setup I have three main “scenes” set up: “Standby”, “Video & Chat” and “Main”, which I can switch between as and when I need to.

I hit the “go live” switch at a few minutes before the hour, with my “Standby” scene active. This allows the early viewers to know that the stream will be starting soon, and exposes the stream chat  in the stream video itself, too which is a useful touch, I think.

At 0800 Manchester time (I’m trying to make this an official timezone, not sure how successful I’ll be) I switched from the “Standby” scene to the “Video & Chat” scene which adds a large webcam capture window, which gives me a chance to get closer to the viewers while I explained the idea of the live stream initiative and the plan for the next hour.

Then it was on to the main business of the episode, and for that I switched to the “Main” scene, which included (as you can see in the screenshot) lots of detail including the capture of one of my Displays, as well as a smaller webcam capture window and of course the live chat.

The episode

I was absolutely overwhelmed by the number of viewers who not only came watch the live stream, but also to interact with each other in the chat. The expectations I’d set were quite modest, and it’s fair to say that these expectations were far surpassed. Thank you to all of you who joined the session – you all made it what it was, super successful, fun, interactive and an event where I hope all of us learned something (I know I did!).

Here are some stats from Twitch about the session itself:

Over 50 average viewers, peaking at over 60 – I think that’s wonderful for the first episode. I am looking forward very much to the next episode, which of course is this coming Friday (25 Jan). For those of you who don’t know, the idea is that it’s weekly, on Fridays, always at the same time, for an hour, starting at 0800 Manchester time, which translates into the following times around the world: 0900 in Berlin, 1330 in Bengaluru and 1900 in Sydney (more in the schedule section of my previous post).

Discussion was active throughout, too, with 134 chat messages in total.

We looked briefly at this tutorial on the site: “Create a Business Service with Node.js using Visual Studio Code” and specifically examined the nicely modern JavaScript in the “Provide mock data” and “Add custom logic” steps, noting various modern constructs and techniques such as destructuring, fat arrow function definition syntax, and more.

We then used parts A and B of the Day 1 puzzle from Advent Of Code 2018 to warm up our collective grey matter a little. We based our hacking activities around a simple test harness that expects a dayN.js file with two exported solver functions a and b, and a dayN.input file with the day’s input.

This is what the test harness (index.js) looked like:

// Test runner for AOC solutions

// The day is expected to be passed via an env var 'DAY'
// From this we make the JS module (e.g. day1.js) and the input (e.g. day1.input)
	solver = './day' + (process.env.DAY || 1),
	input = solver + '.input'

	// To clean the input generically
	clean = x => x
		.split(/\n/)                    // split lines into array
		.map(x => x.replace(/\r$/, '')) // remove any carriage returns
		.filter(x => x.length),         // drop any empty lines

	// Load the day's solver (which should have 'a' and 'b' functions)
	solve = require(solver)

// Load the input, clean up, and run the solvers a and b
require('fs').readFile(input, 'utf8', (err, data) => {

	const input = clean(data)

	// Output solutions

We used some map and reduce goodness to solve part a, and then looked at building a “seen” mechanism using a closure and an Immediately Invoked Function Expression (IIFE) to solve part b.

It was fun!

Thank you

I’m leaving the most important section to the end of this post, which is to recognise and thank everyone who joined, you are the ones who made the episode successful. Some of you had already started following me on Twitch, and some joined the stream and followed there and then.

abapfreak, Espersura, StErMi87, avhbn, hobru2000, aminmarsafy, ccmehil, saffronsoul, uwek0, larshp, fredverheul, christianguenter, nocheintobi, dn1977, venkymachineni, pimpmycode, CariFaine, pjcools, chandanpraharaj, ljadhav, bharath86, sygyzmundovych, rgeeks_mrd, hausenhexe, mexlance, nabheetmadan, 5PERI, henrik_da, cleSAP, tpham207, Roberdinho, lvhengel, mexico_man, hfumey, ennowulff, imyourtwitchdoctor, Seiivo, ceedee666, koehntopp, rileyrainey, sevladimirs, darkworld2255, fullstackdaun, aydogdumurat, tassie_rocks, thulium3, mylesfenton, patrizia0103, IchBimsDeiMudda, nzamani, BungaloX, harunkar, CoreKeeper, callaghan001, sun150690, rohith480, alancecchini, hamzoo, ankit403, grabenschlaefer, tgrassl, fabianorosa1, rsletta, nypesap, sw1fm4n, Lupomania, ssurampally, vaihbavshetkar, uxkjaer, fulstak.

A special thank you to those that took part in the conversation. This series is all about learning from each other, so good on you.

For those who are interested in the subsequent episodes in this “Hands on SAP dev with qmacro” series and who are not already following, may I recommend you follow me on Twitch – go here: and hit the “Follow” button:

Find out in the updates section of my previous post how to get reminded of upcoming events.

Finally, in the words of the Sirius Cybernetic Corporation Complaints division (from Hitch Hiker’s Guide to the Galaxy, of course): share and enjoy!

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Jakob Marius Kjær
      Jakob Marius Kjær

      Thank you DJ for doing this series. Sorry I probably won't join your love streams as my boys are being out to bed at that time. But trust me that I'm viewing the replay at a later stage.

      Thanks for all your contributions. A true inspiration!

      Author's profile photo DJ Adams
      DJ Adams
      Blog Post Author

      "love streams" - I'm definitely going to take that as a compliment! 😉

      Author's profile photo Jakob Marius Kjær
      Jakob Marius Kjær

      HAHA. Stupid auto correct! I was thinking of editing my comment, but then figured. On second thought. What's the harm 😛

      Author's profile photo John Astill
      John Astill

      Love this idea DJ, Thanks for doing this.

      3am for live attendance is tough, but I will for sure be watching the replays. I was half expecting a last of the summer wine theme music even if its not a pic from Yorkshire.

      Author's profile photo DJ Adams
      DJ Adams
      Blog Post Author

      Thanks John 🙂 That's a nice idea (Last of the Summer Wine) actually (altho the music rights are something I have to pay attention to!). I might have to wear a flat cap instead of the music.

      Your comment about the time is very valid, and I appreciate you watching the replays as an alternative. It was always going to be difficult to cover all timezones; I have in mind for later in the series to switch the time to allow the US folks to join and attend live. Watch this space!