08 Jan 13
17 Oct 12
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.
11 Oct 12
Being a tech geek that normally wishes for something that doesn't exist, instead of actually buying all of the new tech I can find, I want Apple to build an iPhone Nano. I receivied an email from Apple promoting the new iPods today. They look awesome. But instead of making me want a new iPod, it made me wish for a smaller iPhone. I don't have an iPhone, but an iPhone Nano would be perfect for someone like me that doesn't care for all of the power of today's smart phones.
04 Oct 12
I've been looking at Twitter Bootstrap a little lately and, coincidentally, the WYSIHTML5 implementation that worked the best for me uses Bootstrap. I have tried to avoid CSS frameworks, but Bootstrap is very nice. I already use a CSS base stylesheet that I adopted from Xaraya, but I'm considering making a switch to Bootstrap. I started out with the open source community designing themes for CMS', so I have put a lot of thought into Clay's theme system. I want to make it easy to design themes for Clay and I think using something like Bootstrap will make theme development faster and easier.
I've pushed some Blocks app updates to the Clay repo that allow you to use Blocks in a theme. I updated the Simplestyle_4 theme's page template and have been testing the new Blocks. They work very well and it is a fairly light-weight implementation. I have a few things I want to try as far as bottlenecks go, but for now I can't complain. The block groups actually use the Application Component class, just as a regular application component does. I was on the fence about implementing them that way, but it seems to not bottleneck quite as bad as I feared. My only real concern is battering the database with privilege queries. I have a few things I want to help there, but I may have to tweak the privileges processing a bit if I can't otherwise cut down on queries.
I updated an app I started farily recently named WYSIHTML5. I am using the codebase from https://github.com/jhollingworth/bootstrap-wysihtml5, which has a really nice implementation of WYSIHTML5. You don't have to install the app to use it, but once the editors service is fully implemented installation will be required.
I changed the Blog app to use WYSIHTML5. It was using TinyMCE, which I like, but the new editor is much nicer. Eventually I plan to move TinyMCE into its own app and put it on the editors service. WYSIHTML5 doesn't have all of the plugins that TinyMCE does, but it seems to integrate better. The editors will be configurable in the future so luckily my preference won't matter that much.
I plan to keep pushing forward with Blocks and working on other stuff as I go along. I've got a lot accomplished this week and I'm really happy with the way things are moving along.
02 Oct 12
Just pushed several commits for the Blocks app to Clay. It now has the blocks manager, with the ability to add and edit blocks. I also created a test block named Text, which just shows plain text. Still some rough edges to work out and I may tweak the db design a little more. It is functional, to an extent. There isn't a way to display the actual blocks or groups of blocks yet, but that should be around the corner. Clay really makes development easy and fast. The services module is a huge time saver, otherwise I would have had to create two additional tables and write the backend code for them. Instead, I got to reuse what is already there, which was the whole idea in the first place :) Up to three individual services (although the blocks are a little different, they don't actually use the service interface except to add/edit blocks), more to come and each saves at least 2 database tables, maybe more.
30 Sep 12
I think I've finally "completed" the Users app, for now at least. There are some settings and things to add, but those aren't necessary at the moment. There is always something to improve: tie in the interfaces better (for continuity), work on the form layouts a little, etc. Like everything else, I'll go back to it from time to time to make adjustments, as long as I don't find anything critical. Anyway, Everything I've talked about the last couple of weeks is in place, as far as the Users app goes. I still have actual privileges to code and stuff like that, but those are in their respective apps.
Time to start working on content! Blocks, Hooks, profiles, etc... yay! I'm probably going to try to finish the privilege classes and work on content stuff for breaks until those are finished. I still have some testing to do before I update this site, but I like the pace I've been moving the last couple of months.
29 Sep 12
I've pushed a lot of Roles/Privileges related updates to the Clay repo this past week. I'll have to dig through my TODO list, but I think adding the ability to assign Roles to Users is the only thing left in that department. There are some enhancements I want to do later, such as some informative content features that explain privileges and what they are for. The User manager still needs a little work, but I'll probably deal with most of that while I'm working on the Role assignment features.
I've also been pushing some updates to this theme (simplestyle_4), such as a fancier table styling and some improvements to the way the dashboard looks. The dashboard will get a big upgrade when Blocks and Hooks are implemented, so I'm not changing it too much right now. I also added a pseudo table style for using divs/spans in a table layout. It looks exactly like a regular table, but it allows you to wrap cells in links and things like that.
That's all I've done lately, but I'm really happy with the way the Role/Privileges stuff has turned out. The only thing I have not been really happy with is the ability to debug ajax forms. I've wasted a lot of time, because a simple error some where isn't getting through and I don't know what is broken. I'm trying to figure out a better way to debug, not just ajax forms, but overall. I think sometime soon I will need to take a break from new features and work on a console or something that gives me a little more flexibility for debugging.
I have a few application Privileges I need to write classes for. I have the Users stuff to finish. Then I will start again on Blocks and some content based applications. I have a few shell applications to work on. I also want to build an application that uses the GitHub API, so I can start displaying some project information here. There's still stuff to do. Hopefully I'll be able to update Clay here soon, enable user registration, and make this a 2-way conversation again.
21 Sep 12
I've been a little quiet on here lately, sorry about that. I have worked on Clay some, but my family and I are getting ready to move after the new year, so it's been kind of hard to find time. I'll post where we are moving after I get my orders from the USAF, just in case something doesn't work out.
I've been working on the Roles and Privileges admin GUIs, some of the updates have been pushed to the repo. I'm worrying a little about how the privilege system is going to affect performance, the Roles hierarchy system may be a bit complex. I'm going with it for now, as I don't really have a better solution at the moment.
I've made some enhancements here and there, but nothing really major. The code base is getting a little heavier than I like, so I will likely be splitting up some of the code that isn't always needed. By code base, I mean the amount of code needed for a page to load. I'm trying to figure out a good way to implement the submodules to move some of the code out of the main module classes.
As I wrote in my last blog, I'm looking at some ideas for applications to work on. I'm adding an Editors service, so I have have more than just TinyMCE. I like TinyMCE, but I want to go a different route, something more HTML5 based. The Editors service will allow you to pick which editor you want, so TinyMCE will very likely be available. I've been trying to workout how to do the Blocks and Hooks, which will open the door to a lot of applications I've been putting on hold. One thing I've been bouncing back and forth on is an application generator. The Nodes in Drupal have been its bread and butter, so a way to create pseudo applications is going to be more of a requirement than an option, development-wise. Xaraya's Articles and XarPages modules also strengthen the case for it.
One of my ideas for an application generator is by using it as a component of the Apps application. It would basically allow you to piece together an application from a GUI and then generate some generic templates to go along with it. The generated application would then be listed as an installed app, but with a different status code to show it isn't a native application. The app could then be exported and imported somewhere else or used to build a native application. I have some experimental code that could be applied to implement that, such as the Object app.
I've been looking for ways to improve the Dashboard. I want to keep it simple, but as usable as possible. I'm thinking the Blocks will be a big helper there. I want it as dynamic as possible, but that also takes away from performance as well. Last, but not least, I will likely be moving toward a short url system fairly soon. I'm not expecting to use a strictly defined router or mapping system, as I had previously looked into. I may use something like that as a fallback system, but I'd prefer to allow each application to define it's URL schema. Too many things to think about at once :)