<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: gholden</title>
    <description>The latest articles on Forem by gholden (@opensussex).</description>
    <link>https://forem.com/opensussex</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F225088%2Ffa452e13-1878-4211-8f14-2600c499090e.jpeg</url>
      <title>Forem: gholden</title>
      <link>https://forem.com/opensussex</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/opensussex"/>
    <language>en</language>
    <item>
      <title>Finding a programming language to call home</title>
      <dc:creator>gholden</dc:creator>
      <pubDate>Wed, 20 Nov 2019 14:44:09 +0000</pubDate>
      <link>https://forem.com/opensussex/finding-a-programming-language-to-call-home-2mil</link>
      <guid>https://forem.com/opensussex/finding-a-programming-language-to-call-home-2mil</guid>
      <description>&lt;p&gt;I've been programming for many years.  Started out on my Amstrad CPC464 with BASIC.  Back then programming was a hobby, and I absolutely loved it.&lt;/p&gt;

&lt;p&gt;Over the years I've used many different languages.  But I've always felt like none of them quite did it for me.  I never found one I could call home.&lt;/p&gt;

&lt;p&gt;Now, this isn't going to be a post about bashing languages.  There are reasons why people use certain languages.  These reasons could be purely economical (language X has a great prospect for career progression), they could be purely technical (language Y is great for doing concurrency for example).&lt;/p&gt;

&lt;p&gt;I'm the sort of person that will read a programming language book for relaxation.  I might not even use the language.  I might just read about a language, out of curiosity.  One of the main reasons is so that I am able to have a view on what languages are out there, and what they're suitable for.&lt;/p&gt;

&lt;p&gt;But deep down, there is another reason I look at different languages.  I want to find one that I can call home.&lt;/p&gt;

&lt;p&gt;Now, for years, I've been programming in a variety of Object Oriented Languages.  I've never really felt OOP, as a paradigm, really did it for me.  I remember when I first learnt it, and my University Tutor was insisting that this is how the world &lt;em&gt;IS&lt;/em&gt;.  It just didn't fit in how I thought about the world.  But I accepted it, and just went with it.  First in C++ then in Java.&lt;/p&gt;

&lt;p&gt;Over the last few years I've gotten the Functional bug.  So I've toyed around with Haskell, Elixir, Elm, oCaml... and then someone said to me that I should try Lisp.  Now Lisp is a language that's been on my radar for many many years.  But I just didn't get it.  I really didn't.  But something has clicked.  Something over the last few weeks.  It's like a light has turned on.  I feel born again!.  I've started to learn Clojure - and it feels really good.  It feels pretty wonderful!&lt;/p&gt;

&lt;p&gt;I think I might have found a programming language I can call home....&lt;/p&gt;

&lt;p&gt;Watch this space.&lt;/p&gt;

</description>
      <category>clojure</category>
      <category>learning</category>
      <category>productivity</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Interview process</title>
      <dc:creator>gholden</dc:creator>
      <pubDate>Fri, 15 Nov 2019 10:56:33 +0000</pubDate>
      <link>https://forem.com/opensussex/interview-process-1aph</link>
      <guid>https://forem.com/opensussex/interview-process-1aph</guid>
      <description>&lt;p&gt;The other week I made a post on LinkedIn.  Here it is&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F4btav19c519b1ydg1dhf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F4btav19c519b1ydg1dhf.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was absolutely shocked at the response.  I mean, I've never had so many people interact with me on LinkedIn.&lt;/p&gt;

&lt;p&gt;The code test in question was via one of those online platforms.  It was pretty soulless.  No interaction with the company who had asked me to do the test, in fact before being asked to do the test I'd had some generic emails from them.&lt;/p&gt;

&lt;p&gt;This got me thinking about interview processes.&lt;/p&gt;

&lt;p&gt;I've been around the block.  I've had plenty of interviews.  I've held plenty of interviews.  I've hired and I've fired people.&lt;/p&gt;

&lt;p&gt;But I've come to the conclusion that the hiring process I would favour in the future would be something like.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Initial step, ask the candidate to answer some open ended questions.  These might be - Why you want to work for organisation X?  What skills and experience do you have that will be useful at organisation X?  These questions will enable the candidate to add some personality to the application, and it will also help understand how they communicate with the written word.  Essential for remote roles.  Notice, no CV, no resume.  Just some questions to start off.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If the candidate doesn't make it through then tell them.  Give them feedback.  They've invested time, so be nice.  If they do get through, then use it as an opportunity to open up a dialogue, ask some follow up questions, see if they have any questions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This step would be an initial video / telephone conversation with the candidate.  Just to get a sense of who they are, what they're looking for in a role and also give them an opportunity to ask any additional questions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ask them to do a paid days work.  Yes PAID.  Ask them to do a task, that is realistic to the organisation.  Work with them, let them work with the team.  And I'll repeat - Pay them.  We're not looking for perfection, we're looking to see if the candidate is able to work within the organisation, and to get a sense of how the candidate works.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A Follow up discussion on the work they've produced.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;IF all goes well, then they get to meet the wider team (if they've not done so before) and a bit more of a discussion on the role.  If not then they get good solid feedback why they're not suitable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If they've made it to here, they get offered the role.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I don't pretend this will work for all organisations.  But I genuinely feel it would be a sensible approach for many organisations, and be a pleasant experience for the candidate.&lt;/p&gt;

&lt;p&gt;Hiring takes time, it's an investment - and it should be seen as such.&lt;/p&gt;

&lt;p&gt;Also, be transparent early on about the salary for the role, the benefit for the role - these are things people want to know early on - so they can make an informed decision before wasting peoples time.&lt;/p&gt;

</description>
      <category>watercooler</category>
      <category>recruitment</category>
      <category>career</category>
    </item>
    <item>
      <title>Drones to code by</title>
      <dc:creator>gholden</dc:creator>
      <pubDate>Thu, 07 Nov 2019 06:40:14 +0000</pubDate>
      <link>https://forem.com/opensussex/drones-to-code-by-57li</link>
      <guid>https://forem.com/opensussex/drones-to-code-by-57li</guid>
      <description>&lt;p&gt;Some people find "drones" or "soundscapes" useful for working, I do.  &lt;/p&gt;

&lt;p&gt;About 4 years ago I embarked on a little project, creating 14 hours of drones and releasing it on a limited edition hand customised mp3 player &lt;a href="https://phaticmusk.bandcamp.com/merch/limited-of-9-individual-mp3-player-with-14-hours-of-drones"&gt;go listen here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After that I spent nearly a year releasing new drones each month.  I stopped this project as things got in the way.&lt;/p&gt;

&lt;p&gt;Then recently, I discovered the work of an artist who had put together something I wanted to do - so instead of re-inventing things, I asked them to put their project up on the &lt;a href="//dronestocodeby.com"&gt;dronestocodeby.com&lt;/a&gt; domain as a release for my little label. It's essentially a web interface to enable you to build up your own drones, and be able to download them. Some examples can be &lt;a href="https://phaticmusk.bandcamp.com/album/drones-to-code-by-sx19"&gt;found here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll either love this, or hate it.&lt;/p&gt;

&lt;p&gt;If you're into drones, into background "sounds" for productivity - then go have a listen.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>music</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Does size matter?</title>
      <dc:creator>gholden</dc:creator>
      <pubDate>Thu, 31 Oct 2019 07:24:38 +0000</pubDate>
      <link>https://forem.com/opensussex/does-size-matter-28e1</link>
      <guid>https://forem.com/opensussex/does-size-matter-28e1</guid>
      <description>&lt;p&gt;I've been toying around with some development recently.  I like to look at different languages, and I like to make a decision on the language based on what the project I might be building.&lt;/p&gt;

&lt;p&gt;As such I was looking at 4 languages.  C, C#, Go and Vala.&lt;/p&gt;

&lt;p&gt;For this test I wanted to see the size of a simple "Hello, World!" program.  This would just publish "Hello, World" out onto the console.&lt;/p&gt;

&lt;p&gt;I was curious about the size of the binary file once compiled.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;C = 8.6Kb&lt;/li&gt;
&lt;li&gt;Vala = 9.43Kb&lt;/li&gt;
&lt;li&gt;Go = 1.9Mb&lt;/li&gt;
&lt;li&gt;C# = 35.6Mb&lt;/li&gt;
&lt;li&gt;ASM = 920Bytes**&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*Edit - none of the above have been optimised with their compilers - so these are default compilation to binary - I am sure they can be squeezed a bit more.&lt;/p&gt;

&lt;p&gt;**Edit - After discussion on the size of the C binary, I thought it would be interesting to see what ASM would be... and it's tiny.  So a lot of the C stuff is due to the stdio.h and redundant for actually printing text to the console.&lt;/p&gt;

&lt;p&gt;Now, this isn't really fair, as C# was never really intended to run as a single binary - it just so happens now you can.  But I was staggered at the size difference.&lt;/p&gt;

&lt;p&gt;Also, Go is pretty bloaty.&lt;/p&gt;

&lt;p&gt;Vala makes sense, as it essentially transpiles to C++ before final compilation.&lt;/p&gt;

&lt;p&gt;And C - is super tiny.&lt;/p&gt;

&lt;p&gt;So - what does this all mean?  Does size really  matter?  Well that entirely depends on what you're trying to do.  Embedded services, or running on a low tech bit of kit, then optimisation and size will matter.&lt;/p&gt;

&lt;p&gt;The ease of development also matter.  C can be pretty mind mending, having to think about garbage collection, and the finer detail of relatively low level stuff.&lt;/p&gt;

&lt;p&gt;Go is a relatively simple language, and can be pretty quick to develop in.&lt;/p&gt;

&lt;p&gt;Vala is getting closer to C# as syntax goes and are both competent OOP languages.&lt;/p&gt;

&lt;p&gt;I'm not going to say which is best, as there is no winner.  I was just curious about the outcome.&lt;/p&gt;

</description>
      <category>c</category>
      <category>go</category>
      <category>csharp</category>
      <category>vala</category>
    </item>
    <item>
      <title>Stop focusing on the technology for permanent roles</title>
      <dc:creator>gholden</dc:creator>
      <pubDate>Thu, 17 Oct 2019 06:32:17 +0000</pubDate>
      <link>https://forem.com/opensussex/stop-focusing-on-the-technology-for-permanent-roles-5f9o</link>
      <guid>https://forem.com/opensussex/stop-focusing-on-the-technology-for-permanent-roles-5f9o</guid>
      <description>&lt;p&gt;(originally posted on LinkedIn)&lt;/p&gt;

&lt;p&gt;I've been a computer programmer since I was 8 years old; and professionally for over 20 years. During the 35 years I've been programming, these are some of the languages I've used:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Basic
- Pascal
- Modular-2
- C
- COBOL
- C++
- Java
- Coldfusion
- ActionScript
- Javascript
- PHP
- Haxe
- Python
- Go
- Elixir
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;There are loads others that I've played around with, but not done anything of interest (Rust, Ruby, Julia, Lua, Elm) - and I'm not even going to go into frameworks and tooling.&lt;/p&gt;

&lt;p&gt;One of the things that people who are not in the programming world (and some who are) don't realise, is that it's pretty easy to pick up a language and start programming with it. The amount of learning resources is incredible; and with the wisdom of the internet, if you get stuck then an answer is only a search engine away.&lt;/p&gt;

&lt;p&gt;The reason for this post, is that I often see job adverts (for permanent roles) that seem to require a fully formed individual who has follow the exact same path that the organisations development team have followed. This often means you get very silly job adverts, demanding exact matches in key technologies, with very little emphasis on the underlying experience or knowledge an individual might have. &lt;/p&gt;

&lt;p&gt;Most good programmers I know can easily switch from their current language to a new one, and get up to speed pretty damn fast. In the past, as a hiring manager, I've recruited people who HAVE NOT used the languages the platform was developed in, but I knew from their experience they could easily learn and get up to speed pretty damn quick.&lt;/p&gt;

&lt;p&gt;So, organisations, hiring managers, recruiters - stop focusing on the technology and focus on experience and knowledge for your next permanent hire.&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>Godot Games Engine</title>
      <dc:creator>gholden</dc:creator>
      <pubDate>Wed, 16 Oct 2019 10:44:13 +0000</pubDate>
      <link>https://forem.com/opensussex/godot-games-engine-3io0</link>
      <guid>https://forem.com/opensussex/godot-games-engine-3io0</guid>
      <description>&lt;p&gt;I recently looked back to some of the old projects I worked on using Flash back in 1999 to 2003 or so. Some of those projects involved games development and generative art. I enjoyed programming in ActionScript 2 and 3 - and I enjoyed the creativity and freedom that Flash gave me for creating fun things.&lt;/p&gt;

&lt;p&gt;I wanted to find something similar to Flash for creating some games and interactive experiences. Ideally it would be cross platform - and I stumbled across Godot Engine . As it's Open Source (MIT Licence - so actually Free Software) - a huge plus!&lt;/p&gt;

&lt;p&gt;The UI for Godot is great, and the scripting language (GDScript) seems neat - it's python like. If you don't like that you can use C# and you can also extend it with other languages such as C++ and Go.&lt;/p&gt;

&lt;p&gt;As a programmer, I wanted to first checkout the scripting language - and see what it was like. So, as I often do, I decided to write a simple 2d Cellular automata (See code below). From opening up the Editor for the first time, doing a spot of reading about how to set up a Scene and use it's Node system, it took me about 30 minutes to write a simple 2d Cellular automata. The built in IDE is great, with code highlighting, code suggestions and also a comprehensive debugging tool.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Y7joFL_2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/89b6hpe7461khk3yx7ux.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y7joFL_2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/89b6hpe7461khk3yx7ux.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;extends TextureRect

# class member variables go here, for example:
# var a = 2
# var b = "textvar"
var imageTexture = ImageTexture.new()
var currentLine = 0;
var width = 1024
var height = 768
var dynImage = Image.new()
var onColour = '#ffffff';

func _ready():
    dynImage.create(width,height,false, Image.FORMAT_RGB8)
    dynImage.lock()
    for i in range(width):
        var rnd  = rand_range(0,10)
        if(rnd &amp;lt; rand_range(0,10)):
            dynImage.set_pixel(i,0, Color(onColour))

    dynImage.unlock()

    imageTexture.create_from_image(dynImage)
    self.texture = imageTexture

    imageTexture.resource_name = "The created texture!"
    print(self.texture.resource_name)

    pass

func _process(delta):
#   # Called every frame. Delta is time since last frame.
#   # Update game logic here.
    currentLine = currentLine + 1

    if(currentLine &amp;lt; height):
        for i in range(width):
            dynImage.lock()
            var currentPixel = dynImage.get_pixel(i, currentLine)
            var motherPixel = dynImage.get_pixel(i-1,currentLine-1)
            var fatherPixel = dynImage.get_pixel(i+1,currentLine-1)

            if(fatherPixel.to_html(false) == 'ffffff' &amp;amp;&amp;amp; motherPixel.to_html(false) == 'ffffff'):
                dynImage.set_pixel(i, currentLine, Color(onColour))
            if(rand_range(0,10) &amp;gt; 7):
                dynImage.set_pixel(i, currentLine, Color(onColour))

            dynImage.unlock()


        imageTexture.create_from_image(dynImage)
        self.texture = imageTexture
    pass
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
      <category>godot</category>
      <category>games</category>
    </item>
    <item>
      <title>Desktop Applications Development - what's out there!</title>
      <dc:creator>gholden</dc:creator>
      <pubDate>Wed, 16 Oct 2019 10:24:51 +0000</pubDate>
      <link>https://forem.com/opensussex/desktop-applications-development-what-s-out-there-1f4c</link>
      <guid>https://forem.com/opensussex/desktop-applications-development-what-s-out-there-1f4c</guid>
      <description>&lt;p&gt;I've recently been exploring (again) the creation of desktop applications.  I'm not overly bothered about them being available for multiple operating systems, for the projects I want to work on I'd be happy to focus purely on Linux and Gnome.&lt;/p&gt;

&lt;p&gt;I started playing around with Vala and GTK - and I liked it.  Vala is a nice language to program in.  I've found plenty of resources online to help when I hit issues.  Also, as I've recently adopted elementary os - it works nicely with that.&lt;/p&gt;

&lt;p&gt;I also wanted to try some other options.  A while ago I built a small tool using Lazarus IDE.  This was fine, it worked well and it had a nice visual environment for development.  My only issue was it felt clunky to go back to programming in Pascal - something I hadn't done for about 26 years.  I wasn't sure if I wanted to invest too much time relearning Pascal to become productive.&lt;/p&gt;

&lt;p&gt;I recently looked into node-gtk.  This looks neat.  There is a big BUT.  when I use nexe to produce a self contained executable - we have a file that's a massive 56mb (and that's just for a hello world type app!) - that's not acceptable for me.&lt;/p&gt;

&lt;p&gt;Neither is Electron for similar reasons.&lt;/p&gt;

&lt;p&gt;I think I'll carry on with Vala and GTK for the time being.  If people have any other alternatives, I'd love to hear.&lt;/p&gt;

</description>
      <category>gnome</category>
      <category>gtk</category>
      <category>node</category>
      <category>vala</category>
    </item>
    <item>
      <title>Styling a TextView with GTK and Vala</title>
      <dc:creator>gholden</dc:creator>
      <pubDate>Tue, 08 Oct 2019 18:04:00 +0000</pubDate>
      <link>https://forem.com/opensussex/styling-a-textview-with-gtk-and-vala-4jpb</link>
      <guid>https://forem.com/opensussex/styling-a-textview-with-gtk-and-vala-4jpb</guid>
      <description>&lt;p&gt;This might seem a trivial task.  And it should be.  But I'm new to Vala programming, and new to GTK.  For the life of me I couldn't work out how to do this.  I searched high and low on the web to get the answer I needed, but to very little avail!&lt;/p&gt;

&lt;p&gt;But finally, I figured it out - so I thought I'd make a little post.&lt;/p&gt;

&lt;p&gt;The problem.  I wanted to style a TextView - sounds simple.&lt;/p&gt;

&lt;p&gt;So, here it is.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        var style = """
            textview text {
                background-color: #131c16;
                color: #3ce85c;
            }
        """;

        var css_provider = new Gtk.CssProvider();

        try {
            css_provider.load_from_data(style, -1);
        } catch (GLib.Error e) {
            warning ("Failed to parse css style : %s", e.message);
        }

        Gtk.StyleContext.add_provider_for_screen (
                Gdk.Screen.get_default (),
                css_provider,
                Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
            );
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;For full context - go see the github repository - &lt;a href="https://github.com/opensussex/gtk-textview"&gt;https://github.com/opensussex/gtk-textview&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vala</category>
      <category>gtk</category>
      <category>styling</category>
    </item>
  </channel>
</rss>
