Random thoughts
Sunday, November 3, 2019
68 kilometers: The Ups and Downs of Wien Rundumadum 2019
68 kilometers, 1525 m elevation, 90000 steps – that’s how far I got this year at the Wien Rundumadum, the running event around the city of Vienna. While I dropped out again, it still marks the longest distance I ever did, albeit at a decreasing pace, but more on that later.
Last year I felt much better prepared but had screwed up on coordinating with family, now I had everyone’s blessing, although my family still thinks I am crazy, and probably rightly so. There were many familiar faces among the 83 runners who gathered in the early morning, ready for the 130 km course. After picking up the GPS trackers and getting a quick race briefing, we started at 05:30 am.
Having failed on the training plan and skipped most long runs, I knew that I lacked both mental and physical strength for a long distance run and was expecting some ups and downs. What I was not prepared for was the first energy low and a serious slowdown after merely 5 kilometers at a comfortable pace. An energy bar later I was back on track and happily moving along, except for a short detour to Cobenzl after missing a turn at Kreuzeiche. Reportedly, I was not the only one literally going for the extra mile here.
The first supply station had little to offer that appealed to me, heavy donuts are not my favorite food during activities. Tired of cold iso drinks I settled for only two bottles of sweat hot tea, which unfortunately didn’t go well with the sweat gels, so I skipped those. The second supply station after Lainzer Tiergarten had sweat rolls, which were not too bad once salted. The only real food was the soup generously provided by Traildog Running, many thanks to the team for offering something hot and salty.
There I was joking about having enough of a buffer to finish the remaining distance by walking, however moving on, my pace, which was already around 40 seconds per kilometer slower than last year, continued to drop and I was only half way through. Despite the optimistic predictions of my smartwatch, it became painfully obvious that I would not reach the finish line within the 24-hour cut-off time. The only co-runner going at a similar pace had fallen behind a while ago, and the prospect of doing the next segment through the Lobau national park all by myself wasn’t terribly attractive.
As night was falling, I decided to drop out. I had done more than half of the course, including most of the inclines, run longer and farther than ever before, and overall was at peace with myself and the world. Needless to say that after a lovely family dinner and a good night’s sleep I wonder if I should have done another segment, or maybe more.
If nothing else, the experience certainly has prepared me better for the next opportunity to go around Vienna: looking forward to WRU 2020!
Last year I felt much better prepared but had screwed up on coordinating with family, now I had everyone’s blessing, although my family still thinks I am crazy, and probably rightly so. There were many familiar faces among the 83 runners who gathered in the early morning, ready for the 130 km course. After picking up the GPS trackers and getting a quick race briefing, we started at 05:30 am.
Having failed on the training plan and skipped most long runs, I knew that I lacked both mental and physical strength for a long distance run and was expecting some ups and downs. What I was not prepared for was the first energy low and a serious slowdown after merely 5 kilometers at a comfortable pace. An energy bar later I was back on track and happily moving along, except for a short detour to Cobenzl after missing a turn at Kreuzeiche. Reportedly, I was not the only one literally going for the extra mile here.
The first supply station had little to offer that appealed to me, heavy donuts are not my favorite food during activities. Tired of cold iso drinks I settled for only two bottles of sweat hot tea, which unfortunately didn’t go well with the sweat gels, so I skipped those. The second supply station after Lainzer Tiergarten had sweat rolls, which were not too bad once salted. The only real food was the soup generously provided by Traildog Running, many thanks to the team for offering something hot and salty.
There I was joking about having enough of a buffer to finish the remaining distance by walking, however moving on, my pace, which was already around 40 seconds per kilometer slower than last year, continued to drop and I was only half way through. Despite the optimistic predictions of my smartwatch, it became painfully obvious that I would not reach the finish line within the 24-hour cut-off time. The only co-runner going at a similar pace had fallen behind a while ago, and the prospect of doing the next segment through the Lobau national park all by myself wasn’t terribly attractive.
As night was falling, I decided to drop out. I had done more than half of the course, including most of the inclines, run longer and farther than ever before, and overall was at peace with myself and the world. Needless to say that after a lovely family dinner and a good night’s sleep I wonder if I should have done another segment, or maybe more.
If nothing else, the experience certainly has prepared me better for the next opportunity to go around Vienna: looking forward to WRU 2020!
Friday, May 24, 2019
Happy birthday, www.ibm.com!
The IBM homepage launched on May 24, 1994. What started with a few pages and an audio welcome message evolved into a global web presence, and I am honored that I have taken part in that journey. Hard to believe it's been 25 years already.
Happy birthday, www.ibm.com, and welcome to the Quarter Century Club!
Related links:
Happy birthday, www.ibm.com, and welcome to the Quarter Century Club!
Related links:
- IBM
- IBM homepage history in screenshots by IBM's first corporate webmaster, Ed Costello
Labels: ibm, technology, webdevelopment
Thursday, March 28, 2019
Switching password managers: PowerShell to the rescue
As if dropping your beloved password manager and starting with another product wasn't hard enough, there is also the challenge of moving credentials to a new system. For many years I have been a happy RoboForm customer. The password manager integrated nicely with all browsers I use, had an easy to use interface and a flexible password generator, and with some fiddling also allowed selectively sharing family passwords on some computers only.
The integration with Firefox deteriorated when legacy extensions were dropped from the browser, and the new RoboForm extension never quite reached the same ease of use and consistency in the user interface. Time had come to look into alternatives, and the choice was a combination of KeyPass, the the popular open source product, and 1Password, an the enterprise ready solution that supports shared vaults for families and teams.
The migration seemed easy: RoboForm does have CSV export capabilities, although somewhat hidden in the latest version, and 1Password claims the ability to import RoboForm CSV files, only after a few attempts the results were mixed, to say the least. Some userids ended up in the password fields, and multiline notes were interpreted as tags. Clearly something wasn't right. 1Password support explained that the format seems to have changed recently, with RoboForm now exporting cards with the fields ordered as
whereas 1Password expects
That's where my new affection for PowerShell comes into play. This would have entirely doable in REXX, Perl, Python or any other language I have used for reformatting data, but parsing and generating CSVs can be tricky to implement or require additional modules. Not so in PowerShell, where the conversion from an arbitrarily ordered CSV with headers is a simple one-liner:
And voilà, all data automagically ends up in the right fields.
Photo credit: Image by Jan Alexander from Pixabay |
The integration with Firefox deteriorated when legacy extensions were dropped from the browser, and the new RoboForm extension never quite reached the same ease of use and consistency in the user interface. Time had come to look into alternatives, and the choice was a combination of KeyPass, the the popular open source product, and 1Password, an the enterprise ready solution that supports shared vaults for families and teams.
The migration seemed easy: RoboForm does have CSV export capabilities, although somewhat hidden in the latest version, and 1Password claims the ability to import RoboForm CSV files, only after a few attempts the results were mixed, to say the least. Some userids ended up in the password fields, and multiline notes were interpreted as tags. Clearly something wasn't right. 1Password support explained that the format seems to have changed recently, with RoboForm now exporting cards with the fields ordered as
Name,Url,MatchUrl,Login,Pwd,Note,Folder,Rf_fields
whereas 1Password expects
Name,MatchUrl,Login,Pwd,Note,Folder,Rf_fields,Url
That's where my new affection for PowerShell comes into play. This would have entirely doable in REXX, Perl, Python or any other language I have used for reformatting data, but parsing and generating CSVs can be tricky to implement or require additional modules. Not so in PowerShell, where the conversion from an arbitrarily ordered CSV with headers is a simple one-liner:
Import-Csv -Encoding UTF8 -Path $infile | Select-Object "Name", "MatchUrl", "Login", "Pwd", "Note", "Folder", "Rf_fields", "Url" | Export-Csv -Encoding UTF8 -NoTypeInformation $outfile
And voilà, all data automagically ends up in the right fields.
Labels: powershell, security, technology
Friday, January 25, 2019
Going extreme, briefly
The eight
edition of the 24 Stunden Burgenland Extrem Tour around Lake Neusiedl took
place this weekend. Having signed up and cancelled twice for health reasons, I finally
made it this year. A big thank you to my friend Erich, whom I had talked into going
for this together three years ago and who was kind enough to give it another
try.
I was super
excited the days before and somewhat relieved to see others talk about their rising
panic as well, both the distance of 120 kilometers and the unpredictable winter
weather make this more extreme than the typical running event. Fortunately the storage
capacity of the running vest put a natural limit on how much I could possibly
pack to feel prepared.
Following
the spirit “LIVE LOVE MOVE”, as the organizers put it, the 24 Stunden Burgenland Extrem Tour is not a competition
but a huge collective adventure, a road to new experiences, life-long
friendships and also a path to yourself. Right from the start the tour is very relaxed, a large crowd of
people moving along the narrow tracks, usually in small groups, not worrying
too much about their pace, chatting and having a good time.
The weather started out nice, with temperatures around the
freezing point and only a light breeze, and the bright moonlight illuminated
the snow-covered tracks up and down the vineyard hills (so much for Burgendland
being flat). After slipping a few times on the snow-covered tracks, I once scored
points for an elegant telemark landing that should later knock me out of the
tour.
We passed the green boarder near Fertőrákos, and enjoyed the beautiful landscape
and the sun that finally broke through the clouds. As we progressed to Balf,
the first supply station offering tea and snacks, we decided to each run at our
individual speeds. While I managed to stick to my planned pace on average,
walking uphill and running downhill, my ankle was increasingly hurting and I
was happy to reach the second supply station at Hegykő.
Unfortunately taking a break here didn’t help, on the contrary. Getting back
into my shoe I could barely walk, let alone run. Thus ended the tour for me early
after just 34 kilometers.
Back in
Oggau, the nice lady who recognized the finishers with a medal insisted that I
should get one too, kind of an honorary mention I guess. Doing just one fourth
of the tour was certainly not what I had planned but still a good experience, and
above all I made new friends and learned a few things for the next time.
Congratulations to all finishers, who successfully beat the weather and the
strong winds in the second half of the tour, extreme thanks to the organizers for a great
event, and I am looking forward to the 24 Stunden
Burgenland Extrem Tour again in 2020!
Labels: running
Saturday, September 29, 2018
Crazy I like, ultra I ran
It’s been a crazy week, starting with the Wachau marathon last Sunday, the Vienna Night Run on Tuesday and two days at a conference in Berlin, returning last night. Today I participated in the Wienerwald Ultra Trail and finished the 55 km Diamant-WUT in 08:25 hours. So proud to join the ranks of ultrarunners!
The day started somewhat chaotic. After a short night’s sleep I managed to spill water all over my backpack and the kitchen floor while trying to fill the water reservoir, switched to bottles instead which are easier to handle, then rushed to Purkersdorf to pick up my starter bag just ten minutes before the starting time. Ready, set, go!
The course mostly runs through forest areas, with a mix of forest roads and single trails, and some six or seven ascents account for a total nominal elevation gain of 1,900 meters, although my tracking device recorded slightly less. Weather conditions were just perfect, with clear skies and low temperatures. After a while we were a group of three, Francisco Javier from Argentina and Ulrike, going at more or less the same pace, having a good chat along the way, occasionally one of us dashing off only to be caught up at the next ascent or supply station.
At the 45 km mark I was already super-happy that I had gone beyond the marathon distance and still felt pretty good, and together we managed the remaining distance, the never-ending series of smaller ascents before finally going back down to Purkersdorf, where we all happily finished within a few minutes’ range.
Thus ends a crazy week with a total of over 100 km in running competitions; time for a break now.
The day started somewhat chaotic. After a short night’s sleep I managed to spill water all over my backpack and the kitchen floor while trying to fill the water reservoir, switched to bottles instead which are easier to handle, then rushed to Purkersdorf to pick up my starter bag just ten minutes before the starting time. Ready, set, go!
The course mostly runs through forest areas, with a mix of forest roads and single trails, and some six or seven ascents account for a total nominal elevation gain of 1,900 meters, although my tracking device recorded slightly less. Weather conditions were just perfect, with clear skies and low temperatures. After a while we were a group of three, Francisco Javier from Argentina and Ulrike, going at more or less the same pace, having a good chat along the way, occasionally one of us dashing off only to be caught up at the next ascent or supply station.
At the 45 km mark I was already super-happy that I had gone beyond the marathon distance and still felt pretty good, and together we managed the remaining distance, the never-ending series of smaller ascents before finally going back down to Purkersdorf, where we all happily finished within a few minutes’ range.
Thus ends a crazy week with a total of over 100 km in running competitions; time for a break now.
Labels: running
Sunday, July 8, 2018
Gornergrat Zermatt Marathon: Up to new heights!
Im Oberwallis im schönu Tal
Da löifunt alli widär Mal
Än Marathon mit Emotion
zZielband gseh, das isch diinä Lohn
(from the official Gornergrat Zermatt Marathon song “Alli gliich” by Sam Gruber)
Da löifunt alli widär Mal
Än Marathon mit Emotion
zZielband gseh, das isch diinä Lohn
(from the official Gornergrat Zermatt Marathon song “Alli gliich” by Sam Gruber)
Yeah, I did it! Seeing the finish line was the main goal for the Gornergrat Zermatt Marathon, my first full marathon this year. On Saturday I finished this fantastic alpine racing challenge from St. Niklaus at 1,116 m all the way up to Riffelberg at 2,585 m in an excruciating 7:22:13.5.
The weather forecast had started with rain and thunderstorms a week before the race and got better by the day, with only light rain on Friday when I arrived by train, and a perfectly clear sky and sunny weather on Saturday. An alphorn quartet, which welcomed the runners at the start in Sankt Niklaus, was the perfectly fit to the picturesque mountain landscape. The first half of the run to Zermatt was quite easy, with plenty of shade along the track and only 500 m vertical height, and the headache that had plagued me for the first few kilometers magically disappeared.
The second half was more challenging, with steep inclines, mostly in the sun, and varying terrain from comfortable hike paths to rugged areas and single trails. The beautiful nature along the route and the absolutely stunning views on the king of mountains, the Matterhorn, make it well worth the effort and enjoyable. After all, this is not so much a race against the competition but against yourself – and the clock.
The small margin against the cut-off time was shrinking rapidly. With not enough energy or time left, I had to forgo the admittedly quite arrogant goal to take on the extra 3.4 km to the Gornergrat for an “insane ultra” (organizer Olivier Andenmatten) and happily settled for the marathon distance this time. What a relief when I crossed the finish line and received my marathon medal and the finisher pack!
Also thank you to my running partners in crime for their support and encouragement. When I had mentioned the remote idea of going for the Gornergrat Zermatt Marathon a few weeks before the event to Egon Theiner, he suggested to give it a try: “Not sure about your current training level, but then, nothing ventured, nothing gained!” It was well worth it, and congratulations Egon on your successful ultra run.
Lastly, the organizing team and the many helpers deserve a big round of applause for making this an absolutely perfect event. With the many friendly and helpful people at the supply stations and along the course, everything just worked fine.
PS. Did I get to see the Gornergrat after all? Of course, I took the train up to the summit right after the run to enjoy the panoramic view.
Related links
Thursday, May 17, 2018
WeAreDevelopers 2018 conference notes – Day 2
Thursday
was another busy day at the WeAreDevelopers 2018 world congress in Vienna. Some of the logistics challenges with missing or unannounced overflow
areas have been resolved, and I did even see a picture posted of the afternoon
snacks, so they do exist but seem to be going fast. The ÖBB booth at least had
some nibbles left.
A major
upgrade of a JavaScript framework or switching to a different framework
altogether can be quite a hassle, as most of us probably have experienced.
Tracy Lee (@ladyleet) started day 2 with the bold promise
of writing highly reusable, future proof code. The secret sauce to enable this magic
is Reactive programming and the RxJS library for reactive programming using
Observables.
Following
Tracy’s intro, Michael Hladky (@michael_hladky) looked into the gory details of
RxJS schedulers, with live coding and cool demos on stage. There are several
types of schedulers, asapScheduler, asyncScheduler, queueScheduler, animationFrameScheduler, virtualTimeScheduler, and testScheduler.
The execution order of events depends on the
type of scheduler. Little known and hardly documented is the fact that introducing
a non-zero delay effectively turns any scheduler into an asyncScheduler, which
may lead to unexpected results.
Security analyst Florian Grunow (@0x79) shared his security hall of shame
with examples of insecure Web Applications and creative but futile countermeasures.
Surprisingly, the security issues are still largely the same as a decade ago,
like clear text credentials, missing authorization checks, sequential ids,
autocomplete passwords, and cross-site scripting attacks.
Non-alphanumeric cross-site scripting is a good example of why input
validation and stripping
some special characters is not sufficient, for example
this['ale'+(!![]+[])[-~[]]+(!![]+[])[+[]]]()
Colm Doyle
(@colmisainmdom) showed how companies are using #slack to enable ChatOps 2.0:
Bringing ChatOps Principles to the Whole Organization. Organizations are wider
than just technical teams, and command line interfaces may not be for everyone. Shopify, one of the companies
mentioned, has a pretty detailed description of their incident management procedure on their engineering site.
In the afternoon, Horst Kargl of Sparx Systems gave an
introduction into modelling using Enterprise Architecture tools and languages
like UML and SysML; not sure if the agile aspect was covered in greater detail later, as I had
to leave the session.
Writing Perfect Code with Standard
and ESLint by Feross Aboukhadijeh (@feross) could have been the shortest talk
ever: npm --install standard; done. Fortunately there was more on
programmer errors, best practices, and style issues, and how linters can help
with these. Pretty neat examples of broken or otherwise surprising JavaScript
code, for example
[]==![] // true
[]==false // true
![]==false // also true, yikes!
Continuing the awesomeness was Una
Kravets (@una) with an exciting story about the past, the present and the
future of CSS. The past was ugly hacks and lots of browser specific code, been
there, done that. The present already held some surprises unless you have been
following CSS developments closely, and the future
capabilities range from “Wow, I had no idea you could ever do this” to some really crazy
stuff.
@supports, display: grid, the
will-change property, CSS variables, variable fonts, font animation, ambient
light media queries are among the more recent features, with varying browser
support (read: mostly not working in IE). gridtoflex.com comes handy when implementing
a grid design using flexbox. What was particularly nice was the fact that the
presentation deck itself was HTML+CSS, allowing live demos of most features
from the debug console.
Flavia Sequeira and Ernst Naezer of
ING shared the evolution of their API journey at ING, from the initial API
discussions to a working API management practice, and the benefits of
regulatory pressure in the form of PSD2. What makes a good API? APIs are
different from Web services in that they should be designed from the outside
in.
The categorization into self, screen and stage APIs depending on who they
are made for sounds about right, and the POST to GET is a commonly seen pattern
both for security reasons and request size restrictions. The one thing I wish
we had thought of when designing APIs a while back is the /me pattern for the
authenticated user, instead of passing the user identification again in the
request.
Rounding off the day, Matthias
Huttar (@matthuttar) took the audience on the journey to trunk based
development, explaining the importance of successful builds and being on time
at kindergarten, and energizing the crowd for the last session with a superfast
round of high fives.
Trunk development is great for well integrated teams that
value speed over safety, and can help reduce cycle times, conflicts and
ultimately errors and rollbacks if done right. There are scenarios where trunk
development may be less suitable, including highly regulated environments such
as financial services or utilities, as well as open source projects where the
circle of trust is much smaller than the circle of contributors.
Related links
Labels: austria, technology, wearedevs, webdevelopment
Wednesday, May 16, 2018
WeAreDevelopers 2018 conference notes – Day 1
Some 8,000 developers are getting together this week in Vienna for the WeAreDevelopers 2018 world congress.
Registration was surprisingly fast and painless, a Graham roll and an energy drink as developer breakfast maybe slightly too clichéic (or I am getting old), but fortunately there was plenty of coffee available all day, including decent cappuccino at one of the sponsor booths.
Asked at the conference opening what topics people would be most interested in hearing about, Blockchain came out first, followed by machine learning and, still, devops.
Steve Wozniak rocked the Austria Center with an inspiring “fireside chat”. Talking with the brilliant Monty Munford, The Woz answered questions submitted by the audience and shared his views on anything from the early days of computing and why being a developer was great then (“Developers can do things that other people can’t.”) to self-driving electric cars (overselling and underdelivering) and the Blockchain (too early, similar to the dot com bubble), interspersed with personal anecdotes and, as a running gag, promoting the Apple iCloud.
As a long-time mainframe guy, I liked his claimed his programming language skills too, FORTRAN, COBOL, PL/I, and IBM System/360 assembler, although he did mention playing more with the Raspberry Pi these days.
Mobile payments was a good example of the design principles that made Apple famous and successful. Steve mentioned how painful early mobile payment solutions were, requiring multiple manual steps to initiate and eventually sign off a transaction, compared to Apple Pay where you don’t even need to unlock your device (I haven’t tried either one, and they don’t seem to be too popular yet.)
The most valuable advice though was to do what you are good at and what you like (“money is secondary”), to keep things simple, and live your life instead of showing it off, which is why he left Facebook, feeling that he didn’t get enough back in return. For an absolutely brilliant graphical summary of the session, see Katja Budnikov’s real-time sketch note.
Johannes Pichler of karriere.at followed an ambitious plan to explain OAuth 2.0 from the protocol to to a sample PHP implementation in just 45 minutes. I may need to take another look at the presentation deck later to work through the gory details.
A quick deployment option is to use one of the popular shared services such as oauth.io or auth0.com, but it comes at the price of completely outsourcing authentication and authorization and having to transfer user data to the cloud. For the development of an OAuth server, several frameworks are available including node.oauth2 server for NodeJS, Sprint Security OAuth2 for Java, and the Slim framework for PHP.
In the afternoon, Jan Mendling of the WU Executive Academy looked at how disruptive technologies like Blockchain, Robotic Process Automation, and Process Mining shape business processes of the future. One interesting observation is about product innovation versus process innovation: most disruptive companies like Uber or Foodora still offer the same products, like getting you from A to B, serving food, etc. but with different processes.
Tasks can be further classified as routine versus non-routine, and cognitive versus manual. Traditionally, computerization has focused on routine, repetitive cognitive tasks only. Increasingly we are seeing computers also take on non-routine cognitive tasks (for example, Watson interpreting medical images), and routine manual, physical tasks (for example, Amazon warehouse automation).
Creating Enterprise Web Applications with Node.js was so popular that security did not let more people in, and there was no overflow area available either, so I missed this one and will have to go with the presentation only.
Equally crowded was Jeremiah Lee’s session JSON API: Your smart default. Talking about his experience at Fitbit with huge data volumes and evolving data needs, he made the case why jsonapi.org should be the default style for most applications, making use of HTTP caching features and enabling “right-sized” APIs.
Hitting on GraphQL, Jeremiah made the point that developer experience is not more important than end user performance. That said, small resources and lots of HTTP request s should be okay now. The debate between response size vs number of requests is partially resolved by improvements of the network communication, namely HTTP/2 header compression and pipelining, reduced latency with TLS 1.3 and faster and more resilient LTE mobile networks, and by mechanisms to selectively include data on demand using the include and fields attributes.
Data model normalization and keeping the data model between the clients and the server consistent was another important point, and the basis for efficient synchronizatiion and caching. There is even a JSON Patch format for selectively changing JSON documents.
Niklas Heidoff of IBM compared Serverless and Kubernetes and recommended to always use Istio with Kubernetes deployments. There is not a single approach for Serverless. The focus of this talk was on Apache OpenWhisk.
Kubernetes was originally used at Google internally, therefore it is considered pretty mature already despite being open source for only a short time. Minikube or Docker can be used to run Kubernetes locally. Composer is a programming model for orchestrating OpenWhisk functions.
Niklas went on to show a demo how to use Istio for versioning and a/b testing. This cannot be done easily with Serverless, which is mostly concerned about simplicity, just offering (unversioned) functions.
The workshop on Interledger and Website monetization gave an overview of the Interledger architecture, introducing layers for sending transactions very much like TCP/IP layers are used for sending packets over a network. Unlike Lightning, which is source routed so everyone has to know the routing table, Interledger allows nodes to maintain simply routing tables for locally known resources, and route other requests elsewhere
Registration was surprisingly fast and painless, a Graham roll and an energy drink as developer breakfast maybe slightly too clichéic (or I am getting old), but fortunately there was plenty of coffee available all day, including decent cappuccino at one of the sponsor booths.
Asked at the conference opening what topics people would be most interested in hearing about, Blockchain came out first, followed by machine learning and, still, devops.
Steve Wozniak rocked the Austria Center with an inspiring “fireside chat”. Talking with the brilliant Monty Munford, The Woz answered questions submitted by the audience and shared his views on anything from the early days of computing and why being a developer was great then (“Developers can do things that other people can’t.”) to self-driving electric cars (overselling and underdelivering) and the Blockchain (too early, similar to the dot com bubble), interspersed with personal anecdotes and, as a running gag, promoting the Apple iCloud.
As a long-time mainframe guy, I liked his claimed his programming language skills too, FORTRAN, COBOL, PL/I, and IBM System/360 assembler, although he did mention playing more with the Raspberry Pi these days.
Mobile payments was a good example of the design principles that made Apple famous and successful. Steve mentioned how painful early mobile payment solutions were, requiring multiple manual steps to initiate and eventually sign off a transaction, compared to Apple Pay where you don’t even need to unlock your device (I haven’t tried either one, and they don’t seem to be too popular yet.)
The most valuable advice though was to do what you are good at and what you like (“money is secondary”), to keep things simple, and live your life instead of showing it off, which is why he left Facebook, feeling that he didn’t get enough back in return. For an absolutely brilliant graphical summary of the session, see Katja Budnikov’s real-time sketch note.
Johannes Pichler of karriere.at followed an ambitious plan to explain OAuth 2.0 from the protocol to to a sample PHP implementation in just 45 minutes. I may need to take another look at the presentation deck later to work through the gory details.
A quick deployment option is to use one of the popular shared services such as oauth.io or auth0.com, but it comes at the price of completely outsourcing authentication and authorization and having to transfer user data to the cloud. For the development of an OAuth server, several frameworks are available including node.oauth2 server for NodeJS, Sprint Security OAuth2 for Java, and the Slim framework for PHP.
In the afternoon, Jan Mendling of the WU Executive Academy looked at how disruptive technologies like Blockchain, Robotic Process Automation, and Process Mining shape business processes of the future. One interesting observation is about product innovation versus process innovation: most disruptive companies like Uber or Foodora still offer the same products, like getting you from A to B, serving food, etc. but with different processes.
Tasks can be further classified as routine versus non-routine, and cognitive versus manual. Traditionally, computerization has focused on routine, repetitive cognitive tasks only. Increasingly we are seeing computers also take on non-routine cognitive tasks (for example, Watson interpreting medical images), and routine manual, physical tasks (for example, Amazon warehouse automation).
Creating Enterprise Web Applications with Node.js was so popular that security did not let more people in, and there was no overflow area available either, so I missed this one and will have to go with the presentation only.
Equally crowded was Jeremiah Lee’s session JSON API: Your smart default. Talking about his experience at Fitbit with huge data volumes and evolving data needs, he made the case why jsonapi.org should be the default style for most applications, making use of HTTP caching features and enabling “right-sized” APIs.
Hitting on GraphQL, Jeremiah made the point that developer experience is not more important than end user performance. That said, small resources and lots of HTTP request s should be okay now. The debate between response size vs number of requests is partially resolved by improvements of the network communication, namely HTTP/2 header compression and pipelining, reduced latency with TLS 1.3 and faster and more resilient LTE mobile networks, and by mechanisms to selectively include data on demand using the include and fields attributes.
Data model normalization and keeping the data model between the clients and the server consistent was another important point, and the basis for efficient synchronizatiion and caching. There is even a JSON Patch format for selectively changing JSON documents.
Niklas Heidoff of IBM compared Serverless and Kubernetes and recommended to always use Istio with Kubernetes deployments. There is not a single approach for Serverless. The focus of this talk was on Apache OpenWhisk.
Kubernetes was originally used at Google internally, therefore it is considered pretty mature already despite being open source for only a short time. Minikube or Docker can be used to run Kubernetes locally. Composer is a programming model for orchestrating OpenWhisk functions.
Niklas went on to show a demo how to use Istio for versioning and a/b testing. This cannot be done easily with Serverless, which is mostly concerned about simplicity, just offering (unversioned) functions.
The workshop on Interledger and Website monetization gave an overview of the Interledger architecture, introducing layers for sending transactions very much like TCP/IP layers are used for sending packets over a network. Unlike Lightning, which is source routed so everyone has to know the routing table, Interledger allows nodes to maintain simply routing tables for locally known resources, and route other requests elsewhere
Labels: austria, technology, wearedevs, webdevelopment
Sunday, April 22, 2018
Vienna City Marathon 2018, and why this may have been my last one
Today I finished the Vienna City Marathon (VCM) half in 02:24:59, an improvement over the half marathon two weeks ago despite the heat, and better than I expected after a long involuntary training break. It was a good run, and I am quite happy with the result. Nevertheless, this may have been the last time I participated in the Vienna City Marathon, and here's why.
I ran my first marathon here in 2015, and have been coming back every year since. The course is great, the atmosphere is great, with people cheering along most of the route, but the quality of service just doesn't feel right, especially not for one of the more expensive running events.
Much has been written about the lousy “starter packs”, which are just the clothing bag and some vouchers, no goodies, not even an energy bar or a drink. Now I don't need a large bag filled with useless, unrelated stuff (like salad sauces!), but a little something would be a nice sign of appreciation. (There was a finisher bag this year with some fruit, snack and drinks.)
42,000 athletes sound great, and combining full, half and relay marathons in one competition surely provides for fantastic pictures at the start. The downside is that things get crowded at times. Very crowded. Today, the first two supply stations had long queues of runners desperately looking for water, and the (too few!) poor folks at the booths couldn't keep up with the demand at all.
At the 15km supply station, we were told that they still had cups but had “run our of water.” What? I saw several dehydrated runners seeking assistance from emergency services. It is the damned duty and responsibility of the organizers to ensure sufficient supplies, not of the emergency services. Oh, and given the lack of supplies the moderator's recommendation to “drink plenty” sounded like utter mockery.
Lastly, one of my pet peaves: At most running events, you will find waste bins after the supply stations, allowing for a controlled disposal of plastic cups. Granted, some still land on the street but for the most part this works fine. Not so at the Vienna City Marathon, there are no bins and consequently cups are disposed off on the street. Running over thousands of plastic cups and sticky energy drinks is not fun. (I admire Pumuckl and the few other barefoot runners who have to go through this unprotected.)
In the finish area, I overheard several people complaining about the organization, too. As long as the various competitions are still fully booked every year, the organizer will probably see no reason for changes. I have been seriously disappointed today, and will consider whether to participate in this event again next year.
I ran my first marathon here in 2015, and have been coming back every year since. The course is great, the atmosphere is great, with people cheering along most of the route, but the quality of service just doesn't feel right, especially not for one of the more expensive running events.
Much has been written about the lousy “starter packs”, which are just the clothing bag and some vouchers, no goodies, not even an energy bar or a drink. Now I don't need a large bag filled with useless, unrelated stuff (like salad sauces!), but a little something would be a nice sign of appreciation. (There was a finisher bag this year with some fruit, snack and drinks.)
42,000 athletes sound great, and combining full, half and relay marathons in one competition surely provides for fantastic pictures at the start. The downside is that things get crowded at times. Very crowded. Today, the first two supply stations had long queues of runners desperately looking for water, and the (too few!) poor folks at the booths couldn't keep up with the demand at all.
At the 15km supply station, we were told that they still had cups but had “run our of water.” What? I saw several dehydrated runners seeking assistance from emergency services. It is the damned duty and responsibility of the organizers to ensure sufficient supplies, not of the emergency services. Oh, and given the lack of supplies the moderator's recommendation to “drink plenty” sounded like utter mockery.
Lastly, one of my pet peaves: At most running events, you will find waste bins after the supply stations, allowing for a controlled disposal of plastic cups. Granted, some still land on the street but for the most part this works fine. Not so at the Vienna City Marathon, there are no bins and consequently cups are disposed off on the street. Running over thousands of plastic cups and sticky energy drinks is not fun. (I admire Pumuckl and the few other barefoot runners who have to go through this unprotected.)
In the finish area, I overheard several people complaining about the organization, too. As long as the various competitions are still fully booked every year, the organizer will probably see no reason for changes. I have been seriously disappointed today, and will consider whether to participate in this event again next year.
Sunday, April 23, 2017
Vienna City Marathon 2017: Slower than before, and happy about the result
Spoilt by the improvements in running in the first two years, I had to drop down a gear this year. After finishing the first few races in 2015, including two marathons and two halfs, and accumulating 1000 km running by year end, the following year was even better. The improvements over all distances brought me recognition and a nice collection of cups by the Running@IBM club.
This year was off to a slow start. Suffering from colds for several months, running was out of question. I reluctantly skipped a long-distance event only after luring a colleague to consider the event, and haven't been training much until recently.
With only two long jogs in the last quarter, going for the marathon distance seemed unreasonable, and I postponed the decision to the racing day. After a good first half I decided to go for the full distance anyway. The lack of training did show in the second half when I hit the wall around km 30 but eventually finished, slower than in previous years with 04:55:13 h.
Still an enjoyable run, happy that I made it through!
This year was off to a slow start. Suffering from colds for several months, running was out of question. I reluctantly skipped a long-distance event only after luring a colleague to consider the event, and haven't been training much until recently.
With only two long jogs in the last quarter, going for the marathon distance seemed unreasonable, and I postponed the decision to the racing day. After a good first half I decided to go for the full distance anyway. The lack of training did show in the second half when I hit the wall around km 30 but eventually finished, slower than in previous years with 04:55:13 h.
Still an enjoyable run, happy that I made it through!
Thursday, December 31, 2015
1000 km—Or: How I Became a Runner
When I started running some 15 months ago, my goal was to relax and live healthier. If you know me, I haven’t been much of a runner before, aside from occasional runs through the Wiener Prater or along the beach a few times per year.
Today I completed my 1000th kilometer this year. I have run two full marathons and two halfs, competed in a trail run and some shorter races and finished ninth place in the local Running@IBM cup.
Over the years I have admired sporty family members, friends and co-workers, including an Olympic walker, marathoners, ultra-runners and triathletes, and have drawn inspiration from their determination and their successes. But it was a newspaper ad from an insurance company that literally flipped the switch, a lonesome runner in the middle of the night explaining that some folks call him “Daddy” and he’d like to keep it that way for long.
The beginning was hard. I barely managed short distances non-stop. Soon I started seeing improvements, and in October last year I boldly decided to go for the full marathon distance in April and as an extra motivation join the #Run4CARE charity campaign. The initial response when I started telling people about my plans later on was usually along the lines of “You? Seriously?!”, usually followed by encouragement and support.
What was meant to be a once-in-a lifetime experience has turned into a bit of an addiction. I was hooked and just have to keep on running.
Happy New Year everyone, and Happy Running!
Today I completed my 1000th kilometer this year. I have run two full marathons and two halfs, competed in a trail run and some shorter races and finished ninth place in the local Running@IBM cup.
Why I started running
Like most nerds spending long hours in front of their computers, I had been sitting in my office chair for long hours, seeing my health parameters getting worse at every annual checkup, not to alarming levels but still, constantly gaining weight, and getting recommendations from my doctor to eat less and exercise more … and found tons of excuses why I had other things to do first and could never find the time.Over the years I have admired sporty family members, friends and co-workers, including an Olympic walker, marathoners, ultra-runners and triathletes, and have drawn inspiration from their determination and their successes. But it was a newspaper ad from an insurance company that literally flipped the switch, a lonesome runner in the middle of the night explaining that some folks call him “Daddy” and he’d like to keep it that way for long.
Starting slow
And so I got my old sports shoes out and started running. Took the stairs instead of the elevator. Made an effort to eat healthier and intermittently switched to alternate day fasting (“weekday 10-in-2”). Joined the Running@IBM club and made new friends there. Downloaded training plans and (here comes the nerdy part) wrote some scripts to ease importing them into my calendar. Bought a book on long-distance running.The beginning was hard. I barely managed short distances non-stop. Soon I started seeing improvements, and in October last year I boldly decided to go for the full marathon distance in April and as an extra motivation join the #Run4CARE charity campaign. The initial response when I started telling people about my plans later on was usually along the lines of “You? Seriously?!”, usually followed by encouragement and support.
The first marathon
During winter I mostly followed my training plans, regardless of weather conditions. Facebook somewhat made up for the lack of a training buddy (finding someone nearby for midnight and early morning runs wouldn’t work out), the Likes and comments helped me staying on track. When I eventually finished the Wien Energie half marathon in March, I felt a great sense of accomplishment and pride, and even more so in April after doing the full distance at the Vienna City Marathon.What was meant to be a once-in-a lifetime experience has turned into a bit of an addiction. I was hooked and just have to keep on running.
Happy New Year everyone, and Happy Running!