It’s really quite amazing to me just how many semi-major design changes can come up when nearing the end of an initial development cycle. Seasonality, for instance, has had quite a list of things come up just in the past few days, even though I “froze” the features I would include over a week ago.
One of them is a URL Manager. For each weather location that Seasonality monitors, it makes 4 different network connections to download weather data. This is fine when you only have 1 or 2 locations, but when I use it with 5 locations Seasonality creates 20 background threads to download data, which is far from ideal. One of today’s tasks is to create a class to buffer the amount of connections that are active and give one more layer of abstraction from the classes trying to fetch data.
Another semi-major design change was for using an XML-RPC connection. Mac OS X has stuff built-in to create XML-RPC connections, but they don’t support a WSDL configuration. There is a way around this using a WSMakeStubs application included with the developer tools, where you point it to the WSDL file you want to use and it will create a couple of class files for you with an implementation. It takes awhile to adapt to your project, especially since there a few bugs in the code it creates. I got it working pretty well fairly early on in the development process. Unfortunately, now that 1.0 release is coming up and I’m starting to seal up memory leaks, I found a pretty major one in the code while exiting the run loop after getting the data. I fought with it for several hours, but ended up determining that the bug was somewhere in the CoreServices Framework that I didn’t have access to, so I couldn’t find a way to fix it.
So back to the drawing board. It was pretty frustrating having to re-implement a feature that I thought was already done, but I found some helpful stuff online to work through it. Brent has an example XML-RPC project that creates a connection through CURLHandle to retrieve information. I already use CURLHandle with my other connections, so it was very convenient to use it here as well. I wrote my own small parser to remove the SOAP wrapper around the XML response and everything works great. In fact, the implementation I have now is faster than the old “official” method of doing it, by a large margin.
Anyway, these and other issues are adding quite a bit of time to the completion of version 1.0. In the end I’m sure all of this will pay off, but in the mean time it’s a lot of work.
Well the switch is complete. I moved everything over to WordPress and put in some web redirects. Hopefully you didn’t notice anything different if you are using a newsreader. I’m using NetNewWire here, and not only did it pick up the new RSS file and recognize that the posts were the same, but it also reset the feed URL to the redirected link. Very smart programming by Brent…
Anyway, if you’re reading this in a newsreader, be sure to visit the actual page to check out the new interface. I used mostly the default view, but I changed the graphics so they were a little more custom. Also, as I mentioned before, WordPress hopefully will have better comment SPAM protection, so commenting is enabled again. If you have anything to say, go for it. 🙂
Since I started this blog in November 2003 I’ve been using Blosxom. Blosxom is particularly easy to set up, is written in Perl so it’s easy to customize, and it’s post database is a directory structure of text files making for an easy backup. Lately, I’ve been wanting to add things to make the site more complete, such as re-enabling commenting with protection against comment spam, RRS 2/Atom syndication, and a better archive calendar to name a few. All of these together would be enough work for me to start considering other blogging platforms.
Then Joe mentioned WordPress in one of his posts a few days ago, so I looked into it and gave it a shot. Since I have a FreeBSD server here, configuring it through the ports system was a piece of cake: cd /usr/ports/www/wordpress ; make ; make install. It uses a MySQL database to keep track of postings, users, etc, so I created a tablespace for it on a local MySQL server. Then I hit the setup page for the software, told it what database to use, and away we went. Setting up WordPress is a 2 step process, with step 2 being “There is no step 2.”
WordPress has import scripts from a variety of other blogging software. The useful port was from Movable Type. Marc Nozell has created some flavor files for Blosxom that will create an output file compatible with Movable Type’s export feature. Importing my postings into WordPress from that file worked pretty well, with only the small drawback of no previous writebacks getting moved over.
So far, I’m really impressed with the entire system. Since there are multiple users, you can restrict commenting to only come from people with accounts (which I might do), or have multiple people post stories to the blog (probably won’t do). All administration is taken care of from a web admin interface, which seems pretty intuitive accept for a slight learning curve when it comes to user permissions.
The one drawback is that WordPress is written in PHP, which many won’t consider a drawback at all, but I’m a Perl guy, so Blosxom will be missed in that respect. I’m hoping to finish configuring it and customizing it to my needs sometime later this week. I’m sure I’ll post more about it then…
If you live in or around Michigan, you’ve probably noticed the most recent string of snow storms. On Sunday we got about 10 inches of snow, and yesterday added about 2 more inches to that, along with a forecast for snow off and on for the rest of the week. As you can probably imagine, everything is covered with the stuff and the scenery looks particularly nice right now.
Last night was even more remarkable though. We were in between storms, and it was perfectly clear out with close to a full moon. Coming from an area that never got snow, it’s amazing how bright it is at night when the sky is clear, the moon is full, and there’s white colored stuff all over the place. It was so bright, that there were distinct shadows on the ground…err snow.
I was wanting to get a photo of it, but my digital camera here has been kind of acting up lately and I doubt the grainy shots it takes in low-light situations would have done the evening justice.
You may be wondering what’s been cookin’ in the Gaucho Software kitchen…or maybe you haven’t, in which case you can ignore the rest of this post. 🙂 There have been a couple of projects that have come to life during the past several months, but I’ve finally decided on one to go with and have brought it to a stage where a release is on the horizon. I’ve shown it to a few people and have generally gotten good feedback on it, and I’m hoping to have a beta release in the coming weeks.
So what kind of app is it? Well, NewApp is a weather monitoring software package called Seasonality. While working on XRG, I enjoyed writing code to monitor the weather, but there’s always a space constraint to work with in XRG. I wanted to take weather monitoring to the next level and offer it in a separate app. Some things, such as graphing weather over the past day, carry over from XRG to Seasonality. However, Seasonality doesn’t just stop there; there’s a whole lot more to offer. The first release will have features such as a 5 day forecast, weather radar, and the ability to monitor multiple locations. Future releases will include a lot more features that I feel will really set it apart from other weather software packages.
If you are particularly interested in the weather and would like to beta test Seasonality, let me know (my email address is on the left). I probably could use 5 more beta testers, all of whom will get free licenses when a final version is released. Also, if you have ideas for what you would like to see in a weather package that no one else offers, please get in touch with me.
Dash Monitors 1.1 preview was released this morning. Version 1.1 includes two new graph modes: text and graphical. From the project web page: The text view mode shows a very simple text view of the resources being used and is beneficial because it takes very few system resources to generate the statistics. The graphical view mode, while taking more CPU resources to draw all the monitors, displays a nice interface to what is happening on the system. Text summaries are provided with most of the monitors in graphical mode to provide the exact data along with the graphical approximations.
I’m releasing this version with an expiration date of June 1. I’m sure the Dashboard environment will continue to change as Apple gets closer to a public release of Tiger, so I don’t want to offer a full release until then.
Check out the preview release and post suggestions for future functionality to the Gaucho Software Forums.
I have this “odd” behavior when using my computer occasionally; whenever something isn’t working the way I want it to, sometimes in the moment I will just right-click on the problem area to see if there’s anything in a menu to fix it. Well, this happened to me this morning when I was composing an email to someone. I was trying to spell the word migraine (rain doesn’t have an e at the end…it should be migrane or migrain), and in the instant of frustration, I right-clicked on the word. I just stopped in amazement, as Mail.app showed a contextual menu that started with a list of words that I might be wanting to use instead of my misspelled word. Wow…subconsciously I was expecting that to happen, but it caught me off-guard when it really did happen.
This got me thinking a little bit…Mail.app just uses NSTextViews, so maybe other apps that use NSTextViews will also behave this way. Sure enough, this works in TextEdit as well, so I can only assume it’s system-wide for apps that use that class.
I’m thinking this is a pretty big feature; and I can’t believe I haven’t noticed it before. I’m posting this here hoping I’m not the only one. 🙂