Google has some awesome tools available and free for use. Firstly as most people know, there's Gmail - 6GB of space and growing, POP and SMTP access etc. Most importantly for me, unobtrusive advertising. Yahoo on the other hand has tons of irrelevant and annoying advertising. So, Google 1; Yahoo 0. Then there's iGoogle - a nice portal which can be used to house all your bookmarks, email, calendar (another nice product), RSS news feeds etc.
Something that I recently discovered while trying to submit my blog to Google's index was Google Webmaster Tools. You can host your websites with Google pages and use Google Webmaster tools to trace their indexing of your pages. It works by you embedding a randomly generated value within a meta tag on the default page of your site. This functions as an authentication mechanism which verifies you as the owner of the site. Once verified, you can view a number of stats collected while Google's crawls your site such as top search queries, what Googlebot sees, indexing stats subscriber stats etc. All in all, there's a bit of useful information there. Yahoo has a similar process of submitting pages except where Google's verification is instantaneous, Yahoo's takes 48 hours and doesn't seem to give you as much info. (My page hasn't been indexed as yet by Yahoo so I'm not really sure though as there is no data as yet.)
But, the really good one is Google Analytics. It's a tool to "help you learn even more about where your visitors come from and how they interact with your site. The new Google Analytics makes it easy to improve your results online. Write better ads, strengthen your marketing initiatives, and create higher-converting websites. Google Analytics is free to all advertisers, publishers, and site owners." (The first 5 million page hit statistics are recorded for free. I think that you have to pay thereafter.) Analytics works by embedding some Javascript in each page (or an include for dynamic pages) which downloads some other script which then sends data to Google on page load which is then stored. There's tons of data in reports to view - Browser type usage, page visits, unique visitors, benchmarking, average time on site, traffic sources and the geographical distribution of your visitors. Most of the data is presented on graphs, charts, maps or tables. This seems like a really good tool to maximize your site traffic and best of all - free.
It's been a bit crazy over the past two weeks. We presented an Alpha version of our project today. The project is a system which can be used to run and manage an entire radio station. The system includes management of the station's music store, broadcasting, inbound and outbound communication via SMS and email, show recording and a portal. The presentation went well with no bugs appearing and no crashes, which is always great! After the presentation, the comment was made that we had gone beyond the basic Alpha system requirements which to me means that we impressed!
The main system was built in C# and the SMS Gateway in Java. All the different components communicate via web services which makes our life a whole lot more challenging. If we had to split up all the components and run them on different machines, it would take 6 machines to run everything - So needless to say, it's fairly complex! But as was said in the previous post - Visual Studio is a great tool which makes your life pretty easy in building these. But then again, I found that Netbeans 6 was also great in this regard - building a service to get C# and Java talking was really easy!
In the previous post I said that I was going to try out this new library I found for SMS'ing... Well, it didn't work. I eventually resorted, reverting back to the original SMSlib. (SMSlib.org) But I did manage to get a new interface going to BulkSMS. (BulkSMS) They support a basic HTTP interface to send SMS's and they give code samples in various languages which can just be copied and pasted. It all works really simply and they give you 5 free SMS's upon registration. Receiving SMS's via BulkSMS is another story though. It costs a fair bit of money to set up some incoming rules - I didn't look too far into it though.
It's been a while - Much has happened. Well, I've been doing a bit of work in C# . Ughh.... I hate it. Ok, maybe it's a bit too strong, but I can honestly say there are things I don't like about C# (Visual Studio is pretty dam good though.) Well this is maybe for another blog entry.
I'm trying to complete my SMS gateway but I'm stuck with the fact that the library that I was going to use is incompatible with my Samsung phone, and I'm really not going to download the AT command spec for my phone and fix it. So I've found another open source library at SourceForge and will give it a go now. Will post back later on how that goes.
I truly believe that in most instances, less is more - Minimalistic design in architecture, car design and computer code (Assuming that shortcuts aren't taken and things are done properly). With code, less code = fewer potential bugs. Following the simple mantra reuse, reuse and reuse, we try... but often come up short. This all sounds pretty simple and is preached everywhere but can actually be very difficult to attain. In developing my web application framework for my applications, I've decided to strip away all the unnessesary stuff and simplify the number of classes. In doing so, I've still tried to keep everything scalable, flexible, consistant and easy to maintain - alot easier said than done.
I turn my attention to JSP tag libraries. In my previous job, I did everything - analysis, design, development and implementation. This is not the idea situation because the responsibility lines get blurred. In the ideal situation, a Web developer who has knowledge of HTML, scripting languages, tag libraries, style sheets etc. but no knowledge of Java, maintains the front end and a back end Java developer develops the business objects. Honestly, I don't know how often this actually happens but the benefits are often preached. Coming back to my former position, I had no problem with reading JSP pages interspersed with Java code but a HTML web developer may have great difficulties in understanding the relevance of much of it. A lot of the complexity can be hidden by using JSP tag libraries which use simple HTML like tags to map to Java classes which output simple tags or more complex structures like tables of data.
Tag Libraries aren't a new thing but like many things, in depth studying of library development has been put off for a long time. But now that I've started delving to into it, I've realised the importance of them. Firstly as mentioned, they remove most (if not all) of the need for Java code to be placed in a JSP page allowing expert web developers to develop the look and feel. Secondly, with no java code in a JSP, it reduces the amount of code and as mentioned before, bugs. I had relativly recently started using ASP.net and was suprrised at the ease of being able to double click on a HTML design component e.g. a button and it suddenly produced a .aspx file with the button handler. I have no idea how the application server handles the flow between the HTML page and the server side handler but that's the point - I don't have to. All I need to know is that it happens. This is essentially what I'm trying to achieve.
Keep things simple, hide complexities and confusion is reduced and productivity incresed.
It was all going well... I had the SMS gateway installed and running on my laptop and it could send and retrieve SMS's. So the next step was to transfer the .war file to the remote server, install all the other components and test. Easier said than done...
Firstly, I tried deploying straight to Tomcat, but that left me with the problem of not being able to see certain error messages. I know, I should be logging error messages properly but hey, this is still a test. So I then started up Eclipse and tried to run it there only to find out that I was having problems writing to the COM ports. With all the messing about I think I may have screwed up the firmware on my phone. Whenever I plug in my phone via the USB cable now, it just gives a "Unrecognised usb device" message. This suddenly happened on both my computers. I tried to use my other Samsung instead, but couldn't get it to show up as a COM port in the device manager. So it's off to my service provider to see what they can do. The joys of being a programmer...
Continuing from the previous research and work, I've decided to build a complete gateway using the smsLib as a base. So far, I've already built part of it and completed the basic design. The system has a web interface which enables user management, gateway creation etc. The gateway management allows adding either a "local" GSM device or a third party gateway such as bulksms or clickatel. Within the smsLib API, load balancing and cost routing can be set. This allows multiple phones to be connected to the system to increase throughput - very handy. The API also enables specifying sms "handlers" which process incoming SMS's. This may allow some interesting options in managing a server via SMS? Once I'm finished, I'm considering releasing it as open source - It may be useful to someone.