Ok there is not much on this page just at the moment as you might expect with a website that is only really just starting to get going.
Snake or worm game (Oct 2016)
Here is a link to the worm game I wrote. The quality was not really meant to be too high as the goals where learn a little bit of Dart and get something published fairly quickly. My goal at the time of writing is to publish more stuff and use Dart as my promary language. You can find more on my about this on the blog section of the site.
Wow that week passed pretty quick.
This week has been an example of why it is possible weekly updates are a little too frequent. I managed to get a 2 day illness mid week. Then on friday night I had an feeling of extreme tiredness or burn out and have spent most of the weekend relaxing while suffering from a headache as I have cut out the caffiene for a while. At least from coffee, I may switch to green tea once I have gone a week or two clean.
My concern was I was using coffee to mask the gradually building tiredness so a reset was in order.
Anyway enough of the fun in my life. Productivity wise I did manage to publish a short post this week on this blog. Having something other than weekly updates is a nice win. I also did two drafts of post where I attempted to discuss indepth the thought process behind the process I am trying to put in place to achieve my goal of publically producing more stuff. Neither of them really felt right so I scrapped them. I need to get some better clarity on what I want to write and while I want to record my thoughts at the start of the year long goal I could quite find the voice I was looking for while writing it.
As you can see when I am not feeling great I tend towards writing rather than coding. It still moves me towards my goal.
Coding wise I did manage to finish of the snake game although I have not yet published it. The game also need putting under version control as, to my shame, I just coded it up with worrying about things like that.
The comming week is fairly clear so I am hoping to get some more coding done. The brain fog from the caffiene withdraw is starting to clear and I feel like I am paying off my sleep debt at a rapid pace. We have guests at the weekend meaning the weekly update may be a day late.
The plan is to publish the little snake game, put the snake game under version control and then decide what next. My focus is still on getting totally familiar with Dart as a language rather than working on anything grandose.
I used to like the saying that good programmers are lazy programmers and I still agree with the notion just I shifted in the way I think it should be expressed. Talk about laziness and good programming practice to practically any programmer and they will understand what you mean. It is certain not goofing off and making paper airplanes. I won’t bother to explain what it is as chances are you are a programmer or at least tech savvy if you are reading this.
The recent shift in my thinking on this comes from considering talking to a wider audience. If, for instance, I said good programmers are lazy to my mum she would find it a contradiction as how can you be good at your job if you are goofing off all the time and probably making paper airplanes.
Understanding of it just doesn’t scale out. Carpenters have a similar saying: “Measure twice, cut once” it is pretty obvious what it means and as most know what a Carpenter is, as such broader audiences have not problem understanding the concept. As an aside carpenters suffer a double loss if they make a mistake as they have lost time and have to purchase more wood. Have you seen the price of wood these days. I should really insert a joke about wood not growing on trees.
Better understanding of programmers and tech people by a wider range of people would really help with the understanding of the lazy quote but it is just not going to happen. That means we should really adjust the saying.
What do I prefer to use as a one line quip to encourage me to automate a task, something that is usually spoken internally to myself rather than out loud. Honestly I struggled for a while but I seemed to have settled on “Prefer to think now rather than later”. It is a bit more general and encourages me tidy up code and make things easier to debug along with task automation.
This is for the week ending 16th October 2016.
As expected this week was pretty slow. A trip away last weekend meant I lost a bit of momentum. Couple that with busy times at work means progress on coding at home has not been exactly fast paced.
I have managed to finish the game play part of the little Worm game I am writing and started to work on the Title screen. As always I am looking to factor out part that could be reused in later projects and honestly this is slowing down the progress. However it is kind of fun to do and appeals to the engineering side of my brain. The bit that is a little less worried about productivity or publishing things to the web. That monster is useful but need careful watching while feeding :)
So far this factoring out of protentially useful parts of code has just been a case of moving them to a seperate file I call engine at the moment. I will just copy that file into the next project. At some point I will make it a proper library but for now it is just a file to be copied around.
I don’t mind the slow progress as I predicted a very slow week. It is more frustrating when you are expecting a really productive week and it doesn’t turn out that way.
Looking ahead into this coming week I expect to get the title screen done and should be looking at getting this little game published on this site.
I am a little early for this update but commitments mean I will be busy over the weekend and I tend to train on thursday evening. So it is a bit hit and miss on whether I touch a computer or not that night.
Anyway over the past week I have been working on a little game. Ok it is only a reimplementation of the classic snake game and I know it is perfectly possible to bang out a clone of these in not that many hours - no I won’t be tied down to a number here.
It is a small project that is conceptually simple. My approach has been to attempt to separate out some of the components such that they will be reusable in later game projects. This is deliberate not because I particularly want to create a gaming library, rather if stops hacks and encourages slightly higher quality code. That in turn lets me get a lot more familiar with Dart.
I am not that familiar with it just yet and while it is a simple language all programming languages have a bit of a learning curve and that is something I want to climb fairly rapidly. It is pretty easy to be productive with Dart in the first days as the learning curve is pretty shallow.
Learning the APIs takes a little longer. To give an example I was refactoring some code and found I was wanting the concept of triggering some code when a variable changes it value. I created the concept of a MonitoredValue and allowed the addition of change listeners on it. I then start to expand on this in different ways. Some listeners are only interested when a value changes to a certain value etc.
I don’t really understand Functional Reactive programming but I got the feeling I was starting to reinvent the wheel some what and started to google on this. I now have a better understanding of FRP and also understand that I should probably be modelling my changing state using Stream objected so kindly provided dart. Plus my MonitoredValue should probably be renamed to Property to fit in with FRP ideas. Again the plan is not to create an FRP system for simple games but to push my Dart programming onward.
A day or so later and I spent a while looking at streams hoping I could replace some code. I really want a stream with multiple listeners but also want the stream to be lossy, you only want to know about state changes that happen after you attach. Broadcast Streams look ideal but come with enough warnings to put me off. I was left with Single subscription streams along with providing a listeners that could iterate over a collection of listeners. Once wrapped up inside the MonitoredValue class this code just look complicated an I reverted back to my original code. I may revisit this in the future as I learn more.
It is fun implementing a simple game along with trying to do it in a way that leads to maximal reuse when I decide to implement a second game. A fertile learning ground if there ever was one.
Plan for the next week:
As I said I am busy over the weekend with family stuff so coding opportunities will be limited. That is why I am posting this entry early. It means progress will be not that great next week. I plan to carry on with the little game. Hopefully finishing the main game and starting to add a little title screen. Anything more than this will be a bonus.
I am finally starting to reach some decisions on various things. The observant will notive a lack of time progressing between this post and the previous one. I wrote the previous post a week or so ago just didn’t get the site sorted until today.
First up a quick discussion of my not very well formulated plan. I want to get back into publishing more of the things I make/do. That can mean anything from blog posts, mini games, example code or pretty much anything else I can think off. This is kind of stepping out of the comfort zone I have been in for the past couple of years.
To improve my chances of succeeding in this plan I am trying to lay down some ground rules for myself. None are particularly earth shattering and are really designed to stop me going off into learning loops that don’t produce much, a classic example if such is the flip flopping between programming languages I seem quite capable off. Anyway here are my current set of rules:
- Pick one programming language and stick with it.
- No need to be on the cusp of tooling.
- Frequent what I have been doing posts to this blog.
- No large projects.
- I will not track hours
Lets tackle each of these in turn.
Given my tendency to flip between programming languages when coding at home I suspect deciding on just one language should make me a fair bit more productive in other areas. Flipping between languages means I waste a great deal of time on learning the different toolings.
The “cusp of tooling” is another area where I can waste time. I often have the desire to have things perfect when it comes to editors and it can be a time sink. So while I am happy to incrementally improve my editor experience when I come across a nice plugin I will not be loosing weeks attempting to get the perfect set up.
I know the idea of frequent what I have done style post are probably not that interesting they are useful to me as they force me to keep making steady progress and give the process some momentum. Initially I am going to attempt a weekly post but if it just doesn’t feel right then I may drop it to every 2 weeks or monthly. I may also do adhoc round ups.
No large projects is again an obvious one. It is easy for me to find I am gaining momentum and then jump into something that is way too big, lose momentum and suddenly find I have just binge watched a couple of seasons of something on Netflix.
I considered tracking the hours I spent on projects but in the end decided while it would be interesting the work involved just made it not worth the effort. The blog updates are enough encouragement I need. I am also concerned I may find on low hour weeks I am pulling late nights just to “gain some back”. So there is a chance tracking would not be a healthy choice. Nor do I want this to feel like a job.
Well I think I have written enough for this post so other than to say I plan to start this process on the 1st of October I think I should call it a night.
Yep I have done it again. I have rebooted the website. This time I am using Hugo. Honestly I am not sure why I decided to change again. I was not unhappy with wordpress so I will chalk it up to a desire for simplicity or just wanting to experiment with Hugo (A static site generator)
I have promised myself that I will not change the technology on this site for a least a year. I really want to have a year focused on coding. I am not sure what yet but it has been too long since I had a good rhythm for coding and releasing software.
When I say a long time I mean literally years. Yes I do get get into the coding zone for months on end but rarely release to the public. If I was to self analyse a bit here I would say coding has become an enjoyable way to explore topics without feeling the need to share what I am learning/figuring out. I want to try and change this, well, at least for a period of time.
My software development pipeline is pretty empty at the moment so even if get back into the habit of coding at home it will be some time before things start to get released.
Honestly at this point in time I will be happy just releasing snippets of code on this website.
I am also going to attempt to not flip between programming language for the next year or so. This will be particularly difficult as I really like to flip around. The languages current contenders are Scala or Dart. They are running even at the moment as both have appealing attributes.
Finally I am considering tracking the time I spend coding at home. Well when I say coding really I mean all the things associate with making software much of which is not coding. Again I am not 100% on this. Tracking things can motivate me as I like numbers but can take away a bit of the fun of doing these things. Tracking can also be a bit of pain as somethings I flip from productive stuff to YouTube at a fairly high frequency in an evening.
Anyway I am giving myself until the end of September to decide on all this. I may even get this new website published before that…
Welcome to my blog. Honestly there is not much to write here. I am that guy who really like computers and finds coding fascinating. So much so I like to spend some of my free time just hacking away a small toy projects. This blog/site is about these little projects.
I am a C++ programmer by trade but tend to use other languages at home.
I will write more at some point, once I know this blog is going to stick. I have a tendency to restart blog fairly frequently which is a habit I am trying to break at the moment. It seems a little bit of an overkill to write a large about page when I don’t have much other content on this site.