*Coder Blog

Life, Technology, and Meteorology

Month: March 2005

Going to WWDC

Just made my airline reservations to go to WWDC 2005. I’m pretty excited about this year’s conference with Tiger finally making it out the door pretty soon now. Last year they introduced the 2.5Ghz G5s and the new line of Cinema displays (both of which are sitting on my desk :-))…wonder what this year has in store. G5 Powerbooks would be nice, but I’m not betting on it.

As far as sessions that will be cool to go to… I’m excited about the Core Data sessions. Core Data is going to be a really nice addition to the OS, and last years session just touched on it briefly. It will be nice to learn some more advanced information about how it’s implemented, and how they are planning to allow migrating to new versions of software with database modeling changes. I would also like to go to a couple of Web Kit sessions since Seasonality is really an online application and the possibility of having features implemented through Web Kit in the future is pretty good. Finally, I want to learn more about Automator/AppleScript, gcc 4, and I wouldn’t mind going to the “What’s New with File System” session to learn how to use the ACLs in Tiger.

Buzz is putting together another Weblogger Dinner this year. Last year’s dinner was a lot of fun, and I’m sure this year will be the same.

Anyway, if you’re planning to go and want to meet up, let me know.

FMDatabase

Gus posted a very cool SQLite Objective-C wrapper, complete with sample code. It looks like the methods he has in there are pretty handy. Seasonality uses SQLite as it’s database engine, though at the time I was developing it, the only good wrapper I found was for SQLite 2.8.x, so I went for that. I might end up switching to SQLite 3 in a later version, but we’ll have to see. Since the database files are a completely different format between SQLite 2.8 and SQLite 3.x, there would definitely be some work involved in the upgrade.

I figured this would be a good opportunity to talk more about the database aspects of Seasonality. Seasonality actually uses 2 SQLite databases, one of them is the location database in the application bundle, and the other is stored in the users Application Support directory (~/Library/Application Support/Seasonality). The database in the application bundle is really only used as a read-only database, and it contains all of the locations and their associated data values. When you start typing in a zip code to add a location in Seasonality, the app is actually just running a quick SELECT query from the string you’ve typed so far. There are a few different tables in the location database to associate zip codes to ICAO weather locations and radar locations, but overall it’s a pretty simple database. This is actually a subset of all the data that I’ve mined over the past several months…the master is residing in a PostgreSQL database on one of my servers here, and I wrote a Perl script to select subsets of the data from Postgres and insert them into a new SQLite database to include in Seasonality.

The second database in Application Support is used to store all the saved weather data. There are several fields that are saved for future functionality if needed. Other than the temperature, dewpoint, wind and gust speeds used for the graphs right now, Seasonality saves the air pressure, relative humidity, and the visibility along with the date that data is associated with. This brings up a minor complaint of mine…SQLite is typeless, which means that it treats all values you put in the database as the same type. Integers, Floats, and Dates are all inserted as simple strings. They claim this is a feature, but when it comes to date processing it’s a major pain.

When selecting data to build a weather graph, I want to select data that is between two dates. Unfortunately, if I just use a standard date string like Tue Mar 22 22:45:16 EST 2005, it will choke when I try to do a date comparison because it will look at it as a string and, for example, Fri Mar 25 22:45:16 EST 2005 would be seen as happening before the first date because F in Fri is alphabetically before T in Tue. One way around this is to use a very large integer for the date string: 20050322224516. This works fine, and is the method that Seasonality uses to keep track of dates, but it’s slightly inconvenient because all values are above 2^32, so you need to remember to use 64 bit integers to pass dates in and out of the database.

Back to the second database, that’s all there is at the moment…just that one table with a ton of rows in it. Each row takes maybe 100 bytes, and with an average of around 30 rows a day per a location you end up with a database that is about 1Mb after a year’s time (per location). Not bad at all for the amount of data being saved. Searching it is pretty quick too…my database at the moment has about 11,000 rows in it (data for 5 locations back through the beginning of February), and searching through it takes a fraction of a second. In later versions of Seasonality, I might add a way for users to manage this data a bit better. For instance, exporting the data seems like something that user might want to do, and maybe add some AppleScript handling as well. We’ll see where it goes…

Seasonality Suggestions

Membranophonist’s Ramblings: “I have a few suggestions…

Some very good points and suggestions; thanks for posting them.

Seasonality 1.0 Released

After months of work, Seasonality 1.0 is finally ready for public consumption. Here’s some information from the press release:

Gaucho Software is pleased to introduce Seasonality 1.0. Seasonality takes weather monitoring to a whole new level with weather forecasts, radar images, sunrise/sunset times, and much more. View informative icons demonstrating what weather is coming your way over the next 7 days. Use radar images to check out where it is raining or snowing. Compare this month’s weather conditions to last month’s, or even last year’s. Keep track of just your hometown or multiple cities all over the U.S.

Some key features of Seasonality 1.0 include:

  • 7 day forecast with high/low temperatures and probability of precipitation.
  • Local radar image showing current precipitation.
  • Graphs of previous temperatures and wind speeds.
  • Daily sunrise and sunset times, along with the length of day.
  • Monitor multiple locations.
  • Automatically saves weather data to allow viewing of past conditions.

Definitely take a look at the Seasonality website. Try it out and let me know what you think!

Freezing Fog

The conditions here in Mt. Pleasant last night at 1am:

Freezing Fog and 14 degrees F at Mount Pleasant Municipal Airport, MI

We had a pretty good frost last night, and everything was covered with the stuff this morning. Here’s a shot of the tree in our front yard.

Speaking of ice…file this picture of a gutter on our house under W for weird.

Looks like something I saw at Kartchner Caverns back in Arizona.

Seasonality Finishing Touches

Seasonality is coming along really well, and I expect to release sometime before the end of next week. The code is done (unless I find any more bugs), and now I’m in the process of finishing up the business and web aspects of the application.

Releasing XRG was a piece of cake compared to the preparation required to release an application to sell. The XRG release just involved creating a DMG of the application, throwing together a simple website to download from, and sending emails to various sites to announce the release. At the time it seemed like a big deal, but looking back it was fairly low-stress. If something didn’t work, then it didn’t matter too much because XRG is free. 🙂

With Seasonality, I want the first release to go perfectly. I know it won’t, but if I try to make it perfect then hopefully I won’t hit far from the mark. There’s also all the work of actually selling the app. I’ve posted about registering Gaucho Software as a business, but there are other business aspects to take care of like registering with a sales company (in this case, eSellerate) to handle license registration, setting up an online store that works well and looks good, creating a web site that does a good job of communicating the coolness of the product, finding a hosting provider to offer the downloads (read about the great download fiasco of January 2005), and testing the hell out of the app.

Most of these I have been taking care of during the past week. eSellerate setup has been pretty nice, as they have a great web admin tool to help set up an online store. Configuring the templates for the online store has been more time consuming than I thought it would be, but I think it’s starting to look pretty good. Added registration code to the application was a new experience. Since I’ve never done this before, I’m a little concerned that I’m overlooking something and my app will be easy to crack. I’m probably worrying more about this than I should be. I’ve also been putting a lot of time into the product website, but I still have some more work to do in that respect.

For the hosting provider, I ended up going with Site5. After checking out some reviews, they got pretty high marks and they offered everything I was looking for except for mod_perl (and offer some cool things that I wasn’t looking for, like a dedicated IP just for my account). I signed up for an account on Sunday night, and they had it configured and ready to go within 15 minutes, which really impressed me considering I was signing up during off-hours. I scped all the files on download.gauchosoft.com over there, switched DNS, and everything seems to be working well. The box I’m on seems like it’s pretty new: quad 2.8Ghz Xeons with 2Gb of RAM, 3x160Gb drives, and a load that hovers around 0.1. I’m curious how far they will load up the machine before moving on to another host. From their other server stats though, it looks like they keep most of them with a load of 2-3 and only about half usage on the disk, so I’m thinking that kind of box should be able to handle a similar load without any problems.

Now all that’s left is testing the hell out of the app…and documentation. Bah, that’s gotta be the worse part of development. I’ve been putting off writing the Help and Readme files for days and now it’s to the point where I just need to sit down and take care of it.

I thought I would post a sneak peak of the Seasonality interface for all 3 of my loyal readers…so here’s a screenshot: (click for a full size version)

Gaucho Software LLC

Up until this point, Gaucho Software hasn’t had a selling product, so I have been putting off actually registering it as a company, if for no other reason than to not have to worry about the 2004 tax year. Now with the impending release of Seasonality, I figured it was time to register Gaucho Software as an LLC. This just gives me as a person some separation from Gaucho Software the company. Forming an LLC or a corporation is just a smart thing to do if you have your own business.

As you can probably guess, there is a lot of legal stuff that you have to take care of in order to do this. The most obvious change is that you need to keep company finances separate from personal finances, otherwise you may not be granted liability protection, which would defeat the whole purpose of forming the business entity. Here are a couple of other things that I have learned in the process:

  • If possible, have your fiscal year end on December 31st, so when you go to file your tax forms they are due on April 15th, the same day as your personal tax filing.
  • LLCs do not pay taxes on income, as the tax is passed along to the LLC members and claimed under the members’ personal income. However, LLCs need to file form 1065 every year to report earnings.
  • If you are the sole owner/member and the LLC has no employees, then you don’t need a federal Tax ID number.
  • Every LLC has to have a Registered Agent with an address in the state that you are registering your LLC in (no PO Boxes). The only purpose of the Registered Agent is to have a physical body that can be used in case someone needs to guarantee delivery of papers to your company, like in the event of a lawsuit. In the case of Gaucho Software, the Registered Agent is just myself.
  • Every state has slightly different laws, but in Michigan you need to file the name/address of the Registered Agent and Registered Office every year to the Secretary of State’s office. There is also usually a yearly fee to cover the costs of the filing.

I ended up doing my filing through an online company called LegalZoom. There are tons of different companies that will do the filing for you (just search for create LLC online). I found LegalZoom while visiting Entrepreneur Magazine’s website, and a quick Google search found many recommendations for LegalZoom across the web. Filling out their online form is a fairly quick and easy process, and I should have copies of the final documents submitted to the Secretary of State within 20-35 days. If I have any problems with them, I’ll definitely repost them here, but with their money-back guarantee, I don’t think there will be an issue. If you don’t feel comfortable doing something like this online, you can pay a little bit more and hire a local attorney. One that I talked to here said she would take care of everything for $500-600 plus the cost of extras like a company stamp or a set of books to start off with, etc.

Anyway, I thought I’d share some of this in case anyone else out there is thinking of creating their own LLC. If anyone else has anything to add, please post it in the comments.

© 2017 *Coder Blog

Theme by Anders NorenUp ↑