Six

Posted on the 25/11/2011 at 02:42 PM

The last year seems to have zoomed by. It only just occurred to me a few days ago that it is going to be 6 years since I started M Cubed. That makes it a quarter of my life. So what exactly did I do with myself the past year and what do I plan to do with M Cubed's 6th year?


Things Went Terribly…

The past few months I've constantly had doubts about M Cubed and myself as a software developer. I've been feeling like I've achieved nothing the past few years since I went full time with M Cubed. Sales that were initially heading in a positive direction have somewhat stagnated. They're enough for me to live off, but only because I moved back with my parents after university.

I've felt like progress has been slow. This year has been dominated by Lighthouse Keeper 2. It has taken 9 months to create, but probably should have been more like 6 or 7. I wanted to be so much further along with various applications and be getting releases out more frequently. But that hasn't happened.

And on top of all that has been the crisis of confidence in myself as a software developer. I've been programming for 8 years now, but recently I've had many moments where I feel like I know absolutely nothing about anything to do with software development. I've felt like I don't know how to design software, to write good code, to even solve trivial problems. I've also felt like I work incredibly slowly, at least compared to the speed of some other developers I know.


…Or So I Thought

Given all this context, when I looked back at last year's post I chucked when I saw what I said I'd like to achieve. I wanted to get Code Collector Pro 1.5, Storyboards 1.1 and Lighthouse Keeper 1.2 out. "What a ridiculous and naive goal," I thought, "I haven't done any of that". After a bit more thought though, it dawned on me that I did actually do all of that (well, almost). Code Collector Pro 1.5 and Storyboards 1.1 were both released this year. Lighthouse Keeper 1.2 ended up morphing into 2.0 and will hopefully be released in early december.

Whenever I've looked back at the past 2 years I've focused so much on what I haven't done and where I'm not. It was only the past few days, when I've been wondering what to write for this year's post, that I've thought about what I have actually achieved.

First and foremost, I'm writing software full time and am able to make some sort of living off that. Now granted it's a somewhat cheap living, without my own place or any exotic holidays, but I can afford the occasional game or gadget to keep me happy. But the thing is, many people never even get to this stage, so I have a lot to be thankful for. I may have technically been doing this 6 years, but 4 of those were part time, as more of a hobby than anything. In reality I'm still getting started.

Lighthouse Keeper 2 is also a great example of how much I've improved the past 12-18 months. It is by no means perfect (is any software?) but it is by far the best piece of software I've written to date. It is powerful, it is well designed, it looks great. On top of this the code is pretty good too. I spent a lot of time figuring out how things should work early on, which led to slow progress. But in the latter stages of development I was constantly surprising myself with how easy I was finding it to add features. I'd add something and it would just work with everything else. I'm incredibly proud of myself for that.


Learning The Tools Of The Trade

I've also learned a LOT this past year. I've gone much deeper into how my tools work. I've pushed myself to learn more and more about Xcode, which has not only helped me develop software more easily, but also let me write my reviews whenever each new version comes out. I know more about how to effectively debug my software which has helped find bugs much faster.

Testing has always been a thorn in my side. I've always done it manually. There have been a few bits of code I've automated the testing for, but those tests were rarely run. I've always put off automating it all, partly due to laziness, partly due to "more urgent" matters, partly due to Xcode 3 being rather crap in this regard. Mostly though it was because I found it such a pain.

So the past few years I've been finding ways to reduce the pain to a point where I write more tests. Improving the quality of my code has helped a lot, but I've also learned the value of pragmatism. I found a lot of stuff I needed for testing I didn't need for shipping code and so it was just make my code messier and harder to read. So I found ways to allow a class to be easily testable while maintaining clean, elegant code for shipping (while also having the benefit of points of extensibility down the line if I ever need it). And while its benefits may be questionable, tracking my test coverage has helped spur me on by giving me some measurable sign of progress.

I've also finally set up a continuous integration system. I've dabbled with it before but given my aforementioned aversion to writing automated tests I didn't see the use. Now granted the majority of errors the CI system has caught so far have been build issues that only affected itself, but the few times it has caught a failed test has helped. And being tied into my source control system means that it always runs.

Another area I've looked to improve is documentation. I've always been fairly reasonable about commenting my code, but I'm trying to take this a step further, but extensively commenting everything, while also writing higher level documentation to help me see how the various components fit together.

And I've become much more proficient at scripting, letting me automate various other parts of my system or extend my tools with additional functionality.


For the Future

So what will the future bring? Well the immediate future is to get Lighthouse Keeper 2 out. I'll also be spending all of December on those jobs I've kept putting off. The M Cubed website needs a complete re-write, which is also a good opportunity to finally sit down and properly learn Rails. I've got a HUGE amount of code I'd like to finally open source, including many internal frameworks and utility apps I use. I also started work on improving the Appledoc documentation generator, as well as writing a UI testing system for Mac apps, so I'd like to get those finished. I've always felt guilty working on such projects instead of apps, even though I know they'll help me long term, so I'm glad to just dedicate a month to them.

For 2012 I want to get major new versions of Syllabus, Storyboards and CCP out. These will, like Lighthouse Keeper 2, allow me to prepare for the future. They will finally allow me to reach the fabled land of "smaller, more frequent releases" that I talked about last year by cleaning up the source based and structuring it in a way that lets me add features and fix bugs faster. Hopefully I'll also be able to get some of these smaller releases out as well, but I suspect that a lot of my time will be taken up by these 3 big releases.

I also want to continue with my learning. I'd like to explore further into Instruments, which is seen as a mystical land by many, as well as give JetBrains' AppCode a try for a month (and write a review for it like my Xcode reviews). I've also reached the point where I'm confident in doing a lot of design work by myself, but I don't have enough knowledge of the theory behind it, so I'll be spending time doing research there.

A friend has convinced me that I should try to adopt agile development practices. So in 2012 I'm planning to take a proper stab at learning them and see what can apply to my situation. One of my big problems at the moment is a lack of structure in how I develop software, so hopefully a bit more structure will help me get releases out quicker, while also making sure I don't forget many of the ancillary things.

And finally, I'm going to commit to doing some contracting over the next year. I'm hoping to dedicate 10-15 hours a week to it, so it is a significant part of my week without taking it over. Part of the reason for this is simply to get some more money coming in so I can invest it in improving my apps further. But I've also had little experience with working with others the past 2 years. I haven't worked in a team, nor written software where the requirements weren't set by myself since I left university. I've been getting very rusty in this regard and it has been impacting my apps somewhat.


That's a rather long and detailed description of my goals for the next year compared to what I've written in previous years. But the thing I've realised most the past few days is that I can't just measure myself by how well I'm doing financially or how many software releases I have. There are other areas such as what I learn, that are just as important and where I've made a lot of progress. Whether I achieve all I've set out to do, we'll see in 12 months time. All I know is that for most of 2011 I've been in a slump, with little confidence in myself and no idea what the future will hold. Writing this post though, has given me new life and a similar eagerness to what I felt when I first started in this industry. Here's to year 7 of M Cubed Software!



Comments (3)




Lighthouse Keeper Connection Issues

Posted on the 25/04/2011 at 03:37 PM

Update: It seems the folks over at ENTP have fixed the SSL certificate, you should be ok to revert your settings.

You may be noticing connection issues with Lighthouse Keeper today, with it not downloading updates or letting you edit anything. It seems Lighthouse's SSL certificate has expired. This will likely be fixed some time soon, but in the mean time you probably want to keep using Lighthouse Keeper. Here's a step-by-step guide to getting around the issue.

1. Visit your Lighthouse account in the browser.

2. You should be presented with a dialogue like the one below. Click the "Show Certificate" button

3. In the bottom panel there should be a heading called "Trust" with a disclosure triangle next to it. Click on this

4. There will be 3 pop up buttons appear. Change the one labelled "Secure Sockets Layer (SSL)" to "Always Trust".

5. Click continue. When prompted, enter your keychain password.

You should now be able to use Lighthouse Keeper without any issues as these changes work across the whole of your OS, not just your browser. You may want to change this value back after Lighthouse have fixed it. In order to do that, open Keychain Access, click on the Certificates category on the left, search for a certificate called *.lighthouseapp.com (it should have + next to its icon). Once found click the i button and perform steps 3 and 4 in the window that pops up, except change the pop up back to "no value specified". Close the window, enter your keychain password and everything should be back to normal.



Comments (1)




Code Collector Pro 1.5

Posted on the 22/03/2011 at 12:31 PM

It has taken a while (I'd hoped to have this out last year), but Code Collector Pro 1.5 is now out. The main focus of 1.5 has been improving existing features rather than adding new ones. The two big improvements are to syntax colouring and to import/export.

The syntax colouring was actually added in CCP 1.4.4 as a hidden feature, but it is now enabled by default. You can find out about the improvements here.

The import and export functionality is a massive improvement. Previously you could import or export snippets or export your library as plain text. You can still do these but there are some major improvements. For starters, you can now import your library from Coda, Snippet, Snippets or TextExpander if you have been using one of those apps. You can also export your library to XML, which unlike the plain text format can be re-imported, making it highly useful for backups.


Universal Snippet Format

When importing and exporting snippets, Code Collector Pro 1.5 uses a new format. It has the same .snippet extension as previous versions of Code Collector Pro, but it is designed to be a universal format for transferring snippets. The format has been developed with the developers of both Snippets and CodeBox. Code Collector Pro is the first to implement the format, but hopefully over the coming months you'll also see support in both Snippets and CodeBox.

We really want to push this as a universal format, and to help with that I've published the source for the parsing framework to Github so that others can easily add it to their Cocoa apps. The format is simply XML so could also potentially be used by web APIs for sending snippet data. I'll be posting full information about the spec online as and when I find the time.


Extra Goodies

There are also some extra improvements that have been added. The first is that the line number size now grows and shrinks with the text size. It is a minor improvement, but one that has been requested by quite a few people.

The other improvement is one that has been asked for by a lot of people, but it isn't recommended so is a bit hidden. You can now change the location CCP looks for your library file. By using the following command in the terminal you can change it to anywhere on your system (change the path at the end as appropriate):

defaults write com.mcubedsw.codecollectorpro M3DatabasePath -string /path/to/database.sql

CCP won't transfer the library file to the new location, and only loads the path on launch, so if you want to move an existing library I recommend quitting CCP, moving the file using the finder, running the above command and then launching CCP again.


App Store Availability

Lastly, Code Collector Pro 1.5 will be the first M Cubed app in the App Store. It hasn't yet been submitted as I wanted to get 1.5 finalised out to existing customers before focusing on readying it for the App Store. I'm hoping I can get it submitted sometime next week, after which it is in Apple's hands as to when it will be approved.



Comments (5)




5 years, 5 apps

Posted on the 26/11/2010 at 05:55 PM

It's that time of year again to write the M Cubed Birthday Year-In-Review Extravaganza™ post (albeit one day late). So what happen with M Cubed over the past 12 months and what would I like to have happen over the next 12 months


The Barren Spell

I had hoped that this year would have been the most productive in M Cubed's history. Sadly barring this past week it has ended up the worst. Prior to this week there had just been two major updates: Minim 2.0 and Code Collector Pro 1.4. But those both happened prior to April. From April to November there wasn't a single major release of any product and it is all down to the iPad.

After releasing Code Collector Pro 1.4 I started work on Lighthouse Keeper 1.2. Sadly this work was interrupted by the release of the iPad. I had a plan to write an iPad app and set to work designing it. It was going to be a whiteboarding app and it was going to be great. Except it didn't really work well as an idea, so I then moved onto a notebook app. I designed it and even started coding, but it was a pain to do, so I redesigned it. And I started coding this 3rd design, but again it was awkward. So then I focused on an app that was more a collection of lose papers.

But again the idea didn't go too far. Then I finally had an epiphany. The idea for the iPad app had initially come from that of an app I'd be planning for the Mac. It would be a sort of interactive storyboarding app, letting you storyboard almost anything. So I decided to create a storyboarding app for iPad.

Unfortunately by now it was July so I'd wasted over 3 months on failed attempts. So I set to work straight away, planning, designing and coding. Features were planned and many cut all in the effort to make 1.0 as soon as possible. Finally on Monday, nearly 8 months after I decided to make an iPad app, Storyboards was released.

Sales have been going well, the best of any new M Cubed app. Sadly the feedback hasn't been quite as good. The reviews largely focus on how little it seems to do for the price. And to be frank I do agree with them, but I had to cut features out to release on time, features that will, over the coming 12-18 months make their way back in.


Indecision

The big issue this year has been indecision and bad decisions. I've changed my mind too much and lost a lot of time due to it. About a month prior to the release of Storyboards I realised that I should make things work differently to allow for more flexibility in the future, and I cam very close to re-doing large parts of the app.

Thankfully, I've learned my lesson. I decided that 1.0 would ship as is and I can gradually change things over future versions. Sure it would be underpowered and not as flexible a tool as I wanted, but it would be released, earning money and generating feedback. And I could start work on other stuff.


Acquisition

Not too long ago I saw a tweet from a friend on Twitter. He was looking to sell his apps off as he didn't have time for them as well as other things in his life. I jumped at the chance to gain another app, especially one with lots of future potential and so we started talking. Yesterday the announcement was made public and Syllabus became M Cubed app number 5 (technically not the 5th we've ever had but the 5th app we currently sell).


Scaling Back

There has also been some scaling back this year at M Cubed. Fabio left for other things taking the employee count down to "just me" again. As such M Cubed has also stopped offering any design services and I'm focusing purely on writing apps.


Future Plans

So what are the future plans? Well for the next 6 months I'd like to try and get Lighthouse Keeper 1.2, Storyboards 1.1 and Code Collector Pro 1.5 out. Lighthouse Keeper 1.2 will be the last large update I'll do for a long while. All future updates will have at most one big new feature or two medium new features but no more. "Smaller, more frequent releases" is the mantra for 2011. Hopefully I can stick to it, but we'll have to see this time next year when I'm writing a post for M Cubed's 6th birthday.



Comments (0)




Page 1 of 27 pages  1 2 3 >  Last »



Copyright © 2006-2012 M Cubed Software