Ok, so I went ahead and added a database and implemented some sort of sync between said database and my Dropbox folder. It's not perfect, but it works for me.
I created a Posts model and configured the DataMapper:
I tried several text editors for the iPad so far and none really nailed it. Until now. After reading Viticci's review of Editorial, even knowing I won't make much use of it, I still went ahead and bought it. The fact that I had my iMac in service for a few days might have been a huge reason I was enjoying this, but I was enjoying it so much, that I actually went ahead and imported several workflows and created a few of my own and drafted a couple of blog posts for when I had my i
Implementing this, per se, is no problem. But, kind of the same as recurring events, there's no proper way of handling this feature and I'll give a small example below.
Say you have expenses laid out for the next 6 months: how should you enter the income? Manually calculating 6*monthly income? Or just for the next month? If the latter, subtracting all expenses from that doesn't make much sense, and the former isn't too reliable, since your income might vary from month to month. What about adding a new expense that's due in 8 months, but you entered the income for 6? Go and manually update the total? What if you forget? Etc...
Update, 01 Nov 2014: Implemented a custom recurring system, explained here. Not perfect, but close enough to get my approval to be implemented.*
There are two problems about this and I'll try to explain them the best I can.
==First==: Apple provides a way to implement recurring reminders, but I use it for the weekly/daily/hourly setting. Manually creating a separate system for recurring events is easy; the problem is that this method is not reliable.
I know there are tools for this out there, but some aren't reliable and some are $30, albeit with more options and a GUI. But if you want something simple, just for searching, deleting and seeing at a glance what @2x/@1x assets are missing, this should do the trick.
You can find the repo here.
I recently realized that if I were to have two posts on the same day, they would be ordered alphabetically, not by time, because the filename has no time reference. I wouldn't be able to use file creation time either, because the creation time of all files on the server is the same: the git push time.
I did have a time references inside files, but to actually check what files are on the same date, then order just these by said time, while keeping to order the rest, independently, would have been a pain to implement, at least to the simple, albeit ugly, solution: add a time component to filenames.
The modifications were minimal:
I'm pleased to announce a brand new, beautiful and minimalist financing app, Expenses Planner: keeps track and reminds you of your upcoming expenses and due payments. I just submitted it for review, meaning it's coming to an App Store near you in two weeks time.
==Hooray!==
I finally got around and implemented the RSS feed. Wasn't as hard as I expected; piss easy, actually (check the end for the updated version):
When I moved to a git-based blog, I knew I had no way to edit published posts that easily, like I had in WordPress. And, boy, did I use to edit and re-edit a post after I published it. Sure, I can commit over and over to edit stuff, but that's not great practice at all.
But then it struck me: ==this is actually a good thing==. I will have to focus better and pay more attention, resulting in small, but steady improvement over time. Last night, for example, I did a lot of commits just to edit some silly mistakes and silly typos; this is something I will force myself not to repeat.
Well, it's done. Thanks to the desire to publish when mobile, I had to implement some sort of Dropbox sync, which forced me to implement a database for a better user experience than handling files directly, which, lastly, gave me the opportunity to implement search: a feature that was ==a lot== easier to implement than I've expected: 30 lines of code.
The search form:
<form class="search" action="/search" method="get">
<input type="text" class="search" name="query" size="15" maxlength="20" placeholder="Search..."/>
</form>Sinatra's route block: