OpenNIC

Posted on May 29th, 2006 in Personal | Comments

Now this is cool and dearly missing from the internet. A democratic alternative to the root DNS offered by ICANN.

http://www.opennic.unrated.net/

I’m getting sick and tried of these new root namespaces being dulled out by ICANN. I mean seriously? .jobs??? Thats the biggest joke I ever seen. ICANN doesn’t function correctly anymore. The power of the root DNS need to be switched over to a better working body. ARIN is getting on my nevers too with the IP allocations as well. RIPE seems to be more friendly then ARIN now days.

I love how OpenNIC’s website referes to anything ICANN as legacy, and OpenNIC is open to partnerships to run your own top level root. Might submit a proposal for a .mono root later and host it…. Maybe not… Cute thought though

reverse p/invoke and libmozembed

Posted on May 29th, 2006 in Personal | Comments

I’ve been hacking on libmozembed all week. Complete with the tons of headaches and victories that go along with it.

I came up with a pretty cool model for doing reverse pinvoke in a massive fashion. Instead of creating a delegate around each method and then pass each one to the unmanaged layer one by one, I decided to go the route of creating a struct strictly full of delegates to hold all my callbacks. I marshal that struct on the unmanaged side to a struct full of function pointers. Because its a little tedious writing a new delegate around each function, I went one step further and wrote an interface that declares all the functions required for each off the callbacks and wrote a nice little static little function wrap any instance of that interface in each of the required delegates. It’s nice and clean if I don’t say so myself. :-)

I’m currently wrapping up a bunch of the interfaces in mozilla to give us full control in the managed layer over things instead of the wrapper automatically assuming the most generic implementation like I was doing before. I decided that this was the best route when I hit a few places in the code like the profile and window creator and some of the other services I have to create anyways. I’m even opening up some the basics so that when the xpcom stuff is ready, we should be able to integrate XPCOM layer with everything. (Mostly just opening up my XPCOM wrappers and providing a few functions to get my running instance of the core XPCOM services that I’ve already created for use by the XPCOM wrappers)

I’m really moving to the route of integrating XPCOM to supplement everything past the basics. I think it’s going to be the best solution in the end. I think I evolved through the entire thought process that the Mozilla and Java integrators went through over the past 6 years in just a little less then a month and came to a very similar conclusion in the very end. The greatest part is that we can do it better then Java could ever do because of limitations with JNI and in what Java can support itself. Mono has Reflection.Emit and compared to JNI, pinvoke rocks. Where Java has always had to generate a JNI stub for (up until the latest breaking code and very unstable code), we do not need to thanks to the magic of Reflection.Emit.

I’m completely avoiding any requirement on any bit of the XPCOM wrapping stuff to get the use the basics with the browser embedding. It’s just when you want to access things like the DOM, the printing interfaces, the spell checker, and the thousands and thousands of other goodies, will you need to use the XPCOM interfaces. When its done, everything should play well and while still manually handling the gecko embedding parts. It will also make things more stable and faster in the end when it comes to straight up gecko embedding. Maybe some day in the future (maybe next year or something) we can even just go right to XPCOM for doing everything.

Also in a high level respect, I noticed that I’m going through the exact same struggles that the Mozilla ActiveX control guys went through. They wrap Microsoft’s IE api as well. However where they have COM and only work on Win32, I’m wrapping it at the layer that tlb2asm eats it up. It’s a bit interesting to say the least.

Oh well. Back to work.

ASP.NET Appliance

Posted on May 22nd, 2006 in Personal | Comments

Soekris + XSP + Mono (compiled on uclibc) = $200 ASP.NET appliance

I’m still trying to find a good practical use for this but I got my Soekris net4801 running Mono (which I compiled against uclibc) with XSP.



I think I might regret this later, but you can see it hosting a little aspx page here that runs a few apps and pipes them to the response stream. (Might go down later.. not really built for high traffic :-P)

(Ignore the 40GB mini hd in the stats and the pic. That is for squid for my caching. Everything is running off the 1gb CF card. Also the RAM is wrong that comes from hwinfo. I only have 64mb but it thinks the CF card is ram.)

Neat stuff :-)

JaCIL, 24, Online Food Ordering

Posted on May 21st, 2006 in Personal | Comments

JaCIL

This looks interesting. JaCIL (pronounced “jackal”) is a project that aims to be able to provide the capability of running CLI code on the JVM and visa-versa. Underneath, it leverages Mono’s Cecil to help tackel some of the hurdles.

You can read the anoucment from the author here: http://lists.ximian.com/pipermail/mono-devel-list/2006-May/018573.html

24

I don’t watch 24 but there is a lot of press because it’s the finial episode or something. The most interesting story is the dude that noticed that the clock on the show isn’t a real clock.

Online Food Ordering

Ordering online right now and I just had to talk about this.

This drives me nuts. Pizza Hut uses this company that provides this software called QuickOrder on their site for online ordering. It breaks so many rules of good design. The most anoying “feature”, is that the back button will corupt the entire order (their little javascripts to detect the back button don’t really work). Oh and anyone like DHTML layered popups? The new version is now “AJAX” powered, just for the sake of being AJAX powered and not because it solves any problems. This site is completely useless if you don’t support Javascript. Konqueror just about melted when I used it tested it out just for kicks.

QuickOrder is used on some other sites such as Dominos and a bunch of smaller resturants. I don’t know how. Do people even demo their stuff before buying in?

In contrast Papa John’s online ordering system is awesome. They used to use Food.com (years ago in the pre .COM boom era when Food.com had an online ordering system), but decided to write one on their own. Nothing special. It’s a traditional web app. Its clean, it provides everything it should (user registration, profiles, password recovery etc), and it works even under the worst conditions. Praise the Papa for good design.

Another really good one I found is Jason’s Deli ordering system. This one is written in ASP.net and it’s very new on the block. I’m sure it doesn’t see the traffic as the other two, but yet it works quite well and has a cute little charm to it.

Oh well. Slow day of code.

done!

Posted on May 19th, 2006 in Personal | Comments

I’ve done a bunch today… Just after posting my last blog post on libmozembed, I spent a few hours and knocked out milestone 2.5 and 3.0 in nearly 1/5 the time I though it would take. No more Mozilla SDK required now that I’m dynamically invoking xpcom’s glue.

:-) YEPPIE! :-)

Now time to clean up the binding, add a few helper functions, and get to work on the rest of everything on the managed side.

libmozembed

Posted on May 19th, 2006 in Personal | Comments

I’ve been going non stop of this Mozilla embedding code. I’m getting so far.

I’ve laid out some milestones for myself when I started. Here is where I’m at:

  • Milestone 1

    • Fork gtkembedmoz into a new component. Remove references and dependencies to GTK+ bring in parts from other embedding implementations. Get it to compile. (Exact way the Java Web client was created so I though it was the best route to go). Design and write basic invoking wrapper to be used by p/invoke later.
    • Difficulty: Easy, just lots of work
    • Status: Completed on 05/07
  • Milestone 1.5

    • Separate code base to the project build outside of Mozilla’s code tree and without having to build it in-line during a normal build of Mozilla
    • Notes: Built project skeleton up, wrote macros for autoconf to find Mozilla sources and libs (pkg-config doesn’t exactly work for what I’m doing).
    • Difficulty: Hard
    • Status: Completed on 05/12
  • Milestone 2

    • Drop all references to all internal and private classes in Mozilla. Switch to embedded string classes. Bind ONLY to Mozilla’s xpcomglue and embed_base_s libs.
    • Notes: Now compiles against latest Mozilla SDK or SDK directory in your dist folder of your Mozilla and using the standard development headers. No need to build Mozilla to get it to work. Begin work on C# wrapper and wrote a very minimal implementation to start testing.
    • Difficulty: Hard
    • Status: Completed on 05/18
  • Milestone 2.5

    • Drop emed_base_s lib dependency by handling Mozilla XPCOM startup and shutdown ourselves
    • Difficulty: Fairly easy
    • Status: 100%
  • Milestone 3

    • Drop dependency on xpcomglue lib and bind directly to xpcom. This will make it possible to build the binding without having to download a binary SDK or build Mozilla to extract the SDK from the build to link against.
      This step still remains to be seen if its completely feasible. The best why to find out is to try and do it.
    • Notes: this may require dropping nsSupportWeakReference which I’m not sure what the effect will be yet.
    • Difficulty: Hard
    • Status: 100%

You can see some of the specifics on the Mono wiki.

Google Analytics

Posted on May 17th, 2006 in Personal | Comments

I signed up to get an invite about 3 months ago, and I’m still waiting.

Might get one from ebay for $100-200. http://search.ebay.com/google-analytics_W0QQfkrZ1QQfromZR8

Maybe not…

Subversion, MSDN, Mozilla+MWF

Posted on May 9th, 2006 in Personal | Comments

Subversion

Subversion is finally putting the last nail in the CVS coffin it seems. All but GNOME and Mozilla’s CVS are the only two of the most mainstream active projects I know that still stuck using CVS. I can’t figure out why GNOME hasn’t switched yet, but I know its going to be a bit of trouble for Mozilla with the make scripts, lxr, and anonymous mirrors.

Also the ViewCVS project has now been renamed now to ViewVC as of 1.0, and has taken up residence on tigris.org with SVN itself.

Bye Bye MSDN

After having an MSDN subscription on hand for over 10 years, my MSDN sub. is now gone, expired, and dead. I just couldn’t figure out why I needed it anymore. I’m sure I will come to a point where I will need it again, and I might buy a new one in the future. So far I’ve done just fine without it for over 4 1/2 months without it.

Maybe, I might buy another next year… blah… maybe

Mozilla control for MWF

No more compile errors from Mozilla’s headers! Whoohooo. Still lots more work to do. I have to thank the Epiphany guys and the Galeon guys a ton for their help.

Seems I have to directly break some of the documented rules with Mozilla’s embedding API because some of the headers in Mozilla don’t follow them either in some of their unfrozen APIs. From what I gather from everyone though, it’s not that bad calling the unfrozen interfaces in there. Usually requires a few nights of hacking after every major release of Firefox/Mozilla to keep everything working and I don’t mind doing that. Not like we are going to be doing anything that special (hope those aren’t famous last words). I’ve got Firefox 1.5/Seamonkey/XULRunner support right now and I’m nearly there for supporting backword compatablity with Firefox 1.0/Mozilla 1.7.

I was going to go crazy on features since its so easy to tie in anything in there, but I don’t know which part will get rewriten in the next Mozilla based incarnation to be released. I used gtkembedmoz as the main basis for about 50% of my code, so I already support just everything it offers already. I’ve also added support for getting more information from the click and key press events, and I’ve added the ability to disable a few features that you might not want (frames, plugins, images, meta-redirects, etc). I even added support for forcing a repaints, and accessing and consuming a lot of events like before a URL change or on any click or keypress that happens.

However, currently, I’m debating on adding:
* Print/Print Preview support
* Access to the clipboard and the selected text in the window from code
* Access to cookies, history, cache, etc.
* Access to Mozilla’s configuration settings (for reseting the default font’s, text size, etc)
* Access to evaluate Javascript (even get a boolean return code) in the page and get even catch Javascript error callbacks (Galeon does this).
* More networking control (proxy, file handlers, etc).
* DOM integration - will have to be with the XPCOM bridge (unless someone wants to wrap the huge root nsIDOMElement class, the root of all elements, in C for me :-P)

All these features, with the exception of the DOM access, is very easy to add, however the more I add, the more any change in Mozilla’s codebase in the future could make it easier to break.

I think I’m going to play it by ear when wrapping the WebBrowser API in MWF to see where I get too.

Web Control for MWF

Posted on May 7th, 2006 in Personal | Comments

I’ve still got a lot of work to do before its ready, but I’ve started work on a new Gecko based web control for both Managed.Windows.Forms (for Mono) and System.Windows.Forms (for MS .NET). I just stuck some of the code in a new directory in the SVN called “mozembed” (see it here).

It’s not compiling out of the box yet and I’m working on backwords compatibility with Mozilla 1.2-1.7 and Firefox 1.0.x. Currently only Firefox 1.5, Seamonkey 1.x, and maybe XULRunner will work (and you have to bootstrap with ‘-DFIREFOX_1_5′)

One really nice part, is just like our version of libgdiplus, I’m planning on leaving the native library completely open for anyone who wants to consume it for whatever they feel like for a simple way of embedding gecko without having to do deal with Mozilla’s massive embedding API.

None of the managed code is in there yet (still changing to much to post it in since its based on older versions that I got to compile in the past week). The configure.in file needs some magic (autoconf, “That’s Hot” (R) )

Lots of work still to do. :-)

My name is Zac Bowling, and I approve this message.

Mono in the press.

Posted on April 29th, 2006 in Personal | Comments

Mono is pretty big and gets tons of press attention all the time. Nothing to special at this month, but I though I might link a few articles that caught my eye.

Article on Linux.com talks the ease of Mono and the ability to recycle your .Net programming force.

Article on Goverment Computer News talks about Mono on Novell Linux Desktop.

Article on Mono in The .NET Developers Journal about the history of Mono in light of Mono’s up comming 5 year anniversary.