Monday, September 3, 2018

Rust, week 3

This week I are mainly been liking...
  • The Rust books are written using rustdoc - I like the 'eating your own dogfood' philosophy, and the Rustlang folks are certainly eating it.
  • Attributes... a clean way of doing meta stuff in your code. 
  • New Rustacean podcast - fabulous podcast about learning Rust. Started listening to these during my daily commute - grab every minute you can to learn new stuff.
  • Really good talk about driving a GUI system with Rust by Raph Levien

Friday, August 24, 2018

Rust, week 2...

The continued, albeit slow, adventures of someone who's been coding for 37 years and is now learning Rust...

Things I like about Rust, pt2...
  • std::option::Option - no more Null... force error check at point of creation
  • Inbuilt testing framework
  • RustFmt - code formatting !
  • Everything is on Github... and I mean everything... fantastic !
  • Safety is not sacrificed for simplicity. Yes, Rust is a complex language, but that's because decisions have been made which puts safety and control first rather than convenience.
  • The team provide editor integration plugins... including the mighty VIM !
Things I don't like about Rust
  • Opening curly brackets on the right... argh ! I know it's just convention, but argh ! 
There's something quite exciting about the Rust community... the deeper I delve into the language and how the project is organised the more excited I get. One major problem with older languages like C and C++ is that the ecosystem around how you develop software in those languages is a bit of a free-or-all. How may build systems are there out there for C++ projects ??? Loads... Code formatters ?... loads. Library managers...loads...etc. The C++ language itself may be well specified but the ecosystem in which it lives is all over the place. Modern language designers are not making this mistake.

Rust comes with a suite of tools to standardise the ecosystem of the Rust language... and this is a good thing. Go does the same. Having standard ecosystem makes the heavy lifting around learning a language much easier. If you want to buid a Rust project you plop yourself into the root of the project and type 'cargo build'... that's it. You're not mucking about with configs, makefiles, cmake or any other custom build system. This gets a thumbs up from me.

Anyway, more next week as I get further through The Book and keep prodding around in rustlang.

Saturday, August 18, 2018

Rust, week 1.

I've started looking at Rust again. I had a quick try of rust about 18 months ago when I was looking at modern alternatives to C++. At that time I learned a bit of Rust and also some Go. Both languages impressed me but to be honest I liked the feel of Go more... mainly because it was simpler to learn.

Time has passed and my mind has wondered back to Rust. This page is a scrap book of thoughts about Rust during my first week back.

Things I like about Rust...

  • Built-in a build system (cargo)
  • Immutable by default
  • Explicit data ownership semantics
  • Built-in documentation about the language and compiler errors
  • Sensible type inference
  • External module dependency versioning makes sense
  • No implicit bool conversion
  • Descriptive error reporting
  • Tuples !

Things I'm not sure about... note I'm not saying these things are bad... just that I'm unconvinced at this point
  • Allowing variable type changes via shadowing
Progress reading 'The Rust Book' - 6.1 Defining an enum.

Documentation is good and the community seem pretty tight and to know what they are doing. I've also watched a fair few Rust talks on YouTube now, which are easy to find. So go watch them !

More next week.

Tuesday, July 31, 2018

Windows UI Fail... Setting a New Password

I turned on my work PC this morning to be greeted with the 'Your password has expired, please enter a new one...' screen. OK, hit enter to be taken to a new screen with three text entry boxes. The top one labeled 'old password' was already filled out for me - good. The next two were labeled 'new password' and 'confirm new password' or something very similar... I can't remember verbatim.

The text entry cursor was already set to the 'new password' box so I typed in my new password and hit enter...

'ERROR: Passwords Don't Match'

Of course they don't match - I've only entered one you stupid machine. OK, press enter to try again. This time my old password was not filled out for me for some reason, so I entered my old password but this time, using my experience of how stupid computer UI's can be, rather than hit enter to complete my old password I pressed tab... this took me to the next text entry box... new password.... tab... new password again... then enter.... ah, now it's finally accepted it.

So what's the lesson here ? How on earth are new users meant to know that you need to press TAB to move to the next text entry box, and that if they do hit ENTER instead... as they do all the time... Windows will throw an error back into your face.

Gah, are UI designers still so clueless as to let this happen after all these years ??? So annoying and yet so easy to fix.

Monday, July 30, 2018

Jult 2018 Update

Aah, here I am again... trying to kick-start this blog into shape. The plan of course is to write in here more often and actually include some stuff that I'm doing or mooching about with.

So here goes... again...

My latest hobby stuff is writing a stochastic path tracer, which is a kind of ray tracer. It 's all the fault of Peter Shirley and his 'Ray Tracing in A Weekend' books on Kindle, which are a decent little kick-start into the topic. My weapon of choice for doing my own version of a path tracer is Qt on Linux... which should give a lot of options for platform and capabilities. It's going OK so far - in the limited time I give it - but I'm still partial to over-engineering various non-critical parts of the code.

Although I'm aware of it at least this time, I'm still letting myself do a bit of faffing, just because why not... it's all good practice writing code I've not necessarily done before in any sort of anger. The upshot of the work so far is a simple JSON scene description importer and a ppm file exporter. No actual path tracing yet of course... that will come soon... honest.

I quite like Qt so far - pretty simple and at least it's not going to go pop when some vendor decides to pull the plug - I'm looking at you Objective-C Cocoa. Take a look on my github for blow by blow details. Hopefully I'll have a bit of time this week and maybe some pictures to share on my next update.

Thursday, May 31, 2018

Good Game Developer Channels on YouTube

The last few years has seen a crop of high quality game developer oriented channels on YouTube. I'm not talking about 'how do I do xxx' channels here... I'm talking about channels which spend time on game analysis and drilling deeper into game development companies and individuals. Here's a few you should watch...

Game Dev Underground
No Clip
Game Makers Toolkit

Saturday, May 26, 2018

Personal Computer World Issue 1 February 1978

A few years ago I inherited a couple of binders full of old computer magazines from my father-in-law. He was a radio HAM and was a keen computer enthusiast back in his day. What I found inside the binders were the first 20 issues of the UK computing magazine Personal Computer World... in mint condition.

In an effort to save these magazines from the ravages of time I'm going to scan them in and put them on here. This first post contains issue 1 from February 1978. If anyone finds this useful and would like me to scan the rest of them in please get in touch... from what I can tell this stuff isn't available anywhere else on the internet. My aim here isn't to abuse copyright or annoy anyone who was involved in the magazine... I'm putting this stuff here because it is important historical documentation about the birth of home computing. If anyone has any copyright issues please get in touch.


Backplate Musings

My original plan for the LINK_01... my first homebrew computer... was to ultimately have it built using a single PCB. But the more I think a...