tag:blogger.com,1999:blog-91119713269814795632024-02-19T12:00:19.465+00:00ArkAngelOfKaosGamer, developer and thinker of many random thoughts.Unknownnoreply@blogger.comBlogger123125tag:blogger.com,1999:blog-9111971326981479563.post-71598240989951004872021-11-24T20:46:00.038+00:002021-11-24T21:53:04.916+00:00Collaborating On Software: Optimising For Recovery<p>One of the mantras I like to follow when creating software systems is to "optimise for recovery" over "optimising against failures". This is embracing the fact that we're all human and thus mistakes will happen. In practice this means I focus on how quickly we can detect failures and repair them<span class="ref"><span class="refnum">[0]</span><span class="refbody">Which is part of the reason I love TDD, the act of predicting and preventing failures BEFORE they even happen :D</span></span>.</p>
<p>What I find novel is embracing this approach with how we work together. Accepting that we're not always perfect<span class="ref"><span class="refnum">[1]</span><span class="refbody">Shocking, I know!</span></span> and that we will make mistakes in how we communicate and collaborate.</p>
<p>Perhaps one of the most painful parts of this approach is dealing with the "production outage" level of mistake - a breakdown in trust.</p>
<p><span>Trust is tantamount in any relationship. In working relationships, I really like the definition of trust from <a href="https://itrevolution.com/agile-conversations/" rel="nofollow" target="_blank">Agile Conversations</a></span><span>: </span></p><span id="docs-internal-guid-ead5d3d4-7fff-d74c-eb76-1e3174dceffa">
<span>1) I have expectations about what you will do that have been met before</span><br/>
<span>2) I believe you will meet those expectations again, when we collaborate again in future</span><br/>
<br/>
</span>
<span>This is touched upon in </span><span>Jeffrey and Squirrel’s podcast on <a href="https://soundcloud.com/troubleshootingagile/choosing-grief-over-guilt " rel="nofollow" target="_blank">Choosing Grief Over Guilt</a>.</span><span> It's unpleasant to experience behaviour contrary to my </span><span>expectations, it is a </span><span>violation of trust. It's not something to just skip over. </span><span >The associated negative emotions won’t simply go away, or in the very least they won’t for me! </span><span>Squirrel makes an excellent point: I can’t be curious<span class="ref"><span class="refnum">[2]</span><span class="refbody">If I'm not in the mindset to be curious then my ability to effectively communicate is greatly inhibited.<br /><br />If I was to try to power through this then it would probably lead to poor communication.<br /><br />Poor communicate will probably lead to poor collaboration... and thus the spiral towards the Dark Side continues!</span></span> until I deal with my emotions.</span>
<br/>
<br/>
<div><span>When trust is broken, guilt is not the answer. Guilt isn't helpful and neither is ignoring emotions. To recover from a breakdown in trust, it is more effective to <span>first drain off the sadness, the anger and the frustration. I find this helps me get into a mindset where I can</span><span> cultivate </span><span>curiosity</span><span> and thus more effectively communicate/collaborate.</span></span></div>
<br/>
So when working with others, I will take up the mantra of optimising for recovery. When mistakes are made, we can deal with the emotions first, so that we can move forward to rebuilding trust. I predict that, just as with software, it will make our relationships more robust in the long term.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-72288735209017893682021-11-17T00:06:00.014+00:002021-11-17T00:33:26.348+00:00Guilt Free Refactoring - Not Just The Codebase!<p>Last Tuesday we hit a really important milestone internally and we unveiled the fruits of our labour. It was a pleasure to see the culmination of work I've been doing with my amazing team since June 2020!</p><p>Reflecting on the week since Tuesday, I'm anxious with how little coding I've done. We've got so much work to do and I feel ashamed I'm not demonstrably making progress toward it.</p><p>I've found the best weapon against my shame<span class="ref"><span class="refnum">[0]</span><span class="refbody">Thank you to David Genn who introduced me to my "shadow side" being a cause of my shame - neat little snippet on it is <a href="https://medium.com/technology-goji/setting-objectives-as-a-software-developer-f8e4a44e64ce" target="_blank" rel="nofollow">within this post</a>.</span></span> has been to council myself as I would council my friends or my family. I'm kind to them and firmly root things in reality. With this in mind, I ask, if you haven't been coding then what have you been doing? Here's the list:</p><p></p><ul style="text-align: left;"><li>An emotional team retro involving a lot of shared vulnerability</li><li>Discussing the migration to centralised authentication/authorization</li><li>Catching up with one of our Product Directors on our shared vision</li><li>Jointly designing the evolving cross-company microservice architecture</li><li>Delving into the tradeoffs between Trunk Based Development & Feature Branching with one of the team leads</li><li>Testing new remote pair programming tools<span class="ref"><span class="refnum">[1]</span><span class="refbody"><a href="https://tuple.app/" target="_blank" rel="nofollow">Tuple</a> seems amazing. <a href="https://aws.amazon.com/cloud9/" target="_blank" rel="nofollow">Cloud9</a> is great if you're on AWS and only want the "hit and run" cost.</span></span></li><li><a href="https://twitter.com/arkangelofkaos/status/1460684142811750400">Organising sponsorship for the London Java Community Unconference</a></li><li><a href="https://twitter.com/arkangelofkaos/status/1458870537661394958">Canvasing the web for new hires to join us on our epic quest</a></li><li>Reviewing CVs and getting a feel for people brave enough to reach out to me!</li><li>Diving into the intricacies of one of our legacy systems</li><li>Facilitating a cross-functional retrospective tackling resolving conflict, decision making and communication</li><li>Aligning product managers and technology teams on how we manage resource contention across products</li><li>Digging back into one of our data sources, which I haven't touched since May</li><li>As always, dealing with my anxiety!</li></ul><div>Gee whizz, sounds kind of ridiculous to be ashamed when it is all written out in black and white like that. Perhaps that is what is needed though, to simply face the reality and accept it as it is<span class="ref"><span class="refnum">[2]</span><span class="refbody"><em>“When you argue with reality, you always lose – but only 100% of the time” - The Work by Byron Katie.</em><span class="ref"><span class="refnum">[2a]</span><span class="refbody">Thank you kindly to <a href="https://livingunbound.net/lessons-resources/level-1/resources/the-work-byron-katie/" target="_blank" rel="nofollow">livingunbound.net</a> for helping me track down the quote/source!</span></span><br /></span></span>.</div><div><br /></div><div>I've done very little feature development and delivered very little into production this week. The important thing to note is I've made a tradeoff, that I've focussed my effort on what is effectively "refactoring the organisation". I never feel guilty when I'm refactoring code as part of TDD. So it feels odd to me to feel guilty when refactoring processes/communication/architecture across the organisation.</div><div><br /></div><div>Naturally there is a balance to be struck here, it would be quite unlikely that I would be productive from simply refactoring all the time! I do want to take the stigma away from it though. Refactoring is something I want that to be proud of, whether it is codebase or a company! </div><p></p>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-84098140326456341352021-04-27T13:53:00.017+01:002021-10-02T02:57:58.482+01:00Skimmer's Guide - Don't Make Me Think (2nd Edition - Steve Krug)<div style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;">
<div class="separator" style="clear: both; text-align: center;">
</div>
</div><div style="background-color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdtgOoqFAC1SGFJTMHynWoHQMC5MzFO1DMM9zOF6cu7rm5_HZIuEgFZHVFUhuyycc-Tgmz5A-xud-LyO7W8tO0TNVoX9c_9RFt4NH3R-SfYKNW8OhvKcNVR9fD5VnoXmznIQy8gqpEkhA/s1240/Screenshot+2021-04-22+at+13.40.26.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1240" data-original-width="960" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdtgOoqFAC1SGFJTMHynWoHQMC5MzFO1DMM9zOF6cu7rm5_HZIuEgFZHVFUhuyycc-Tgmz5A-xud-LyO7W8tO0TNVoX9c_9RFt4NH3R-SfYKNW8OhvKcNVR9fD5VnoXmznIQy8gqpEkhA/w155-h200/Screenshot+2021-04-22+at+13.40.26.png" width="155" /></a></div></div><div style="background-color: white;">
<div class="p1" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;">
<br /></div>
<h2 style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;"><span style="color: #0b5394;">WHAT STOOD OUT? </span></h2>
<div class="p1">
<div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;">
<u><i>Yes, it's a thin book (p. 6)</i></u></div>
<div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;">
If something even LOOKS like it takes effort to use, it is less likely to be used. Steve has deliberately designed the book to be thin and thus appear to have "low opportunity cost". I find the meta beauty of this to be outstanding.</div>
<div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;">
<br /></div>
<div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;">
<i><u>If something is hard to use, I just don't use it as much (p. 9) </u></i></div>
<div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;">If a product is PAINFUL to use, I will actively seek to remove it from my life (<i>glares at Windows and Internet Explorer</i>). </div>
<div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;">
<br /></div>
<div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;"><div style="line-height: 20px;"><div style="line-height: 20px;"><i><u>When you're creating a site, your job is to get rid of the question marks (p. 13) </u></i></div><div style="line-height: 20px;">Don't make the user think! Bias your designs to making things obvious to the user. For instance, it should never be a question about whether something is clickable or not.</div><div style="line-height: 20px;"><br /></div><div style="line-height: 20px;"><div style="line-height: 20px;"><i><u>Conventions are useful, but boring to use! (p. 35) </u></i></div><div style="line-height: 20px;">Web conventions are incredible useful, as they have well established patterns of usage. You don't have to train a user on how to use a navigation bar, it's standard now. On the other hand, conventions are terribly boring. It's hard to imagine your peers praising you for "great use of conventions".</div><div style="line-height: 20px;">The interesting piece of advice Steve offers out of this is: "Innovate when you know you have a better idea. Take advantage of conventions when you do not."</div><div style="line-height: 20px;"><br /></div><div style="line-height: 20px;"><div style="line-height: 20px;"><u><i>Omit needless words (p. 45)</i></u></div><div style="line-height: 20px;">A great quote from E. B. White, a rule in "The Elements of Style":</div><div style="line-height: 20px;"><br /></div><div style="line-height: 20px;"><i>"Vigorous writing is concise. A sentence should contain no unnecessary words, a paragraph no unnecessary sentences, for the same reason that a drawing should have no unnecessary lines and a machine no unnecessary parts."</i></div><div style="line-height: 20px;"><br /></div><div style="line-height: 20px;">Get rid of "happy talk" on the site, anything that sounds like "blah blah blah". Same goes for instructions, make them unnecessary. Failing that, make them concise.</div><div style="line-height: 20px;"><br /></div><div style="line-height: 20px;"><div style="line-height: 20px;"><u><i>Some users search, some users browse (p. 56)</i></u></div><div style="line-height: 20px;">Steve likens searching a website with searching for an item in a store. Some shoppers will go direct to a person and ask for help, others will happily wonder around themselves. On websites, users may go direct to a search box or they may start browsing. It is important to cater for both styles.</div><div style="line-height: 20px;"><br /></div><div style="line-height: 20px;">Make sure that your search finds the right results and is effortless to use as well. Poor search capability leads to unsatisfied users, as per the story on page 69!</div><div style="line-height: 20px;"><br /></div><div style="line-height: 20px;"><u><i>Show the navigation for all the potential levels before worrying about colours (p. 71)</i></u></div><div style="line-height: 20px;">Users usually end up spending as much time on lower-level pages as they do the top. This means that top-to-bottom navigation is important to work out from the beginning. To facilitate this, it's vital to have samples for each level of navigation. I liken this to seeing the forest through the trees, before you start arguing what colour the leaves should be :)</div></div></div></div></div></div>
<div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;">
<br /></div>
<h2 style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;"><span style="color: #0b5394;">IF YOU READ NOTHING ELSE...</span></h2>
<div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;"><i><u>Don't make me think! (p. 11) </u></i></div><div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;">Unsurprisingly the eponymous chapter of this book is a must read. Steve pleads with us that "if you have room in your head for only one usability rule, make this the one".</div><div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;">Someone who can barely work the Back button should look at your site and say "Oh, it's a ____".</div><div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;">This is further compounded by the later chapter where Steve implores us to make the choices on our website mindless.</div></div><div class="p1"><div style="line-height: 20px;"><div style="line-height: 20px;"><span face="Arial, Tahoma, Helvetica, FreeSans, sans-serif"><span style="font-size: 15px;"><br /></span></span></div><div style="line-height: 20px;"><span face="Arial, Tahoma, Helvetica, FreeSans, sans-serif"><span><span face="Arial, Tahoma, Helvetica, FreeSans, sans-serif"><span style="font-size: 15px;"><i><u>We don't make optimal choices. We satisfice (p. 24)</u></i></span></span></span></span></div><div style="line-height: 20px;"><span face="Arial, Tahoma, Helvetica, FreeSans, sans-serif"><span><div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;">A term coined by Herbert Simon, a portmanteau of satisfactory and sufficing. Steve points out that when we are faced with a problem, our normal behaviour is to pick the first reasonable solution for that problem. Users are unlikely to pour over your website to find the best option for what they want, they will most likely just pick "whatever looks good enough".</div></span></span></div><div style="line-height: 20px;"><span face="Arial, Tahoma, Helvetica, FreeSans, sans-serif"><span style="font-size: 15px;"><br /></span></span></div><div style="line-height: 20px;"><div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;"><i><u>Keep the noise down to a dull roar (p. 38/39) </u></i></div><div style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 15px; line-height: 20px;">A picture speaks volumes and the msnbc.com menu example is a great example of how simple black lines can ruin the user experience. When you're constantly fighting for the user's attention, you don't want a load of visual distractions to add unwanted noise.</div></div></div></div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-18619780210955459952019-09-15T01:30:00.004+01:002019-09-15T01:31:52.476+01:00Obsessive Colouring LaunchMy wonderfully talented wife has launched <a href="http://obsessivecolouring.co.uk/">obsessivecolouring.co.uk</a> - it's full of beautiful colouring pages which are designed to help calm the mind and relieve stress. I'm always in awe of her attention to detail and really happy to see her pursue her dreams :D<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://obsessivecolouring.co.uk/product/tyrannosaurus-rex-colouring-page" target="_blank">
<img border="0" data-original-height="568" data-original-width="900" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-nzQLHDFMdmHXxtP6gtPPviihSAgmrXQGqRYMNHwCb3Jk6ryFA7NRDfxReColarvORn2GEy0tR3TiV3ZqTUJphJxz3BipjEDHOBSH9MlocP7V80AF8VobBYgUoPRRXPeWZEEH3yiFaKw/w900-h568-no/" /></a>
</div>
<br />
<br />
If you have a moment, please go check it out and let us know what you think!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-88262937469699485522019-07-02T14:28:00.003+01:002019-07-03T16:08:57.964+01:00Situation, Behaviour, Impact - SBI FeedbackDan North gave a presentation at QCon on "Making a Sandwich: Effective Feedback Techniques" which you can watch here: <a href="https://www.infoq.com/presentations/feedback-models-techniques/">https://www.infoq.com/presentations/feedback-models-techniques/</a><br />
<br />
I found the parts around the "SBI model" (Situation, Behaviour, Impact) triggered me to reflect on how I give/seek feedback. In short, the model breaks down effective feedback into 3 steps:<br />
<ol>
<li><b>Situation</b> - <i>specify a real incident that happened</i>, e.g. "when we talked with Alfred on Wednesday..."</li>
<li><b>Behaviour</b> - <i>state a fact</i>, e.g. "you spoke across me multiple times..."</li>
<li><b>Impact</b> -<i> describe how it affected you</i>, e.g. "I felt that I my opinions were being ignored"</li>
</ol>
For steps 1 and 2, the rule of thumb I follow is that I can only comment on "things that are observable on a video tape". So saying something like: "they don't respect my opinion" wouldn't count, but "when I described my strategy, they rolled their eyes" is valid.<br />
<br />
Step 3 is what I find most interesting and uncomfortable. The model is pushing me to focus on how I was affected, which I feel is very self centred. This brings up an uncomfortable truth: when I am giving feedback I am an attempting to control the other person. For me it boils down to:<br />
<ul>
<li>Positive feedback: "...and that helped me avoid some pain - keep it up"</li>
<li>Negative feedback: "...and that caused me some pain - please stop"</li>
</ul>
I feel I can give the most effective feedback when I have something to gain. Flipping this around and looking at how I seek feedback, if I really want to improve myself then I should be finding those that have something to gain from my change in behaviour.<br />
<br />
Curiously enough, this isn't always going to be my mentors, who I traditionally turn to for feedback. Taking the SBI model to heart, I can get effective feedback from people that I impact. If I'm not impacting the person I'm talking to, I'm unlikely to get effective feedback.<br />
<br />
My conclusion of all of this is that I can get the most effective feedback from people that I impact the most: i.e. those that are highly dependent on me.<br />
<br />
Time to start teaching my kids about SBI... "Last night you gave me a popsicle and read me a story, that made me feel like I love you 3000"Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-9111971326981479563.post-61666774062734365762019-04-11T15:55:00.000+01:002019-04-11T15:55:01.671+01:00A View On Redux (x-post from TIM Dev Blog)<em>tl;dr I like using Redux as it helps me keep state changes simple. There are problems to be aware of with Redux but overall my experience with it has been overwhelmingly positive.</em><i> [This post was originally shared <a href="https://devblog.timgroup.com/2019/04/09/a-view-on-redux/">here</a>]</i><br />
<!-- wp:heading {"level":3} -->
<br />
<h3>The Benefits of Redux</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<br />
What I like most about Redux is that I can use it to apply event sourcing to an entire React application's state.<span class="ref"><span class="refnum">[0]</span><span class="refbody">This isn't unique to Redux at all. If you know of better alternatives, please let me know!</span></span><br />
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<br />
In this case, the events are <a href="https://redux.js.org/basics/actions">actions</a> and they are processed by <a href="https://redux.js.org/basics/reducers">reducers</a> which update state. If all of the application's state is contained within Redux, then state can only change as a result of a reducer processing an action.<br />
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<br />
This is useful for me as I can think purely from the point of view of actions when I am thinking about state changes. I can reason about a series of actions and the resulting state. This reasoning transcribes neatly into test form, for example:<br />
<!-- /wp:paragraph -->
<!-- wp:code -->
<pre class="wp-block-code"><code>import myMathReducer from "./myMathReducer"
import {plus, times, minus} from "./myMathActions"
describe("my maths reducer", () => {
it("performs basic arithmetic on my number", () => {
const INITIAL_STATE = {myNumber: 5};
const actions = [plus(1), times(2), minus(3)];
const newState =
actions.reduce(myMathReducer, INITIAL_STATE);
expect(newState.myNumber).to.eql(9)
});
});</code></pre>
<!-- /wp:code -->
<!-- wp:paragraph -->
I find this great because:
<br />
<ul>
<li>If the test makes sense to my pair<span class="ref"><span class="refnum">[1]</span><span class="refbody">Does it makes sense to you? I'm hoping it is clear that we're asserting ((5 + 1) * 2) - 3 = 9</span></span>, then I've gained confidence that I've got the state transitions clear in my head.</li>
<li>The test acts as documentation on what actions are available and how they change the state.</li>
<li>I've tested logic within my React app without having to go near mounting components and/or clicking buttons.</li>
</ul>
<!-- /wp:list -->
<!-- wp:heading {"level":3} -->
<br />
<h3>
The Pitfalls of Redux</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<br />
I've found Redux to be hard to use in anger at times. There are some nasty surprises which make for some very painful lessons.<br />
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<br />
The worst moment was bashing up against a bug for ages and finally finding out it was related to <a href="https://github.com/reduxjs/react-redux/blob/master/docs/troubleshooting.md#my-views-arent-updating-when-something-changes-outside-of-redux">Redux blocking updates to components</a>. This is when I learnt that the <a href="https://react-redux.js.org/api/connect">connect</a> function has 3rd and 4th parameters you can pass to it. <a href="https://github.com/reduxjs/react-redux/blob/master/docs/troubleshooting.md#my-views-arent-updating-when-something-changes-outside-of-redux">The fix was to mark my component as "impure"</a><span class="ref"><span class="refnum">[2]</span><span class="refbody">The interesting implication here is that my code is not pious enough and the Redux Gods are smiting me for my heresy</span></span>, via the 3rd parameter being passed to the connect function.<br />
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<br />
Luckily there aren't too many bumps along the road but they are quite noticeable. God forbid you ever accidentally give two actions the same type!<br />
<!-- /wp:paragraph -->
<!-- wp:heading {"level":3} -->
<br />
<h3>
Redux is a big plus overall</h3>
<!-- /wp:heading -->
<!-- wp:paragraph -->
<br />
I've found that, in the long term, using Redux has been massively helpful.<br />
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<br />
For me, the constraints imposed by Redux have helped me to keep things simple.<span class="ref"><span class="refnum">[3]</span><span class="refbody">Lord knows I love the KISS principle</span></span><br />
<!-- /wp:paragraph -->
<!-- wp:paragraph -->
<br />
Redux changed the way I think and improved the way I write React apps. I recommend giving it a go yourself.<br />
<!-- /wp:paragraph -->Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-92214295113932925332018-02-08T21:09:00.002+00:002018-02-08T22:23:04.774+00:00Cognitive Distortions: XTC Meetup AgendaA wise man once told me, XTC is group therapy for angry people to share their problems<span class="ref"><span class="refnum">[1]</span><span class="refbody">Others may tell you that XTC is the Extreme Tuesday Club. It may have been founded around Extreme Programming but I've yet to have a session related to XP practices :P They definitely <a href="https://www.meetup.com/eXtreme-Tuesday-Club-XTC"><span style="color: #93c47d;">meetup every fortnight on Tuesday</span></a> though :)</span></span>. With that in mind, I submitted a random candidate into the vote for the next session...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVGX75Pt-mycZRmiIk_GV7uQbkTilR2abQixcK5Le1AHPFTj6Jhe_EhXM4rFJgdKxJVVGkYUYfjk4DStPByjiovcdGjyVdxSx4ETtT6u4vzhXrJGeQyDWD9TCIcpbhNNBX913zPIJvEIA/s1600/IMG_20180206_203139.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="936" data-original-width="1600" height="374" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVGX75Pt-mycZRmiIk_GV7uQbkTilR2abQixcK5Le1AHPFTj6Jhe_EhXM4rFJgdKxJVVGkYUYfjk4DStPByjiovcdGjyVdxSx4ETtT6u4vzhXrJGeQyDWD9TCIcpbhNNBX913zPIJvEIA/s640/IMG_20180206_203139.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">The results of the vote</span><span class="ref"><span class="refnum">[2]</span><span class="refbody">The XP topic came second to bottom, further proof that XTC only liked XP before it was cool.</span></span></div>
<br />
Turns out almost everyone wanted to talk about it! So on <a href="https://www.meetup.com/eXtreme-Tuesday-Club-XTC/events/kbqkcpyxdbbc/" target="_blank"><span style="color: #93c47d;">February 20th you can join us</span></a> at <a href="https://www.google.com/maps/search/?api=1&query=28+Farringdon+Lane%2C+London%2C+gb" target="_blank"><span style="color: #93c47d;">The City Pride</span></a> to talk about <a href="https://feelinggood.com/2014/01/06/secrets-of-self-esteem-2-negative-and-positive-distortions/" target="_blank"><span style="color: #93c47d;">The 10 Cognitive Distortions</span></a>. We will be reflecting on the thoughts that drive us and if they are potentially making you unhappy.<br />
<br />
The focus should be on thoughts that reflect your opinion of yourself. Factual statements like "I don't know Scala" should be discarded. Thoughts like "I should be better at Scala" are the ones you want to go after, especially if they make you stressed or frustrated.<br />
<br />
The rough agenda will be:<br />
<ol>
<li>Get into groups to collect together "Negative Thoughts"</li>
<li>See what <a href="https://feelinggood.com/2014/01/06/secrets-of-self-esteem-2-negative-and-positive-distortions/" target="_blank"><span style="color: #93c47d;">Cognitive Distortions</span></a> match up</li>
<li>Think about the positive and negative effects of the thoughts</li>
<li>Now shake off the distortions and rewrite the thoughts, whilst preserving the positive effects!</li>
</ol>
<div>
Between now and the session, if you jot down any negative thoughts you have then it will give you better examples to work with. Look forward to seeing you all there!<span class="ref"><span class="refnum">[3]</span><span class="refbody"><a href="https://twitter.com/arkangelofkaos/status/960965205504282626" target="_blank"><span style="color: #93c47d;">Free pizza and rants</span></a>, what's not to love?</span></span></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-37619167968660012442017-08-31T11:33:00.003+01:002018-02-08T21:10:22.275+00:00Having Compassion - The Autobahn MetaphorAt the <a href="https://www.meetup.com/eXtreme-Tuesday-Club-XTC/events/242378585/" target="_blank">XTC meeting on Tuesday 23rd August</a> I had the pleasure of meeting <a href="https://www.meetup.com/members/228155094/" target="_blank">Sven</a>! He shared with me a way of relating to other people’s world view and actions which centred around “how fast do you drive on the Autobahn?”.<br />
<div>
<div style="text-size-adjust: auto;">
<br class="Apple-interchange-newline" />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8IJIx-c6iTvdKAR55QDW_CM3VOjLQhyphenhyphenudUeCRWvxzNZldXgpOOLsk0DnboHC33LbkNBe-B60oOzLatnhz0ZrK2XTpy4p1dU4G0NKqiBZqc9MFRo7YWe_b7HBcvfBZ9OyVIHYWoqoRHE4/s1600/autobahn.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="320" data-original-width="620" height="206" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8IJIx-c6iTvdKAR55QDW_CM3VOjLQhyphenhyphenudUeCRWvxzNZldXgpOOLsk0DnboHC33LbkNBe-B60oOzLatnhz0ZrK2XTpy4p1dU4G0NKqiBZqc9MFRo7YWe_b7HBcvfBZ9OyVIHYWoqoRHE4/s400/autobahn.jpg" width="400" /></a></div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">The autobahn is the German motorway - famous for having no speed limit.</span><span style="font-size: x-small;"> </span></div>
</div>
<div>
<br /></div>
<div>
On the Autobahn<link> there is no speed limit, a driver can as fast as they like. Say we are driving at 80mph, we could then say that we perceive:</div>
<div>
<ul class="Apple-dash-list">
<li>80mph is the CORRECT speed!</li>
<li>The drivers going 50mph are delaying me and it is a nuisance overtaking them.</li>
<li>The drivers going 180mph are dangerous and are risking crashing into me.</li>
</ul>
</div>
<div>
<br />
This leads to an interest situation where you can bisect the population of drivers as “agreeing” with your world view and those that are “detrimental” to you. Naturally this leads you somewhat into conflict… it would be GREAT if everyone just drove at YOUR speed right?!</div>
<div>
<br /></div>
<div>
How do we overcome this and actually relate to all the other drivers on the road then?<br />
<br />
<a name='more'></a><br />
Well first we should be introspective and ask: WHY did I select 80mph as the ‘proper’ speed?</div>
<div>
<br /></div>
<div>
My reasoning may have been:</div>
<div>
<ul class="Apple-dash-list">
<li>I need to reach my destination by 9.30AM</li>
<li>I’ve got many years of experience driving and I feel I can handle the car fine at 80mph </li>
<li>My car is actually actually only capable of doing 120mph MAX.</li>
</ul>
</div>
<div>
<br />
These reasons can lead to a perfectly valid conclusion of driving at 80mph. So what happens if we try to think about the reasons why the other drivers are travelling at the speeds they choose?</div>
<div>
<ul class="Apple-dash-list">
<li>Could the fast driver be rushing to the hospital?</li>
<li>Could the slow driver be inexperienced in driving?</li>
</ul>
<div>
<br />
What’s even more interesting is if we try to put ourselves into the situation of other drivers. Say we were to be driving that fancy Porshe that the 180mph driver was driving, what would happen? Maybe it is a case that the car is perfectly capable of going that fast and it’s actually HARDER to drive slowly in that car… If we were to jump behind the wheel of that car then perhaps we would very quickly find ourselves driving at 180mph as well.</div>
<div>
<br /></div>
<div>
Naturally this is a simple metaphor and the only dimension we are considering is raw speed. This analogy does extend to other circumstances where you may want to bridge the gap between someone else’s view and your own. If someone disagrees with you and they are metaphorically travelling at a different speed then there is an opportunity for learning. Can you find out about their reasoning for “their speed” and can you share your own reasoning for “your speed”?<br />
<br />
Note that you may still agree to disagree, both of you continuing to travel as you wish. Nevertheless we have at least related to each other :)<br />
<br />
Looking forward to the next XTC!</div>
</div>
<div>
<br /></div>
<div>
<div style="text-align: center;">
<blockquote class="twitter-tweet" data-lang="en">
<div dir="ltr" lang="en">
<a href="https://twitter.com/hashtag/XTCLondon?src=hash">#XTCLondon</a> is kicking off. <a href="https://twitter.com/arkangelofkaos">@arkangelofkaos</a>: "Look! Real people showed up!" <a href="https://t.co/E1CGCbea7O">pic.twitter.com/E1CGCbea7O</a></div>
— Joe Schmetzer (@tumbarumba) <a href="https://twitter.com/tumbarumba/status/900048620828983297">August 22, 2017</a></blockquote>
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script>
</div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-30047042222954056062017-08-07T22:52:00.002+01:002020-07-22T20:17:54.176+01:00Developer Diary: Starting At TIM GroupToday was my first day working at <a href="http://www.timgroup.com/" target="_blank">TIM Group</a>! I'm humbled to be working with so many enthusiastic and intelligent people. The culture and way of working at the company is a massive departure from what I am used to. Everyone in technology is responsible for themselves, trusted to get the work done and nurtured to improve. People understand the value of happiness and real work/life balance.<br />
<br />
Even after a single day there I am seeing and feeling the difference. Little things like:<br />
<br />
<ol>
<li>We managed to break something as I was being onboarded. A colleague spotted this before us, fixed it and notified us. No fuss, no muss.</li>
<li>For lunch we took 90 minutes and sang sea shanties, it was silly and glorious. It could have been embarrassing but it felt like a safe space :)</li>
<li>Everyone, including the CEO, started walking out at 5.30pm</li>
<li>For 7 years I've come home and gotten changed. There is relief when I can take off the suit. Today I walked in the door and I was already comfortable in my skin.</li>
</ol>
<div>
Exciting times :)</div>
Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-9111971326981479563.post-69031361167113711392017-06-23T11:48:00.001+01:002017-06-23T12:15:40.009+01:00Parenting: Uncovering Unconcious Bias<div>
One of the challenges of bringing up children<span class="ref"><span class="refnum">[1]</span>
<span class="refbody">
Up there with <a href="https://www.youtube.com/watch?v=4GO2xz0L9gQ"><b>leaving the house</b></a> & making sure they are alive at the end of every day
</span>
</span>
is not passing on any biases or prejudices you have. On the face of things this would seem like an easy problem to solve, just don't discriminate and teach your children the values of equality. The problem arises when we actually stop and think about how we really perceive the world and the people around us. If we really get introspective then we can uncover personal bias that we don't even realise we have.
</div>
<br />
<div>
Let's look at an example. How many fathers out there think on public transport: "it's polite to give up your seat to a woman"? On the face of it you are doing a nice thing. However if you teach that to your son then you are teaching him to treat women differently. This isn't ideal when you want to foster the ideas of equality. In this case you may wish to opt for "it's polite to give up your seat to anyone less able to stand". Women are just as capable as men in standing up :)
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaOB6XXi6st5UqJTQFf4avB_Sy9hApFV5vu2es8vJCl37Dwl4c9apdek4y8HFZ8AF9vIlhatYZgVBn4RbXxGRgk8QJs7Q91uRwiTumMp5TYvIwsPuftzum1sJ0B5u501yu3wXX1tGFgIM/s1600/tubeSeatSign.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="330" data-original-width="231" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiaOB6XXi6st5UqJTQFf4avB_Sy9hApFV5vu2es8vJCl37Dwl4c9apdek4y8HFZ8AF9vIlhatYZgVBn4RbXxGRgk8QJs7Q91uRwiTumMp5TYvIwsPuftzum1sJ0B5u501yu3wXX1tGFgIM/s320/tubeSeatSign.jpg" width="224" /></a></div>
<br /></div>
<br />
<div>
Tackling unconscious bias is a tough problem for everyone to solve, you're dealing with how your brain is hardwired to think about things. Only by consciously making an effort to question yourself can you discover these "things that I didn't even know I believed in". Luckily (depending on how you look at it), as your child grows up they will inevitably develop a perfect mechanism to help you with this: The incessant stream of "Why? Why? Why?..."
</div>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-59880703126406791192017-06-19T03:24:00.000+01:002017-06-19T03:35:08.686+01:00Destiny 2 - Akimbo Sidearms?<div>
<b><span style="font-size: large;">Will Guardians Be Dual Wielding Sidearms?</span></b></div>
<br />
We got the strongest hint at Akimbo weapons from the Bungie Podcast released 9th June 2017.<br />
<br />
<div style="text-align: center;">
<blockquote class="twitter-tweet" data-lang="en">
<div dir="ltr" lang="en" style="text-align: center;">
Here's a direct link to the latest Bungie podcast on iTunes featuring <a href="https://twitter.com/thislukesmith">@thislukesmith</a> <a href="https://twitter.com/sharkeatsman">@sharkeatsman</a> <a href="https://twitter.com/UrkMcGurk">@UrkMcGurk</a> <a href="https://t.co/V07PIqRCqc">https://t.co/V07PIqRCqc</a></div>
— Mark Noseworthy (@knowsworthy) <a href="https://twitter.com/knowsworthy/status/873233420343586816">June 9, 2017</a></blockquote>
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script>
</div>
Here is a snippet from the podcast (starting from 35:22)<br />
<blockquote style="background-color: #e6f2ff; margin: 1em 3em; padding: 0.5em 1em;">
<b>JON:</b>
<br />
It's interesting because one of those hard questions we asked ourselves when we were putting this out there was like: "well there's sidearms... is there any reason to run sidearm, sidearm?"
<br />
That sounds really dumb. That sounds like a bad game <b>*chuckles*</b><br />
<br />
<b>LUKE:</b>
<br />
It's not. It's really fun! <b>*more laughter*</b><br />
<br />
<b>JON: </b>
<br />
And yeah! It's pretty cool.<br />
<br />
<b>LUKE:</b>
<br />
And we won't... We won't talk about why...
</blockquote>
<br />
<div>
What's interesting here is that:</div>
<ul>
<li>Simply having two sidearms which you switch between is deemed dumb</li>
<li>There is some reason why that combination is really fun</li>
<li>This reason is being kept secret from us</li>
</ul>
<div>
So what is the big surprise in store for us? Well let's take a look at what Mark Noseworthy said on an interview on <a href="http://www.gamertagradio.com/2017/05/episode-661-destiny-2-gameplay-reveal-event-coverage/" target="_blank">Gamertag Radio</a> (starts 1:07:22):</div>
<blockquote style="background-color: #e6f2ff; margin: 1em 3em; padding: 0.5em 1em;">
<b>MARK:</b>
The first two slots, Kinetic and Energy, they can have the same weapon types. So, you can have a Handcannon in your Kinetic slot, and then like a solar Handcannon, if you want to rock two Handcannon, in the second slot. The reason we've done this is because it gives players more choice, right, you can play the way you want to play, and really change things up. <b>You know, we might even have some interesting interactions between weapons sometimes.</b>
</blockquote>
<div>
Put this all together and it strongly implies that something "outside of the norm" happens with certain weapon pairings. My best guess is Destiny 2 is going to introduce dual wielding! Sidearms are an excellent candidate for this but there are things to consider though...<br />
<br /></div>
<div>
<a name='more'></a><br />
<h3>
Time to Kill</h3>
Bungie have consistently made PvE and PvP as similar as possible. Every piece of gear that your Guardian can equip in Destiny 1 can be used in both PvE and PvP. This would imply that if dual wielding is in Destiny 2 then it is available in the Crucible too. This means that the weapons will have to be carefully balanced, otherwise they could become the D2 equivalent of D1 shotguns. Being able to blast away with two Sidearms at the same time could in theory half your normal TTK!<br />
<br />
<h3>
Firing Mechanism</h3>
So how might Bungie balance things? One possibility is to simply make it so that you cannot fire both weapons at once. Hitting fire repeatedly could make the weapons alternate which gun you fire: i.e. left, right, left, right...<br />
<br />
This firing mode could still be faster than a vanilla Sidearm though. There is a possibility that we could still fire the weapons independently as well, the ADS button might fire our left weapon and the standard fire button would fire our right weapon. This would bring us neatly onto the next point...<br />
<br />
<h3>
Range & ADS</h3>
Dual wielding could negatively affect the range of your weapons to tradeoff against the benefits of extra ammo and damage. It wouldn't be surprising if you lost the ability to Aim Down Sights (ADS) as that is very common in other games and serves as a sensible tradeoff.<br />
<br />
Removing the ability to ADS from dual wielded weapons seems like the most sensible option because ADS increases the range of your weapons in Destiny (<a href="https://www.destinypedia.com/Aim_down_sights" target="_blank">citation needed</a>). This means the effective range of the weapons is decreased and dual sidearms are limited to CQC.<br />
<br />
<h3>
Conclusion</h3>
I'm really hoping that the Destiny 2 Beta will give us the opportunity to try out the Sidearm + Sidearm combination. I doubt that every pair of Sidearms will be able to be dual wielded but I'm hopeful that some will be. You never know, we might all be getting super excited about Sidearms dropping again :D<br />
<br /></div>
<div>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/MoI5T5PkO2Y/0.jpg" frameborder="0" height="410" src="https://www.youtube.com/embed/MoI5T5PkO2Y?feature=player_embedded" width="720"></iframe>
</div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Imagine blasting away with two of these in Destiny 2 :D</span></div>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-38471439253886367972017-04-04T23:06:00.001+01:002017-04-04T23:17:34.248+01:00Corda - First ImpressionsToday I was lucky enough to attend my first day of <a href="https://www.corda.net/corda-training/" target="_blank"><span style="color: blue;">training</span></a> on <a href="https://www.corda.net/#intro" target="_blank"><span style="color: blue;">Corda</span></a>, an "an open-source distributed ledger platform designed to record, manage and automate legal agreements between businesses".<br />
<br />
<a href="https://twitter.com/roger3cev" target="_blank"><span style="color: blue;">Roger Willis</span></a> and <a href="https://uk.linkedin.com/in/raggy" target="_blank"><span style="color: blue;">Richard Green</span></a> did a fantastic job and I walked away excited for the 2nd day of training tomorrow. Between then and now I've got a whole load of thoughts/questions on my mind...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7sdiglAWBISBrX8AzViGp_AAtc0aBGwSKqwiUXEwrjDk2BzsoB3SJMNXdc3SdLmncoqy1CxQwy3ocAaIQa-9bcBHL1hdzD8XXrOJhT5E_mQY22OSwzwMJ8s2UmOI0Bb4_sgBV9BjXuL0/s1600/Screen+Shot+2017-04-04+at+21.53.02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7sdiglAWBISBrX8AzViGp_AAtc0aBGwSKqwiUXEwrjDk2BzsoB3SJMNXdc3SdLmncoqy1CxQwy3ocAaIQa-9bcBHL1hdzD8XXrOJhT5E_mQY22OSwzwMJ8s2UmOI0Bb4_sgBV9BjXuL0/s640/Screen+Shot+2017-04-04+at+21.53.02.png" width="640" /></a></div>
<br />
<h3>
Corda isn't a traditional blockchain</h3>
Corda doesn't have the concepts of blocks or mining that you will find in Bitcoin and Ethereum. Transactions are purely point-to-point and validated individually in Corda. This stands opposed to the others which group up transactions and calculates a hash for all of them together (turning them into a block).<br />
<br />
<h3>
Immutability</h3>
What is there to stop the transaction history being modified? Well transactions are digitally signed and assuming all parties keep their private key safe, no one can realistically change history. On top of this, the ledger isn't reliant on mining and is designed to be immutable. This means that the only change parties expect to see is on current state.<br />
<br />
<h3>
Data Privacy</h3>
Transactions aren't broadcast globally to the entire network and only sent on a need-to-know basis. This protects against data leakage as parties in the network don't have free access to monitor who everyone is interacting with. Keeping the data contained also limits the damage if your private key is somehow compromised because your encrypted data isn't freely available to a potential attacker.<br />
<br />
<a name='more'></a><h3>
Throughput & Scalability</h3>
The removal of miners and the lack of proof of work means that a Corda network's throughput is bounded primarily by the network and the execution of the contract code. Combine that with the fact that transactions don't need to be broadcast to all nodes and you are looking at a network that is faster & handles more messages (that other DLTs).<br />
<br />
It should be reiterated that not relying on Proof of Work removes the need to...<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzQDfm5U_UwIfh58NEEF-Ag22RTDgs1VBVE9pVujq4KbpvjKQ4qmBIXMTqAUjlKwr4s4k5MW2jDoXQGfHUDXGr2ERiRXyK-9Hrv4bV4MT20w2GtrIPYZcDYh-pnADc3xt3d0thn-zTCCo/s1600/all_the_server.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="224" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzQDfm5U_UwIfh58NEEF-Ag22RTDgs1VBVE9pVujq4KbpvjKQ4qmBIXMTqAUjlKwr4s4k5MW2jDoXQGfHUDXGr2ERiRXyK-9Hrv4bV4MT20w2GtrIPYZcDYh-pnADc3xt3d0thn-zTCCo/s320/all_the_server.jpg" width="320" /></a></div>
<br />
This happily translates to a platform which doesn't require a <a href="http://uk.businessinsider.com/photos-iceland-bitcoin-ethereum-mine-genesis-mining-cloud-2016-6/#the-country-boasts-three-very-important-qualities-for-mining-cheap-energy-good-internet-connections-and-a-cold-climate-4" target="_blank"><span style="color: blue;">warehouses</span></a> <a href="http://www.bbc.com/future/story/20160504-we-looked-inside-a-secret-chinese-bitcoin-mine" target="_blank"><span style="color: blue;">full of dedicated servers</span></a> to run.<br />
<br />
<h3>
Security?</h3>
The elephant in the room is that of security. Given that Corda is not based on a Proof of Work algorithm it cannot be proven to be cryptographically secure in an untrusted environment.<br />
<br />
The argument is that heavily regulated financial environments have some degree of trust within them, which comes in the form of the regulators. This forms the basis for Corda's reliance on Notaries which validate all transactions. This inevitably centralises the system and provides a focal point for attack. Nevertheless this isn't anything new and it is a problem which is dealt with today.<br />
<br />
<h3>
Productivity</h3>
To wrap this post up, I think the overwhelming feeling from today was of productivity.<br />
<br />
Corda keeps things simple and thus the concepts are easy to pick up. There is a load of great documentation to help you out and the main repository comes bundles with some excellent demos.<br />
<br />
As opposed to Ethereum, Corda is based on the JVM. I cannot emphasis enough how much of a god-send that is. Dealing with Solidity in Ethereum was a headache and the ecosystem of tools/libraries available to you there is laughable. With Corda you can use IntelliJ! You can write Java! Or even <a href="https://kotlinlang.org/" target="_blank"><span style="color: blue;">Kotlin</span></a> if you feel like <a href="https://www.corda.net/2017/01/10/kotlin/" target="_blank"><span style="color: blue;">being ridiculously productive</span></a> ;)<br />
<br />
Very excited and more thoughts to come!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-44033987554989869882016-10-20T04:58:00.003+01:002016-10-20T05:23:35.164+01:00BattleStrats Vs Aksis - A Strategy Refined<div>
<b><span style="font-size: large;">Perfect Practice Makes Perfect</span></b></div>
As per the BattleStrats mantra, we have been honing our Aksis Phase 2 strategy. Collectively we have now got a very firm grasp of the fight and we can knock the Normal mode fight in one go!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/WO9JVD3s1iY/0.jpg" frameborder="0" height="410" src="https://www.youtube.com/embed/WO9JVD3s1iY?feature=player_embedded" width="720"></iframe>
</div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">BattleStrats Aksis Phase 2 - Strategy Overview & Kill</span></div>
<br />
<div>
The most important points to consider here are:</div>
<ul>
<li>Jordy had NEVER even attempted this fight before</li>
<li>We made a handful of mistakes but still succeeded</li>
<li>Explaining the strategy and killing Aksis took us less than 20 minutes</li>
</ul>
<div>
Practice (or rather <a href="https://www.reddit.com/r/CruciblePlaybook/comments/4ewzfd/deliberate_practice_what_to_focus_on_when/" target="_blank">deliberate/perfect practice</a>) has been the secret to our success. Let's look at how exactly we practiced...</div>
<div>
<a name='more'></a><br /></div>
<div>
<br /></div>
<div>
<b><span style="font-size: large;">Preparation</span></b><br />
<div>
</div>
<div>
<b>Know Your Enemy</b></div>
<div>
Getting to know all the details on the opponents you are facing is invaluable. For the majority of us this will consist of doing research on Reddit and Youtube. Notice at the start of the fight I only explain the key points as everyone has already seen/read about the fight.<br />
<div>
<br /></div>
<div>
<b><span style="font-size: medium;">Muscle Memory</span></b></div>
<div>
Another great thing to note from the start of the video is how we practiced the empowerment slams before we started the fight. Building up that muscle memory makes it a lot easier to pull off when the chips are down.</div>
</div>
<ul>
</ul>
<div>
<b><span style="font-size: large;">Master the Fundamentals</span></b></div>
<div>
The raid isn't something to take lightly. You need a firm grasp of all your Destiny basics to be able to tackle it successfully. This means you absolutely have to learn how to jump with your character and have good communication skills.<br />
<br />
<b><span style="font-size: large;">Communication</span></b><br />
This is the most important factor of the fight. If you get this right then you are most of the way to kill Aksis. When people are empowered they must call it out and then figure out who is going where themselves. As mentioned above, you have to take ownership of a position. Remember if you are on left/right then you can happily cover the middle as well.<br />
<br />
The first time people do this fight it will be confusing and communication can be a bit flaky under stress. I fully expect people to get used to this and refine their callouts in future runs :)<br />
<br />
<b><span style="font-size: large;">Use Cover, Stay Alive</span></b><br />
One thing that shouldn't have to be said but is surprisingly common is that everyone should be able to make full use of cover and generally NOT DIE :)<br />
<br />
Knowing where to find cover is key here. If you are in the middle then use the left/right pillars by the stairs going down into the pit. On the left/right side you need to use the pillar by the stairs going up towards the "Servitor Discharge" platform.<br />
<br />
As Aksis teleports around the arena, you want to adjust yourself to ensure there is no line of sight between you and him. This way the SIVA clouds will end up hitting the otherside of the cover you are using :)<br />
<br />
If you are finding yourself always running self-rez then you need to rethink what you are doing. Find out what it is that YOU are doing to get yourself killed and fix it. Remember, Guardians make their own fate.<br />
<br />
<b><span style="font-size: large;">DPS</span></b><br />
Aksis has over 10M HP so making the most of your damage phases is incredibly important. Remember that you can damage Aksis anytime after his shield goes down. This means getting those body shots whilst he is being slammed/his head rears up.<br />
<br />
Before the Hard mode raid came out, the "best weapons for DPS" consisted of:<br />
<br />
<ul>
<li>Canon</li>
<li>Dark Drinker</li>
<li>Sleeper Simulant (headshots)</li>
<li>Black Spindle (non-stop headshots)</li>
<li>Gjallarhorn and High/Very-High Impact Sniper headshots.</li>
</ul>
<br />
The higher your light level, the more damage you do with the canon. This means your party wants to assign the highest light Guardians to take the canons. Remember to fire and hold charge until you activate the higher damage (only a few seconds needed). However if you have 4 or more Guardians that are 375+ then you might want to account for the Exotic weapons that people have. My Dark Drinker is a beast so I regularly defer the canon to someone else :)</div>
<div>
<br />
<span style="font-size: large;"><b>Adaptation - Mistakes Will Be Made</b></span><br />
An important skill to have is the ability to adapt. Unless you have become the ultimate master, mistakes will always be made. These are some typical mistakes that happen in this encounter:<br />
<br />
<ul>
<li>The Captain nails you.</li>
<ul>
<li>Lesson learnt: reduce risk!</li>
<li>Use a grenade to suppress/disorient the Captain</li>
<li>Sticky grenades will make them duck</li>
<li>Engage the Captain from distance (Gjallarhorn and Nova Bomb are ideal for this)</li>
<li>Ask for help from another Canon Runner (1 charged shot will kill the Captain).</li>
</ul>
<li>Shanks flank you.</li>
<ul>
<li>Set yourself up to shoot them as they come in.</li>
<li>Always clear Shanks before you engage the Captain (reduce risk).</li>
</ul>
<li>Empowered out of position.</li>
<ul>
<li>The last bomb thrower needs to call it out so that empowered have time to position themselves.</li>
<li>Remember: it is better for empowered people to get in position early then it is for them to get a few extra seconds of DPS.</li>
</ul>
</ul>
</div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-27580101923901360952016-10-16T00:05:00.000+01:002016-10-16T00:05:01.349+01:00Aksis vs. BattleStrats - A Retrospective<div>
<b><span style="font-size: large;">Introduction</span></b></div>
BattleStrats has conquered Aksis. He tested the abilities of each of our players and the effectiveness of our team's communication. We passed this test but there is still much to learn. Our three main areas of focus are:
<br />
<ol>
<li>What did we do well?</li>
<li>Where did we stumble?</li>
<li>How can we improve for the future?</li>
</ol>
<div>
<br />
<b><span style="font-size: large;">The Plus Points</span></b></div>
The biggest takeaway is that the clan is improving. We managed to kill Aksis on our first try with 5 players in the team had never killed Aksis before!
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/E4EXSWMJXa4/0.jpg" frameborder="0" height="410" src="https://www.youtube.com/embed/E4EXSWMJXa4?feature=player_embedded" width="720"></iframe>
</div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">BattleStrats Aksis Kill - Black Spindle FTW!</span><span style="font-size: x-small;"> </span></div>
<br />
<div>
The main takeaways from that final successful run are:
</div>
<ul>
<li>We communicated empowerment really well</li>
<li>Everyone had the right gear/abilities to take down Captains</li>
<li>We had consistent slams on Aksis (which maybe a function of us not being tired)</li>
<li>Team DPS was solid enough for us to clutch us through missing a damage phase</li>
<li>People stayed alive</li>
</ul>
<div>
<a name='more'></a><br /></div>
<div>
<br /></div>
<div>
<b><span style="font-size: large;">Points of Improvement</span></b></div>
<div>
</div>
<div>
<b>Miscommunication</b></div>
<div>
One of the biggest hurdles to overcome in a raid is juggling all the different tasks happening at once. For Aksis,
the most important things to communicate are:
</div>
<ul>
<li>Empowerment</li>
<li>Servitor Positions</li>
<li>SIVA Throws</li>
</ul>
<div>
<b>Siva Throwing</b></div>
<div>
Siva bombs should be called out 1, 2 and 3 to help us ensure the empowered are in position.
Bomb throwers must ensure the bomb on their side is thrown. If for any reason you die:
</div>
<ul>
<li>Ask for a delay in killing Captains</li>
<li>If that isn't possible, ask for a delay in killing your Servitor</li>
<li>ALWAYS ask for another thrower to cover your bomb.</li>
</ul>
<div>
Empowered throwers should take ownership of the position they are throwing from. So if someone tells you to move,
you plant yourself like a tree, look them in the eye and say "No, You Move!".<br />
<br /></div>
<div>
<b>Servitor Position</b></div>
<div>
To give us the most time to throw bombs and position empowered, Servitor positions should be called out as soon as
possible. Note that after the 1st Servitor is called out we can work out where all the other ones will appear. This
is because:
</div>
<ul>
<li>Servitors are never the same element as the Captain (for a given entrance)</li>
<li>Only two elements will remain, so it will be the opposite of the captain you are still fighting.</li>
</ul>
<div>
For example, if someone calls "Arc Mid" and you are fighting the Solar captain on the right; then you can call
"Null/Void right".
<br />
<br /></div>
<div>
In practice we want to be killing captains fairly quickly though, so that maybe irrelevant.
<br />
<br /></div>
<div>
<b>Empowered Positioning</b><br />
This is the most important factor of the fight. If you get this right then you are most of the way to kill Aksis. When people are empowered they must call it out and then figure out who is going where themselves. As mentioned above, you have to take ownership of a position. Remember if you are on left/right then you can happily cover the middle as well.<br />
<br />
The first time people do this fight it will be confusing and communication can be a bit flaky under stress. I fully expect people to get used to this and refine their callouts in future runs :)</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-85138052293948036232016-08-31T01:41:00.001+01:002016-08-31T01:41:30.074+01:00Trimming Videos On YouTubeThis is a really quick and simple method of cutting/cropping videos that you have uploaded to YouTube (from your PS4 or any source).<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/OQHZ2z2yOQY/0.jpg" frameborder="0" height="410" src="https://www.youtube.com/embed/OQHZ2z2yOQY?feature=player_embedded" width="720"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Trimming/Splitting Videos On YouTube - Uploaded From Your PS4 </span>
</div>
<br />
I prefer editing videos this way rather than faffing around with other tools such as the SHAREfactory on PS4. By doing this directly you can always quickly share whole clips from your PS4 without getting completely dragged out of the game :)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-45615006933459194432016-07-16T03:12:00.002+01:002016-07-16T03:12:27.321+01:00Pokemon Go APK Install InstructionsFor all those that can't officially download and play Pokemon Go on their Android devices, here is a quick video tutorial on how to get it up and running.<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/g7E1bGDv-vw/0.jpg" frameborder="0" height="410" src="https://www.youtube.com/embed/g7E1bGDv-vw?feature=player_embedded" width="720"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Download & Setup Pokemon Go On Android </span>
</div>
<br />
I've been having a load of nostalgic fun with it and I was inspired to start recording videos for it. After some quick searching I managed to stumble upon this absolutely awesome screen capture application: <a href="https://play.google.com/store/apps/details?id=tv.shou.android&hl=en_GB" target="_blank">Shou</a><br />
<br />
The app is meant for live streaming as well but I find that it is a very easy to use to record your screen to your local SD card.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-14910632306577619162016-03-22T05:52:00.002+00:002016-03-22T05:52:15.951+00:00Flappy Whale v1.3.0 (Animated Whale)It has taken us this long but our Flappy Whale is now actually flapping when you tap :D Play the game and check it out yourself by clicking on the show button below!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe frameborder="0" height="480" id="spoiler_flappyWhale120" style="display: none;" width="800"></iframe>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Flappy Whale! v1.3.0 - ewry games</span>
<button onclick="
var elementId = 'spoiler_flappyWhale120';
var hiddenElement = document.getElementById(elementId);
if(hiddenElement.style.display=='none') {
hiddenElement.style.display='';
hiddenElement.src = 'https://a6d629c243ebcb04f819eb76ec57abbf3e56dfe2.googledrive.com/host/0By3LCUutSiC8S2FtZ2RzRmdMcnc/'
} else {
hiddenElement.style.display='none';
}
" title="Click to Show/Hide the game" type="button">Show/Hide Game</button>
</div>
<br />
We toyed between the idea of having the Whale constantly flapping or having it flap only when you tapped. In the end we liked having it flap whenever you tapped as it provided extra positive feedback to the player. Note the Whale will remain stationary as it plummets, reinforcing the need to tap/flap.<br />
<br />
Animating the Whale and the glowing rocks has really given me a profound respect for the intricacies involved in animation. It's fun to see how a handful of static images can produce motion but incredibly painful to tweak all the timings to produce the perfect effect.<br />
<ul>
</ul>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-77285150505830117712016-03-17T23:35:00.000+00:002016-03-17T23:35:06.722+00:00Flappy Whale v1.2.0 (Pulsating Rocks! - ewry games)We have decided to pivot and changed the flying obstacles to floating rocks :D. Try to enjoy the gentle pulsating glow of the rocks without crashing right into them! Click the show button below to launch the game. <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe frameborder="0" height="480" id="spoiler_flappyWhale120" style="display: none;" width="800"></iframe>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Flappy Whale! v1.2.0 - ewry games</span>
<button onclick="
var elementId = 'spoiler_flappyWhale120';
var hiddenElement = document.getElementById(elementId);
if(hiddenElement.style.display=='none') {
hiddenElement.style.display='';
hiddenElement.src = 'https://110ebb1cc39b0269b6deda7e46ce2e88273020a4-www.googledrive.com/host/0By3LCUutSiC8NkVWUU5vT2ZGaGs/'
} else {
hiddenElement.style.display='none';
}
" title="Click to Show/Hide the game" type="button">Show/Hide Game</button>
</div>
<br />
We're starting to wrap up the game now and there are only a few more visual items we need to tweak. Depending on feedback I may ramp up the difficulty for the Killer mode as well :P<br />
<ul>
</ul>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-62430781415138020392016-03-16T03:22:00.002+00:002016-03-16T03:22:31.407+00:00Flappy Whale v1.1 - Animated Skyscrapers<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="463" src="https://www.youtube.com/embed/e060X3Xs6vA" width="630"></iframe></div>
<br />
We have just released a new alpha version which you can see a video of above. Alternatively give it a go and play it yourself <a href="https://477f456147392f4597e9cbe20298025b0159aa5d.googledrive.com/host/0By3LCUutSiC8NnNPU1hyZzdJVjA/">here (https://goo.gl/eTFNZ7)</a>!<br />
<br />
Note that there are some visual artifacts and some bugs. Depending on how things go, we might start to port over to Unity very soon.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-13919305965109842382016-03-08T01:42:00.001+00:002016-03-08T02:07:59.417+00:00Flappy Whale v1.0.0 (ewry games) <a href="https://twitter.com/rumziyousef" target="_blank">@RumziYousef</a> and I are proud to present v1.0.0 of our very first game: <a href="https://d1d8910ccf61283ed71f374ce5ba7add29b1e925.googledrive.com/host/0By3LCUutSiC8TmRnT3ZzTnoyMUk/" target="_blank">Flappy Whale!</a> <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe frameborder="0" height="480" id="spoiler_flappyCube021" src="https://d1d8910ccf61283ed71f374ce5ba7add29b1e925.googledrive.com/host/0By3LCUutSiC8TmRnT3ZzTnoyMUk/" width="800"></iframe>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Flappy Whale! v1.0.0 - ewry games</span>
<button onclick="
var elementId = 'spoiler_flappyCube021';
var hiddenElement = document.getElementById(elementId);
if(hiddenElement.style.display=='none') {
hiddenElement.style.display='';
} else {
hiddenElement.style.display='none';
}
" title="Click to Show/Hide the game" type="button">Show/Hide Game</button>
</div>
<br />
Rumzi has been busy creating some awesome artwork to help put the finishing touches to our project. I've also added 3 difficulty modes to the game as well :D<br />
<br />
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUAZNoc62MGFC05LXRHlmBkeKkdU3odKIawa8Vt8wt1izaBRbCmJLU6ABJwuNmbl3xZTrOSKjJns8ApjRJJHRLZXedZkFMlFHiWbmPOcbRhbpk_Vs8QZkbOjB36gUMOHyMehdxQ3B2cLk/s1600/Screen+Shot+2016-03-08+at+01.55.58.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUAZNoc62MGFC05LXRHlmBkeKkdU3odKIawa8Vt8wt1izaBRbCmJLU6ABJwuNmbl3xZTrOSKjJns8ApjRJJHRLZXedZkFMlFHiWbmPOcbRhbpk_Vs8QZkbOjB36gUMOHyMehdxQ3B2cLk/s640/Screen+Shot+2016-03-08+at+01.55.58.png" width="640" /></a></div>
<br />
<ul>
<li>Checkout the great new background and our floating skyscrapers.</li>
<li>Try out the Easy, Hard and Killer difficulty modes.</li>
</ul>
<div>
Hope you enjoy it!</div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-18549912927887875872016-02-22T03:29:00.000+00:002016-03-08T01:25:50.521+00:00Flappy Whale v0.3.0 (Graphics Update - ewry games)We have finally started introducing proper graphics into the game :D You can know play as the "Sky Whale" and flap your way through the skies!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe frameborder="0" height="480" id="spoiler_flappyCube021" style="display: none;" width="800"></iframe>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Flappy Whale! v0.3.0 - ewry games</span>
<button onclick="
var elementId = 'spoiler_flappyCube021';
var hiddenElement = document.getElementById(elementId);
if(hiddenElement.style.display=='none') {
hiddenElement.style.display='';
hiddenElement.src = 'https://472f5a3ed8acc898f12a1c8ca15315e8f28ea35e.googledrive.com/host/0By3LCUutSiC8T2xoR1NpYkRsQTg/'
} else {
hiddenElement.style.display='none';
}
" title="Click to Show/Hide the game" type="button">Show/Hide Game</button>
</div>
<br />
Note that I've bumped the resolution and changed the aspect ratio to make the game better suited to modern displays :) The scrolling background is very simple but I was very pleased with how easy it was to put together. We are definitely going to start polishing everything a lot more, our current targets are:<br />
<br />
<ul>
<li>Introduce new difficulty modes</li>
<li>Update the whale graphics</li>
<li>Add new fonts</li>
</ul>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-9111971326981479563.post-52255252598469093772016-02-20T07:13:00.002+00:002016-02-20T07:13:28.905+00:00Flappy Cube v0.2.3 (Highscore - ewry games)<a href="https://0afcc26fa675ee75ff226ac7a17124c4a08f8c1f.googledrive.com/host/0By3LCUutSiC8ZWllOWlwajhRanc/">This small update</a> to the game has cleaned up the HUD and introduced a Highscore!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe frameborder="0" height="480" id="spoiler_flappyCube021" style="display: none;" width="640"></iframe>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Flappy Cube v0.2.3 - ewry games
<button onclick="
var elementId = 'spoiler_flappyCube021';
var hiddenElement = document.getElementById(elementId);
if(hiddenElement.style.display=='none') {
hiddenElement.style.display='';
hiddenElement.src = 'https://0afcc26fa675ee75ff226ac7a17124c4a08f8c1f.googledrive.com/host/0By3LCUutSiC8ZWllOWlwajhRanc/';
} else {
hiddenElement.style.display='none';
}
" title="Click to Show/Hide Content" type="button">Show/Hide</button>
</span>
</div>
<br />
I managed to uncover the "pipes don't spawn" bug in the Tutorial. This old bug was present in the spawning logic for the pipes. When I created Tutorial, I simply copy and pasted the code over. This bad practice came back to haunt me, code duplication is the devil! I've known killed the duplicated code and there is a single piece of spawning logic that is configurable now :)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj627Jd1lVAS2VdKws5MmshvDAuEg6A5oJbvVvJqGjui3gbwtOMwnuJKOjI-iwA7vNL3UXzklOSH8DnIX60UZ8skOGikY-YlzYA55Fa3MsLwzmfdvmjw2jee6XeMZXb-y-eZlAXpPa-ERg/s1600/Screen+Shot+2016-02-20+at+07.05.06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="177" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj627Jd1lVAS2VdKws5MmshvDAuEg6A5oJbvVvJqGjui3gbwtOMwnuJKOjI-iwA7vNL3UXzklOSH8DnIX60UZ8skOGikY-YlzYA55Fa3MsLwzmfdvmjw2jee6XeMZXb-y-eZlAXpPa-ERg/s640/Screen+Shot+2016-02-20+at+07.05.06.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">There is a choice on spawning pipes/ships randomly or in a fixed position.</span>
</div>
<br />
Sadly the Highscore doesn't persist if you refresh the game :( This will be something we look at once the game is more fully fledged!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-84149993812725077162016-02-17T15:19:00.000+00:002016-02-17T15:55:15.601+00:00Flappy Cube v0.2.2 (Bug Fixes - ewry games)Fixed an issue where <a href="https://6cf330e8accf41cae1053313e2aef05ad80528c3.googledrive.com/host/0By3LCUutSiC8LXRsczVkS2p3TFU/" target="_blank">the game</a> wasn't restarting properly after colliding with a pipe.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe frameborder="0" height="480" id="spoiler_flappyCube021" style="display: none;" width="640"></iframe>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Flappy Cube v0.2.2 - ewry games
<button onclick="
var elementId = 'spoiler_flappyCube021';
var hiddenElement = document.getElementById(elementId);
if(hiddenElement.style.display=='none') {
hiddenElement.style.display='';
hiddenElement.src = 'https://6cf330e8accf41cae1053313e2aef05ad80528c3.googledrive.com/host/0By3LCUutSiC8LXRsczVkS2p3TFU/';
} else {
hiddenElement.style.display='none';
}
" title="Click to Show/Hide Content" type="button">Show/Hide</button>
</span>
</div>
<br />
It seems unpausing may not work properly if you attempt it just before switching scene. Another "gotcha" to add to the list for Stencyl :(Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-90472383239601499262016-02-17T13:32:00.000+00:002016-02-17T13:32:02.165+00:00Flappy Cube v0.2.1 (ewry games)We have <a href="https://b43aad4699782a14d2bffc1e9c495e0ec8b1003a.googledrive.com/host/0By3LCUutSiC8MFdMT01sTlhXQTA/" target="_blank">a minor version bump for Flappy Cube</a>! Now we open off with a start menu and I've introduced a basic tutorial :)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe frameborder="0" height="480" id="spoiler_flappyCube021" style="display: none;" width="640"></iframe>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Flappy Cube v0.2.1 - ewry games
<button onclick="
var elementId = 'spoiler_flappyCube021';
var hiddenElement = document.getElementById(elementId);
if(hiddenElement.style.display=='none') {
hiddenElement.style.display='';
hiddenElement.src = 'https://b43aad4699782a14d2bffc1e9c495e0ec8b1003a.googledrive.com/host/0By3LCUutSiC8MFdMT01sTlhXQTA/';
} else {
hiddenElement.style.display='none';
}
" title="Click to Show/Hide Content" type="button">Show/Hide</button>
</span>
</div>
<br />
I found that there was shared logic between all these buttons to switch the scene and draw the button text in the right place. Behaviours in Stencyl seem to be the best way to go when trying to encapsulate/share logic.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4F7JpD-hzJnI5mbWF19iJQoJtFMrZeKmFMaovygNQumT2zghroFsYrruPFYlbm8322WIRzYyZz7f_VQ59TNtaI9p4WNrF4bM9zqFr6EkRy2vmSewgI1b-hBAdVZ8Xl4PuOHU6wjY8BNY/s1600/Screen+Shot+2016-02-17+at+13.17.40.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="220" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4F7JpD-hzJnI5mbWF19iJQoJtFMrZeKmFMaovygNQumT2zghroFsYrruPFYlbm8322WIRzYyZz7f_VQ59TNtaI9p4WNrF4bM9zqFr6EkRy2vmSewgI1b-hBAdVZ8Xl4PuOHU6wjY8BNY/s640/Screen+Shot+2016-02-17+at+13.17.40.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Switching Scenes Behaviour</span>
</div>
<br />
Behaviours can expose configurable attributes and they really help in reducing the amount of duplicated code. Sadly there doesn't appear to be an easy to compose behaviours though.<br />
<br />
<a name='more'></a><br /><br />
There was a strange issue I stumbled across when I was trying to configure actors within the scene designer.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlg2mCrgm9jJCmsUZfIE0yqIdz4uVsdMS8xAK3aCAalRcvedXjpye_6_iBGKFJuQ0eFe6qQX_-hHpn_usdDjAk-BTrhJEFTK65nFyzvihtVe1lyqgyCYtL-NvEDPzbXSc__zupMlHgP7k/s1600/Screen+Shot+2016-02-17+at+13.10.59.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="420" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlg2mCrgm9jJCmsUZfIE0yqIdz4uVsdMS8xAK3aCAalRcvedXjpye_6_iBGKFJuQ0eFe6qQX_-hHpn_usdDjAk-BTrhJEFTK65nFyzvihtVe1lyqgyCYtL-NvEDPzbXSc__zupMlHgP7k/s640/Screen+Shot+2016-02-17+at+13.10.59.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Customising an actor within the Scene Designer</span></div>
<br />
Initially I only had a single Button actor type and I added two to this "Start Menu" screen. Trying to customise them lead to conflicts though. It would seem that Stencyl didn't like that we were setting Target_Scene to two different values. My only guess is that the scene was using a single attribute for actors of the same type. This meant clicking the Tutorial button would launch the Game instead, as the attribute had gotten overwritten by the other. Whilst I definitely did see the bug occur, the reason why is purely speculation...<br />
<br />
So the next steps are to continue the work on skinning/theming! We have been putting together some concept art and hope to be able to share it soon :D Other than that, I'll be looking to tweak the tutorial.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-9111971326981479563.post-84478740500467694682016-02-17T11:56:00.003+00:002016-02-17T12:54:45.589+00:00Flappy Cube v0.1.2 (Scoring Added - ewry games)<a href="https://cdfc0bb5b33cd3c28645b09dd048faa09da3f4dc.googledrive.com/host/0By3LCUutSiC8ZFB2eVpVNDBpdXc/" target="_blank">This patch update</a> introduced scoring.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe id="spoiler_flappyCube012" style="display: none;" frameborder="0" height="480" width="640" data-src="https://cdfc0bb5b33cd3c28645b09dd048faa09da3f4dc.googledrive.com/host/0By3LCUutSiC8ZFB2eVpVNDBpdXc/"></iframe>
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;">Flappy Cube v0.1.2 - ewry games
<button onclick="
var elementId = 'spoiler_flappyCube012';
var hiddenElement = document.getElementById(elementId);
if(hiddenElement.style.display=='none') {
hiddenElement.style.display='';
hiddenElement.src = 'https://cdfc0bb5b33cd3c28645b09dd048faa09da3f4dc.googledrive.com/host/0By3LCUutSiC8ZFB2eVpVNDBpdXc/';
} else {
hiddenElement.style.display='none';
}
" title="Click to Show/Hide Content" type="button">Show/Hide</button>
</span>
</div>
<br />
<div class="separator" style="clear: both; text-align: left;">
I implemented this by firing an event every time one of the pipes left the screen, as that coincided with the player jumping paste them successfully. The out of the box "actor has left the scene" event in Stencyl didn't seem to want to play ball with me at all though. It seemed to fire really inconsistently and I can only assume I did something wrong with regards to the scene boundaries. In the end I went with writing a custom event that the pipe would fire once it detected it was out of bounds itself.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
To improve on this design, I would instead look to make a specialised collision zone/region on the pipe where the gap is. This would detect when the player successfully goes through the gap and increments the score. Doing it this way would remove the dependency on fixing the player's lateral position on the screen. I'd assume there would be some performance overheads for that solution though.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Speaking of which, I'd really like to find out more about performance testing and unit testing games more. Stencyl seems to have very poor support in both areas but <a href="http://haxe.org/manual/std-unit-testing.html" target="_blank">Haxe does have a unit testing library</a> within it...</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>Unknownnoreply@blogger.com0