
{"id":78,"date":"2005-02-25T17:13:44","date_gmt":"2005-02-25T17:13:44","guid":{"rendered":"http:\/\/www.starcoder.com\/wordpress\/?p=73"},"modified":"2021-10-30T20:05:36","modified_gmt":"2021-10-30T20:05:36","slug":"last-minute-design-changes","status":"publish","type":"post","link":"https:\/\/www.starcoder.com\/wordpress\/2005\/02\/last-minute-design-changes\/","title":{"rendered":"Last Minute Design Changes"},"content":{"rendered":"<p>It&#8217;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 &#8220;froze&#8221; the features I would include over a week ago.<\/p>\n<p>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&#8217;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.<\/p>\n<p>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&#8217;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&#8217;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&#8217;t have access to, so I couldn&#8217;t find a way to fix it.<\/p>\n<p>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 <a href=\"http:\/\/ranchero.com\/cocoa\/xmlrpc\/\">example XML-RPC project<\/a> that creates a connection through <a href=\"http:\/\/curlhandle.sourceforge.net\/\">CURLHandle<\/a> 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 <i>faster<\/i> than the old &#8220;official&#8221; method of doing it, by a large margin.<\/p>\n<p>Anyway, these and other issues are adding quite a bit of time to the completion of version 1.0.  In the end I&#8217;m sure all of this will pay off, but in the mean time it&#8217;s a lot of work.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It&#8217;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 &#8220;froze&#8221; the features I would include over a week ago. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27],"tags":[],"class_list":["post-78","post","type-post","status-publish","format-standard","hentry","category-seasonality","post-preview"],"_links":{"self":[{"href":"https:\/\/www.starcoder.com\/wordpress\/wp-json\/wp\/v2\/posts\/78","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.starcoder.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.starcoder.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.starcoder.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.starcoder.com\/wordpress\/wp-json\/wp\/v2\/comments?post=78"}],"version-history":[{"count":1,"href":"https:\/\/www.starcoder.com\/wordpress\/wp-json\/wp\/v2\/posts\/78\/revisions"}],"predecessor-version":[{"id":712,"href":"https:\/\/www.starcoder.com\/wordpress\/wp-json\/wp\/v2\/posts\/78\/revisions\/712"}],"wp:attachment":[{"href":"https:\/\/www.starcoder.com\/wordpress\/wp-json\/wp\/v2\/media?parent=78"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.starcoder.com\/wordpress\/wp-json\/wp\/v2\/categories?post=78"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.starcoder.com\/wordpress\/wp-json\/wp\/v2\/tags?post=78"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}