ADSD with AOA and Udi – Day 4

It has been four days since I slept.

I am hallucinating Authorities (aka Services), Bounded Contexts, or is that Business Components? Up is down, down is up. Everything is abstract. Everything is physical but different. Or not.

Today we moved at a much steadier clip through our materials. I was more alert by necessity, and there were fewer tangents, although still enough. There’ve been a few cases of not-really-questions-more-comments-to-try-and-impress, but far more frequent are in-depth tangents that feel like individuals trying to get some free consultin’ out of Udi.

It is of course hard not to bring your real-world scenarios into the learning experience, but there is a difference in the feel of a question motivated by not-quite-understanding and a question that is looking for a solution.

Today was actually surprisingly more concrete and nuts-and-bolts. Still provocative and even surprising in places though, but I wouldn’t have *that* any other way. Why yes, yes, let’s connect the javascript client straight to the database; and the case he made was surprisingly compelling all things considered.

I cannot quite tell how he felt about CQRS; the tone and body-language was somewhat dismissive, but he explained it with a level of nuance and determination at odds with that posture. He was definitely dismissive of Event Sourcing though. And we’re not allowed to use Udi Says for justification, but it was hard not to sympathize with his assessment of the limitations on its value.

He still reveals some things with a larger sense of mystery and caginess than I think is warranted, but at this point I’ve decided the showmanship is just getting the best of him.

And… I was so hopeful.

We got to 200 pages out of 250 around 4pm. I thought today was going to be an “early” one (i.e. 5:30pm for example), since I knew he had a further speaking gig in the evening, and surely he eats?

In the end he raced through to page 237 by about 7pm. I’d have said that bodes well for an early mark tomorrow, but I really have no idea what to believe anymore. I’m doing my best to stay focused and absorb everything throughout the day, but it is … so … hard.

One more day.

I can do this.

And then, hopefully, a more in-depth summary of what I got out of the experience.

The Answer Might Surprise You.

ADSD with SOAAOA and Udi – Day 3

Dear diary, today is day 12 of my 5-Day Training Course.

I would complain about the energy drain if not for the appreciation that Udi is investing so much of his time. Every day starts at 8:30, and goes well past 6 pm with very limited breaks. It’s a … marathon? (I hope?) We’re now 30 hours in with at least 20 more to go that I can tell, excluding further homework tomorrow.

I am a bit mystified why Udi uses the word “Service” so much when he clearly has a distaste for its nebulous definition and general appropriation. “Authority Oriented Architecture” sounds like a much better descriptor overall, even if Authority isn’t ideally unambiguous either.

IT managed to go through all the good words by the end of last century, re-defining them all into meaninglessness.

The pattern in Udi’s style is abundantly clear by now; cleverly selected examples without singular answers, and a well-honed skill at arguing, together make for a lot of head-scratching around the room. I am enjoying thinking around the provocative propositions he throws out there, but I cannot help but feel there’s a level of empty calories about the exercise.

There will be no technology advice anywhere along the way. That’s an implementation-detail that is case-specific and therefore not something he can (or will) give us. I think some in the class are still hoping/thinking we may end up there, but that’s not the direction this course is following.

There will also be no scientific underpinnings for the theories. De-composing architecture along the lines of his advice is a good thing, because. And by squinting just right I am convinced overall that’s true, but I wish I had something more concrete to hang that on. Case studies. Empirical evidence. A rigid mathematical proof (I can dream…), but that’s also not where this is heading.

It’s a very valuable exercise at stretching the mind, and learning new ways to approach architectural and design decisions though, and that’s not to be sneezed at.

Still no silver bullets, sadly.

ADSD with SOA and Udi – Day 2

So,…

Apparently I am back in school now; after a long day (8:30am – 6:30pm) I have a homework assignment for tomorrow. I had hoped to get some extra sleep tonight, but no luck.

UsingĀ Thing-Oriented-Architecture, I am modelling the service boundaries for a hotel booking system tonight. I probably will save some for on the train tomorrow morning, because I could barely keep awake today and if I don’t sleep well, tomorrow will be worse still.

As much as yesterday felt like the set-up for some grand unified theory on distributed design, after today it feels like there aren’t going to be any answers, just increasingly vague questions. And a lot of my own opinions. So maybe more than anything this is a course to help me figure out what I believe myself? With some rules-of-thumb thrown in?

So far the single most useful piece has been a helpful question to determine whether services are sitting in the right context together (or not). I can tell it’s going to get a big work-out in time.

And I’m looking forward to the suggested approach to pull information back together into a cohesive interface. I can kinda see where Udi’s leading, but it is still a little bewildering. This may be exacerbated by the fact that heĀ is clearly purposely constructing worst-case examples to push boundaries.

I’m hoping tomorrow brings more answers than new questions.

I’ll hold off on holding my breath.

ADSD with SOA and Udi – Day 1

I am learning this week.

Advanced Distributed Systems Design with Udi Dahan.

So far, I have acquired many new questions that I didn’t think I had need of, and I am hopeful that in another 4 days they will all have disappeared again whence they came. I am an optimist.

One thing missing from the copy of the slides we all got was the reference table for quick lookup of relative latencies in computers; it’s good to keep in mind how much slower memory is than the CPU, and how much slower an SSD is than memory, and network than SSD and reboots beat everything. I kinda feel an urge to start suffixing method names for nasty latency surprises to make it a bit more obvious.

As my mind wandered onto tangents, Conway’s Law took on a whole new dimension too. I wonder if software organisations should ever re-structure if there isn’t a need for software re-architecture.

I have so many provocative notes in my little booklet that I’m not sure how to turn into cohesive provocative statements. I’m also not sure which ones I actually believe yet, so maybe I will have a more nuanced view to filter them through towards the end of the week.

There are definitely things I disagree with, possibly strongly, but I haven’t given them as much thought as Udi, so I do not feel qualified to disagree overtly just yet.

First, I need to get through all these damned questions.

We All Should Learn a Thing or Two

I have been learning like a meth-crazed hamster.

It started about a month ago when I got a Pluralsight subscription at work; I had previously only been exposed to www.pluralsight.com in my capacity as manager with team-members that would like a subscription. It is the cheapest yet most valuable training budget you could ever spend on yourself or any subordinates.

Sure, there are bad courses as well. But overall my impression of the 30 I have done so far is that there’s more good than bad. And for the occasional slow speaker, there is an awesome speed control under the gear-wheel of their video player so you can go up to double-speed with anti-squirrel-compensation technology.

I like learning new tech topics by getting shown through an introduction. It’s not that I don’t like reading tech manuals and API documentation, but I have found that far too often when techies start writing it sprawls too broadly and leaves me completely clueless as to what is essential and what are the optional extras of a new technology. I think the written word especially is prone to a feeling that we must be comprehensive at all cost, when most of the time a new entrant just wants a gentle and limited introduction.

As a result I have found the “??? Fundamentals” courses on Pluralsight immensely helpful to broaden my horizons. But I would even go so far as to suggest that managers, whether technical or not, could probably benefit from these fundamentals courses. For the non-technical manager you may have to gloss over some of the techier bits, but courses like Jira Fundamentals or Agile Fundamentals are a great way to follow along with what your developers are talking about.

And another set of courses I have found especially helpful are the “??? Best Practices” ones. Even in technologies I am moderately familiar with a video on best-practices can be a great way to level-up to where the industry is already at. Javascript, Python and Angular, here I come!

So, I strongly suggest you go out there now, get a free 10-day trial, and give it a shot.

You might be as pleasantly surprised as I was.

Day 299 – Greatness: A Guide

67 – Anon’s 100 tips to greatness

4. Get a library card.

I suspect there is more to it than that exactly.
I have spent a good 5 minutes staring at my screen trying to figure out what the angle on this one is.

Maybe this is like a secret handshake. I get the library card, and as they hand it over they say something in a significant tone; “The Croissants Were Hot This Morning”, and then I’m expected to say “I Always Douse Them In Monkey Faeces”, and they show me into the back room where they keep the Real Books that nobody else ever gets to see.

Or maybe it is really just meant as an encouragement to just read more.
But that’d be lame for a list like this.

10. Drink your coffee black.

I will never be great.
Also, this is on the list twice, so I may actually be forever un-great now.

A coffee without frothed milk in it is just not really a proper beverage. And I now have to raise serious doubts about the sanity of the person or persons that assembled this list. How could… you know it just… just no.

No.

12. Read more, especially things you disagree with.

Well, the budget is coming up, so I’m kinda golden on that one for the next few weeks. Although I had kinda hoped to interpret it as a piece of comedy performance art for the sake of my sanity.

Luckily there is an endless supply of blogs that write nothing but things I disagree with.

I do take the point that I probably should read a few more of them though.
For a while at least.

16. Find things that inspire you and pursue them, even if there’s no money in it.

This blog is it for now. I know I have had moments of struggle to keep motivated, although there is something soothing about forcing myself to write something every day.

A few of the most inspired days were the ones where I really had no idea what I was going to do. I have 66 chances of forced greatness left, and then I’ll have to be all growed-up and find my muse and motivation outside my self-imposed constraint for the past 10 months.

22. Learn a new language.

I think I may honour this one by learning a fictitious language to help with item 53 below.

44. Get a deck of Oblique Strategies cards. Use them.

I had come across Oblique Strategies once before. Buying a deck of real cards seems a bit archaic, so I might see if there is an app for my phone. There is a website that doles out a “card” on demand.

The idea is that if you’re stuck behind writers block, or lack for inspiration that you pull out a card at random and apply the strategy presented to find a new way out. Or perhaps it can also be used to add a twist when you aren’t actually blocked in some way.

It’s an interesting idea I’ll explore later.

48. Learn to enjoy hunger.

Ah, the trick to losing weight.
Push through the fear and discomfort of my body telling me that it wants food.

I’ve mastered this one.

But I often ignore it as well.
When I’m in Melbourne it’s hard not to enjoy the food on offer. When we have Wednesdays With Friends it is hard not to just keep eating the cheese and dips in front of me. Some days were just not meant for dieting.

49. Make everything either shorter, or longer, than it needs to be.

Shorter is my stretch goal.

53. Get a tattoo. Don’t worry about regret.

Working on it.
I am working on an idea in Qenya written in Tengwar, but I’ll first have to learn the language and then adjust the execution to the available vocabulary. It’s comfortably resting in the back of my head until the right phrase presents itself. No rush.

59. Walk more.

Yes, I should get back in that.
I let it slide a bit.

69. Say no to projects you don’t care about.

That’s all good-and-well, but it doesn’t help me whittle down the endless list of projects that I *do* care about. The logical thing would be to make a ranked list, but I’m worried that as soon as I rank all the ideas and inevitably start work on the highest ranked project that the siren call of the rest will distract me and pull me away.

Is there a solution for that?

81. Dress like a cooler version of yourself.

Even cooler? Impossible!
(I’m going to do some research, because this is now another Project I Care About)

83. Add “adventurer” to your Twitter bio. Then, become one.

Begun.

87. Actually write on your blog. Nobody cares if it’s hard.

HAHAHAHAHAH.
HAHAHAHAHAHAHAH.

Seriously?

I eat blogging for breakfast.

I cannot believe it’s been almost 10 months already though. It is a surreal thought that tomorrow I will have 300 days and 300+ posts behind me. I think I should start planning a party for 365.

92. Learn how to speak in public.

This has been on my list for a while. I’m going to have to work out a topic and context. I always thought that at some point I’d try to speak at a tech conference somewhere. And that’s still an option, but I wonder if it might actually end up being something completely unexpected that kicks this off for real.

Or maybe I should just go on and do it.

Day 120 – Meeting

There’s nothing like 4 attempts at doing the same new thing in a single day. I don’t feel I was very consistent from one to the other, but they were all variations on a general theme. And I think I have some ideas of what I should be taking into the meeting myself.

I’m a big fan of taking notes collaboratively.

I would like to use a OneNote document in a location the direct reports and myself share, so I can create a new page for each weekly meeting and have a separate tab to track outstanding action items and future plans. Unfortunately a slight technical difficulty is preventing me from doing so. According to SharePoint, OneNote documents aren’t quite like any other document. Who knew?

For now, I am using Lync to screen-share an email with the developer, and then I type up the notes as I go along. No hidden agendas, and we both keep a copy of the notes afterwards. It also means that the notes to share are typed up right at the end of the meeting, because I write them as we go along.

I really recommend always keeping meeting notes as you go along and emailing them out straight afterwards. Notes that need to be “typed up later, and I’ll get them to you ASAP” have this habit of ending up on the back-burner, and the backlog just nags at my sense of what I should be doing. It’s less mental effort to do it along the way and then be done as soon as the meeting finishes.

The content needs some tweaking. I figured out different things that I should be asking everyone in each subsequent meeting. I’m keeping notes on these points so that I can be better about that in future meetings.

I also need to see if I can book a room for the not-me side of the meeting. I don’t mind taking frankly wherever I happen to sit, but I really want to be able to give everyone the opportunity to have privacy if needed. Anything to minimise barriers and discomfort.

Also, I’m wondering whether I should arrange similar weekly meetings with my direct business customers. I think the format and structure have something to offer to keep in touch with business needs and keep them informed of what is going on. I might go gauge interest tomorrow.

Now it’s the end of a very full day though, and all other thoughts can wait till tomorrow.

Presentation Screen Recording

I am doing some research and preparation for some presentations I want to do at work and then record for later (re-)use.

I believe the gold standard is still TechSmith Camtasia, but that’s not exactly the cheapest product to set up. It looks like their other product, SnagIt, does an equally good job if only recording is needed, but it is still not free.

I think I’ll give the freeware CamStudio a try; it looks very bare-bones, but the recording quality seems to be pretty good. If smaller files are needed later, post-processing in Camtasia is still an option.

I also thought I’d find a countdown timer, because I have a terrible sense of time once I am presenting. I have dual monitors, so I could easily hide the timer on the second screen and then share the main screen.

There are lots of free timers, but I lean a little sceptical with regards to countdown timers that need 2.5MB to install. I mean… really? Strictly speaking Orzeszek Timer at 109kb is probably also a bit large, but it gives me a little more confidence that it’s probably nothing more than just a simple timer.

Tomorrow I’ll set some time aside for a practice run with all my tools and my topics. I bet I will have to do some refining before Wednesday.