Vincent Ritter

I'm a dad, husband, geek and an independent software engineer.

Writing

All my past blog posts for your viewing pleasure.

Quick update on the Code Challenge

Due to the lack of updates recently I thought I’ll give you all an update.

The last few days have been difficult, not only are we all (family) feeling under the weather, but also my computer screen (hooked up to the Mac mini) decided to give up. My beloved Apple screen! Gone. Dead.

Today, with a replacement screen, I started getting problems running anything within Terminal… pretty gutted. A clean install of macOS seems to have solved the issue though. So I’m working on getting everything on my system at the moment. I didn’t want to attempt using a Time Machine restore.

Anyway, I’m hoping to catch up within the next few days and start giving regular updates again as best as I can.

Sometimes technology seems to get into my way. This year has already been pretty tough, so this seems like another punch below the belt.

Onwards and upwards!

Code Challenge - Day 13. Choosing Rails, getting into the swing and thoughts on a multi tenancy app.

In my previous posts, I was arguing with myself what ‘stack’ I would use for the codebase. I was certain that ASP.NET Core would tick the right boxes. I already know C# and thought I would be fairly comfortable just getting into it.

Installing and launching Visual Studio for Mac was as easy as just downloading it. Yeah, it had to grab some extra stuff… so like in the usual Microsoft fashion it downloaded gigabytes of stuff ¯\_(ツ)_/¯

I created a new project to get me right into it. Faced with a learning curve to get to know the new and improved ASP.NET Core v2, the last time I looked they just rolled out the first RC1 for version 1. That was an exciting time!

Then it dawned on me… I really had to learn a lot. Not too much, but enough to make me re-think my blip of judgment.

I fell asleep that night and actually dreamt about Ruby on Rails… the great podcasts, the amazing community around it and the amount of help found just around the internet. I listen to “The Bike Shed” podcast a lot… well, used to. I have a memory from one of the hosts a few years back saying that they called their newborn “Ruby” because they loved the language so much. Any “C#”’s walking around? Email me!

It was those years that I really longed to learn Ruby and write an actual app using Rails.

This morning I re-visited the Ruby on Rails tutorial by Michael Hartl to jog my memory as it has been some time… oh boy did I get hooked straight away! The book is amazing! So if you’re starting out or need to jog your memory I urge you to buy it! There is also a free online version.

My heart longs for Ruby, I just didn’t let it in enough of fear of being behind on it.

I’m happy I chose to stick to what my deep inner developer wants. I don’t know why I go through this stage with projects… at the end of this I will me more confident than I ever was, I am sure of that!

So with all that out the way, I started the dev build… `rails new SimpleSchedule.App.Rails`.

That’s the splash screen after you first run `rails server`. I really like that! And yeah… I know it’s just a picture… but go on and check out the ASP.NET one… I’d love to show you but Visual Studio is taking around 50 seconds to launch and is beach balling on me… It’s the little things! Nothing like instantly launching Sublime Text and off you go and develop.

Oh, here you go:

I guess a bit more useful… but it decided to add a lot of things for me. And yeah, I can set it up so it starts with nothing…

Anyway, sidetracking there. Visual Studio is nice, but I just can’t get past the little things… they matter in a developers life I think.

Getting into the swing

This is my first full Rails app. There you go, I said it! I did dabble around with it in the past, but nothing ever as serious as this app. I am happy I have taken the plunge… finally!

Today, I just spent most of the day going through the Rails Tutorial, building on that. I think I did this twice already, but I find it’s a great way to get me thinking about it all.

I’ll continue until it’s done and hope to, either tomorrow or the day after, start building out the first few sections of the app. Namely the login and register sections.

Whilst doing this I also played around with Heroku and the Heroku Pipelines. I want to obviously separate the “dev” to the “live” site always. Pipelines seem to tick that box nicely.

I’m planning to share the “dev/staging” url during development as I think would be fun for other people to try and break stuff on the way. You could probably guess the URL. Anyway, I won’t share until the login and register is done, as that is a crucial first milestone. Unfortunately I will probably wipe the database a few times before beta, just for fun!

I’ll need to play a bit more with pipelines but I think I have the hang of those!

Certainly easier than navigating Microsoft Azure. Although, I do like the Azure UI for some bizarre reason.

Hope to have something early next week!

Multi Tenancy

I’ve never created a multi tenancy app. Multi Tenancy basically is an app that allows many users, with one database, each with their own data (to keep that really really simple). You can read up about it here though.

I’m scratching the surface on how to best handle this, with storing user id’s next to each entry (yes and no... and if I want to sleep at night... no) or if I should use something like Apartment which basically creates a new schema in PostgreSQL, which is quite cool.

I do like to write something to handle this myself as I’m not a huge fan of using too many third party gems/plugins. It’s always been like that with me. Even my own iOS apps have no third-party code… just mine (except the Apple frameworks of course).

Let’s see how it goes though. Yet to really nail that database design. I’m used to database design using SQL Server, from Microsoft, which was cool. But I always wanted that code first approach anyway.

Next steps and thoughts

Quick thoughts on Rails is that I’m happy that I bit that bullet. It feels natural and Ruby is a great language!

For the next steps, apart from missing designs like email templates etc, I’d like to get something out to use early next week for people to try. There are a fair few beta sign ups already, which is really great!

I’ll need to think of a way to get feedback before beta too, may it be Slack, Discord or some other medium. I don’t want to be a closed box or anything and I rather develop in the open.

The pressure is on, so I better get going.


I wrote this article mainly for myself to follow along when I look back at it at some stage. If you like to contribute, please email me or let me know via Micro.blog. There is also the Simple Schedule holding site where you can sign up for a beta.

For other posts on the challenge, check out the links below:

  1. Code challenge - from zero to web app in 60 days.
  2. Code challenge - Prelude and Day 1 - Setting things up.
  3. Code challenge - Day 2.
  4. Code challenge - Day 3. Holding page.
  5. Code Challenge - Day 4. A login page and a few tweaks.
  6. Code Challenge - Day 5. Registration page and preliminary app navigation.
  7. Code Challenge - Day 6. Getting in the groove, new events, MVP considerations.
  8. Code Challenge - Day 7. 'My Events' view.
  9. Code Challenge - Day 8. Burning the midnight oil, loud music and good progress.
  10. Code Challenge - Day 9. Progress, changes and regrets.
  11. Code Challenge - Day 10. There are no events, pricing thoughts and badges.
  12. Code Challenge - Day 11. New logo, further changes to event details and a tiny tweak.
  13. Code Challenge - Day 12. Final frontend stretch.

Code Challenge - Day 12. Final frontend stretch.

Didn’t think I would be here on day 12 with a near complete frontend built out… I have never done anything like it. 40 commits in the repo so far (I don’t commit too much for frontend… although I ought to).

The main area of focus today was finishing off the Attendee detail view for both attendees and for the event detail view.

I’m having conflicting thoughts on how to best handle this, but I’m sure I will gain a better insight once I have something working with real data.

At this stage, the frontend is at around 95% done… perhaps 90%. I am prepared for, and am expecting, changes to occur between now and launch. Nothing is ever really done anyway. It will evolve and I’m actually looking forward to get requests and tweaks in.

I didn’t touch on specific time booking slots yet, but will get to this in a few weeks hopefully. It’s something I want to launch with, but let’s see how that goes.

Event Booking Details

Not sure on this one and not 100% convinced it is as clear as it can be. I wanted a simple overview for the attendee and the booking, which displays the name, email and event date for the individual. On top, there is an email link there… might be useful to email someone.

This page is actually a form element and should be editable, just to avoid many different screens and logic. Hitting the “Edit details” button will reveal a nice area for you to save changes. Check it out, quite happy about the way that works (for the next 24 hours).

And then the “edit” part:

It’ll actually focus on the first input too, so you can get right to it.

Link for this page: https://frontend.dev.simpleschedule.net/app/events/details/attendee/

Add an attendee to an event

I also wanted the ability to add an attendee, new or existing, to an event. This is what I came up with:

The idea here is to search for anyone already on your list via an AJAX (or similar) call as you type. I was thinking of presenting a search box and give you the option to search… but I think combining it to just the first box would work quite well. I didn’t make that work on the frontend! Plan is to try and find someone on the list and then offer to pre-fill the data, or just create a new attendee. Simples… (ha!)

Link: https://frontend.dev.simpleschedule.net/app/events/details/add/

My Attendee Detail

Taking a similar style as above I basically replicated the detail screen and also added a list view of the events they are or have been part of.

The “Amend” will take you straight back to the events section where you can make the edit. Don’t want to overcomplicate it. I’ll have to think about a way to return to the correct section once saved though.

Link: https://frontend.dev.simpleschedule.net/app/attendees/details/

The road ahead

With my first milestone out the way, it’s my plan to get the actual app coded. I am having a “Vincent” moment with deciding on the code base yet again. This always happens to me. I really want to nail a full Ruby on Rails app… but again, I also want to nail a ASP.NET Core app.

I’m edging closer to Rails… because it is something I wanted to do since last year… I’ve done my fair share of ASP.NET apps in the past.

I want to learn and have fun, so I’ll take that into account.

Anyway, the plan is to probably have the weekend to experiment with… something… then make a decision by Sunday night and get on with it. That will leave me 17 days to get close to a beta. That would also bring the project to ~29 days for end of Jan. I tend to count the days I’m working on it, so I hope I am still on track for most part of it.

There are many many many tweaks I still like to do on the frontend, like lists display and other little things that bug me. Oh... forgot to mention there is now a footer too. Another thing to note is that I'm yet to work on the 'public' view of the events, where people can sign up. It's sketched out in my head.

So… Ruby on Rails or ASP.NET Core? HAHA! (My friend Chris takes the flack of these dilemmas! Sorry Chris...)


I wrote this article mainly for myself to follow along when I look back at it at some stage. If you like to contribute, please email me or let me know via Micro.blog. There is also the Simple Schedule holding site where you can sign up for a beta.

For other posts on the challenge, check out the links below:

  1. Code challenge - from zero to web app in 60 days.
  2. Code challenge - Prelude and Day 1 - Setting things up.
  3. Code challenge - Day 2.
  4. Code challenge - Day 3. Holding page.
  5. Code Challenge - Day 4. A login page and a few tweaks.
  6. Code Challenge - Day 5. Registration page and preliminary app navigation.
  7. Code Challenge - Day 6. Getting in the groove, new events, MVP considerations.
  8. Code Challenge - Day 7. 'My Events' view.
  9. Code Challenge - Day 8. Burning the midnight oil, loud music and good progress.
  10. Code Challenge - Day 9. Progress, changes and regrets.
  11. Code Challenge - Day 10. There are no events, pricing thoughts and badges.
  12. Code Challenge - Day 11. New logo, further changes to event details and a tiny tweak.

Code Challenge - Day 11. New logo, further changes to event details and a tiny tweak.

They say that design is never actually done… or that is what it feels like. Even though I’m counting the days I’m working on this project, it feels like many months in the work, finding more and more areas I haven't thought about.

I am happy with the way things are going though which, to be honest, is surprising me considering some strange health events with family and on top loosing my biggest client that provided a large proportion of my income (nothing I did). Was out the blue as a happy new year kind of thing. Life is interesting for sure!

I was actually planning to diversify income end of last year… but it seems I was not thinking about it early enough.

Anyway, moving swiftly on! (I feel better just by writing the above)

A new logo

This morning I sat down and worked on a new logo. It’s nothing concrete and will change. So here it is…

Nothing eye popping but far better what I had… The idea is to use the double S on smaller screens and the favicon. Perhaps I’ll stick to the double S in the header area too, no matter the size.

Anyway, just experimenting. I am no brand or logo designer…

I used Sketch, a pretty snazzy app! In fact, I have an iOS app completely designed in it… which I’ll hopefully work on after this project is live (not related).

Also, Eddie Hinkle over at Micro.blog mentioned the below:

Looks interesting! just a thought (this might look horrible) what if you changed the kerning (the empty space between the letters) so that the h and m still connect but also the d and the L connect as well.

I've added that to my todo list to try out. Thanks Eddie!

Event Details - Attendees & Search

For this one, I had the page open and looked at it for at least an hour. Clicking around… trying to figure out how it might work best. This is something you couldn’t really do with an image of the design… ok, maybe you can… but you know what I mean. There is always added value when you can click around and work out what seems natural. Then again… it really requires testing and feedback from a wider audience to really nail it.

I wasn’t sure if I needed an 'all attendees' page, but decided it would be for the best. However, I have a search and filter on both the events details page (the first page you see when clicking on an event) and on the all attendees page.

The all attendee page might show just a bit too much information for my liking, but I’ll stick to it for now and let beta users decide.

You can see the hidden “description” of the event on the All Attendees page for the event. Don’t really need it there. I may also remove the date and just keep a few more “actions” at the top.

For a multi day event, you’ll have a dropdown with dates - for filtering purpose. Every attendee will also show which date they are booked in on. This will eventually also allow time slots to be added. Something I’ll work on closer to launch I hope.

With a search in place, you can also clear the filter which shows you all results again.

Hey… new logo right there!

One more notable thing here is that I also hide the “Edit” and “Public URL” link at the top right. I might add them, but don’t want to throw too many options at people.

Tweaks and next steps

If you’ve noticed… the background grey is slightly lighter…

Next step is to work on the attendee detail page for an event, this will include some controls to remove them, change details and/or change the event date for multi day events. With that done, I can re-use pretty much that and use it for the ‘My attendees’ section… hopefully. That should be the last of the pages that need doing.

Depending how it goes tomorrow (today… as it’s approaching 01:20 AM), I’m hopefully going to be in a position to start the actual codebase. I’m pretty excited about that!

Another thing I’ll work on separately is the public facing section for events. I didn’t have any visions on how that should look just yet… although minimalism is going to be a must for this one.

Oh... and I forgot the links for the pages:


I wrote this article mainly for myself to follow along when I look back at it at some stage. If you like to contribute, please email me or let me know via Micro.blog. There is also the Simple Schedule holding site where you can sign up for a beta.

For other posts on the challenge, check out the links below:

  1. Code challenge - from zero to web app in 60 days
  2. Code challenge - Prelude and Day 1 - Setting things up
  3. Code challenge - Day 2
  4. Code challenge - Day 3. Holding page.
  5. Code Challenge - Day 4. A login page and a few tweaks.
  6. Code Challenge - Day 5. Registration page and preliminary app navigation.
  7. Code Challenge - Day 6. Getting in the groove, new events, MVP considerations.
  8. Code Challenge - Day 7. 'My Events' view.
  9. Code Challenge - Day 8. Burning the midnight oil, loud music and good progress.
  10. Code Challenge - Day 9. Progress, changes and regrets.
  11. Code Challenge - Day 10. There are no events, pricing thoughts and badges

Code Challenge - Day 10. There are no events, pricing thoughts and badges.

Yesterday night I sat down on the sofa and started watching Wonder Woman. Great movie! That also meant I didn’t really do anything to help push this along.

It’s just past lunchtime and had a productive morning.

No data

Everything I designed includes data. But we all know that when you first register, there will be no data on any of the pages. Whilst I’m planning to improve on the on-boarding process a little, I decided that I will just show a little bit of information on the dashboard when you first register. On top, when you navigate to ‘My Events’ or ‘My Attendees’ this will also show a info section so you can get creating straight away.

They all look the same with variation of text throughout. Text is not final.

Nothing too exciting. A necessary step though.

Thoughts on pricing

I had the following plan for the app:

  1. $2 per event
  2. 5 or 10 credit package, with an option to auto top-up when low.

I didn’t want to add a subscription model, which automatically takes payment every month. However, I had another think about it… In order not to offer too many options for customers, just to keep things simple, I thought of the following:

  1. Get rid of the $2 per event option.
  2. Keep the 5 credits package, with optional automatic top-up.
  3. Offer a PRO subscription, which automatically renews, that allows unlimited events during subscription.

Although I wasn’t comfortable to take peoples money automatically, I wanted something to offer for larger organisations or perhaps agencies that do this sort of thing for other clients. On top, I want to offer the PRO plan for beta subscribers and contributors.

When you first register, as a normal subscriber, the plan is to give one credit for them to try out. Another thought about the PRO plan is to allow a bit more customisation.

The pricing and billing won’t be in place until I’m close to finishing the app. However, I have a clear picture how I want to handle this, so hopefully won’t require much database work… if I change my mind.

Credit and PRO badges

With the pricing stuff out the way, I worked on showing credits on the page. As usual, this is not final, but close to where I want it.

There is now a little badge on the top right, next to ‘My Account’ that either shows you how many credits you have left or just “PRO”. When credits are low, the idea is that the color here changes from green to red.

On top, there is a dropdown that explains what it is… thought this is necessary not to confuse anyone.

Here are the different states:

PRO level. Enough said.

5 credits left on this one, with a simple explanation. I’ll have to explore some info section when creating an event too.

Uh oh! No credits left so here it turns red.

If you’re running low, I’ll also show a small warning under the ‘My Account’ dropdown… might change my mind on that though.

Next steps

The closer I get to a complete design the more I seem to still have to do… The three big areas I need to concentrate on before the weekend are:

  1. Finish Events details page (multiple pages and designs).
  2. Add event public url page.
  3. Add attendee details page.

Probably more as I go. The billing page I’ll tackle towards the end of the beta as everyone will be PRO during that phase (and stay that way) - however, I’ll give anyone the option to buy credits or subscribe to support me (won’t push it though and will be totally optional with no hard feelings at all).

Anyway, with those 3 areas done I think I have done enough to move along to app build. Quite excited about that. Still aiming for the weekend…

Links to the design points:

Throughout you’ll be able to see the badges too, but for specific ones:


I wrote this article mainly for myself to follow along when I look back at it at some stage. If you like to contribute, please email me or let me know via Micro.blog. There is also the Simple Schedule holding site where you can sign up for a beta.

For other posts on the challenge, check out the links below:

  1. Code challenge - from zero to web app in 60 days
  2. Code challenge - Prelude and Day 1 - Setting things up
  3. Code challenge - Day 2
  4. Code challenge - Day 3. Holding page.
  5. Code Challenge - Day 4. A login page and a few tweaks.
  6. Code Challenge - Day 5. Registration page and preliminary app navigation.
  7. Code Challenge - Day 6. Getting in the groove, new events, MVP considerations.
  8. Code Challenge - Day 7. 'My Events' view.
  9. Code Challenge - Day 8. Burning the midnight oil, loud music and good progress.
  10. Code Challenge - Day 9. Progress, changes and regrets.

Code Challenge - Day 9. Progress, changes and regrets.

I seem to find myself more productive in the evenings, so once again a slightly delayed post. I’ll be working on Day 10 already after this one.

Dashboard

Link: https://frontend.dev.simpleschedule.net/app/dashboard/index/

It was time to add to the dashboard. So, using the already designed sections, I added upcoming and current events including the latest entries (attendees) for the events in question.

I’ll be expanding this over the course of the week to also show a “welcome” section for when you first log in to get you started. Data, even when fake, looks OK… but what do you show when there is no data? Also, real data will be king here so will be good to see user feedback too. I did sketch out what I had in mind but won’t tackle it just yet.

I don’t want to add too much to this area just yet. You can also see I added some color to the attendees section, just to move away from all this blue.

In a way, I’m still not happy with the events list… but I’m moving along and will revisit that at some later stage. The data I want to show is there, just not decided how to show it just yet.

Event Detail View

Link: https://frontend.dev.simpleschedule.net/app/events/details/

To be honest, this isn’t finished yet… but it’s at a good stage to show already. I’m going to keep it relatively easy without too much information overflow. Showing the details of the event, latest attendees with option to show all of them and also a CSV download. That might be useful for getting it into a mailing list or so.

There are still many sections to make for this… as came apparent when I was working on it - sort of daunting at first until I processed it and wrote it all down.

Still to do:

  1. All attendees view for the event.
  2. Date filter and view (for multi day events).
  3. Work out a way to include ‘booking slots’, say for a specific time.
  4. Add an attendee to an event/date within an event (without leaving the event screen - if that makes sense).

The 3rd point brings me to my regret… I should have designed the Attendees list in an easier way by using a table, as I could easily add a few columns and it would just adjust. Although, I will probably use ‘flex’ or something to do the same thing for me… actually… I think I’ll do exactly that. I’m not a huge fan of tables, but they are great for big data. Looking at extra fields like time slots and dates at the same time, without breaking everything.

Other tweaks

Some icons were changed around for attendees and some added for events. On top, a few color changes here and there just to separate out that blue a little more. I really like to add a bit of yellow too, they go well together.

I also added some info bubble messages when you click on delete event or create an event. I welcome you to try it, or you can see them here:

  1. Delete event: https://frontend.dev.simpleschedule.net/app/events/deleted/
  2. Create event: https://frontend.dev.simpleschedule.net/app/events/created/

Closing thoughts and next steps

I found myself reading my past posts, just to remind myself of where I want to take it. It’s been invaluable sharing all this. If I wouldn’t have written all this down, even though it takes time, I would not think this app would have a clear focus of its direction, nor would it motivate me to keep going and eventually just sink into the black hole which is my 'idea book of the forgotten'. (Yes, I have an idea book folder in Notes with 43 ideas… one of which is this).

For the next steps I’ll be looking at adding some info towards the “paid” tiers and continue with the event view page. I’ll also look at the attendees list in a bit more detail so I can add more data.

I do see myself starting the actual app build by the weekend and will continue to push as best as I can to achieve that. Thinking of a good way to share that as I build it... would be a bit boring not to see it come to actual life... in an app way...


I wrote this article mainly for myself to follow along when I look back at it at some stage. If you like to contribute, please email me or let me know via Micro.blog. There is also the Simple Schedule holding site where you can sign up for a beta.

For other posts on the challenge, check out the links below:

  1. Code challenge - from zero to web app in 60 days
  2. Code challenge - Prelude and Day 1 - Setting things up
  3. Code challenge - Day 2
  4. Code challenge - Day 3. Holding page.
  5. Code Challenge - Day 4. A login page and a few tweaks.
  6. Code Challenge - Day 5. Registration page and preliminary app navigation.
  7. Code Challenge - Day 6. Getting in the groove, new events, MVP considerations.
  8. Code Challenge - Day 7. 'My Events' view.
  9. Code Challenge - Day 8. Burning the midnight oil, loud music and good progress.

Code Challenge - Day 8. Burning the midnight oil, loud music and good progress.

I didn’t get the chance to write this up earlier, it was 02:00 AM by the time I finished and decided to call it a day. Since the past year or so I try not to stay awake too late, although… I like the peace and quiet so I can concentrate.

Friday wasn’t a good day to be productive, aimlessly clicking around and reading some articles. However, I feel I made good progress yesterday (and this morning) to make up for it.

My Attendees page

I wanted a simple list view for all attendees. Not like the ‘My Events’ page, which has a big and bold look, as I knew that there will be many entries. So I created a condensed list showing basic details - Name, Email and events they are part of. There will also be a search bar, so you can look up details.

This is what I came up with:

I’m planning to add some controls to the top right that will allow you to sort the display of the results. Either by name or events.

There are a few things I want to tweak especially when the screen size gets smaller, but that is something I’ll tackle a little later on in the project. I’m OK to go into beta with rough edges, as it should be, and want to make sure what I code meets my expectations and keeps true what I’m designing here. There will be areas that will probably change along the way as I find better ways to do things.

Create a new attendee

This one was simple and that is the way I wanted it. Down the line I want to add the feature to book people/clients directly to a time slot or just enter their details directly to an event. Adding them here is just one way to do exactly that. Perhaps not a feature that is required just yet, but good to have. Not to mention, being able to use the design on other parts of the site.

I’ll show a list of events that are upcoming or current if you wanted to add them directly to one or more events. Useful when someone emails you asking to be put on the list.

The edit page for these will look slightly different, but I haven’t decided on the best way to display this yet. I have an idea though.

Account Profile & Settings

Didn’t think I would work on these but here we are. I’m yet to decide if I should have a profile page or not and perhaps just merge it to ‘Settings’. Nice to have separate though.

The idea of the profile page is to enter a ‘display name’ that people can see when they load up the public URL for the event, including showing a small profile image of the organiser. This could be an individual or a business… or whatever. It’s optional at this stage so not required as such. I’m also planning to make a feature where you can hide these details on the public URL on an event by event basis - or perhaps override it if with different details.

Couldn’t resist that image!

The settings page will only contain an ‘email’ box and some other settings that are yet to be added.

I think that’s easy to follow.

Planning to add a ‘Date Format’ section here too… I know that people like their dates differently, so good to have that as a setting. I do want to add an on-boarding process that will set this as you first log in after registering.

I didn’t touch billing yet.

If you change the email address and hit save, you’ll see a how I plan to display a success message… try it.

Closing notes

Whilst I was working on it, it became apparent how more complex everything is becoming in terms of making sure that all the correct pages are there and that I don’t miss anything. On top, I’m getting ideas for features… which is good and bad. For now though, I write them down in TaskPaper to keep track. I’m still pushing for beta by day 30 or 40 so I don’t want to add too much workload at this stage… the only downside that I can see is huge database changes. Hope to mitigate that a little though by keeping conservative with features and true to ‘simple’.

I already sketched out the ‘Event View’ page that will give you a breakdown of the event so I hope to work on that next.

Seeing the attendee list makes me want to redo the events list a little, but not too sure yet.

Another thing I need to think about now is adding the view for ‘Credits’ you have on the account when creating events (the paid feature). Not sure why I haven’t thought of it earlier… but it needs to be there for launch. Beta users and early supporters will have a lifetime free account.

Hope to have another big push the next few days and get it as close to “design” complete over the course of the week.

Also forgot that I need to work on email templates… arrrgghhh!

As always you can view the above pages here:


I wrote this article mainly for myself to follow along when I look back at it at some stage. If you like to contribute, please email me or let me know via Micro.blog. There is also the Simple Schedule holding site where you can sign up for a beta.

For other posts on the challenge, check out the links below:

  1. Code challenge - from zero to web app in 60 days
  2. Code challenge - Prelude and Day 1 - Setting things up
  3. Code challenge - Day 2
  4. Code challenge - Day 3. Holding page.
  5. Code Challenge - Day 4. A login page and a few tweaks.
  6. Code Challenge - Day 5. Registration page and preliminary app navigation.
  7. Code Challenge - Day 6. Getting in the groove, new events, MVP considerations.
  8. Code Challenge - Day 7. 'My Events' view.

Code Challenge - Day 7. 'My Events' view.

Today I solely worked on the events list that you see under ‘My Events’. Didn’t have too much time today but feel I achieved what I wanted. Plus, it gives me a bit of time tonight to figure out what I want to move along tomorrow.

Thoughts on bad actors

Before I get into it, I was thinking how I can keep my paid model for ‘credits’ of events viable and stop people from abusing the ‘Edit’ feature on an event. So let’s say someone would create an event, publish it, spend one credit on it and then after it is done… they go ahead and edit the event and just change the dates and rename it. I am unsure how I best can handle this.

For now, I think I will trust the user first most. If the event is in the past, mark it “past” in the database and don’t allow any edits on it. Cloning the event will not be a problem.

I understand that people will make mistakes hence I’ll enable the edit feature. Another thing I could do is keep it editable until there are certain amount of ‘attendees’ registered for the event. Disabling the event name and dates to be edited at this stage would be good. In rare cases I will of course accept emails to change it - if it was a genuine mistake.

Hopefully that is a good compromise of potentially pissing off clients and keeping it fair.

My Events View

For this round I made a sketch, but I’ll spare the embarrassment. I wanted a super simple and clean overview of all events, with the latest/upcoming events showing at the top, with past events in their own little section at the bottom (like an archive).

I didn’t want anything over the top or fancy either - just focus on events and make it a nice and simple experience for everyone. There are many apps with fancy graphics and fancy animations… true they are nice… but at the end of the day, it’s the app and the functionality that matters. Not only that, it would take time to build that all in. I’m aiming for an MVP and a learning experience and not a beauty contest.

So this is what I came up with:

To break it down I wanted to show every event with a nice big font as most people can relate to the event name more than a date. Although… maybe they can remember the dates better. A list view may have been good also but I would feel it would be too compressed and perhaps a bit too corporate… time will tell. Although, I’m planning a more condensed list for ‘attendees’ as that might get huge.

The event name is clickable and will at some stage, in the next few days, take you to the event overview page. Attendees will show you how many RSVP’s there are and that is also clickable - this will go to the attendees section of the event page.

'Edit' is self explanatory and will look similar to what we have for ‘Create new Event’. ‘View’ will also take you to the overview page for the event.

'Public link' will open a special page that is viewable by the public where people can register themselves for the event. Thought this might be useful to have so clients can get there quickly. I may look at marking events as private, but we’ll see.

On a different note to myself, I must remember to allow adding attendees manually to an event.

As usual, I made a few tweaks here and there - boring stuff like adding a border radius (curved corners) to the calendar picker, stopped the keyboard from popping up on iOS devices for the date picker… just to name a few.

The site is also adaptable to smaller screens (responsive), so you can see it here for the event page as below:

Still loads to do with tweaking this.

The blue is totally overpowering in my eyes. Perhaps I’ll explore different shades and mix it up a little. TBC.

You can find the page here.

Thanks for reading. I'm pretty excited...


I wrote this article mainly for myself to follow along when I look back at it at some stage. If you like to contribute, please email me or let me know via Micro.blog. There is also the Simple Schedule holding site where you can sign up for a beta.

For other posts on the challenge, check out the links below:

  1. Code challenge - from zero to web app in 60 days
  2. Code challenge - Prelude and Day 1 - Setting things up
  3. Code challenge - Day 2
  4. Code challenge - Day 3. Holding page.
  5. Code Challenge - Day 4. A login page and a few tweaks.
  6. Code Challenge - Day 5. Registration page and preliminary app navigation.
  7. Code Challenge - Day 6. Getting in the groove, new events, MVP considerations.

Code Challenge - Day 6. Getting in the groove, new events, MVP considerations.

After some time off, it took me a bit to get back into the swing of things. It also gave me the opportunity to rethink the core function of the app. On top, I’m extra motivated to make this work nicely.

Unfortunately there are still things on my mind at the moment from the past few weeks, but I’m trying not to think about it too much. Also, failing this challenge will negatively impact me in a way I cannot describe. I feel lost and stuck without progress at times.

Cosmetic changes and code base thoughts

To get into the groove I tweaked a few tiny things on the static design. Nothing major but it ultimately helped me ease back into my small but significant codebase.

On top, I was having a think about the codebase… not to bore you too much, but I think I’ll go ahead and give ASP.NET Core a try with this. It runs on the Mac and I can use Visual Studio on the Mac too - It’s an amazing IDE (although basically Xamarin under the hood). I’ve got great experience with C# already thanks to my past and didn’t realise ASP.NET development came this far for the Mac already. I was reluctant to use it as I did not want to spin up a Windows VM… on top, it’s quite easy to get everything deployed with Azure - up my alley too.

Create a new event

With the tweaks out the way, I started on getting the ‘create a new event’ page done. Of course I sketched it out first by hand, to get a feel for it.

Sure, a good start. Setting off, I wanted to avoid custom styling per page and have re-usable form elements that I could use across the app. All inputs and they way it’s set up can be re-used with just copying the HTML and I am done. That will help me with extra section down the line… and once the app gets a bit more complicated, which I’ll touch on in a minute, I could potentially add new sections quickly without too much headache. (Not sure if I just repeated myself).

I’m opting for natural language with descriptions and want to describe it more but also make it easy to use. I’ll no doubt tweak the wording, but I also want some of my own personality to show through on the web app.

On the Dashboard and on the 'My Events' page you’ll see a ‘Create new Event’ button, which will take you to the section.

It’s just a button.

As my sketch shows, I came up with the following design… in all its glory:

Simple, to the point and functional. The font type I’m not too happy with and will probably change that at some stage. Or, I just work on spacing a bit more. To be decided as I go. I’m certainly not happy with spacing of the header and the immediate section heading on smaller screens and will tweak that during the next few days/weeks.

In a true MVP (Minimum Viable Product) style I decided to remove some features until I hit beta. I want to concentrate on the single event (RSVP style) instead of time slots. I did work out how to do time slots, but I like to work on the database design on that to make sure I have a sound understanding of where to go. Mixing it up like this always seems to work for me.

There a few controls that show up once you enter a ‘Name’ or some other info that will allow you to save the event. This fades in at the bottom.

I may add a “Save as draft” option for more complicated events.

The date picker uses Pickaday by David Bushell. It’s pretty neat and just what I’m after.


If you want to look at the section on the front-end site, you can find it here.

Closing notes

With this out the way I can now concentrate on working on the events page. Probably get started right away to keep the momentum. After that I will probably create the ‘account’ and ‘billing’ pages, just to mix it up a little.


I wrote this article mainly for myself to follow along when I look back at it at some stage. If you like to contribute, please email me or let me know via Micro.blog.

For other posts on the challenge, check out the links below:

  1. Code challenge - from zero to web app in 60 days
  2. Code challenge - Prelude and Day 1 - Setting things up
  3. Code challenge - Day 2
  4. Code challenge - Day 3. Holding page.
  5. Code Challenge - Day 4. A login page and a few tweaks.
  6. Code Challenge - Day 5. Registration page and preliminary app navigation.

Looking for a job

2018 is on the brink. 2017 is over and boy has it been a rollercoaster ride.

Freelancing is hard, challenging but also immensely rewarding… when it works out. However, it is time to move on from my little experiment.

I came to realise that I can only learn so much on my own, only get to a certain level with online courses and practice. What I really need is to find something where I can take my existing skills and really get amazingly good at them. That requires experience from peers to guide me. I can only do so much.

So for 2018, I am looking for a job. I love working remotely as it gives me a great balance of family life and work, working in an office will not suit me at all (although I am happy to pop in). Also, with family commitments it would have to be something either project by project based or set hours based. 9 - 5 will be hard, but hourly target per day will be great.

I don’t want anything boring, I want to be able to push myself and move up on the ladder. It is the only way I know how to work and be happy.

My website is my CV, from websites to personal projects and apps. I know Swift well and enjoy working in Xcode. I also love creating websites and backend systems. I learned C# at my last full time job really well. This year I concentrated on Ruby as I wanted to move away from the Microsoft stack in general. I am not perfect at Ruby, but with doing apps like my code challenge, it is my way of learning. I always want to try something new. I am not a professional designer but everything you see here and on the 'sites' page are all my designs.

One word of warning is that I find it hard with the “theory” side of things… I just do and let results speak by themselves. I don’t think I would get past a technical interview…

Freelancing is very lonely for me and I miss the interaction with colleagues and friends I make. I never realised it would affect me so much.

I’d like to make a dent in the universe wherever I end up and looking for long term/lifetime employment.

If you want to get me started with a small project to see how it goes, I’ll be happy to do that. Happy to work on an existing project so you can see how I tackle problems. Best is to let me know and maybe we can do something. I am sure not to disappoint and if I do… nothing is lost.

If you have seen my work and know someone that could use me on their team, please share this message. I would forever be in your debt.


You can email me here: hey@vincentritter.com

Code Challenge - Day 5. Registration page and preliminary app navigation.

Today was the first day my daughter went back to pre-school, after some extended time away. With my little secretary gone I took my login page, pretty much duplicated it and started creating the register page.

I wanted a super simple register page, that would just take your email address. This in turn would register you and create that ‘magic link’ and log you right in.

As I build the UI I am also building a model in my head on how the app should work. Guess that will prepare me nicely… I hope.

The plan is that I check if the email exists and, if it does, prompt you to log in instead… As I believe it could be a bit confusing, if I do use magic links, I may just send out an email anyway with a login link. TBC. (thinking out loud).

The thank you page with some details about verifying your email. Not sure if I will use this now… instead I just want people to go straight to the Dashboard/Overview screen.

Thoughts on email verification are that I’d like to include a ‘reply to’ address to emails that would get sent out for specific events. I might just drop it though, for ease to the customer.

You can find the URL for the registration page here.

Feel free to click around and you will see how it should work.

I may just revisit the login pages in the next few days to take into account magic links.

Thoughts on the logo

I wasn’t happy with my “10 minute” logo, so my sister has decided that she’ll sketch something up for me to use. Awesome! She actually helped turn my sketch for the justcode.tv logo into a vectored drawing!

Starting the App UI

I few months ago I was working on a concept, from an old project, where I designed a header navigation already. I like it so decided, for speed, to re-use most of it.

Nothing too fancy and nothing that is in your face too much. Keeping it minimal, but functional, is the aim. Some special stuff with a gaussian blur when you’re using Safari… I actually have a small javascript snippet that adds a “superpowers” class to the HTML.

Icons are always nice and I decided to spice it up a little with feather icons. I really like them. Not a huge fan of Font Awesome… just a tad overused!

And a account dropdown to the right.

The verification info is there just to remind you that the account email needs to be verified. Maybe a little over the top and will probably have it a light grey/gray background with red text. You can see the icons work really well here.

That section is also fully responsive so works across different screen sizes.

You can see some of the code I wrote for the header and dropdown. Excuse the class names… it works for me to keep track of it all.

Sitemap

I created a very simple sitemap to help on the way so I can tick off all the pages I need to consider.

I’ll expand on that as I go. However with this I can concentrate on the designs and make sure I don’t miss anything.

Don’t want it to turn into a monster either so I need to watch myself and keep features to minimum, otherwise I’ll be coding till summer!


I wrote this article mainly for myself to follow along when I look back at it at some stage. If you like to contribute, please email me or let me know via Micro.blog.

For other posts on the challenge, check out the links below:

  1. Code challenge - from zero to web app in 60 days
  2. Code challenge - Prelude and Day 1 - Setting things up
  3. Code challenge - Day 2
  4. Code challenge - Day 3. Holding page.
  5. Code Challenge - Day 4. A login page and a few tweaks.

Code Challenge - Day 4. A login page and a few tweaks.

A mixed day today but achieving my goal of getting something up. I mainly worked on getting the login design finished. This will sit under ‘my.simpleschedule.net’ page once it’s ready as I want to keep it separate from the marketing website. However, I am jumping the gun here a bit.

Getting set up for prototyping…

With the holding page out the way yesterday, I did the usual of setting up my project, creating a new repo named ‘SimpleSchedule.Frontend’. That’s clear enough for me… although might be a bit confusing down the road.

I decided to use Jekyll to help me with the frontend UI. I didn’t want to use just plain old HTML and then do some funky magic to re-use stuff. Jekyll, for me, fits the bill of what I want to achieve. Not only that, but I can pass in variables and others to partial includes.

Another useful thing with Jekyll is that you can set up custom collections. So for each section I am designing I am going to try and replicate the URL structure that I would like to achieve once I write the app. Not only that but it gives me a clearer view into the different sections.

You can see above that all I need to now is create something like the below in my Jekyll folder:

This in turn creates ‘/login/index/‘ or ‘/login/forgot/‘ url structure. Very cool and useful a bit later on. I don’t want to get too far ahead at this stage of the post though.

With the normal Jekyll installed and collections working, CodeKit doing its thing, I once again set up my server to receive the repo. I set up git with my initial commit.

Yup, new emoji right there. It’s just me that sees the commits, so I try and have a bit of fun. The server receives the change and builds the site. All good! If you are interested into what that build script looks like on the server, I just use the following build script once it pulled the repo:

bundle install --path .vendor/bundle
bundle exec jekyll build --config _config.yml,_config.stage.yml

Of note, I use a second ‘_config’ file for the staging site. This allows me to change a few things compared to my local dev environment. Handy!

The sketch…

Before I proceeded I had to get down the sketch of what I wanted to do. A great quality sketch.

Just your usual looking login form with an email and password input.

On a side note… I am unsure if I should use passwords. I always preferred those magic links. I’ll think about it though. I may do magic links first and then incorporate passwords at some stage. I am not too keen on using third-party auth either.

The login page

With collections working and my default styles in I went ahead and created the pages. Putting each section of it into partials so I can re-use them later on.

What I want to achieve is a full static replica, to the best I can, before I build the app. Yes, things will change as I go but this will ultimately help me define the app, what it does and also help me with database design.

It’s a bit weird to start with the login page… I know. I have a simple explanation why I do it this way… I want to experience the app from the first point on - this is usually the login page if you are registered. Granted I should probably work on the registration page first. It’s important to me that I get it right from the start and not miss anything.

With a common style for buttons and inputs, as you have seen on the holding page, I started putting it all together. And here it is:

Simple and clean.

I also created the forgot password page and some of the error/info message pop ups that you might see.

The help section changes depending on the page you are on. I am a huge fan to use different and natural language here. It’s a little detail but I like it. Regarding the ‘help’ page, I’ll be building that alongside the app… that is the plan anyway.

If you’re interested how all this comes together for me in code and how I separate everything… here you go:

Introducing the dev url

As I mentioned, I’ll be opening the URL to everyone to see and comment as I go. You may even see it change during the day as I push changes. I invite you to have a look.

Before you head there though, I provided you with a temporary front page and a ‘Site menu’ which you can see at the bottom left. This will help you to navigate around the site and explore the different section. I can only stress that this is a fully static site and does not work. But you know that!

Links will begin working as I go so feel free to click around at random times to see if something has changed.

Here is the url: https://frontend.dev.simpleschedule.net

As I said, the first page will be an overview of all the pages that are ready and completed. Just start with the first link.

Also there is a little ‘site menu’ button at the bottom left. Clicking that will bring up the page navigation for you to click around. I thought that might be useful to have so I can check all the pages with easy. This won’t ship in the live app of course.

Quick thoughts on the design

I am not too happy with the logo, just doesn’t look right and there is a lot of blue. The logo will probably change. An easy change. I also wanted to introduce a secondary colour. You can see a nice yellow as the bullet points in the help section, I’ll be using this more.

A few other things

Some other things, after I pushed this up - I changed the holding site a bit and introduced a blue button, re-worded the text slightly and reduced the size of the logo. Always good to sleep on a few things.

Another thing, which took me a bit of time, is that I created a special section on my site to pull together all the posts for the code challenge. I thought that was important so I could reference it easily in a few months time and hopefully add a few more challenges. I hope it also helps you if you come across the post or are already following.

As always, I ticked off a few things on my TaskPaper document, which you can see here.

Day 4 - Goals & Overview:

  • - Set up front end dev environment @done
  • - Login page @done
  • - Open up dev URL @done
  • - Add link to my site on frontend site @done
  • - Add special section on VR site for the code challenge and link to posts @done
  • - Add blue button to holding site @done
  • - Reduce size of logo on holding site @done

I may just start the registration page tonight and will continue during the day tomorrow.


I wrote this article mainly for myself to follow along when I look back at it at some stage. If you like to contribute, please email me or let me know via Micro.blog.

For other posts on the challenge, check out the links below:

  1. Code challenge - from zero to web app in 60 days
  2. Code challenge - Prelude and Day 1 - Setting things up
  3. Code challenge - Day 2
  4. Code challenge - Day 3. Holding page.

Code Challenge - Day 3. Holding Page.

Earlier today I managed to upload a simple holding site for the project. Getting set up with any type of project always takes a bit of time. So, with best intentions, below follows how I usually go about creating stuff.

I didn’t want to do anything grand or really anything that would blow people away. I dig simple and fast, so that is what I did. There are certainly rough edges, but like anything… I will iron those out.

Pen and Paper

Every project starts with pen and paper for me. I have stacks and stacks of squared paper notebooks full of drawings and notes. I’m not sure if I could work without my notebooks... probably not.

First thing I did was sketch out a very simple layout of the holding site. As I said, I’m no designer.

You’ll notice that I write in CAPS all the time. I have to thank my Geography teacher many many years ago for always writing in CAPS on the whiteboard. Just easy to read… for me.

Everything I work on, starts like this. A simple sketch so I can get my idea down on paper and out of my head. No details, just pure layout, so I have reference to it as I build it. As I said in my previous post, I will design the site in the browser and not use a tool like Sketch. The reason for that is that it would take me a very long time. I’d rather see small gains over a few days then re-align stuff in my Sketch file. On top, the 60 day time limit I’m giving myself won’t allow me the luxury to do this (I’m just not good enough in Sketch).

Project set up

Every project, at the code level, has to start somewhere. As I’m going I’m making photos and screenshots which I can share in these posts. Simple Schedule already has a design folder where I put all these, including the logo I created in Sketch yesterday (in the early morning!).

Everything from design and code lives in iCloud Drive. Yes, weird! But it works for me.

Update: I had some feedback on iCloud Drive and generally storing files like these on the "cloud". I understand the risk. I also understand that it is probably frowned upon, especially in a corporate environment. The decision to move was a long one, with a gradual move to iCloud Drive... making sure everything works. I can only stress to try and see if this works for you. One project at a time and give it a chance to sync. At the start it was not perfect, but as time went on it got much better! I generally just work for myself, so it works for me. iCloud Drive has saved me countless of times this year, with full restores to my then dying laptop. It did it every time, pulling down everything without stress. Yes, there were problems with a few repos loosing their place with commits... nothing a git pull couldn't resolve though! iCloud Drive for me serves as a back up. My code is always checked in and pushed at first instance. Thanks Alec and Elliot for your comments.

I have two folders, one for “Design” and one for “Dev” - Dev being the one that has all my code projects. The design folder also lives in the code folder as an alias so I can jump between the two easily. Every part of the project will also have its separate folder which also have their own git repo tied to it. More on that in a moment.

So a typical folder structure that I would use for this project is:

‘simple_schedule’ - The main folder that holds all the parts pf the project from code to design.

  • ‘SimpleSchedule.Design’ - this is the alias.
  • ‘SimpleSchedule.Holding’ - this is the holding site.

There will be more down the line, for example I’ll add ‘SimpleSchedule.FrontEnd’ tomorrow and then in a few weeks I’ll add ‘SimpleSchedule.App’ or something for the Rails apps.

For the holding site I decided to use Jekyll. It’s super easy to set up, it doesn’t require a database and it’s something I used for many years. I don’t really like the idea of having a database laying around just for the holding site. This may change once I build out the marketing page down the road, but I don’t want to think about it just yet.

With the folder set up and the ‘jekyll new’ command run, I open up Sublime Text with the project. There are many text editors out there, like Atom and Visual Studio Code, but I just love the simplicity you find in Sublime Text. I was a heavy user of Atom but earlier this year I decided to go back to Sublime. It might not be as feature rich from just looking at it, but I find it really nails the balance. Plus it doesn’t run Electron.

I organise and tweak a few things with the default Jekyll install to a more organised folder structure. This works for me nicely as I have a particular way with these things. I am German, what do you expect?

As you can see, ‘_src’ is where the Jekyll specific parts are, this then builds into ‘dist’. I keep ‘dist’ out of the Git repo and I build the site on the server. More on that in a moment.

‘_assets’ is where I keep all my images, stylesheets, javascript and other things. I work for myself and always use CodeKit to help me compile and optimise everything I need. Yes, I did try gulp and others but it really is a bit too much… especially when you work for yourself. Again, this works for me. Plus I don’t have loads of ‘node_modules’ lying around in my code folders… I do occasionally use build tools for client work, but that is rare. I usually let them handle it after I hand off the project. CodeKit compiles everything into an ‘assets’ folder in ‘_src’.

First commit and deploy

Now it was time to set up my server to pull down my Git repo from GitHub and build the site for me. I personally use Laravel Forge to manage my servers. It’s powerful and I’m super happy I came across it earlier this year! It’s mainly based at PHP but with set up you can work with Ruby and others quite easily.

With the GitHub repo set up I opened up Tower. Tower is a Mac App that does git amazingly good. It’s paid but I urge anyone to give it a try. It’s great at organising your projects too! You can even have folders/groups. It’s really powerful and I wouldn’t know what to do without it. They also have a Windows app.

I already put a few ‘default’ styling files and some various other files, that I use across my projects, into the project. With that, my first commit to see if it all works.

I told my server which repo to pull and also told it to watch for changes to the repo, so it would grab it as soon as there is a change and then build the jekyll site on the fly. On top, Laravel Forge also offers Slack notifications when a build succeeds or not.

It was done, the site deployed and built without a problem!

Knowing that it now worked, I started to build the site.

Building the site

With the first milestone reached I continued work with budding it out. As I develop locally and running Jekyll, I keep Jekyll in a build mode which watches for changes. I tell CodeKit to look at the ‘dist’ folder and serve that site on the small web server it runs. Every time I hit save in Sublime, Codekit will refresh the browser. An added bonus to this is that I can look at my site on all my devices on the home network. Great for responsive testing! … although, for this stage it wasn’t too important to me.

I only needed the homepage at this stage. I built it out over the course of an hour or so.

The image above shows the completed site, in code. You can see how I go about using Jekyll here. I really love the Liquid templating language. If you want so see it in detail, just drag that image to your desktop... I'll think of adding some sort of pop at some stage.

At this stage it is probably overkill of what I have done and could have had one page with everything. But that is not how I work. I also wanted to try and pull in a .markdown file as an include, but figured it doesn’t convert markdown when you do that. No problem, there is ‘markdownify’ option that will help with that. If that’s a bit technical… sorry.

I always choose to have CSS and Javascript to the right of the HTML or code files. It’s a little bit easier to keep track of things that way.

The code above is not perfect but, once again, it works for me. Especially the SCSS, it might look weird but I find I can keep track of everything much better that way. I have a few predefined styles that I can reuse and you can see me using the ‘@extend’ keyword a lot.

In this case I didn’t need specific media queries, to size it depending on the screen size, because I try and build with that in mind from the start.

Getting it live

There wasn’t much for me to do except push my changes to GitHub. As this was only a holding site, I only pushed once, once the site was finished locally. On larger projects I usually have a ‘dev’ or ‘staging’ url and push them there first before pulling the trigger. We’ll do that once we build out the Front-end UI this week.

With it pushed up, I received the Slack notification saying it was deployed. And here it is.

It’s simple and will do the job until I figure out a better marketing message for the app. It loads fast, uses no hosted fonts and there is no tracking either.

The email box goes directly to MailChimp for signup. As I said previously, I’ll be running Simple Schedule through my company so you’ll be seeing my company details on sign up. Not sure if that might confuse some people.

Also, I wanted to have a small disclaimer about the sign up. I don’t like spam, I don’t like marketing email so I thought it was important to make it clear what I’ll use the email for.

Closing thoughts

Yes, it’s rough on the edges. Yes, there is no favicon or OG icon. The text on the page might not be perfect either. However, over the course of building the app I’ll slowly be replacing a few things as I go.

With this small achievement, I am now geared up for staring the front end UI for the app. I’ll be sharing details about this tomorrow and will be opening up the URL for people to follow along.


I wrote this article mainly for myself to follow along when I look back at it at some stage. If you like to contribute, please email me or let me know via Micro.blog.

For other posts on the challenge, check out the links below:

  1. Code challenge - from zero to web app in 60 days
  2. Code challenge - Prelude and Day 1 - Setting things up
  3. Code challenge - Day 2


Code Challenge - Day 2

Today I further redefined what the app should do well and expanded on my TaskPaper outline. I also decided to create two other TaskPaper documents, one for the Day achievements - so I can keep track of what I did and what I’m planning for tomorrow, and the other one to keep track on contributions that I have received from the community over at Micro.blog and other mediums.

Here is my day overview from TaskPaper from of what I’ve @done… not much… but steady:

Day 2 - Overview:

  • Re-instate Mailgun account. Will use this for transactional emails. @done
  • Come up with a simple logo for the app. @done
  • Further define the app. @done
  • Point domain to server IP @done

Pricing

Doug Lane, over at Micro.blog, has given me a great idea and contribution to the project on how I can offer packs of events instead of just a ‘pay as you go’ model.

For the pricing, have you considered allowing people to buy "packs" of events? You could do something like a 10-pack and then have the option to autorenew for the next 10 when the balance gets down to one or two. It still avoids a subscription fee for times when the product isn't in use, but it might help with cash flow and reducing the impact of any per-transaction processing fees (if you have any).

I really love that idea and, to be honest, I haven’t actually thought of the one time processing fees. I’ll be using Braintree for my payment integration. Main reason for that, Stripe is not available where I have my business. Braintree takes 1.9% and €0.30 per transaction. They also take an extra 1% for transactions outside of my “home currency”. So 2.9%.

So, I think I’ll initially offer a ‘pay as you go’ payment model and a pack of 8 events for $10. I think that works well. I don’t want to do $9.99 or $1.99, never really liked that. I may just tweak pricing as I go though.

Also I am wondering if I should offer 1 event per year for free, or perks that give you a percentage discount depending on how many years you’ve been using the service for… that’s just an idea at this stage and probably won’t ship it in the app.

Thank you Doug!

Transactional Email

I was looking at both Postmark and Mailgun for transactional emails. I already had a Mailgun account, which I never used, so I emailed them to get my account going again. They were super friendly and did it straight away.

With 10,000 emails free per rolling 30 days, this seems a perfect fit for me. Postmark does offer the first 25,000 emails for free. Both have Ruby Gems, so I'm happy with that!

I did look at MailChimp but really can’t justify the cost of adding Mandrill. I believe that runs at $199/month, not including every transactional email.

Keeping in mind that I want something that doesn’t generate too much noise to the user I defined a few emails I’d like to send out:

  • When a user inputs booking details - send to account holder.
  • When account holder approves the booking via admin, send email to the person making the booking.
  • Have an option to turn the above off.
  • Account registration success.
  • Forgot password.
  • Login magic links.

As usual, that might just change as I go and build the app.

On that note, I set up Mailgun and got the domain verified. Good.

IP addresses and URLs

Nothing too exciting here but I pointed the domain, simpleschedule.net, to one of my servers now. There is nothing there yet.

Had a quick thought on URL structure for the sites as there will be 3 different parts:

  • App login url should be 'my.simpleschedule.net'.
  • Help site url should be 'help.simpleschedule.net'.
  • Main marketing page, simpleschedule.net.

Easy enough and I actually quite like how 'my.simpleschedule.net' looks and sounds.

Logo

I’m no designer but wanted to get some very early ideas out there using Sketch. It’s only text based with a simple line underneath. Hoping to get some help here from a friend, follower or family member.

I love ‘Avenir Next’ as a font in general. The heavy font looks a bit too heavy so am also trying an italic one. However, I don’t see it lasting and just wanted something for a holding site.

Tomorrow

Not planning too much on the planning front tomorrow. Hoping that I can get a real basic holding site up with an email box, so people can sign up to the newsletter if they so wish.

Next week

I don’t really want to say too much at this stage but the famous plan is to start the UI for the front end, for ease and speed I’ll use pen & paper and build it in the browser. I’ll also be opening up the URL for this so you can follow along.


I wrote this article mainly for myself to follow along when I look back at it at some stage. If you like to contribute, please email me or let me know via Micro.blog.

For other posts on the challenge, check out the links below:

  1. Code challenge - from zero to web app in 60 days
  2. Code challenge - Prelude and Day 1 - Setting things up

Code challenge - Prelude and Day 1 - Setting things up

This will be a regular (daily) series of blog posts for my own personal code challenge.

Prelude

This week I already set wheels in motion by thinking about the name for my web app. I never really liked businesses ending with ‘ly’, ‘fy’ and you name it. You know what I mean… something like ‘Appointly’, ‘Calendly’… *cough*

So, I came up with two very simple options for myself… they are not perfect and I might just change it:

  • Just Schedule
  • Simple Schedule

I wanted to go for Just Schedule as I named a few of my projects starting with ‘Just’ - kind of inspired by “Just Do It” and “It just works” but encapsulate that it “just” does what it says and nothing else.

I consulted my wife, who’s opinion I trust, and she recommended “Simple Schedule”. So did my sister.

Simple Schedule it is. I think it perfectly fits what I want to do at this stage… create a simple scheduling/appointment web app. I have to be honest, I am not great at coming up with names… just like naming methods and functions in code!

I registered simpleschedule.net with Gandi.net, a registrar I hold many domains with for many years, on Tuesday, 5th of December 2017. Naturally the .com was taken by some parked domain service. ¯\_(ツ)_/¯

There is nothing on the domain yet, still at the Gandi holding page from when I registered. Update 2017-12-10: This now points to one of my servers with a holding page coming up on 2017-12-11.

Gandi does offer awesome DNS service out the box, however I decided to use my DNSimple account in this instance. Their interface for adding domains and keyboard shortcuts are just awesome. Not to mention really awesome customer support. I run a few clients through the account so it doesn’t add too much to my costs. Yes, there are free services out there like Cloudflare and others, even Linode (which I also use) have DNS hosting. Anyway, more of a personal preference.

Day 1

Today was my first official day on the project. I already blogged about it earlier, to get me started. Blogging about something, especially a challenge, just helps me to motivate myself to keep going. Yes, I did try something similar in the past… unfortunately my work circumstances were not great.

I opened up TaskPaper today, to get me back into the swing of using it. I just started jotting down everything that was in my head about the app. I made several notes in my “pen & paper” notebook that I always keep on my desk. Without it I would be lost!

I wanted to jot down a quick feature set of the app, although it turned out I got into more details than I wanted. I also created a task list just for Day 1, to try and work through some crucial little steps.

To summarise day one from TaskPaper:

  • - Set up email @done
  • - Set up Mailchimp and link account to agency account @done
  • - Verify domains with Mailchimp @done
  • - Work on quick overview feature set @done

@done means it’s done :)

MailChimp I’d like to use for capturing email addresses for early sign ups and perhaps some beta updates as I go. Next week I’ll probably work on getting this integrated into a holding site. Down the line, I may use it for 'opt-in' marketing emails just to let people know what updates the app is getting, although that will be 'opt-in' only. I never liked spam and want to respect my users.

Email is set up and working through hello@simpleschedule.net and sent that famous test email to myself… something I always do to see if it all works. Always exciting! Gandi offers free mail service with your domains, which suited me for many many years.

Regarding the feature set… I did start work on a high level overview of the app and what it does. I also got into detail on pricing. Pricing is important and I want to do something a bit different. I want to avoid monthly pricing. Everyone does that. Perhaps it is too early to think about it… however I wanted to do something that is abnormal compared to the natural flow of things I see around the web. I’m not sure if it will work. But I do want to avoid monthly fees being charged for months and months for a customer that hardly ever uses the service. I couldn’t sleep at night knowing I would rip someone off.

To save a headache and a half, I’ll run the site through my consulting business based here in Kraków… just to keep it simple. If it’s something that requires a separate entity down the line, I’ll change that. One tax return is easier than two!

So, here is a very early view of the app, ideas and pricing. I haven’t changed anything, so you can see how this works in my head:

Early thoughts:

A few random thoughts about the app to get me into the flow of thinking of everything.

Pricing:

  • - $2 per event.
  • - no monthly charges.
  • - free for early believers and contributors for life.
  • - Easy because you just do it once and be done with it. Don't want to hold anyone ransom and forget about their bill. Less support headache, maybe.
  • - Describe why $2. 19% to tax man plus fee to Braintree and conversion fees, yay.
  • - First event for free.
  • - BrainTree UI drop in integration (keep it easy)?
  • - Save credit card info.
  • - Allow Bitcoin? Maybe... BitPay? Can't use Stripe yet... not in Poland at the moment.

App:

  • - Simple to use, focusing on just making an appointment.
  • - Easy UI. Nothing dramatic and too fancy.
  • - Little details here and there (I know what that means).
  • - Built on Rails.
  • - Hosted on Heroku.
  • - Simple registrations.
  • - Have different types of possibilities for events:
  • - A full day event - useful for large gatherings i.e meet-ups, code challenges etc.
  • - A full day with time slots - useful when taking bookings for meetings.
  • - An event, running over multiple days, with either of the above.

Other:

  • - Run through my business to keep costs down.
  • - Do something like "by Vincent Ritter" - explain that on invoices and payment receipts.

I’ll expand this over the next few days. Also, for those that would like to see a screenshot of the notes above, here goes:

Overall slow today but steady progress. I've done a lot of offline thinking over the course of the last few weeks and hope to get everything down and 'locked in' over the weekend.


Side note:
I wrote this article mainly for myself, to follow along when I look back at it at some stage. If you did like what I wrote and are interested in some of the services I mentioned above please consider using the following affiliate links, this will help me reduce some of my costs. I use affiliate links because I truly believe in the service and use it day to day.

Code challenge - from zero to web app in 60 days

With the new year approaching I thought of a way to challenge myself ahead of the ’New Years Resolution’. Truth is, I make grand plans every year… I’m sure many do. But, like many, I usually achieve maximum one or two (this site) things for the year.

January usually is my time where I sit and make personal plans for the next 9 months. I deliberately do it like that because I know that the end of the year is usually time to be ill and then it’s Christmas. Having a kid in pre-school makes the ‘ill’ part a more regular thing for us though. Ha!

So, cutting to the juicy details…

I decided that I’m going to challenge myself to create a web app, within the next 60 days. I initially thought of 30 days, but knowing my workload, that would totally burn me out.

For 2018, I want to look at a more passive income from different sources. What better way than using my skills and build stuff. Even if this doesn’t make any income, I will still be happy to have learned on the way. To me, learning is priceless.

I’m going to create a simple appointment web app that allows you to choose a date and time where people can make a booking to meet with you. Useful for events and other gatherings. There are many out there but I find a lot of these are over complicated, mess around with timezones too much and have a super complicated and clunky user interface.

Over the next few days I’ll share more details but here is what I want to achieve on a personal level and obviously the app. In a nutshell:

  • Develop a simple to use appointment/scheduling/booking web app.
  • Develop this with a MVP, minimum viable product, mindset and improve after launch according to demand.
  • Stay true to simple all the way and define the values of the app.
  • Motivated by the Micro.blog photo challenge by Doug Lane I want to blog every day with progress.
  • Develop the app in the open, except the codebase. This means UI screenshots and other things that will be important to share. I would love for feedback from others if at all possible, which will help me along the way. Perhaps I’ll have a public Trello board so people can chip in on progress.
  • Open up a early beta at the 40 day mark.
  • And on a personal level, I want to learn, hone and improve my skills with hopefully more projects like this in future.
  • Look back at this project and be happy of what I created, failure or not.

There is more I want to achieve with this, but I hope that the above pretty much sums it up.

I already did a few things to get this off the ground earlier in the week. I’ll get posting a little later about what I already did.

If I can launch this late January, then I will be happy. There are many challenges in the way. I also hope that opening this up and letting my followers watch and contribute will be well received. I am planning perks for any beta sign ups and anyone that decides to contribute - I’ll blog about that more.

In the next few days, I’ll define the app and its values.

Happy to start this right now, so here goes.

What is Micro.blog

You may have heard of Manton Reece's service called Micro.blog, a new type of social network.

In the past weeks I've seen and heard a few comments about how it's hard to describe what the service is and how to best convey the message to the general public as it ramps up to a public release.

Instead of trying to explain it in a way to describe the service I thought I would write what the service is for me.

I own my content

This is a no brainer really. Too many times have I loaded up Twitter and posted away. If that service went away tomorrow, I would loose all my content and would have to think really hard how to retain it. Yes, I’m aware of the content export but that is not my point. Now I’m ultimately in control. I can choose what to display on my site, how my site looks and not be too concerned on my follower count or noise. I am a real person, writing real content and putting my very own name on it… on my site!

The beauty with Micro.blog is that you write on your very own site first. Just like the old days when more people actually blogged. If you didn’t have a site, you can create one with the service. It’s easy and fast.


On top, if you so choose, you can syndicate your own original posts to Twitter or Facebook. I personally syndicate to Twitter, although I’m probably going to stop that soon and be done with it. Probably will write a post about this soon enough, ha!

Knowing I own my content and posting on my site, which I use to showcase what I do, makes me think before I just fire away with random crap. It’s easy to hammer away on a social network as that timeline just keeps on going, your post forgotten in infinity.

Quality content (well, you know what I mean), on my own site, which I own!

Motivation to keep writing

I’m not a great writer, just look at what I just wrote, but Micro.blog has motivated to keep writing because I’m finding people on there with similar motivation. Somehow put off to write more but just pushing themselves to write just for the sake of writing. True, I was super scared in the past when I wrote a blog post, but Micro.blog just showed me how many people actually write! I was used to Twitter… with noiseless noise. What I saw was great content written by many individuals. It really opened my eyes.

With writing on my own site and, hopefully, improving my style as I grow I hope that one day I can look at it all and see where this stepping stone has taken me.

Micro.blog pulls in the feed from this site, posts this on the service and then syndicates this. I don’t have to think about it. I just write the post and off it goes.

I hope in the long term I write more and more on the big stuff and the little stuff. I am no longer attached to the idea of people heavily judging what I write. Heck, I don’t even track any visitors on the site. I just write to write… just like this sentence. I write for myself and only for myself. If someone likes what I write, then that’s an added bonus.

A stepping stone to an archive of my life

Yes, I could just write and keep improving my site… and then in a few years go back and look through what I was doing all my life. Easy to say but actually really hard to execute.

I looked at my site many times over the years, regretting certain decisions and actually not writing anything for a very long time. I was, however, quite active on Twitter for a very long time. Posting there, giving my 140 characters of thoughts… good and bad.

In December of last year, 2016, I decided to not post to Twitter anymore. Eventually taking an archive of all tweets and then deleting them from Twitter. I had grand plans to use this archive and add them, somehow, to my site. That archive still lives on iCloud Drive.

Micro.blog had a successful Kickstarter, which I unfortunately didn’t back. That was entirely my fault! Wish I did. Listening to Manton on CoreInt and his own podcast really got me thinking.

What is a personal website? Is it a place to advertise yourself and your products? Or is it just for yourself…

For me, it is actually both.

Later this year I finally got my invite through for Micro.blog. Just logging in, seeing the simplicity and the really amazing community of people, I knew this was something special. This ultimately made me rethink my entire site and what I want to do with it. Not only that, it also enabled my deep unconscious mind to come forward in what I think a personal website should be.

For me, your very own site, should be an archive to your very own life. Like a photo album of the past that you keep around. I hope that in many years to come, I can look at my site and go through the ups and downs I went through in my lifespan.

I hope this site will outlive me, somehow, in an archive. I only know how to write software, make websites and fly shiny metal things in the air… I will never create buildings or monuments.

Wherever the digital world goes to, I hope when I retire I can look back at it all here on my very own website.

Micro.blog was a huge contributing factor to this idea and I thank Manton for creating this for everyone. Without it, my website would probably still collect dust… with nothing to show come my retirement. What can I show my daughter when she's older... I don't write books nor do I have a biography that she can pick up at the book store.

Closing thoughts

I highly recommend you check out Micro.blog. Even if you are a heavy user of Twitter or Facebook. You will be surprised at the community you will find here. Even if you don’t take part, I think Manton has really created something special and I hope the idea of owning your own content will get into more and more peoples minds. Too many big companies offer you easy and free services to extract everything that they can from you to make millions and billons of dollars with advertisers and third parties.

Micro.blog is new and different and with a, hopefully, sustainable business model it will be around for a very very very long time. And if the worst would happen… which I hope it NEVER EVER does, you will still have your very own content! Nothing lost in a service which you invested a lot of time in. Now that is truly special.

I hope we can go back to the good old days where many people blogged quality content. This is a step in the right direction. I hope also that I can make a small impact with driving this forward by keeping to write right here.

Thank you Manton and team for creating Micro.blog. It changed my life!

Quick impressions of the iPhone X

I popped into a reseller yesterday and held an iPhone X for the first time.

My first impressions of the phone:

  1. It feels big, because of the screen.
  2. Swiping up to go to the home screen felt super natural
  3. It was fast!
  4. The build quality feels amazing, like a premium product. I never felt anything like it.
  5. The black finish looks light, but I guess that resembles the space gray we are used to.
  6. The notch… didn’t notice it.
  7. It feels huge! Did I say that already?
  8. Preloaded apps, the ones from Apple, really work well with the display. UI is great!
  9. Control centre from the top right was weird at first, but got the hang of it.
  10. Stepping through options on the portrait camera always swiped me to another area for the camera. Maybe me just being lazy.

I only had 5 minutes with it, as there were others wanting to have a look. I’m pretty impressed by the new iPhone X.

Overall though, the best phone on the market today. Nothing will come close to it for a while.

If I didn’t have a rule of replacing my phone until it breaks or the OS becomes obsolete, I would get it in a heartbeat.

A week of change

This week has been somewhat strange. From a constant phone grabbing and FOMO ruling my life to absolute zero.

I never really cooked much, yet this week I did exactly that from Saturday to Wednesday. Had left overs Thursday and Friday. And Thursday and today (Friday) I baked a bread. I wouldn’t call it my second calling (My wife said that). I am really enjoying it.

My friend Chris recently sent me a thoughtful article by the Guardian called “’Our minds can be hijacked’: the tech insiders who fear a smartphone dystopia”. Read it. It’s actually what sparked my earlier article I wrote, Social distractions and addictions.

Although the Guardian article seems to stray a bit off course towards the end, it paints a powerful picture. Or at least it does for me.

I’ve been fortunate enough to go through flight training and having amazing instructors, you know who you are - and I thank you for guiding me! One skill you really get to nail is the process of watching yourself and check what you are doing. If you look inward too long exploring that nice GPS… what is going on outside? Why are you so distracted? You have to notice that and get back to doing what is most important. Flying the plane!

Immediately afterwards I pretty much deleted anything to do with ‘social’ on my phone. I still obviously use iMessage… but the conversations I have are with… well… real friends and real family that matter to me. People that bother to have my phone number and actually talk to me. A simple “follow” without not knowing more… I don’t know… seems a bit meaningless. I guess if you are interested in what the person writes, you’d like to follow to know more. But does that create a real relationship with someone? Maybe… maybe not. It depends I guess. Most likely not though.

I’m still processing all these new feelings I am experiencing so I don’t know what my conclusion will be. However, at this stage, it feels quite liberating having meaningful conversation again with friends and family.

Last Saturday, I was looking up ‘Zen Lifestyle’ on a random search. I came across this post from Zen Habits, 12 Essential Rules to Live More Like a Zen Monk. I’ve read it before, but this time it really struck a chord with me. It’s a striking article, although probably mostly common sense. Two quotes from the article that really struck me the most (Although all points covered are at the same level for me):

Do one thing at a time. This rule (and some of the others that follow) will be familiar to long-time Zen Habits readers. It’s part of my philosophy, and it’s also a part of the life of a Zen monk: single-task, don’t multi-task. When you’re pouring water, just pour water. When you’re eating, just eat. When you’re bathing, just bathe. Don’t try to knock off a few tasks while eating or bathing. Zen proverb: “When walking, walk. When eating, eat.”

And

Do less. A Zen monk doesn’t lead a lazy life: he wakes early and has a day filled with work. However, he doesn’t have an unending task list either — there are certain things he’s going to do today, and no more. If you do less, you can do those things more slowly, more completely and with more concentration. If you fill your day with tasks, you will be rushing from one thing to the next without stopping to think about what you do.

I’m not sure how to explain it, but something inside of me was just crying out that I need to act now… or be swallowed up by whatever laid ahead if I kept going with my usual routine. Waking up, checking Twitter first thing instead of saying “Good Morning” to my wife or kid or actually just getting out of bed. Having breakfast and watching TV and actually not knowing what I’m sticking in my mouth. Working during the day, loosing track checking in on social ongoings. Driving to pick up my Daughter, parking up and checking social ongoings and emails before I walked in. Going to bed, seeing my phone screen last… not my daughter’s beautiful face as I kiss her good night or my wife’s.

That is no way to live.

Immediately after I processed all that went through my head, there was a dramatic change in me. I started watching myself more and more. Actually doing one thing at a time. Trying to stop my mind wandering to another place as I was performing tasks.

I started cooking on that same day. I just wanted to “cook” and nothing more. And I did do just that. Nothing else was going on my head instead of cooking. No other thought entered my head except the meal I was cooking. Sitting down at the kitchen table and just eating and enjoying the food was absolutely liberating. I don’t think I have eaten like this in a very long time!

This week has been one of my most productive this year, although I did less than usual. Focusing on one task at a time instead of juggling three or four as I usually do.

No longer is my phone next to me when I sleep. I leave it on my desk. In fact, the desk is the place you will find it the most. I pulled out the phone a couple of times whilst being out, but 90% less than usual.

Towards the end of this week, whilst going on with my usual day, my mind came in full swing and challenged me with a lot of background chatter, thoughts coming and going. Some good, some bad and depressing. I’m unsure if I should let these feelings surface as they’ve been hidden away or if I should re-focus on the task at hand. I’ve held onto some and exploring them more.

It has only been a week (6 days) since the change but I’ve seen a massive improvement in my own happiness. Working on old lost connections with friends and family, getting work done one task at a time and having meaningful time with my own family.

There is still a lot for me to figure out, however I want to continue on this path and see where it leads me. Coming to the end of this week I am noticing old habits surfacing, but I’m doing the right thing and checking myself.

Even if you didn’t find this post interesting, I do hope, that at some level, it would inspire you to look at yourself and really think what you want in life. I can only hope you choose happiness and completeness. Not just for yourself but perhaps the essence of humanity. If that is too much to ask, perhaps look at your real family and friends. They are real people.

I want to connect with myself and I’m hopeful it will reflect in everything I do and inspire others.

Here is to the next week.

Thoughts on Wordpress as a client website building tool

I was recently listening to the excellent micro podcast by Manton ReeceTimetable, where he talked about coming back from WordCamp in San Antonio.

He quickly explained how a lot of people were talking about Wordpress as a website building tool and how it was talked about being a platform for themes and plugins, instead of more people talking about using it for blogs.

Here is the thing, I’ve started with Wordpress to create my very first client website many many years ago. Don’t get me wrong, it’s great to just get started, easy to set up and off you go. There is a reason that Wordpress runs more than 28% of all websites on this planet. That is a HUGE market share right there.

I know Wordpress, thanks to me working with it in the past, which did help me on my short stay at a digital agency. I think I was the only one that knew it well enough to help fix a few things.

A few months ago a friend asked me to create a website, which is still waiting to be signed off. He only knows Wordpress and so I offered to build it for him. I guess I didn’t touch it in a few years so it was great to get into it again. Seeing what is new and how it moved on from a few years ago.

Installing. The first thing you can do is create a ‘post’ right there and then. OK, let’s do a few pages too. That also works. Cool! Now add multiple people profiles to this page. Ermmm, ok… OH, here is a plugin that will do that. Perfect! Now I need a rotating banner for the homepage… Here you go, found a plugin. But wait, it’s injecting 20 Javascript files to my head and now the whole website is super slow. Crap! Wait… there is a plugin that fixes this, where it puts all scripts in one! Sorted. But wait… now I need to add a few other things to this page… yes, you know exactly what I’m going to say… there is a plugin for that.

Wordpress is popular and you can see why. Anyone, no matter what experience, can pick it up and create a website to their needs - within reason of course. Another attraction to Wordpress is that it’s open source, many people look for that. Even some, from experience, corporate organisation require an open source CMS… who knows why… perhaps they do it to ‘look good’.

The relative easy entry point to get a Wordpress up and running is a huge deal for people starting out. There are many organisations that specialise just on Wordpress. From design to implementation to hosting to whatever else there might be. There is no question that people make a living on the platform. Why wouldn’t you want a slice of the more than 28% of the internet?

But, with great market share, comes great responsibility. I doubt that, of the more than 28% of the web, these sites are up to date with the latest security updates. I’ve seen it with many client projects… these sites get hacked no matter what your client has set as their password. Not only that, many plugins that were there to get the job done usually don’t get updated to work with newer versions. Sites break, security holes get exposed on outdated plugins. Next your site is being used for something it was never designed for. Sending out rogue emails, without you knowing. Wordpress is huge and, unfortunately, attracts not so nice people that like to take your stuff! Rogue hackers, or whatever.

Obviously, this all depends on how things are set up. How the server is set up. How much you know what steps to take to lock down your server. If you use Wordpress.com then you’ll be OK, I’m pretty sure they have that nailed.

No system is ever truly secure, I get that. As long as you are vigilant and keep up to date you’re doing the best that can be done.

Now a client comes along and asks for a ‘custom’ website. I say custom because that’s what every single web project is. It’s a unique problem for each client. Yes, you might have two of the same type of client, but their needs are totally different. Some agencies will say this to you of course, but they probably don’t care and treat every client as their bottom line.

Out the box, Wordpress will do basic pages and posts with no problem. Heck, we even have some themes to get you straight into it. This is great! Sorted! But wait, now we need to actually build this site and add all this custom functionality. Straight away we need to essentially break the way Wordpress has been designed to work. Write more and more plugins, override and twist it to your needs. Heck we even need to hide sections so the client doesn’t screw up the site somehow.

I’m no expert on Wordpress and I don’t intend to be. I know enough to know what I’m talking about. But this is no way to work. You should never battle the CMS to bend to the needs of you or your customers. Nor should you rely on so many plugins to hack together a site! Imagine the horrible ways of impacting performance for your clients clients. I couldn’t sleep at night knowing I knowingly used a plugin that reduces page speed by 50%!

A good CMS should function to the way the client expects and it should never, ever, make your job as a developer a pure nightmare.

Every client project should be built from the ground up, adding the features that are actually needed. A CMS should, and must, be content first. Something you can build to your or your clients needs. A CMS shouldn’t need a plugin to hide areas within the admin.

I’ve been fortunate enough to see that. To seek a simpler and more efficient way of working. I don’t want to battle a CMS to the very custom needs of what I’m trying to achieve. And on top trying to teach content creators how to make changes to the site without breaking it.

I merit Wordpress for their awesome way of creating a blog site for you. I see the appeal! And at the end of the day, that is what it is designed to do. To blog. I hope that they can get back into their own roots and build an even better blogging platform going forwards.

This is only my opinion and I appreciate that many people within the community will tell me otherwise. Or perhaps not. From where I sit I don’t recommend Wordpress to be used for client projects.

“But what CMS do you recommend then”? That is a good question and I don’t want to name drop and say “this is the best”.

If you’re looking for a content first CMS, which basically starts at zero and assumes absolutely nothing about your content, I highly recommend Craft CMS. I’ve built justcode.tv with it and it just works! It works so good, I regret every single moment I tried it out with Wordpress.

Wordpress can really reel you in with its impressive user base, services and apps. But take a step back and see if this is really what you and your clients need. When your CMS is battling you all the way, stop and think if there is a better way. There usually is.

Social distractions and addictions

I would call myself a minimalist in many parts of my life, from the desk layout I write this post on, to the coding tools I use, to the selective few apps I have installed on both my Mac and iOS devices… even to the way I selectively think about if I really need to buy that T-shirt.

Yet, with all these things, I found that I keep getting distracted and addicted by something everyone seems to do these days, the norm for many people. Yes, I am talking about social networks. Like some, I do not have a Facebook account, which suits me as it doesn’t give me value. Twitter, however, has always been close to my heart. Not only was it full of great people, but also had an abundance of people in the tech circle that I enjoy following.

Earlier this year I started an experiment with fully deleting any sort of Twitter client on my iOS devices. I kept it on the Mac, as I wouldn’t be able to reach it when I was out and about or just randomly pull out the phone to check on whatever wasn’t important . In my eyes this was OK. In January, I used a service to delete all my past tweets. Not many, around 800 or so. I wanted a clean start. The better me.


Before I move on, those few months, after the initial shock to my system of not getting distracted by the social noise, I managed to prototype a few apps, release a small web site called justcode.tvand ship more client projects then I thought I could. You’re probably thinking that I would of course say this… why wouldn’t I. I’m proud I managed to squeeze in so much in a few months. If I was stuck behind a desk, in an office with a death sentence 9 to 5 job, this would have taken me probably the whole year!


I kept my detox going for a few months until around the middle of summer, by which time I decided that I’ll install a Twitter client just in case someone tweets me so I can reply. My Twitter account was set to private as I really wasn’t interested in gaining followers. I also just wanted to check in a few times during the Apple conferences, so I am up to speed with what everyone had to say.

With the conferences out the way, I found myself following a few more people, especially Apple employees. Why not, they have value to add to my interest.

Unfortunately, I started returning every day to Twitter. First it was every evening after my daughter went to bed. Followed by every morning when I woke up. Which then mutated itself to every morning, when I had my coffee, when I finished my shower, when I gave my daughter her breakfast, before we set off to Kindergarten, sitting at my desk, working and checking constantly, going to bed saying goodnight to my wife and once again checking my phone. Jeez, what was happening to me?

I got addicted to absolutely nothing. Nothing. Yet here I am, just returning to be up-to-date on nothing.

Everything I was learning through Twitter I could learn by looking at the documentation and listening to Podcasts. In fact, but too far for this conversation, Podcasts have a much deeper conversation for these kind of things than 140 characters at a time to make it meaningful. Podcasts are also less micro attention grabbing, which frees you up to continue your day to day chores. I don’t have to touch my phone all the time, nor will I be faced with the endless timeline with, what seems to be the case these days, pure garbage.

Ultimately I recognised this, the past few weeks. It took away valuable time from my family and giving them my attention, on top, my ability to work without distractions was severely impacted. What took me a few hours would drag out over a week or so. Not great. Depressing.

Recognising you are addicted to being in the loop on Twitter, or whatever other social network, is the first step to stop and think of what is happening. For some people, it is their life blood, but for others like me not. Calling it an addiction is the best word to describe it. It is nothing else. Some people might find this hard to comprehend, others not… I hope.

I have since put steps into place to not rely on a social network at all. There is another post coming up at some stage for what I am planning. I think a social network should not be the place for you to spend your time. Maybe if you have no one in your life… perhaps. Even then, there are many beautiful things in life… right in front of your doorstep.

Noticing other people out in the world being constantly tied to their phones, talking to their family whilst out for dinner with their heads in their phone… that is just wrong. I see a lot of younger folks do this. Scrambling for the closest electricity outlet to charge their phones… to then constantly check that app and posting whatever meaningless noise that contributes nothing. A service that one day will end and suck out all your data and lifeblood.

I am happy I can have a proper outing with my family without the phone as the dominant thing ruling my day to day. I am there when needed at full attention. I don’t push away my daughter because I am reading the latest nothing. I don’t take that picture of that perfect moment for my followers to see. No, I enjoy the moment.

Everything the past few weeks is making me fundamentally change of how I think about creating content, great apps and websites. I am scared of the impact, but I am determined to pull through with it. From the way I go forward creating less distracting apps and other services to the way I run this ship.

I no longer have Twitter on my phone, stopped the noise from emails and other notifications and set aside my phone every night on my desk and not next to my bed.

My closing thought on all of this… everything in small doses is good, but when you take away time from your family and friends then there is something fundamentally broken. I am old enough to remember the days before the smartphone. I hope that we, as a humankind, can find a balance to use technology to our advantage and not get dumber as the generations pass.

When we die, no one will remember us for what we posted on our social network. It is your closest family that will care the most for the great things you have done for them and in your community. Being addicted to your digital self is not going to come up here because it is meaningless. It is nothing. It is purely a distraction and an outright addiction.

Release notes: Sleepy Eyes v2.7

With iOS 11 now being generally available, I’ve released an update to Sleepy Eyes (version 2.7) to fix a few bugs, add a few tweaks and changed that icon.

Changes

  • New app icon. I think you’re going to love it. The old one was… well… old.
  • Bolder fonts! To boldly go where many fonts have gone before. OK, that was bad.
  • iOS 11 fixes and improvements. Boring.
  • Thanks to iOS 11 you can now pause and un-pause the app, when playing, from your Apple Watch. Yes, I was surprised to see it. Love it!
  • Fixed some weirdness that would occur on the iPad. Also boring… yet satisfying to fix… finally.
  • Made the app size smaller by removing a couple of things and making optimisations. Well, it optimised itself pretty well to be honest!
  • If you’ve used the app for a while, after updating, it may or may not ask you to leave a review. Please do :) Don’t worry, nothing pesky there!

Naming change

The app used to have ‘Baby Soother’ at the end, I now removed that.

After reading reviews and getting feedback it became clear that more and more people are using the app for themselves. How could I be so short sighted? Anyway, keeping it minimal. I’ve got some nice updates for version 3 planned to make that even more universal.

Update on version 3:

In the last release notes I mentioned that I will stop working on version 2 of the app.

I am working on two new apps which are coming soon, when they are ready. I’ll be announcing more soon on those. Once they are complete I’ll be heading back around to version 3 of the app.

Happy calming and sleeping!

Doubling down on quality

With WWDC now at an end, but still feeling the buzz, I came away with a feeling of needing to do more. There was a feeling of emptiness in some parts of my app development.

Apple are known for their high quality apps, hardware and operating systems. Everything they do from shipping a product to you is first class.

I’ve been developing apps for a while now but came to realise that I tend to concentrate on one thing and do the feature well. That ultimately gets the job done but there were gaps of where I could have done much better.

Now is the right time to double down on the quality of all apps I make. From concept to finished product. I want to delight my users even more and think of the overall picture across all devices and platforms when I can.

No more one design for iPhone and make it adapt to iPads. No, this will be thought about at design phase. Re-iterated as I built the app to make it even better.

The quality of the App Store is dramatically increasing with iOS11. Promotional images and everything around it must be much better than I do now. I want my customers to feel they have a high quality and well thought about product.

I’m excited for this new chapter. You only live once so let’s make it count. Even if I fail with an app, it’s a great learning experience and nothing is wasted except maybe a teardrop.

Here is to better quality apps no matter what!

Thoughts on increased app sizes

There is an interesting article up on MacStories that talks about a report on how app size has dramatically increased, especially for the most popular apps, in the past few year.

Being an indie developer that strives for minimum code, sweating the details and rewriting things to make my apps as small as possible, this is unacceptable. Heck, I even ditched using the Electron framework for an app and instead used native code. That alone shaved 100MB off the project. 100MB! Saved!

It’s terrible to know that these big corporations and maybe less experienced developers just ‘do’ without actually thinking about it or about the precious megabytes. Yes, there might be a case where it is totally justified, like in a game. But please, for a social network or anything less demanding?

There are more forces at work of course, like behind the scenes A/B split testing - basically shipping two or three apps with the same code in one app. Not that you will ever use all three at once, but they’ll target a subset of users and track how you behave on an idea for their UI.

If your business relies on ‘in-app’ A/B split testing, make stuff re-usable from the core of the app. Make it the first thing you code. Keep it that way. Why does the user have to suffer?

I believe you should stick to what you think works and ship it. See if your user base likes it. If not, adjust. Don’t give a choice of 3, 4, 5 or more in one app - which the user can’t even choose.

You alone have to lead the way. Delight and surprise your users.

If you have a boss breathing down your neck to incorporate a ‘big new UI’ to a subset of users but having to bundle several apps in the same app bundle… quit! This is not right. One day it will be ‘one phone, one app’ if it goes on. Space is precious, why waste it? Apple give you great tools to make you apps as small as possible.

And to be totally cheesy… Fight for the user!

I couldn’t sleep at night knowing that my apps are sub-par and that my users are suffering because I decided to not care about what I put in my apps.

Close