If you have followed this blog over the years you know I am always changing something. So this may not surprise you that I have switched blog platforms, again. I had been using Tumblr which is perfect for my normal posting routine. Sharing quick links, photos, quotes, and occasional articles. As much as I liked Tumblr some things just irked me.
They control your data
No easy way of setting up redirects in bulk
Mainly the control of my data is what I didn’t like. I want all my content stored where I can do what I want with it. Of course, they do offer an API but what if one day they stop providing it?
I did have a short stint of using kudos which is a flat file Laravel app created by Ian Landsman and it worked great for me. Except for one major drawback. You still have to open your editor and write the post and then push. Just too much work for me and my number of posts went down considerably. I guess I am just lazy 🙂
A few weeks ago I came across a new cms named statamic and quickly applied for the beta. I ended up getting just before it was officially released but had enough time to play with it and enjoy how they set up the system. Everything is stored as flat files just like the jekyl flavor. But with one huge difference and that is the ability to post from an admin section. Which still just creates flat files.
So now I can post quickly from the admin and later on when I feel like it sync with git so I have a full off site backup of all my posts. Even though the cms is pretty basic the possibilities are pretty much limitless with what you can do with it. For instance, I have duplicated my whole Tumblr setup with it. Now I have all four post types and it really wasn’t much work. Just a few hours over two evenings.
Statamic is commercial but the pricing is very fair and I don’t mind paying for something top quality with support. All my little questions have been answered quickly and with a good answer. So yes I fully endorse what they are doing and excited to see them grow.
I will miss the Tumblr followers, but I always have an rss feed you can use to keep up to date 😉
Another negative is hosting. With Tumblr it is free and well you can’t beat free. I tried aws but it was to expensive for me. I am outside of my year free micro and it seemed like a micro was running around $30 a month. I started researching other hosting options and was going to go with a shared system but meh. I would rather have full access to do whatever I want. After browsing what felt like weeks I settled on Linode and was lucky enough to get in when they offered a $100 credit. Woot. 🙂
So now this site is running on Linode with Ubuntu, Nginx, PHP5-fpm, and apc. All data is stored in a private git repo at BitBucket.
By default CodeIgniter is a very secure framework and it also does a lot behind the scenes to help you out. I was recently contracted to look over a CodeIgniter application that was constantly getting hacked. So in light of what I seen I want to share some common pitfalls you need to avoid.
Use Active Record! You should “almost” never write your queries manually.
If you must write a query without active record be sure everything is escaped properly. $this->db->escape()
Validate user input! CI has $this->input->post(), $this->input->get_post() and you should use those.
Validate file uploads and use the upload library.
Use the framework tools. It comes with tons of libraries and helpers that are designed to help you with common tasks. There is no reason to write
your own if already accomplishes what you need.
Yes I know every php developer should know about these but some people still just haven’t gotten the memo. So spread the word, write secure apps, and make the world a better place.
Doug Grubba and I decided to carpool down since Atlanta1 is about 4 hours from Charlotte. I will be totally honest I really didn’t have high hopes on how the meetup would go. I have been to some local meetups and I was just not that impressed. Low turnout, weird locations, etc. But Chris Spruck and the ATL guys are top notch. They had a lot of great sponsors, food provided, free prizes, and above all a nice turn out. (I estimated about 50 people).
After the meeting a few of us went over to local pizza shop and talked about all sorts of web topics and where our next stop in hotlanta should be.2
I had a wonderful time and wished I lived closer so I could attend more of their meetups. They get two thumbs up from me and hopefully I will get to visit again.
In all my work history I have always had a 5 day work week. Either Monday through Friday in the IT field or Tuesday through Saturday in retail. I am working at UserScape now and we started summer hours two weeks ago. Which basically means we get half the day off Friday.
Honestly going in to the first week I was a little worried I wouldn’t get as much accomplished as I wanted. Now that we have passed our second week I think I get more done on Friday than some of the other days. My mind shifts from thinking about what I can get done by the end of the day, to what can I get done in the next 20 mins. Friday mornings feel like a sprint and I am focused on getting as much done as possible. This means I take away as many distractions as I can. (rss, email, im, etc)
Not only do I feel very refreshed coming into Monday and ready to jump in but that extra time with the family is awesome. I don’t know about your weekends but mine are so crammed full of activities it goes by really really quickly.
If you are an employer I would recommend you give something like this a try. You may find your employee moral improves and more things get done in less time.
A comment on Reddit (by raygundan) points out an interesting technique Apple uses on their iOS platform:
when you switch apps, the device saves a screenshot of what the last screen looks like for that app so that when you switch back again, that saved screenshot is the first thing you see. This is done to buy time for the app to fully load. Instead of showing you a blank screen or a loading screen, the device shows you a screenshot of the app. This technique works because the time it takes to load the rest of the app isn’t very long anyway, so a second of showing a screenshot that the user cannot interact with doesn’t cause confusion. What it does do is make it looks as if the app has loaded instantly, which results in a very good experience for the user.
I think this is a brilliant idea. It seems we live in a world full of loading gifs and I appreciate fine details like this. The fine details that you don’t see is the difference between mediocre and extraordinary.