Issues Faced With Kotlin During Android Development

Kotlin seems like the future of Android development. It is a new statically-typed programming language that runs on JVM, with a very refined syntax and enhanced features. There is a lot to love about it. Kotlin is interoperable with Java, which should reduce the risk of future incompatibility. The additional language features such as Function Extensions and High Order Function make it much more extensible and scalable. The code is concise with data classes, single expression function, infix and many more… enough said. Kotlin is just great!

Screen_Shot_2016-08-10_at_2.10.19_pm.png

I started working on some real apps using Kotlin that have since been published on the playstore. I have to say it was relatively smooth sailing. Nonetheless, there were some hiccups along the way that are worth sharing.

1. Method Count Increase.

Method count increase was one of the issues I was fully aware before starting with Kotlin. At the time of writing, there are an additional 7’191 methods adding to the total method count. This would add more than 10% to the 65k methods limit. Nonetheless, I didn’t worry that much as the MultiDex support is there to help to overcome this issue.

2. Using Libraries that require Annotation.

There are many cool libraries that can assist with making Android Development much more efficient. However, when switching over to Kotlin, using some of them becomes a challenge. There are two libraries which I can’t manage to use directly after switching to Kotlin, i.) Icepick and ii.) EventBus. The main reason is that the Annotation (i.e. @State and @Subscribe) is not picked up by the code. Fortunately, with EventBus, I managed to work around this by creating a composite class object using Java Code. Note that this doesn’t mean all libraries using Annotation would not work for Kotlin. I managed to use Retrofit 2.0 and Dagger 2.0 (where both use Annotation extensively) in Kotlin directly.

3. Mocking Need Open Class/Function.

By default a class and function is considered final for Kotlin. Mocking (using Mockito) requires a non-final class. So in order to have that, we have to explicitly open a class if we would like to mock it for testing. If this is not done, it would error out easily. The more tricky issue is the function. If the function is not open, there would be no error issue when running the test. Instead of intercepting the function, it would call the actual internal function, where the test would fail with NPE. Without knowing the function needs to be open, the root issue might not be easily discoverable.

4. Java to Kotlin Converter Limitation.

The Kotlin Plugin for Android Studio is just great, especially allowing to auto convert from Java to Kotlin. However, the conversion might not be ideal. e.g.

 

is converted to

class SimpleClass(memberVariable: Int) {

  internal var memberVariable = 0

  init {

      this.memberVariable = memberVariable

  }

}

Whereby it could be as simple as

class SimpleClass(val memberVariable: Int) {}

Anyway, it’s always good to review the converted code and explore so that we don’t just have Kotlin code in Java style, without the real advantage of Kotlin.

5. Other Converter Issue.

I love writing a new function from an object, and pressing Alt-Enter to trigger the auto-function creation. If you are writing on the Java side of code, and call a Kotlin function (that you just intended to create), sorry you are out of luck. Android Studio will only auto create that function for you in the Kotlin code.

At times for experimental purposes we would also like to convert from Kotlin to Java, given that it was inter-operable with Java. This is not possible however the tools only allow you to convert from Java to Kotlin and not vice versa. Perhaps this is by design, and I could imagine it would be difficult for Java to handle conversion of more advanced Kotlin language features.

None of these issues are show stoppers. The advantage and fun of learning new things outweighs them in any case. The language features are richer and there is so much to explore. I haven’t really faced many issues from Kotlin’s language as yet. I’m sure I’ll uncover more issues, but I don’t expect them to “kill me”. Java is always there to the rescue 🙂

As with any new thing, one other challenge is finding community support. Suppose you are experimenting with new Android Features and face a road-block. If you post your question to Stackoverflow using your Kotlin code, you are unlikely to generate support.

So… you might as well be the one who supports others… which is in itself a good thing! 🙂

Linkly #6 – Powerful Talks

Linkly is a curated list of interesting products, topics and talking points from the world of design and technology.

It is said that the pen is mightier than the sword. That a person can change opinions and influence people far more effectively with the written word than with brute force and a sword. In the modern day with an endlessly flowing stream of information right at our fingertips the opinions that stand out from the pack are those that are insightful and engaging, that reach into the lives of their audience and elicit a truly emotional response. 

Video does a brilliant job of creating a connection between the viewer and the speaker. It provides a far more human element to the exchange of information that respects the meaning and the value of the speaker’s intentions. This week instead of linking to articles from around the web that will inevitably end up at the bottom of your ‘Read it Later’ pile, take the time to watch these powerful and insightful talks about design and technology. 

Ken Robinson: Do Schools Kill Creativity?

From the day that you’re born, you’re thrust into long, tough and hard years of education. Without consent, every child goes through pre-school, primary school, high school. It is assumed knowledge that school is what is best for kids. Ken Robinson goes down the path less travelled and asks the question, “Do schools kill creativity?” 

Simon Sinek: How great leaders inspire action

If there is one talk that you must watch in your life, and that has the potential to make the biggest impact on your work it’s Simon Sinek’s talk. He proposes the simple model for leadership, and the framework around which you can truly give people what they want, by asking ‘Why?’

Ira Glass on Storytelling


Nothing comes easy, especially mastering your craft. In this typographic masterpiece world renowned radio host of the popular podcast, This American Life, explains the 10,000 hours principle. That it takes approximately 10,000 hours of hard work, passion and persistence to become a leader in your field.

Sheryl Sandberg: Why we have too few women leaders

Facebook’s COO delivers a brilliant talk on why less women reach the top of their professions. She offers powerful advice to women aiming to break form and strive to be leaders. A fantastic talk that is well worth taking the time to watch closely and that will open your mind to problems you didn’t know existed.

Jon Ronsen: How One Tweet Can Ruin Your Life

From the man who brought you, The Psychopath Test, Jon Ronson takes a look at public shaming, and the role social media plays in the problem. He examines the problem and its effects on society as a whole.

Words are a powerful way to convey meaning and express ideas. Even more expressive, engaging and effective is the human voice. Standing on stage in the spotlight, with hundreds of people hanging on your every word. If you’re inspired by these talks you too can share your thoughts, and present them publicly, and potentially change the way people think about the world around them.

Awareness

Independent of where you work or live, every individual can benefit from self-awareness and understanding how they interact with others. Here at Bilue we’ve been discussing the topic of strengths and how people’s strengths relate to each other within a team environment.

Being aware of others means more than simply being polite and respectful around an office. Awareness is about spending the time to understand the individuals around you, their motivations, their desires and their strengths. Knowing this will inform the way you communicate and express ideas, opinions and thoughts amongst your team. In this way being aware can mean the difference between an open-minded, successful team with the freedom to explore ideas and a scared, narrow-minded team unable to break down the communication barrier.

It’s important that awareness focuses on strengths and abilities of peers, instead of on weaknesses. Finding ways that your strengths can integrate with the strengths of others will form stronger team relationships and team members will feel more valued within a team culture. Learning new skills from those around you will start to come naturally, and others will start to learn new skills from you.

Imagine a chef that knows how to cook divine gourmet meals and yet struggles to make enjoyable desserts. The chef decides to ask his assistant, who is known for cooking amazing desserts but makes awful meals. Both the chef and his assistant stand to learn something valuable from each other.

This concept can be applied throughout your daily approach to interacting with others. Consider treating interactions as an exchange of information, a seemingly unspoken two-way transmission as opposed to a one-way delegation. Instead of projecting your own perspective on others, take the opportunity to understand the perspective of your peers and let that inform and shape your own personal knowledge.

I believe every individual should be mindful of the people they’re collaborating with on a daily basis, and the ways they can build stronger relationships, challenging others to be better and being challenged to improve themselves. No matter how you do it, you’ll grow as a person and form more effective bonds with people around you.

SVG Animations – Seriously Very Good

Imagine the entire web was just static. Filled in by nothing but words, information and meaningless black and white text. We would all spend a lot less time using the internet.

Thankfully we don’t. Instead the internet is a vibrant and expressive place where we immerse ourselves each day in an endless variety of unique experiences. Animation and movement are the visual language through which we catch our audience’s attention. We apply the finesse to our words and breathe life and meaning into our work.

Scalable Vector Graphics (SVGs) are a fantastic tool for every seasoned animator. Unlike traditional image formats they are built using vector paths that save into workable, writeable code. Their output is a complex XML-based structure consisting of tags like <path>, <circle>, <rect> and so forth. To these you can assign properties and masterfully take control of your SVG graphics.

SVGs are vector paths so they scale consistently without any nasty pixelation. They can be assigned fill colours, stroke colours and even border styles. Animating them is easy using CSS3 or SMIL (Synchronised Multimedia Integration Language) and brings movement and life to an otherwise static and lifeless shape.

Here’s one I prepared earlier to highlight the possibilities that can be achieved simply through the use of SVGs and animation. It is built entirely in HTML5/CSS3 using vector shapes from Vecteezy, which I then edited and exported using Sketch.

Note: Can’t be viewed in Firefox because the browser doesn’t provide support for some of this cool stuff and the playground just ends up looking weird 🙁

  1. Outlines
    An SVG’s stroke is the border of its shape. The stroke can have multiple properties such as weight and colour. Create a tracing effect using the dashed feature of a stroke and the dash-array, dash-offset properties. These indicate length of dash and dash starting point along the edge.The trick is instead of having many short dashes, we make the stroke-dasharray value longer than the border of the shape. Then we animate the stroke-dashoffset from the stroke-dasharray value down to 0. The longer the border of the path, the higher the initial values of stroke-dasharray and stroke-dashoffset needed.ferriswheel

    <span class="s4"><span class="s4">path {
     <span class="Apple-converted-space">    </span>stroke-dasharray: 3000;
     <span class="Apple-converted-space">    </span>stroke-dashoffset: 3000;
     <span class="Apple-converted-space">    </span>animation-name: draw;
     }
    
    </span></span>@keyframes draw {
     <span class="Apple-converted-space">    </span>to {
     <span class="Apple-converted-space">        </span>stroke-dashoffset: 0;
     <span class="Apple-converted-space">    </span>}
     }
  2. Fill
    Each path can be filled with colour – this feature being a major attractor to using the SVG format. Fill can be given an opacity between 0 (transparent) and 1 (opaque). This allows us to animate from no-fill to fill.swingsNote: Elements which overlap one another (eg. the axis on the carousel above) don’t want the lines of any paths behind. To avoid this all elements first get filled in with the document’s background colour and only after with a solid colour. This is achieved by chaining three animations together.

    <span class="s4">animation-name: draw, fillBackground, fill;
    </span>

    As for the colour randomness on the page: this is a little Sass mixing I built myself. It takes an input colour and returns a set of random colours within a certain range. You can check out Sass Colour Range on Github.

  3. Timing
    Originally when I built the playground, each section was dealt with individually – building it and then filling it in. Different sections were shown using Javascript’s timeout, changing the display property of each element from none, triggering the animation to start. The end result was messy so I instead used CSS’s animation-delay property to trigger specific start times for each animation. I then created an ‘end’ variable used to trigger the fill for every part of the playground simultaneously.

    <span class="s4"><span class="s4">$end-fill: 10s;
    
    </span></span>.carousel
     {
     <span class="Apple-converted-space">    </span>animation-name: draw, fill;
     <span class="Apple-converted-space">    </span>animation-delay: 0s, $end-fill;
     }
    
    .swings
     {
     <span class="Apple-converted-space">    </span>animation-name: draw, fill;
     <span class="Apple-converted-space">    </span>animation-delay: 4s, $end-fill;
     }

    Each animation can also have a timing function applied to it, changing the rate of change throughout its duration. Most elements are animating with a linear timing in order to create a more uniform and monotonous look. However certain elements have subtle changes.

    One such is the swing, which uses an ease-in-out function to make the swing seem like it’s hovering at the peak of each swing before gradually speeding towards the trough.

    <span class="s4">animation-timing-function: ease-in-out;</span>
    
  4. Rotation
    There is lots of rotation going on in the playground, each to varying degrees. The carousel and each carriage rotates a full 360°. The seesaw and swings move slightly less. Rotation of the swings is limited to the X-Axis so that it appears to swing back and forth rather than in a circle. Because the swings are drawn hanging down whereas their rotation moves from -33° to 33°, an animation has been included to first pull the swing back. This animation is called only once using animation-iteration-count, while the swinging motion is on an infinite loop.

    <span class="s4">animation-name: swingback, swing;</span>
    <span class="s4">animation-iteration-count: 1, infinite;
    animation-delay: 0s, 1.1s; </span>
    
  5. Bouncing
    There are two parts to the bouncing ducks – the spring and the duck itself. While it looks like a simple up and down motion, these two parts are distinctly different. The spring has to collapse into itself while the duck stays the same shape and doesn’t scale. Therefore the spring has its own animation using scale-Y, but the duck itself uses translate-Y to move up and down. A minor annoyance – scale and translate use different methods of determining distance (translate calculates by pixels, scale by a part of 1).ducks

    <span class="s4"><span class="s4">@keyframes spring {
     <span class="Apple-converted-space">    </span>from
     <span class="Apple-converted-space">    </span>{
     <span class="Apple-converted-space">        </span>transform: scaleY(1);
     <span class="Apple-converted-space">    </span>}
     <span class="Apple-converted-space">    </span>to
     <span class="Apple-converted-space">    </span>{
     <span class="Apple-converted-space">        </span>transform: scaleY(0.8);
     <span class="Apple-converted-space">    </span>}
     }
    
    </span></span>@keyframes duck {
     <span class="Apple-converted-space">    </span>from
     <span class="Apple-converted-space">    </span>{
     <span class="Apple-converted-space">        </span>transform: translateY(0);
     <span class="Apple-converted-space">    </span>}
     <span class="Apple-converted-space">    </span>to
     <span class="Apple-converted-space">    </span>{
     <span class="Apple-converted-space">        </span>transform: translateY(10px);
     <span class="Apple-converted-space">    </span>}
     }
  6. Sliding
    CSS doesn’t have a great deal of support for motion paths – this is still an experimental property in Chrome only. Instead of using CSS to achieve the motion of the ball sliding down the slide, I’ve used SMIL’s animationMotion property as a child node of the circle path. Path of motion is determined using the path attribute on animateMotion.

    <span class="s4">&lt;animateMotion
        path="M197.125,297.636719 C197.125,297.636719 319.5625,276.726563 385.351562,333.406251 C451.140625,390.08594 452.066406,558.484368 502.964844,571.152331 C553.863281,583.820293 634.578125,567.597656 677.324219,479.175775"
        dur="2s" begin="16s" repeatCount="indefinite"
        calcMode="spline" keyTimes="0;1"
        keySplines="0.755, 0.05, 0.855, 0.8"/&gt;
    </span>

    Much like CSS animations, SMIL’s animateMotion takes specifications for animation-duration(dur), animation-delay (begin), and animation-iteration-count (repeatCount).

    In order to create an animation-timing-function three properties are needed – calcMode, keyTimes and keySplines. ‘Spline’ is the SMIL keyword to indicate a custom bezier which is then defined in keySplines. The keyTimes attribute is also required to determine the duration of the function. This timing function creates the slow-to-fast sliding motion as the ball slips down the slide.

    slide

    Both CSS and SMIL animations don’t allow for a delay between repeats of an animation. Therefore preventing the ball sliding continuously down the slide without a break requires an additional CSS animation. This animation runs for 5x the length of the ball rolling animation, and then shows the ball for 20% of that time. With a 2-second animation on the ball there is then an 8 second gap before the ball is shown rolling again. The ball is actually continually rolling the entire time, just not visibly to the viewer.

    <span class="s2">.ball {
     <span class="Apple-converted-space">    </span>animation: slideHide 10s linear infinite;
     }
    
     @keyframes slideHide {
     <span class="Apple-converted-space">    </span>1%, 20% {
     <span class="Apple-converted-space">        </span>opacity: 1;
     <span class="Apple-converted-space">    </span>}
     <span class="Apple-converted-space">    </span>21%, 100% {
     <span class="Apple-converted-space">        </span>opacity: 0;
     <span class="Apple-converted-space">    </span>}
     }</span>

CSS and SVGs are amazingly cool and incredibly powerful. With an underwhelmingly few lines of code you can break away from the cold, lifeless and even Orwellian nightmare of a motionless information super highway.

Despite these techniques being capable of producing drastically complex animations they’re also a fantastic way to apply polish to the tiniest of details throughout your work. You can sweat the details, without sweating the details and build an experience that your users will absolutely love to use. Look out for more of these neat little animations throughout our blog posts and across our website!

Directions of the web

WebFuture

Don’t settle for what exists, care enough to push the envelope and design the best solution possible.

Technology and the web are incredibly exciting and yet still so new. Compared to other industries such as banking, mining or automotive it is still in its infancy, and people are doing amazing work to shape it and explore how far it can be stretched. Being so young allows us to try new approaches, make mistakes and discover new design processes and development practices that will help improve what we build.

Events such as Web Directions 2015 help the industry grow by bringing its leaders together to impart their wisdom. After two days, I felt like my head was ready to explode from excitement, learning and ridiculously excessive amounts of coffee. Web Directions challenged my existing development processes, reinforced my inner values and exposed me to a few excitingly new perspectives of thinking.

Integrate

Cap Watkins, VP of Design at Buzzfeed delivered the conference opening keynote, emphasising a need for developers and designers to work closer than ever before. He introduced us to processes at Buzzfeed whereby designers and developers sit down monthly to work through minor styling bug fixes that would otherwise be de-prioritised. Designers were encouraged to be involved, learn CSS and make contributions to a codebase instead of relying on developers to make these less important changes.

I find Cap’s attitude inspiring. In my own experience I’ve found that collaboration among teams directly leads to an increase in quality.

Developers should also be expanding the breadth of their knowledge. Courtney Hemphill addressed these ideas in her talk on animation algorithms. She encouraged exploring the ways tweaking easing functions adds entirely new dimensions to a design – beyond what a designer would typically achieve.

Addressing these visual animation problems through code and logic we can further integrate design thinking into our process. By integrating knowledge from other disciplines, as developers we become more than just ‘code monkeys’. Instead, we can create fun, exhilarating web experiences. Who doesn’t want to do that?

Experiment

This year’s code track was a flurry of everything that is cooler than whatever it is you’re currently doing. Programming can sometimes feel like you’re just writing the same lines of CSS over and over again – but the engineering speakers inspired developers to experiment with new methods, libraries and properties – each wielding their own success stories from real world projects.

With the uptake of the Angular and React frameworks as well as modules with ES6, there’s been a shift towards component-based development. Functionally, components have a local scope so that they don’t interfere with one another. This isn’t true for CSS. Mark Dalgleish and Glen Maddern introduced their solution – CSS Modules. This framework uses Webpack to create locally-scoped CSS classes that only apply to the component where they’re referenced. The result is cleaner, modular CSS files and reusable base classes both of which I will be keen to embrace.

Under-used features of CSS were also discussed by several in relation to enhancing web experiences. Tools such as vw, vh, calc(), rems and ems allow us to create better responsive websites. Utilising these properties will allow us to simplify our code and bring processing from Javascript into CSS. The result is fast-running websites which are more accessible and provide a better experience for the user.

Care

An underlying theme of many talks was about how creatives need to think more about the impact of what they’re building. To deeply explore the needs of user groups that are not normally considered. An example – Government. Tom Loosemore talked through rebuilding gov.uk to create a less frustrating online experience. He presented solutions to combine data from multiple sources, removing the need for users to re-enter information already stored away somewhere in a database. Reconceptualising user behaviour addressed key issues in new ways, an approach which extends beyond government.

Developers, on the other hand, simply don’t care enough about the products we’re building. The internet is obese, and we’re all too lazy to fix the problem. Maciej Ceglowski’s challenge is to build websites smaller than Russian literature (which is usually fairly small). Remove the oversized videos, uncompressed images, unnecessarily heavy ads – they’re all just bloat. We’re all guilty of ignoring the implications of page load times and need to be thinking more consciously. Give the user critical content first – then stop. Does my user care? No? Then why include it?

Go back to the basics, simplify size, simplify quantity and create a more usable web.

Be Better

Web Directions was a call-to-arms. The web is fresh, it’s pliable and we can still shape it. I’ve been playing with plenty of ideas I’ve learned, I intend to keep learning and experimenting with new technologies, new theories and improving my code in the process. Yes, there will always be more to do, but adopting an integrated approach to thinking, improving code and caring about what we build and who we build for will create an enjoyable, exciting internet for people to enjoy. I’m excited to see what direction the industry will take as it continues to grow.

For some more information and thoughts about the conference, read Amy Balsdon’s Takeaways from Web Directions 2015.

NSCamp 2015

You can only move fast and break things for so long. At some point you need to slow down, step away and gather a little bit of perspective. Last weekend the Bilue team helped organise and attended NSCamp up in Brooklyn, New South Wales. For the entire weekend we accompanied a group of talented developers, designers and creatives from as far as Perth and Melbourne to spend some time away from the regular routine of life and instead challenge ourselves with focus, growth and passion for the work we truly care about.

Part social getaway, part hack weekend, NSCamp created the perfect environment to nuture and encourage attendees to work on side projects, as well as meet and collaborate with like-minded creatives. There were small impromptu talks around the island on a range of different topics including ‘Designing iOS apps in Storyboards without Code’, ‘Pirate Metrics’, ‘Building apps with tvOS’ and even ‘Brewing Coffee’ by a professional Barista.

Internet was a scarce commodity, instead of Google and Stack Overflow attendees were encouraged to apply elbow grease, knuckle down deep into documentation and raise a hand to direct any questions at peers. Writing code was by far not a requirement of camp. A big focus for me throughout the weekend were three things – People, Reflection and Inspiration.

A great community of smart, talented and creative people attended camp which for me was a fantastic opportunity to discuss ideas and learn from people whom I rarely get to see face-to-face. We shared beers, ciders and whiskey over a campfire on the beach, strengthening friendships and forming new friendships all around. Designers helped developers add the sparkle their apps desperately needed, developers shrugged beside designers as they considered ways of making their ideas into reality and many creative thinkers discussed ways of improving their apps beyond just interface and code.

One of the most compelling aspects of camp was the lack of schedule and all around do-what-you-want attitude. There was nothing but time to think, and I loved it. I found myself an amazing spot hidden out on the rocks near the water, where I hid myself from the rest of camp a few times. It felt great to escape where no one could find me and just introspect about where I am, where I want to be, how I want to get there and where technology fits in with my broader life goals. Something that we as fast moving developers, designers and creative people rarely find time to stop, step away and do.

We look at code, at interfaces, at urgent problems every single day. It doesn’t take long for the pressure to build up and scar our creative side. We tend to fizzle out, feel un-inspired and corner ourselves.

At camp we had a rare chance to leave our outer shell at the wharf and to forget all expectations. There were plenty of challenges – the slackline challenge, the coffee machine, the blazingly hot showers, the lack of dry firewood and the scarcity of internet. All of these challenges enforced new and unexpected restrictions on us that forced us to open our minds, change our perspective and think of new ways to solve the problems we were faced with.

Through dedication many attendees were inspired to overcome the slackline, help build an amazing beach fire and embraced the lack of internet settling disagreements the old fashioned way – an alcohol infused argument and hefty bets on either side.

A highlight of the weekend had to be the absolutely amazing job that our own Duncan Campbell and Cameron Barrie did in preparing a feast of Ribs, Pulled pork and Lamb Shoulder rivalled by none other. It was also the fantastic coffee, the endless supply of beer and wine, the insanely great location and tear jerking game of Cards Against Humanity.

Thanks to all who were involved in making NSCamp 2015 possible, we look forward to an even better camp next year!

Speaking at DevWorld

IMG_1769

Yesterday, I gave a presentation at DevWorld Australia on the design and development process of Apple Watch apps with WatchKit, called ‘Intimate Interactions on Apple Watch’.

Last year I attended the conference as a student, and attendee. At the time I was desperately tearing my hair out trying to find my ‘groove’ as a developer. I attended a lot of really inspiring, interesting and informative talks from people that I’ve since become great friends with. At one point I sat down in a corner, pulled out my iPhone and opened my to-do list.

‘Write a talk for DevWorld 2015’

I gave myself the task of writing something for the next year, and it seemed so far fetched that there was no way I’d accomplish it, but I’d at least give it a try.

I put that to-do task out of my mind until earlier this year when I’d hit ‘Submit’ on an application to give a talk at DevWorld 2015. Despite all the added stress of trying to piece together something remotely legible and worthwhile for an audience, this was a great opportunity for me to work on a very specific tool in my development tool chain – my confidence.

There are a lot of people I know that would love nothing more than the opportunity to stand on a stage, be given a microphone and enough time to talk uninterrupted to an audience. I’m not typically an outrageously confident person in comparison with my peers. My lack of formal education in software development constantly irks me into what I consciously know is an unwarranted sense of imposter syndrome.

I decided not to let fear and confidence overrule my life and instead to over come it. Whether I failed or not didn’t quite matter, just that I pushed through the barrier and ended up a better developer on the other side.

So I spent a few weeks thinking about my talk, writing it, iterating it and working with a designer to make it look less like a colourblind developer had spilled a bucket of paint over some scribbled words.

Throughout this process I found myself learning quite a lot about myself as a developer, and the extent of what I actually do know about things that I didn’t think I actually knew. Which is really encouraging. Surprisingly, I found myself learning a lot even just simply by going through the motions of teaching others what I know and have learned.

Yesterday I ticked off my to-do list task, and accomplished another milestone. With my goals and milestones as a metric I’ve found that I am improving as a developer a lot faster now than I once was, and yet there is still a long way to go.

Yes the great people I work with are helping with that, but what has helped me the most is forcing myself into situations that make me scared, take me out of my comfort zone and force me to do something I usually wouldn’t. Like writing a talk about building software and then presenting it to a room full of developers most likely a lot smarter than I am.

It turned out really great, as you would expect from the really encouraging and positive community at DevWorld. Since my talk I’ve spoken to a lot of interesting developers building new and exciting things with WatchKit and I’ve been asked a few intriguing questions.

If you’re like me and constantly trying to push yourself and your development to the next level, I recommend finding a really great community that you can contribute to and converse with. Present a talk on something you’re passionate about, talk to people that are just as passionate and you’ll be surprised at the outcome.

A podcast a day

You sit back in the cold, sticky, plastic, blue train seat sniffle on the morning train into the office. Beside you is the last person you want to be seated next to. Sniffle Scrolling aimlessly through your Facebook news feed you can’t help but keep hearing it.

sniffle What is that? sniffle sniffle It hits you.

The frustrating, relentless and insufferable sniffle of a cold-ridden commuter from hell. You look around and notice all the carriage seats are full. You ain’t going no where. Aside from imagining yourself inflicting some form of mass violence upon everyone around you, like something out of Kill Bill or The Purge, what would you do?

I asked everyone at Bilue what they would do and they had this to say

“What a stupid question Phill, what rock are you living under? What else is there to do except whip out a pair of swanky headphones and block it all out with some podcasts!”

So these are the podcasts that we’ve been listening to lately –

Scott

Serial

From the same guys who bring you This American Life, bring an even better Story about a high school murder, the people involved, and the guy who got convicted. Is he innocent or guilty?

Stuff you should know

In life there’s things to keep in your memory banks and things to be discarded like last weeks Beef Stroganoff. Josh and Chuck bring you only the choicest cuts from the cow of knowledge.

Sye

99% Insvisible

I care about the stories behind how ‘things’ came to be. The trials & tribulations of the person behind the decisions, the environment under which those decisions came about.

 

Amy

This American Life

I have a weird interest in American culture. It fascinates me. They share stories on a particular theme with real people in real situations. I love it!

 

Criminal

‘Serial’ and ‘Criminal’ are also great if you have a sick obsession with crime cases like me!

 

Tom

StartUp

The first season of StartUp follows Alex Blumberg as he documents his own journey seeking funding for his podcast network. It’s especially interesting to hear all of the tense, emotional conversations that take place.

Exponent

I’m really interested in the business side of technology companies and in my opinion Ben Thompson and James Allworth give a great insight into the industry.

 

Annelise

Spark

If you’re anything like me you love hearing about media, technology and culture combined. Josh Topolsky talks to a slew of guests about what is and will be happening tomorrow.

 

Design Details

A good chat between designers or developers in the product design space. It doesn’t tell you what to do or how to design, it’s just a persons thoughts and experiences in the industry.

Jake

Shop Talk Show

The quirky sound board and the rapid fire shows make this a standout for me. A must subscribe if you are a passionate web developer.

 

TTL

A relatively new podcast hosted by Rebecca Murphey that focuses on finding out the many responsibilities of a front-end operations engineer.

 

Lisa

Around the Bloc

A group of soccer fans discussing their love of football/soccer, The Simpsons, South Park, music, all foods and everything in between.

 

Geek’s Guide to the Galaxy

Another must listen!

 

 

Billy

No Such Thing As A Fish

Some times I wish I have a bit of commute time so that I can consume my podcasts faster.

 

Nerdist Writer’s Panel

My podcast client says I’m subscribed to 58 channels. Geez.

 

Duncan

Reconcilable Differences

Oh, Reconcilable Differences.

 

 

Phill

02672660-c110-0132-3834-0b39892d38e0

Tomorrow

If you’re anything like me you love hearing about media, technology and culture combined. Josh Topolsky talks to a slew of guests about what is and will be happening tomorrow.

 

My Brother, my brother and me

I’ve only just subscribed but already love it! Three brothers geeking out, laughing and pretending to give good advice.

 

Luke

Wilosophy

Some people don’t like him, he can get a little chatty but the chats with Todd Sampson and Pinky Beecroft are good.

 

WTF with Marc Maron

Definitely check out the Obama interview.

A little somethin’ on the side

If you’re anything like me your closet is littered with the slow painful decay of an endless pile of corpses that once resembled your latest and greatest venture into the unknown. Wielding your idea like a sword you marched into battle with a sense of fervour, nothing could stop you on your road to success. An innocent enlightened grin painted itself across your face as you made your first move `git init`.

On night one you spend hour after hour sipping furiously from a bowl of coffee, not a single clock to be seen. Momentarily you step outside of yourself and watch as an aura of code glistens across your beautifully excessive three screen canvas. A bedroom wall, once bare and hopeless, now corrupted with ideas, dreams and coloured post-it notes.

Commits fly. With each new line of code the click and clack of the cherry MX switches on your swanky new mechanical keyboard serve only to heighten your trance. Swinging around in your Herman Miller chair you chuckle to yourself silently almost as if to commend yourself for such ingenious levels of code reusability. One day in the distant future you’re going to love yourself for naming that class method the way you just did. A world of purely functional, purely stateless and purely bug free ninja-level perfection. You are the one true god.

Three months later you stare through the car window, music pumping through your ears. You remember. That project was going to change everything. Your ticket to the big leagues. A blank cheque. It was your chance to put your best practices into action and make the thing you always saw yourself making. The project you’ve always wanted and truly deserved to make.

You dedicated yourself to that project. That time was going to be different. You pulled out all the stops, spent hours thinking about the architecture, the business plan, the interface design and user experience design. You created a build pipeline that would’ve made all your friends’ jaws drop. Every mistake you’d ever made was covered and you had practically thought of everything.

But what happened? Where did you go wrong? Why did it never work out? Why does it never work out?

A new idea pops into your head.

This time it’s going to be different…

logo-outline

Contact Info

Sydney
Level 1 6 Bridge Street, Sydney, NSW, 2000

Melbourne
Level 1 520 Bourke Street, Melbourne, VIC, 3000

Copyright 2018 Bilue Pty Ltd ©  All Rights Reserved