Archive for the ‘Mono and .NET’ Category

Mono 2.0 is out!

Posted on October 6th, 2008 in Mono and .NET | Comments

Homepage image

Homepage image

This is a huge milestone. A lot of work went into getting this release out.

With it comes C# 3.0, Linq, VB.NET 8.0, System.Windows.Forms 2.0, and so much more!!

Also checkout the redesigned Mono homepage (eating our own dog food on the backend as it runs Mono).

Monoport Pastbin update

Posted on July 20th, 2008 in Mono and .NET | Comments

The pastebin for mono, monoport.com, now has captcha. The spam was to much.

JB updated his “monoporter” ruby script for it. You can see the source and download it here.

Mono on Openmoko and iPhone

Posted on July 19th, 2008 in Mono and .NET, iPhone | Comments

I’ve been hacking this week and I did it on both phones!

First I’ve got Openmoko running Mono. Not sure if anyone else beat me too and already did it but it pretty much worked out of the box, after some environment variable tweaking. Hello World at the shell is alive! After I got it running, I stopped. This isn’t so much a challenge in that this runs Linux, up to par with the Maemo OS on the Nokia 770/N800/N810 and we already have decent ARM support for that. It was surprisingly uneventful.

On the iPhone side, I’ve got something that is working to some extent. I’m cheating in some evil ways to make it load so I feel weird calling this officially “running” Mono yet, but I thought it was blog worthy since I did get it to call me back with a string that contains the all to classic “hello world” (totally heart stopping moment). This is different then the earlier effort in that my way is fully within the rules of the official SDK from Apple (other one ran on jail broke phones). I have to give credit to the previous effort because if it wasn’t for that work to get it working on the jail broken version months ago, I wouldn’t have this working as well as I do now. Lots of issues still to overcome still but Mono is looking to be a really viable option for development needs on the iPhone.

It’s hard to post pics to get everyone excited because right its just me sitting in front a really cryptic terminal and debugger, but trust me, it works!

In the mean time I’m still working on my PocketWiki application. Finding bugs in the SDK but there are some interesting things you can do.

This little sniplet sets the content of a webview, and then a button on the window is wired up to execute a function in that HTML and get the result back and display it in an NSAlertView:

- (void)awakeFromNib {
	[webView loadHTMLString:
	 @"<html><head><title>Hello HTML</title>\n"
	 @"<meta name=\"viewport\" content=\"width = device-width, user-scalable = no\" />\n"
	 @"<script>\n"
	 @"function getText(){\n"
	 @"return document.testform.test.value + \"\\n\";\n"
	 @"}\n"
	 @"</script>"
	 @"</head><body>TEST <form name=\"testform\">"
	 @"<input name=\"test\" type=\"text\" value=\"example\" id=\"test\" />"
	 @"</form></body></html>"
					baseURL:nil];
}

- (IBAction)buttonPush:(UIButton *)sender {
	NSString* var = [webView stringByEvaluatingJavaScriptFromString:@"getText()"];
	if (var != nil)
	{
		UIAlertView *alert = [[UIAlertView alloc]
		    initWithTitle:@"The text box says "
			message:var // bug? they will release our string
			delegate:nil
			cancelButtonTitle:@"OK"
			otherButtonTitles:nil];
		[alert show];
		[alert release];
	}
	//[var autorelease];
}

Shameless plug: If your company wants to break into this hot market while it lasts and deploy a rich client app for the iPhone that ties into your business’s existing web services or applications so that you enrich them with features like quick auto-login (and other data stored locally on the the phone), offline capabilities, camera, and location apis, and the upcoming push services API Apple is soon to release, you can contact me through my site. :-)

Update:
I jumped the gun. What I was seeing was a EXC_BAD_ACCESS error releasing my thread and returning my callback I was expecting when it worked. I didn’t see the crash because of another bug. The memory on the iPhone can’t be executable and writable at the same time. This is a iPhone 2.0 change. iPhone Mono will only work if we get Mono full AOT (or someone brings back the Mono interpreter from the dead).

Farewell Texas Instruments…

Posted on July 14th, 2008 in Mono and .NET, Personal | Comments

After 2 years, to much regret, I’ve decided to leave Texas Instruments and pursue other opportunities.

To everyone of my colleagues in TI’s educational technology division, I wish you the best and I will miss you all greatly. I’ve have had some really amazing experiences working with you all and I learned a lot. However the timing is best now now that we are coming to the end of this project for me to make my leave.

July 25th will be my last day. After that, I’m taking myself on a long needed vacation (haven’t had one since I started so I REALLY need one). Then its off to the next great adventure in life (and if I can just figure out that one out, I’ll be set :-))

I may be on the market soon, so if anyone is in need of a systems engineer or developer with more then 9 years of experience and proficient in cross platform, embedded, and network service based development (preferably in C, C++, Objective C, .NET, Mono, and Java), then leave me a comment. :-)

Phone Crazy (part 2)

Posted on July 12th, 2008 in Mono and .NET, Personal, iPhone | Comments

I ran by the Apple Store again. It’s incredible still. 5 hour wait time estimate still and out of 16gb black versions. It’s straight up madness. I’ve never seen so much excitement over a product in my life. Not even the XBOX, PS3, and Wii lines ever compared to this type of crazy excitement (but maybe that’s because they ran out of stock where Apple keeps just enough coming to meet the demand).

I’m writing two applications for the iPhone at the same time (two track mind :-) but I have a good reason).

The first is a MetablogAPI based application so you can you quickly blog, edit, and delete your posts if you blogging software supports the MetablogAPI (other blog apis I’m to lazy to support). It’s a simple app but on the back end I’m using Mono to handle the XML-RPC calls (more as a proof of concept for mono so the application is not a high end app with tons of features like HTML input, geo tracking, and image uploading but maybe later). I’m using this as more of a test application rather the one I want to work on (unless people like it). I’ve got it working in the simulator and linking correctly there, but that is X86 and far easier. I’ve got lots of work to do on my build setup to deploy it to the device with having to build Mono. Before I release and production quality version I’ve got to get the size down as well so my go down the path of what Moonlight is doing with Cecil to trim down all the assemblies to a limited set. There is plenty of space for a full blow Mono install but not much memory.

The second thing I’m working on a Tomboy like notes app. Wiki-text like input on the iPhone interface is weird so I’m creating new concepts to help out with that, that I’m experimenting with now (all new ball game of user interface rules and expected norms in this world). I’m working the use interface at the moment. I’m designing my own custom text view to render the data, handle links, and handle in input events. My text view has to support handles my input and supports highlighting (which is really difficult it turns out). The text view in CocoaTouch is ok and may work (but with a lot of fighting) so rather then overloading and extending it, I’m designing my own from scratch and doing it in C. My hope is to create something more portable to other devices later. I’m abstracting all the paint calls and input event handling out to an abstraction so that when I get my OpenMoko setup going, I can reuse the same input system and rendering between the two by implementing another backend for the rendering code against whatever graphics system I use there and fit it in to whatever control/widget system I use there (hopefully it pays off because i would love to do a release for both).

Right now, I’m handling basic input and font geometry (to wrap and format the text). Since I’m only doing this for the text view area leaving everything else native and properly abstracted from my core it should be maintainable and easy to port and maintain my ability to be act like a properly native citizen on any platform I port it too.

When I get Mono working on the first application and evaluate it, I’ll decide if I want to do the backend in Mono on this second one (I would love to share code from Tomboy if I can so that maybe I can do some syncing between the two but with the differences in how I can display, it may turn into a converter rather then a syncing system).