Monday, 22 December 2014

the story so far... II

I've not spent as much time as I would have liked on the 'lunch project' this week.  The idea is to create an app to help me with Christmas lunch.  To say I'm cutting it fine is well... true.

What I've done

  • I've decided to make an app to aid in the cooking of Christmas dinner
  • I've created wireframes
  • I've started to build the app using meteor
  • I've had some fun with DNS which has now been fixed.
  • I've added adsense to this blog

Where I am

  • You can now see steps and add new ones to the app
  • I've fixed the dns for ben.best (so that it ends up here you may need to clear some caches if you've already tried this)
  • I've also got to the point where the times add up.

What I'm hoping to do

  • By Thursday (25-12-2014)
    • Get something working that I can use on Christmas day.  The next big step is sorting out dependancies.
  • On Wednesday (24-12-2014)
  • On Friday (26-12-2014)
  • On next Monday (29-12-2014)
    • Write another "story so far post" admitting what I didn't get done from the above list.

Friday, 19 December 2014

friday's interesting things II

Taking a break from building an app here's this weeks interesting things that grabbed my attention this week.  Though I'm sharing them here, I'm really using these lists as a sort of bookmark list.

Learn Meteor in 6 weeks

This is interesting, I've done quite a few of the tasks, though following the disaster last night, I might need to re-visit some of the earlier steps.  I know that I don't have 4 solid hours a day to work on this sort of project (and that would put me a long way after Christmas) however it does look like a fun list.

A world without microbes

A friend of mine from 6th form college (which was a very long time ago) has written an article about what the world would be without microbes.  Even though my biology lessons finished with my GCSE's at 16 I found this accessible and really interesting.

Dominus

Dominus is a nice (free) web based game built with meteor.  I've just started playing and it looks really interesting.  Also the author has some interesting things to say about Meteor's check function

Hex colour clock

This has been all over the web this week, partially as it's such a simple and well executed idea. I really love this.

Thursday, 18 December 2014

an evening of sorting out a meal (getting collections in meteor wrong)

Not the best of evenings, I've spent the last few hours trying to add the meal part and getting dates just wrong.

It's one of those things that I'll try and sort out tomorrow.  The main issues were to do with adding the new parent part to the collection and then trying to sort out the date part.  All this is in preparation for sorting out dependancies.  I'll get there and I'm feeling quite pleased that this is the first evening that's gone badly, but I'm going to close the laptop and go to bed.

I've started on the interesting Friday things part 2 but I'll get it sorted tomorrow.

Wednesday, 17 December 2014

marking things as done (and not doing things!)

Well it was an interrupted couple of hours but it was a couple of hours...
I have added the ability to mark steps as done (or to undo said marking).  I've also added some "beautification" and started to get rid of some of the css that had been given with one of the tutorials.

I'm quite pleased with where I've got to, it's going to lead nicely into tomorrow's playing with dependencies (or at least hopefully tomorrow).  If you want to see the new functionality it is (as ever) at lunch.ben.best you'll need to be logged in to mark things as done / undo them.  There are a few bits that I'm not really that happy with:
  • The layout doesn't quite feel right, mostly the second part that will contain the details of the dependencies.
  • The button labels: "done" and "undo", better suggestions are more than welcome
  • Logged in / not logged in bits not quite working as I would have expected.
  • I thought I'd added a deny rule that I would have needed to change to stop me doing exactly what I've done.
Of the these it's the last one that concerns me most, however I need to do quite a bit of playing with the security and ownership bits so I'm sure it'll all come out in the wash.  Overall I'm quite pleased with the progress I've made over the last couple of nights.

In other news I now know what I'm cooking meat-wise for Christmas lunch - a 2 kg turkey crown and a piece of topside.  The topside is being provided by my parents in law so I'll not know exactly the weight of that until they arrive on Friday.
For posterity here's a screen show of the current look:

To the things not done, I made a deliberate decision to not write a "so you want to..." post tonight, I was in the mood for keeping going with the lunch project.

Tuesday, 16 December 2014

seconds, minutes and hours

I've managed to spend a couple of hours playing with my app to help me cook Christmas lunch...
I've now enabled editing, and instead of adding time as just seconds it is now input as seconds, minutes and hours.
I'm quite pleased with this evening's progress, and I've started to veer away from the book.  It's been a bit of a struggle, but finally I feel as though I really am getting there.
As ever if you want to see and play the app is currently here:
lunch.ben.best
And the latest github commits here:
https://github.com/benjimouse/lunch/commit/c3474cd53bdfde23ec27db1ba5ac4d8a965b7d6e
Of course anything could happen when next I pick up the laptop...

My next few of steps are:


  • Be able to mark steps as done or not
  • Have steps belong to a "meal"
  • Determine the start time based on a provided final time
  • Have steps depend on other steps
After that we get into the real fun of making it pretty. I suspect that due to taking some nights off and spending time last night playing with adsense (which it appears is still waiting for a second verification). I'll not quite hit my target of tomorrow night for everything being "working but not pretty", but I'll be close (provided I get to play tomorrow night).  Oh and I still haven't decided what "so you want to" topic I'll choose for tomorrow, I'll probably go with "so you want to build a website..."

sorry

I mentioned that I was thinking of adding google's adsense ads to the blog, which I've now done (and you should be seeing).

I've worked with the internet for a large number of years and although most of it appears to be funded today by ads, it's not an area I've ever touched on.  I'm not really expecting to make much (any) money off of these, it was partially an exercise in learning what happens and how they work.  It's been interesting so far (and was the reason I played with and then messed up my dns).

The how to in the setting up area is really quite good and it's very quick from submitting a request to getting a response (both positive and negative).  Interestingly I don't see the ads in a browser that I'm signed into but it seems to imply that I have some limited control over what gets shown so it could all get interesting.

Monday, 15 December 2014

the story so far...

It appears that I'm starting to fall into a pattern, I get lots done at the start of the week and then Thursday appears and life stuff gets in the way.  This was the case last week with two trips to the theatre and a Christmas party meaning that I've done nothing on "lunch" since last Wednesday.
I've decided to look at where I am, what I've done and what I'm hoping to do in the next week.

What I've done

  • I've decided to make an app to aid in the cooking of Christmas dinner
  • I've created wireframes
  • I've started to build the app
  • I've broken the dns for ben.best

Where I am

  • You can now see steps and add new ones to the app
  • I've fixed the dns for ben.best (so that it ends up here you may need to clear some caches if you've already tried this)

What I'm hoping to do


  • By next Monday
    • Editing steps
    • Sorting out the timings so that given a serve time the start times display correctly
  • On Wednesday (17-12-2014)
  • On Friday (19-12-2014)
  • On next Monday (22-12-2014)
    • Write another "story so far post" admitting what I didn't get done from the above list.

Friday, 12 December 2014

friday's interesting things I

Each Friday morning (and this one is very early in the morning) I'm going to attempt to post a group of things I've found interesting, realistically they'll probably be from my rss feeds but I'll try to stay eclectic and hopefully these won't just be a list of things that I want to re-read, but if that's what it turns out to be then it's not a bad thing.

EcmaScript 6 Classes

Following my "issues" with javascript classes I found this so I'll have a play with it (at some point in time).  I suspect however when I do get time to play with this EcmaScript 6 will be well out and I'll be used to it. Ahh to have more free hours in the day to play with everything I would like to.
https://plus.google.com/115133653231679625609/posts/GiYvVxZ3a5A

Google's web starter-kit

A sort of not really competitor to bootstrap, maybe ish? It's a tool for helping to get websites working and looking the "Google way". I'm a little nervous about this, but I'll no doubt have a play a bit later when I decide I don't like that everything looks a bit "bootstrappy".
https://developers.google.com/web/starter-kit/

A rundown of text editors for meteor

After reading this I'm starting to think that it might be time to switch away from brackets (probably to atom).  Changing text editors is always a bit of a wrench so I might put that off a little.
https://www.discovermeteor.com/blog/text-editors-meteor-development/

Node got forked

I'd heard a fair bit about this but it wasn't until I read this post that I felt I had a better handle on it.  It's going to be interesting to watch.  I have to admit my favourite part of the article was learning that "npm is not an acronym".
http://blog.izs.me/post/104685388058/io-js

Closure Compiler

This is an interesting tool from Google, I've had a bit of a play with it and though I love what it's doing with the whitespace and simple settings I've yet to spend the time to get the advanced working. It has highlighted some changes that I want to make already. It's definitely something I want to play with some more, it's also definitely something I'm not going to play with for a little while.  It also lead me to the closure linter which I need to add to the tools that I'd like to play with.
http://closure-compiler.appspot.com/home

Get site info

This was a tool I played with a number of years ago it displays a lot of things that I could re-do but it works, it's also a great example of why this developer should not be used as a designer .  When I created it at $job-1 we were having problems because looking at our clients websites from our own location wasn't for a variety of dull reasons (or at least reasons I can't now recall but shudder at some of the options).  Also Google had just started their app engine and I wanted to play with it.  I put together a quick app with it, it's still the only Python code I've ever written and it needs a lot of polishing (completely re-writing), however when I needed something like that the other day I couldn't remember the url.  I'm adding it to this list so that I have that url to hand.  Fell free to take a look and play, criticism is welcome, but pointless as I'm really not that fussed with picking this up again.

Wednesday, 10 December 2014

javascript really (really, really) isn't java

This evening I've been playing with the time object I sort of started to create before (and haven't been happy with).  I'm still not sure I'm doing it right, but I'm pretty sure that it's better than it was.

A (very) long time ago when I was first introduced to javascript being told that it really had nothing to do with java.  I went for years not really caring. Every now and then in my career I've been a java or javascript developer and now and then I've run into one of the differences where thinking in one of the languages is really a disadvantage when working with the other. Tonight was one of those nights.
Tonight I was (again) trying to get my head round javascript objects, so simple on the surface MyObj = function(){//functions and variables} and then you add the new keyword and soon your reading about prototypes and trying to figure out what the difference is between a java and a javascript constructor.

These two pages and the best part of a decent Rioja have got me to where I am with this.
http://zeekat.nl/articles/constructors-considered-mildly-confusing.html
http://stackoverflow.com/questions/1646698/what-is-the-new-keyword-in-javascript

I'm still not happy with it but I think it's "time" (and I've renamed that a lot and will no doubt do again) to put it to sleep and move on to the missing functionality.

Still think I'm on target for the functional level of this working by next Wednesday (and I do think that what I've done has helped), but I have been reminded of events that are occurring over the next few days.  Tonight was an example of playing with code in a way that I wouldn't be able to do at work, it's possible that there's a good reason for that.

Here's the link to the github commit from this evening:
https://github.com/benjimouse/lunch/commit/55770bdfe8400a0d8203ae51581660cd58bbe275

Tuesday, 9 December 2014

was that really necessary...

I've continued down the path that I was taking and my latest bits are in github and on lunch.ben.best you can now create your own steps (you'll need to login first).
I have now done a load of bits with this and I'm hoping that what I've done so far will help me to get the app to a point where I can start turning it into the app that I'd like to be.
I've ended up with a few bits that aren't quite right and I'm looking forward to culling them.  I'm going to ignore the previous statement of 'Later equals never' and go with a quote that I've heard before of 'make it work and then make it pretty'.
I'm pretty sure that what I'm going to do now is get to a stage where most things were working but the layout is wrong (probably end up with the add new step starting on a new 'page' for example).
If I can keep working at the rate I have been I hope to be at that stage by next Wednesday (but we'll see this is for fun, not work after all).  If I do manage that then I can start looking at where I can get to by Christmas.
I'm really enjoying this, but think that I might have bitten off a bit more than I can chew, we'll see. The DNS for ben.best is still not working, I'm sure I'll get that fixed eventually, but it's not there yet.

i broke the world

OK well maybe not the world...
I was as surprised as anyone that having looked at the analytics I'm getting about 30 or so folks every day (and even more so that someone's reading this on a blackberry!).  I thought I wonder if I can put google's adsense up on the blog and make some money.
I then followed the required steps and filled in the necessary form that needs a non sub domain so ben.best as opposed to blog.ben.best) this I filled in and although they promised me a response in a week a few hours later I received a response back telling me that there wasn't enough contents on http://ben.best/
Following my cname success with lunch.ben.best I thought "I can do this". Those astute enough to have looked at the website http://ben.best will have realised that I can't. Of course because this is DNS I will need to leave it a couple of days (at least) to confirm that I have messed it up and not got it right but it's not propagated yet.  I suspect it might be a few days before http://ben.best is also pointing to this blog.
I might have it right, and the little checkbox that says 'redirect ben.best to blog.ben.best' in the blogger settings might actually work or I might have it wrong and have to go back either way I suspect that it's a lucky thing I'm not relying on my DNS expertise or the (yet to exist) ads on this site.
In the meantime buy this book and read it (oh and I'll make a couple of pennies if you do).

managing a mailing list

This was specific advice I wrote to a friend who is starting to look into email marketing.

As with all things it sort of depends exactly what you're trying to do. I'm going to imagine that you're trying to send out a weekly email to around 3000 people.

What not to do:
Don't try putting their emails into the bcc field.
It's really easy to mess this up and put it into the cc, meaning that you've sent everyone each others email addresses.
Also doing it that way you end up having to deal with unsubscribes, people changing email address etc. all yourself.

What I'd suggest:
They're both good, I've used both in the past, I have a slight preference for mailchimp as their ceo bought me pudding once but look at both and decide which you prefer.
Use one of their included templates it's free or nearly free, it means that you know it works with their site and has been tested to look good in most mail clients.
After you've sent out a few you might decide that you want to create or have created a specific template.  That's great and I'm happy to help with this (by which I mean I can recommend some people), but I'd wait and see if you're happy with what you're doing first and then look at it.

Test, test, test.
Create a small group (3-4 people max) of friendly people who can phrase criticism well (I'm happy to be on this) . Before you send any email out to a large group send it to these people and then email them as a group (this time cc them in) asking for comments.  This should mean that some mistakes get caught (some will always get through).

Allow people to unsubscribe easily
This should be covered by the template, the reason you want this is that if you don't do this then people will mark your emails as spam.  That means the big providers will start to see all you emails as spam. As well as this mailchimp, campaign monitor or whoever will stop providing services to you (they'll warn you first) they can't afford emails they send to be marked as spam.

Make your emails relevant
Following on from the above, there is no point in sending an email to a group of people that have never been to your venue a discount for those returning for the 25th time. (There are better examples but this was the one that came to mind).
Both Campaign monitor and mailchimp allow you to split your subscribers into groups, do this. It will take time and be frustrating but it's worth doing.  It will allow you to send more targeted emails that are more relevant and therefore produce (hopefully) better results.  Mail chip also definitely allows you to add code to add subscribers directly from your website, you should do this as well and if you can have them put into specific groups.

Look at the stats
After you've started sending the emails it's important to look at the stats that are generated.  It will allow you to start refining what to put in and when you send emails.

That's probably more than enough for a starter and no doubt contains some irrelevant bits that you already know and others that you don't need to.

reading about testing and then remembering that this is fun...

As expected I got a bit of a chance to play with the app this evening.

I started looking at the velocity test framework that I was talking about previously.  I found a couple of very interesting articles and managed to get the cucumber example running.  You do this by running test.sh in the higher directory I suspect that this is to do with which of the test tools require a mirror to work and which don't.
These are the links that I found most useful and intend to return to at least once:
Youtube video about velocity

Velocity and Jasmine really (really) thorough blog post

Then I continued with the app...
I added a login function (though I'm not yet actually using it for anything and it has an annoying extra button that I need to figure out how to remove).
I've also added a total time and a button that uses some of the router magic to work with links.

Finally I played with DNS and now the url lunch.ben.best points to the current deployed version of the app.  That's a really nice (and really simple) option from meteor, they're still hosting it, it's all done with cname magic.

Of course once I deployed the app I messed up the data, so that I know where to come back to to reset the data the details of how are in this stack overflow answer.

I've got a day long usability course at work tomorrow, so that should be interesting.  I may well decide that it's time to re-visit the wireframes or perhaps start from scratch.

I'm really pleased with where I am so far and will continue to get there, here's an image of where we are so far:

Note the url

Monday, 8 December 2014

innovation days, mailing lists and scheduled tasks

as expected I had a couple of nights off, but now I'm back.
Some interesting things have been happening at work, from next year we'll have "innovation days" these are days we book through the holiday booking system that we can take some time to look at something interesting and to prepare to present it to the company. I have a couple of plans for this that I'll go through at a later date.  I think it's supposed to resemble the 20% from Google and is a really interesting path for us to be heading down.  I'd like to see if I can bring something from the Christmas lunch project into it but we'll see how that goes.
I was also asked my advice on setting up a weekly mailing, which I've responded to (http://blog.ben.best/2014/12/managing-mailing-list.html), but I'll put my thoughts into a blog post (so that next time I'm asked it's easy to find the details).  I'll have to make a couple of changes to the details to protect the innocent but I should get that up later today or tomorrow.
I'll be back on the lunch app later today, I've also had a couple of ideas for little apps to do after this one is finished.  I'd like to do a house buying / selling checklist tool and maybe make it generic enough that it can also be used for other similar things (registering a birth / death etc.). I suspect / hope that I'll eventually be able to merge them into one thing with an idea of templates so if you're cooking a Christmas lunch or buying a house it's the same underlying tool, but you use a different set of templated steps.
Finally I realised I hadn't put up a screen dump of where I am so far with the app:
It's a start (do not use these timings for your Christmas lunch)

Thursday, 4 December 2014

couple of nights off

Yesterday Simone was out so I was child wrangling, this evening we had a lovely friend round for dinner. This has meant that I haven't been able to get on with the project.
It's unlikely that I will be able to make any headway tomorrow either.   However I have been thinking about it and will be fiddling with the wireframes over the weekend.

Monday, 1 December 2014

playing with velocity

It's pretty, that's not something I had thought I'd say about a testing framework. Velocity is really pretty. It also works with a load of test frameworks and reporters.  I had some problems downloading the examples (that wasn't their fault, I'd messed up my git install somehow), but when I did there were examples for jasmine, nightwatch, cucumber and mocha. I really wanted to get cucumber working as there are several of my colleagues who are big fans of it, unfortunately only the nightwatch and mocha examples seemed to work.  I'll play a bit more with them, but this looks promising.
Velocity looks really nice and I'm looking forward to playing properly with it.
See it's pretty

unit tests because "later equals never"

Having re-read my previous post and having come across Robert Greiner's quote "Later equals never" again I decided to stop and figure out how the unit testing worked within meteor.  This led to me finding Velocity which looks really interesting. Unfortunately my laptop decided that I wasn't able to use git any more.  I've now fixed this but it means I've only now been able to get the example application downloaded.  I've read the details on their website and think that this should be feasible, but it'll be tomorrow now before I get to play with it properly.

I'll also probably be revisiting the code that I'm not happy with before I continue moving on, I say probably as I'm still not certain of the right way of doing this.  Hopefully all will become clear as I read more of the meteor book.  The next chapter is on adding users which should be interesting.  I tried to do this myself previously with meteor and really messed it up, so it'll be nice reading how it's supposed to be done.