Github for mac!

June 22, 2011 No comments yet

Ok I cleared this title up a little, it isn’t Git for the Mac but a Github GUI and so far it is really great. I currently manage over 30+ repos some private and some public and this is so much quicker than trying to manage everything directly from their site.

It also support all your local Git repos, allows super quick and easy repo cloning but wait! it also supports the org. view so you can see your private login and any orgs that you also manage and their repos.

Great job so far Github team. thanks!

Find it here – Github for the mac.

Appcelerator finally gets it!

May 31, 2011 No comments yet

Pricing for Appcelerator’s Titanium Mobile finally makes some sense … I say some because you don’t get a whole lot for your money as an Indie developer but at least they’re finally acknowledging the existance of non-enterprise developers!

Depending on when you buy you can get an Indie subscription for around $400 a year if you pay for the entire year or around $50 a month. For this you get some training, not worth much but you get more documentation and debugging in the new Aptana based IDE called Titanium Studio.

What they currently fail to mention is that Studio is still in beta so you can actually get it for free including debugging up until the product is released. I’m still looking for that “extra” documentation so the jury is out on that :)

Of course now with an investment in Titanium I need to get cranking on some mobile applications. I’ve followed their advice on JavaScript architecture and so far so good. Application development has been easy and the studio has been bug free.

I plan to release an iPad version of UWENi based on titanium. The development has been radically faster than native objective-c and far more stable. Stay tuned for more results from that project….

 

Welcome Audomate

August 2, 2010 No comments yet

I’d like to introduce a new media service that has just gone live called Audomate. This service has been developed by a small group of people and is based on Microsoft’s .NET framework and MVC2.

What is Audomate? A service that converts online content such as website articles, blogs or any readable media to a professional audio recording. Rather than text to speech which just doesn’t produce a quality recording we use a team of professional voice talent to record each article usually within minutes of the initial request.

You as the consumer can then add any article you wish to your audio channel which can be synced with any device capable of supporting podcast feeds. We have also partnered with various partners to continually ingest content that you can listen to while traveling or just working. Those that use iTunes can simply add your channel URL as a podcast feed and then sync with an Apple device.

We currently support the socialable plugin for WordPress so if you would like your blog content to available via an automatic podcast feed just check the box for Audomate.

If you would like to test this now just click the Audomate link below this post! Enjoy.

Simple DB Profile Provider added to MultiCore

September 20, 2009 No comments yet

The first take on a simple db profile provider has been added to the current release of multicore. That version is 1.0.2.0 and binaries/source are on github.

The profile provider works – has some limitations and will only work with string properties. When I get some more free time I’ll add support for other useful types :)

I also pushed source and released binaries to codeplex, for those more familiar with that you can find the code here.

As usual the wiki and source can be found on the main multicore site.

Is Amazon SimpleDB Injection Attack Safe?

September 18, 2009 1 comment

I hope as a developer you are well aware of SQL Injection attacks and if you aren’t, you’re living under a pretty big rock :)

It occurred to me recently that with more cloud based database technologies coming into existence that I have yet to see mention of this problem with those services. I think it is definitely something that warrants a good amount of research.

Initially I’m going to focus my efforts on Amazon’s simple db service since I’m actively using it. I’ll post my findings and any techniques to prevent discovered issues. Off the bat I’m guessing you can’t be too malicious since a delete request cannot be embedded into a select request however unwanted results are never good and a select looks like it could return more data than the developer was hoping for with a traditional attack.

If you have any thoughts on this or know of existing posts from other developers please comment! or post them on the multicore site.

Don’t go Mono, go Ruby …

June 27, 2009 No comments yet

I’ve always liked the Mono project and since its inception way back when I’ve dabbled with their technology. The thought of running .NET on linux was something I always wanted to do. Recently I had a real business need to have parts of an application run on UBuntu. Not only that but I hear plenty of clients make the wild claim that “hey, if we need to run on linux we’ll just use mono!”

Initially I looked at doing this in Ruby but the learning curve for my back end services was a little steep. No problem, I’ll keep development moving in C# but keep it simple 2.0 so that it can run on Mono. Over the last few days I setup some new UBuntu servers and tried to get some of these applications running. No luck. I even ran the analyser tool which tries to make sure everything is compatible… it was. All the calls I use are available in Mono but the results are different.

That alone is high risk. If I’m using the same basic calls then I really need the results to be the same on each platform. It then occurred to me that the entire principle of the Mono project is doomed to fail. It is and always will be a sub-par port of .NET.

The bottom line is, if you want or need your application to truly run cross platform then use a language with native support, from the beginning for those needs. There are many. You have choices like Java, Python or Ruby just to name some. C# for the time being is a Windows language.

I have chosen to slowly convert rather than port and will run back ground services as Ruby apps which once written in Ruby run anywhere Ruby is supported without problems. My websites however will remain asp.net mvc. I have had plenty of success with Rails but the new MVC for .NET is just too good :)

Just a side note: I’m sure plenty of applications can be built in Mono but they need to be built and tested in Mono from the beginning. The problem you’ll run into is many c# 3rd party components, if not most, are written and tested in .NET and you don’t really know if they’ll work on Mono. Again here I say – if you only use Mono fine but why not rather use a true cross platform technology rather than a continuous port.

Watch your time zones on Windows Azure!

June 8, 2009 3 comments

So I deployed some code to Windows Azure and was initially surprised that it was running differently than what I had observed locally.

Turns out and once you think of it its a no brainer … my code was running in a different time zone. All my other services were in EST but this was PST. The solution in my case is to keep everything as GMT and then do any necessary calculations :)

You might wonder if this is documented anywhere. To be honest, I have no idea since most of the documentation has been very poor. The website for Azure has circular links that will drive you nuts and the local SDK docs are just focused more on the API and are too incomplete as well.

Update: Since posting I’ve been told all servers will be and are currently in GMT time. Cool!

Deployment to Windows Azure

June 4, 2009 No comments yet

Here goes my first real deployment. The first thing you’ll notice is that you no longer need an application id. It looks like that was there for live authentication and so it has been decoupled for those not needing it by default.

To deploy you just upload the application package and service configuration file. By the way, just right click your worker role project and pick Publish to generate your files. Once uploaded, you get this cool staging/production screen.

image

Once uploaded you can change the configuration xml via the browser which is great! I’m about the hit run and see what happens …

Staging worked perfectly. I can’t find a way to view logs so I’m going to promote it to production next. As a test the service emails me the logs, so I can see it all working.

The promotion seemed to work however I did get a system error from the website. I will say this – the site needs some work, it is pretty slow and bulky. Come on MS make it fly! :)

Using Windows Azure with Amazon Simple DB

June 4, 2009 No comments yet

I have a great real world example of something that needs to be run in the cloud. Currently I have 2 types of applications running. One type is a sentinel and the other is a listener. There are many of these running today across three data centers. I want to know when one of these services has stopped functioning correctly.

My test is going to be to build a worker role that can run in Azure, connect to Amazon’s Simple DB service and look for status information sent from these other services. This will show connectivity between two different cloud technologies and allow me to test the availability and notification services of Azure. For example, is this new worker goes offline – how do I get notified?

I’ll be using my SDB .NET Provider which I haven’t yet released to the public. It allows me to hide the implementation of the Simple DB code so I can switch it out as required. It includes all Amazon libraries as well as SQS and a .NET Membership provider.

Here is the initial code block.

image

We’ll write an object to Amazon and then see if we can fetch it. This is making use of Amazon’s web services. I specifically didn’t put any exception handling around this start method because I want to see what the Azure system does when something goes wrong. The provider was configured using an app.config file.

When I tried to run – problem:

System.Security.SecurityException Message=Request for ConfigurationPermission failed while attempting to access configuration section at …. – lucky for me controlling the section permissions can be done in the config file. I set my section to requirePermission=false.

I don’t seem to be able to use a config file to setup the provider so I’m going to cheat for now and setup a stand alone instance without any config files and we’ll see how that does :) I did notice I’m probably supposed to put all the required config xml in the service configuration file so I’ll do that next time.

Here is a screenshot of the output, works like a charm. A test object was written and retrieved from Amazon Simple DB.

image

A couple notes. If you rename your worker role don’t forget to update your service definition file and configuration file. There does appear to be a problem with the developer fabric. I write information event entries to the log and they were not showing up but I knew the role was running. After restarting the fabric the messages started to appear again so I’ll see if I can report that as an issue. As an FYI I used a System Timer object to trigger my code, works great too.

In my next post, I’ll try deploy this to the real cloud :)

My TDD Analogy

June 3, 2009 No comments yet

In my post about Test Driven Design I expressed concerns around building your entire architecture to just support testing. My thoughts were definately tough to put into words, maybe I should have used more pictures :)

I do finally feel I have a decent analogy to the problem I’m concerned with. Building your application to be perfectly testable would be like building a car to always pass a crash test and to say – “let’s build a car that could never ever hurt someone”. Great, so it has no wheels or even an engine but dammit, it performs great in crash tests, it passes every test!

Applications have to work, testing like vehicle safety does unfortunately come second to functionality. Should you test? of course – but it is a balancing act so don’t get sucked into all the hype.

Also, in the words of Jeff Atwood, don’t just listen to me or don’t listen to me at all. I am no expert so do your homework :)