A lot has changed since my last post. I've moved to Italy (awesome!) and started working here. I love Italy, by far the most beautiful place I've ever lived. The food is awesome, the wine and beer is really good (and cheap), and it has already been a life changing experience. I can't wait to do some travelling and see the as much of Italy and Europe as I can.
"The FCC proposes buying back spectrum from TV stations that would allow for what theWashington Post is dubbing "super wi-fi," as the commission wants to cover the country with wide-ranging, highly-penetrative networks. Essentially, you can imagine the proposal as covering a majority of the country with open-access data networks, similar to cell networks now, that your car, tablet, or even phone could connect to. That means no one is ever disconnected, and some folks–especially light users and the poor–could likely ditch regular Internet and cell plans altogether."
One of my concerns about this is government control. If the FCC was serious about this they would remove fees charged to ISPs and give them spectrum instead of charging millions of dollars for it. I'm all for public Wi-Fi, but only if there is a barrier between the users and government censorship or snooping - although I realize that barrier is paper thin.
I've been working on some updates for the Blocks app in Clay. I've added a new table for block instances in block groups and added JQuery UI drag and drop for sorting the blocks from the Dashboard. This isn't possible from the page displaying the blocks yet, but that is in the works as well. I'm also adding more customization options to blocks display and divorcing individual block instances from a specific block group - which makes it possible to have a single block instance in multiple block groups. Each block has overlapping options that allow you to customize the title, template, and features enabled spanning multiple block groups, without creating copies of the same block instance. The block content and unique name will remain the same.
The updates havent been pushed to GitHub yet, as some features arent complete and I dont currently have an unstable branch on GitHub. I expect to finish the updates in the next couple of days and push them to the repo.
I've decided, mostly by convenience, to start doing pro bono projects again. I used to have 2 or 3 pro bono projects a year, mostly church web sites and things like that. I moved away from that when I started working on some projects that would end up becoming Clay.
Today a friend, I haven't seen in over a year, asked if I would build a web site for his new photography and design company. We discussed what he wanted and when we got to the prices I couldn't put a price on the project. It's going to be a lot of work, but I've mentioned to him in the past I would build him a web site to host his photography gallery. So, pro bono project #1 for 2013 has begun.
I'm not going into details about his company or what we're building, yet, but I will keep you updated on the progress and eventually post a link to the project. I have some fairly cutting edge ideas I want to introduce in this project, so it should be fun.
I committed a lot of new code to the Clay repo on github. I pushed the updates I talked about the other day, as well as an alpha version of an Eve Online app I've been working on.
There are also some bug fixes: App manager now correctly verifies upgrades are available; ClayDB now fully supports multiple database connection resources. There was something else, but I can't think of what it was at the moment.
I've been thinking a lot about how I want to do community-building apps in Clay. I want to begin building a message board system, but I don't want it to be exactly like phpBB or anything out there right now. I had been thinking of doing an integration, but it would probably just end up as a fork as it's hard to keep up with another development team like that (I've never seen an integration strategy work unless there were developers dedicated just to that project). I've also considered a bridge application that just hooks the sessions together, but then you have to worry about the user databases being synced. So, I'm going to do my own message board system. I think my primary goals for it will be simplicity in platform, but powerful on the addon side. I'm not all that concerned about the way it looks, because Clay's template system is entirely customizable. I also want to focus on real-time updates and building it into as much a chat room as it is an archiving forum.
I'm going to start with a comments system for the Blog app and work from there. I have some code from a while back that I never finished that should be a decent starting point. It uses ClayDo-style objects that I think will need a few tweaks to be a full forum, but will lead to something easier to maintain than many of the comments systems I've worked with (read: cried about) in the past. I do not want to use placeholders and things like that in my implementation. Sure, they may make sorting and things like that easier, but I think it's just a mess to work with.
Sorry for the long gap in posts, I've been pretty busy lately. I'm preparing for a big move and dealing with all of the things that go along with that on top of work. I have worked on Clay some, mostly on the app side.
I've been developing an Eve Online application that uses it's API and database dump to do some pretty cool things. It's built on Clay and will be included in the Clay repo, along with a couple of related Libraries. Eventually I'll move it to it's own repo, but at the moment I think it has a lot of good example code.
While working on the Eve app, I've also updated several apps and libraries, including some bug fixes. I'll be pushing all of the changes soon, along with the Eve app. I mainly am trying to make sure there are no security issues in the Eve app before I begin pushing it. More to come before another quiet time during my move.
I've integrated Twitter's Bootstrap quite a bit, but most of the changes are still being used as template overrides in the new Vision theme. I will probably pull out some of the old themes that aren't complete/compatible with the current Clay requirements and rebuild them to push back out. I plan to update the Simplestyle_4 theme (the current theme here), so this one shouldn't get pulled out of the repo.
I've been working on a new Profiles app, which will allow users to build profiles in (my) stye of Facebook, with some strong customization features planned in the future. It is mostly prototyping at this point. It will probably stay kind of lean until I implement Objects, my next topic.
I've also been prototyping the Objects app. Objects is a mix of Hooks (which aren't fully implemented), ClayDo, and Services. The Objects app will likely make some cases of Services obsolete. ClayDo and Services were actually born from the idea to create the Objects app, but I needed to test the implementation in pieces to figure out the best way to do it. Services are basically a way to group types of functionality together, such as extending the Dashboard or adding a Block Type. ClayDO is an object interface for creating containers and items within the containers, such as a form with each input element an item in the form container. Those two represent 2 sides of a normal web site's operation, Services are output and ClayDO is input (although there is no hard restriction that enforces that as a requirement).
The idea that spawned ClayDO and Services, Objects, provides an interface to combine different types of containers into an object. The object then, generally, has 3 channels: 1 for data input, 1 for data relationships, and last for data ouput and manipulation. All of the channels are tied together and are simply different faces of the same object. In some cases data input and relationships may use the same channel, such as external data sources (XML, RSS, JSON). The channels depend upon how the object's properties are defined and what type of object is being implemented. An object could just be a form that takes input and the application handles the data relationships and output. It could also just be a display container that is used to hook in data from other objects and display them. It all depends on how the object is defined.
So what happens to Services, ClayDO, and (the unfinished) Hooks? They will stay, but maybe tweaked a little. Hooks will likely be used to tie the Objects together. ClayDO actually stands for Clay Data Objects and will be the base objects for containers. And what makes this different from other Dynamic Data implementations? The most obvious advantage will be the way Hooks are integrated directly into the Objects, but the ability to override templates used by Objects will be a big difference as well. Finally, am I rewriting everything again? No, not all at once anyway. There will be tweaks here and there to prevent too much overlap in functionality, but I don't plan on rewriting the Dashboard or anything like that yet. The Dashboard will probably stay simple and be replaced later on with a more advanced Dashboard that uses Objects as a base.
As I mentioned recently, I will be moving in the next few months (hopefully) and that will halt development for at least a month or maybe two. I'm trying to get as much done until then as I can.
I will be updating this site with the Vision theme, possibly next week, and will then focus on the Objects app and moving some themes back into compatibility. I've done a lot of work on Clay over the last month or so and I'm really happy with the progress it's made lately. I'll try to keep it moving forward while I can.