After a bit over a year, it’s time to get the band together again, and start doing some blogging. What have I been doing in the interim? Stuff… and I’ll probably go through some of that later, but my main journey recently (for most of this year) has been around Design Thinking.
Yeah, I know, everyone was raving about Design Thinking years ago, but as an Architect I thought “Oh, I get that, it’s thinking like a designer…” I did that when I did Architectural Design roles, but I didn’t really get it. Now I do though and the best place to start is with the UK Design Council “Double Diamond”
The first diamond is The Problem and we’ll get back to that, but the second diamond is The Solution. Unfortunately, in Architecture and much of IT we’ve made a nice cozy home in the second diamond of The Solution which is probably why things are in such a deluded and confused state in IT – we’re coming up with Solutions when WE DON’T EVEN KNOW THE PROBLEM!
Feel free to post comments down below and I’ll respond and maybe even change what I’m writing based on any feedback.
WOW! I just realised that it’s been a year since I did a blog post. I knew it had been a while, but I figured around 6 months max… Well, I suppose I needed it, and the good news is that I’M BACK!
I’m not going to go in to what has transpired over the past year since an agile adoption, as it’s quite involved and will come out in some successive posts, but will focus on where I am now and what my Posting Plans are.
Near the end of last year we started planning a return to Australia after almost a decade in the UK – what a BLAST! So many lovely experiences, people, places and new friends :-) Eventually though, it was time to return to Australia as it really is my home and although I may have a few gripes about it, Australia really is an amazing place and as the old cliche goes: I now really appreciate how lucky I am to live in this country after being away so long. That shot above is from my local beach which is 3 mins drive, and I can get in to the city (in the distance) in around 1/2h with a walk and public transport – that’s a pretty good lifestyle.
So what’s in the pipe? A much more varied mix than when I started out doing just “software stuff”:
- Reflections on life in the UK and Europe
- Observations on life in Australia now I’m back
- Reviews of gadgets
- Travelogues as I explore my own country – now I’ve probably seen more of Europe than I have of Australia, so it’s time to correct that
- Process – yes, I’m still on the agile path
- Architecture – looks like that will be my primary area of work still
- Software – which I’m gradually getting back in to, with the current focus being Clojure
- Probably the odd bit of music or photography to round things out
- Anything else anyone would like me to write about…
If you follow me on Twitter (@RiczWest) then you’ll know I was working on an iOS game called ASCIItrek which is derived from Super Star Trek that was written in C. I’ll eventually do a complete rewrite in Swift, but before that I’m taking the existing code and integrating it in to an iOS interface. In order to do this I’ll need to call C code from Swift. The Architect in me however wants to cleanly separate things and use Objective-C as a “bridge”, which as you’ll see later is probably a pretty good idea.
It’s always been “theoretically possible” to do this in earlier releases of Xcode prior to 6.3, but the whole process seems fraught with potential errors and I could never get it fully working. With the recent release of Xcode 6.3 I thought I’d give it a go and am glad I did as it seems to work relatively easily as I’ll describe.
Note: In this post I’ll assume that you’re relatively familiar with coding in Xcode
Firstly, you’ll need to create a project, which is no-brainer – just create a Swift one which we’ll adjust as we go… At the highest level we’ll have some code which acts as a test harness which I just added:
where chopper (tribute to American Chopper :) is an Objective-C method and c_chop is a c one which is invoked from Objective-C. First, the Objective-C one which is relatively simple:
if you just look at the chopper method where I’m basically doing a string concatenation – we’ll get on to the c_chop method after we’ve examined the C code:
which has one basic method/function called chop that like the Objective-C one just prepends the parameter which is obviously more complex in C. The one thing that worries me slightly is the fact that I’m mallocing memory which is passed to Objective-C which I’m kind of assuming will be deallocated – I’ll probably revisit this later…
If you go back to the Objective-C code above for c_chop you’ll see there is a bit of complexity, which is why I think it’s better to wrap a C call in Objective-C. The stringWithFormat: method is just a concatenation, but notice that you have to convert the Objective-C/Swift string to UTF8Sting before passing and then convert the result back with stringWithUTF8String. To me, this is enough reason to have an Objective-C layer interposed between your Swift and C layers.
Hopefully this post has made it easier for anyone else who is on the same path – the code is on GitHub at https://github.com/RiczWest/swocc – feel free to mail me if you have any questions. Later, I’ll be doing another post on C to Objective-C to Swift (which I also need)
PS Having HUGE problems with syncing GIT, which I have just checked and they are a BUG – I will attempt to fix later…
I was “doing stuff” on my iMac and got a Notification saying “Why not try the new Memory efficient and Fast Safari?”. Fine – I thought – I’ve just upgraded to Yosemite, so why not give it a go?
Boy, was that a mistake..! The first hint was Safari “Not Responding”
Well that’s probably OK as it’s the first time Safari is staring up in my account, so it’s probably doing a few things…
That’s a bit of a worry – a browser, which should be 2-300M in memory is not only consuming 3G Virtual Memory (I only have 4G real), but it’s now causing other programs like DropBox to “Not Respond”. That’s a serious load on the system!
and it peaked at 5G memory consumption – that’s for a browser!!! The Yosemite image comes on less than that! There is a serious memory allocation bug here, however it’s leveled out, so I decided to just let it run… No difference though, it just stayed at 5G so I had to kill it (after about 10 mins)
and of course everything went back to normal. To be fair, when I restarted it, Sarari, it was consuming less than Mozilla
but there’s only 69M difference… Hmm… What to choose? A stable browser I’ve used for many years, or a “psycho browser” that chewed up 5G of memory on a whim? The choice is obvious!
Anyone who knows about the Broken Windows Theory of Software Development will realise that this is not a good sign. I’m not talking about some obscure utility that I had a problem with, this is the System Browser!
If I was Apple, I’d be worried about it… and I’d posit to say that if Steve Jobs was at the helm, this would of never happened. Unfortunately, the two people that seem to be “running” the company are Tim Cook (who is a classic Delivery Manager) and Jonathan Ives (Absolute Design Legend) don’t seem to understand one critical component to the whole “i-experience” – Software!
Yes, Jobs was a tyrant (I’ve met him and seen him meter justice to others for no good reason) but he did have an understanding of Software Quality, which is something that is sadly lacking with the current management…
This is just a small example of Apple “losing the plot” and anyone who has “upgraded” to the various bad versions of iOS or OS X will know what I’m talking about…
Why did I write this? Because I love Apple products! I’ve been using and programming them since before they were “cool” (2002 – actually 1993 if you count NeXT) and don’t think it’s too late! Apple are starting to go down a slippery slope… If they pick up their game they can still produce “Insanely Excellent” products, but that’s to be determined. If they don’t, then people like me will switch to Windows (which is becoming “not that bad”) or Linux (which I can handle) and everyone else will switch to something else about 5y after…
PS For those who don’t know me, this was written on an iMac and I have an iPad 2 Air, so I’m not an “Apple Basher” ;-)
PPS Another “broken windows” tip – who wants a calculator that has a translucent background on the display???
what if I had a light background behind it? That’s just crazy… Again, broken windows
It’s been quite a while since I’ve posted much, mainly due to a contract which requires me to drive on the M20 and M25 (aka “the carpark” for those outside the UK) and as a result, I just don’t seem to of had the time and energy…
I look forward to getting on something where someone else is doing the driving so I can use my time effectively
Amazingly, it seems like only 7% (4.5 Million) people in the UK use public transport. Given that nearly 1/3 (22 Million) live in the South-East, where transport is generally pretty good, that seems pretty low. No surprise given the number of people on the motorways – I’ll be happy to take one more off them next contract.
So what’s up for 2015 for me and this blog?
For one, I plan to start getting back in to a bit more of a rhythm, both with my posts and the associated (play) work (generally outside “real work”), and I will continue to post based on my experiences – recent and past…
- Lifestyle & Reviews
- Process & People & ScramJet
- Architecture, including Enterprise & SOA aspects
in no particular order. I won’t get in to specifics as much of it is not yet planned, or I’m working on it but don’t want to reveal it until I have enough meat on the the bones so I can be sure it will fly.
- Review of Bob Marshall’s “Thinking Different” happening last year
- Review of the: BMW i3 electric car; Samsung Galaxy Alpha
- Corporate Subversion – in a positive manner of course :-)
and that’s really just the “boring stuff” – there should be some very interesting posts coming as I hit my stride.
I hope you’ve all had a great XMas & New Year break and look forward to some great interactions in 2015!
Today I’m (@RiczWest) starting a new twitter account. It’s called ChangeArc. For those who follow me, you’ll recognise this as my “Blog Name” – so what’s the purpose?
Simple – when I started using Twitter, it was primarily as a bookmarking tool. To some extent I still use it as such, but also for so much more…
There’s one problem though – as I look at a lot of content, that means a lot of tweets, and not everyone likes that, including me! There are a number of great people I’d like to follow, but I can’t because they tweet too much.
To that end, I’m going to start a much lower volume (only a few tweets per day) account which is ChangeArc. So what can you expect apart from less tweets? Extremely high quality tweets that will include any posts I do.
I don’t know how this will evolve, but it will be interesting to see…
Firstly, this post is not really mine, it’s more an “ad” for a workshop coming up in the UK during the Software Architect Conference in London in October presented by the legendary @RuthMalan who was behind the Visual Architecting Process
I’ll be going to the conference and Ruth’s workshop – if you’re in to Architecture , you may want to check out the conference and workshops. Now, over to Ruth:
Abstract: We will spend time with the usual suspects — (re)factoring, dependencies, naming, forces, trade-offs, mechanism design, system and component boundaries and interaction surfaces… And some sketchy ones — making the system design visual and drawing people in. We will take some silver bullets* — relationships of goodwill and commitment to objectivity — to heart, and be playful, exploring (the interaction between) the various facets of architectural design:
- strategic and structural significance: identifying strategic outcomes and defining challenges; design of system capabilities and system structure; system qualities and mechanism design;
- decision scope: decisions at broader scopes (system, mechanism, service) and decisions at narrow or local scopes (units) considering intentionality and emergence;
- timing of decisions: clearing the fog of uncertainty/putting ground under the feet and the “last responsible moment”, iteration and evolution
And we will take our fallibilities, biases, foibles into account. How? That is indeed it. Our focus will be on how. We will use creating a draft (set of views of the) software architecture to situate our discussions and practice system thinking and modeling, strategic thinking (understanding what is shapingly important in the user context and business and technology space), and design improvement strategies. Our orientation is to co-creation of systems that have desired structural integrity properties, including resilience, but also design integrity and dynamic unity.
Our goal is to surface key matters of architectural judgment, drawing out myths and misconceptions, and sharing, positioning and connecting useful conceptions, strategies and techniques, and laws, principles, heuristics and other guidance.
Pre-requisites: The main prerequisite is to be open, playful and engaged. I facilitate moving through really vital shifts in perception and put useful tools in the architect’s toolbelt, but we have to throw our lots in together, co-create together, playing when it is time to play — to explore and get options on the table — and, when it is time, getting serious and making strategically significant decisions the group coheres around.
About: Having worked in the software architecture field since the mid-90’s, Ruth Malan has arguably played a pioneering role, helping to define architectures and the process by which they are created and evolved, and helping to shape the role of the software, systems and enterprise architect. She and Dana Bredemeyer created the Visual Architecting Process which is recognised by the Open Group and emphasizes: architecting for business agility, system integrity and economic, technical, organizational and environmental sustainability. Creating architectures that are good, right and successful, where:
- good: technically sound;
- right: meets stakeholders goals and fits context and purpose; and
- successful: actually delivers strategic outcomes.
Translating business strategy into technical strategy and leading the implementation of that strategy. Applying guiding principles like:
- extraordinary moment
- minimalist architecture
So we can Be Agile and Create Options…