I’ve been busy at work lately one of the projects assigned to me is to create an application to redact and edit emails that will be sent to customers. This provided a great opportunity for me to get familiar with creating a custom control in C#. I needed a way to create rich content and although C# has the rich text control it provides everything in RTF which is difficult to work with and hard to embed. So I got to work on my very own WYSIWYG control that produces HTML. So I am making it open source and available to anyone have fun and enjoy if you make any cool modifications to it let me know. I would love to include spell check ability but I don’t have much time to work on it right now.
Download Here HTMLWYSIWYG

Sample Uses
<br />
private void button1_Click_1(object sender, EventArgs e)<br />
{<br />
//Gets the HTML Code generated by the control<br />
Console.WriteLine( htmlwysiwyg1.getHTML());<br />
//Getts the PLain Tex code generated by the control.<br />
Console.WriteLine(htmlwysiwyg1.getPlainText());<br />
}<br />
<br />
private void frm_main_Load(object sender, EventArgs e)<br />
{<br />
//Sets the control to allow edits<br />
htmlwysiwyg1.allowEdit(true);<br />
//Loads the HTML into the control<br />
htmlwysiwyg1.setHTML("<b>BOO</B>");<br />
//Loads aditional fonts into the control<br />
htmlwysiwyg1.addFont("Cambria");<br />
}<br />
On July 7 google posted the following on their official blog.
It’s been an exciting nine months since we launched the Google Chrome browser. Already, over 30 million people use it regularly. We designed Google Chrome for people who live on the web — searching for information, checking email, catching up on the news, shopping or just staying in touch with friends. However, the operating systems that browsers run on were designed in an era where there was no web. So today, we’re announcing a new project that’s a natural extension of Google Chrome — the Google Chrome Operating System. It’s our attempt to re-think what operating systems should be.
It seems that the endless rumors about Google making an Operating System were not unfounded after all. After this announcement I went through the list of Google products, and I have found that basically Google’s model is simple. They take an existing product or function and create an improved version of it, in accordance with the company’s view. By making such a product the force the hand of the previous competitors, thus accelerating the evolution of said product and benefiting everyone.
Take Gmail for example, before Gmail came around all web based free email platforms had ridiculous restrictions 2-10 mb per account, no large attachments, poor POP and IMAP support etc… Then along comes Gmail and it blows all the caps and restrictions providing free unlimited space with POP and IMAP support excellent search and a snazzy interface. Immediately the competition reacts and now most of the web based email platforms support a wide range of features and unlimited space.
Google has done this with many of their products , Google Earth, Google News, Google Voice, the threat to buy the 700 mghz spectrum and many more. Google is playing a game and the thing is, that they are good at it. With this announcement about an OS they just threw the ball in Microsoft’s court. I guarantee you that the next version of “Windows” will take a lot from this.
So I installed Windows 7 as my main OS at work a few days ago just to play around in a “Production Environment” and this morning I ran into the strangest, yet most useful feature yet. Apparently in an Aero enabled PC with Windows 7 if you grab and shake your foreground window it will automatically minimize all the windows behind it, clearing all the noise. Once you are done, you can get all your windows back by shaking the screen again. Very useful! yet it can get annoying, I have several times now shaken my screen in anger or while waiting for something (who hasn’t?), and everything drops down. Check out the vid if you don’t believe me.
I haven’t posted anything in quite a while mainly due to the fact that we were constantly working on things for the wedding. Today I am proud to announce that on May 2nd 2009 I married Annie Litchfield Gomez. The wedding went on without a hitch and everything was awesome. Visit annieandjose.com to see pictures and get more info.
On April Fool’s day Google put in an over the top show with CADIE , a cute little panda that stole our hearts. But amongst the things that CADIE showed us may be the real possibility that Google Chrome Plug-ins are coming soon. CADIE in its infinite wisdom, decided that we would be better off browsing the web in 3D and thus presented us with her version of Chrome.
This version features a cool new button on the tool bar,
by pressing it the whole screen became viewable in 3D by using stereoscopic glasses.

This in itself although a novelty doesn’t represent much. But looking at the way the layout changes and the way the button behaves, one could conclude infer that this was made utilizing what would be the plug in functionality of Chrome. So maybe in the very near future Google will reveal the next version/phase of its awesome browser.
Take it as you wish!
Tags: add-on, browser, conspiracy, google, plugins, prediction, web
This morning google introduced the world to CADIE (Cognitive Autoheuristic Distributed-Intelligence Entity)
Research group switches on world’s first “artificial intelligence” tasked-array system.
For several years now a small research group has been working on some challenging problems in the areas of neural networking, natural language and autonomous problem-solving. Last fall this group achieved a significant breakthrough: a powerful new technique for solving reinforcement learning problems, resulting in the first functional global-scale neuro-evolutionary learning cluster.
Since then progress has been rapid, and tonight we’re pleased to announce that just moments ago, the world’s first Cognitive Autoheuristic Distributed-Intelligence Entity (CADIE) was switched on and began performing some initial functions. It’s an exciting moment that we’re determined to build upon by coming to understand more fully what CADIE’s emergence might mean, for Google and for our users. So although CADIE technology will be rolled out with the caution befitting any advance of this magnitude, in the months to come users can expect to notice her influence on various google.com properties. Earlier today, for instance, CADIE deduced from a quick scan of the visual segment of the social web a set of online design principles from which she derived this intriguing homepage. More…
They seem to have put a LOT of effort on this joke including 3D viewing for websites using Google Chrome which ACTUALLY WORK check it out here if you have stereoscopic glasses. Way to go google, its great that you find time to have some fun when the economy is so bad!
Tags: April Fool's, CADIE, google, Panda
This may make me sound like I am antiquated and behind the times, and in this aspect you are probably right. Since I started messing with programming quite a few years ago, I’ve tried to make the programs I write as user friendly and as easy to maintain as possible. Recently I have adopted a few things I’ve picked up from others like making the methods in my programs accessible through web services when it has merit and things of the sort.
One of the things I have always done is provide extensive config files in XML format in order to alleviate having to modify the code when simple things change such as passwords, database names, host addresses etc. This has in my opinion always been a great venue to ensure maintainability and stability. But the big issue always was XML..
XML (Extensible Markup Language) is a general-purpose specification for creating custom markup languages.[1] It is classified as an extensible language, because it allows the user to define the mark-up elements. XML’s purpose is to aid information systems in sharing structured data, especially via the Internet, [2] to encode documents, and to serialize data; in the last context, it compares with text-based serialization languages such as JSON, YAML and S-Expressions. [3]
more…
The problem I’ve always had with XML is parsing the file; although the support for it and the built in tools have improved greatly over the past few years it still requires considerable amount of code in order to gather the data in some languages (C#), and another considerable amount of code in order to update or change the data in the file. When I was learning Object Oriented programming a while back we were introduced to the concept of Serialization
In computer science, in the context of data storage and transmission, serialization is the process of converting an object into a sequence of bits so that it can be stored on a storage medium (such as a file, or a memory buffer) or transmitted across a network connection link. When the resulting series of bits is reread according to the serialization format, it can be used to create a semantically identical clone of the original object. For many complex objects, such as those that make extensive use of references, this process is not straightforward.
more…
But like the Wikipedia definition above says “this process is not straightforward”, you used to have to define Interfaces and formats and if your object had any kind of list or array in it, you couldn’t use it unless you wanted to spend a considerable amount of time making it work.
While I was working on the practice projects I grew to hate Serialization and had not used it since. Yesterday in a fit of rage, because my XML config file was being stubborn I stumbled across an implementation that used a Serialized object for storing configuration. I was baffled by the ease in which this was accomplished and I immediately implemented it. Now it its extremely easy to add and remove config parameters from my program and at the same time I don’t have to worry about someone deleting or changing the config file since it is stored in binary and gets re-created if deleted.
In order to serialize an object your class must be declared as [Serializable] . After you have done this, the below example will take care of the serialization for you.
//Serialize an Object
FileStreamfs = new FileStream(@”prog.conf”, FileMode.Create); //Create new File where the object will live
BinaryFormatter bf = new BinaryFormatter(); //Create new BinaryFormatter to Serilize Object
bf.Serialize(fs, YOUROBJECT); //Serialize Object
fs.Close(); //Close File
//Deserialize
FileStreamfs = newFileStream(@”prog.conf”,FileMode.Open); //Open File Containing Serialized Object
YOUROBJECT obj = (YOUROBJECT) (new BinaryFormatter().Deserialize(fs));
fs.Close(); //Close File
Remember to include the System.IO and System.Runtime.Serialization.Formatters.Binary libraries.
Tags: C#, config, object oriented, Programming, serialization, wikipedia, xml
While listening to Net@Night from the TWIT Network I was introduced to Blib.fm, the best way I can describe it is Twitter for music. You go to the site and type the name of your song and or favorite artist and it plays it for you. At the same time the site pairs you up with people of similar musical taste and you immediately begin to get their blips, that is the music they are playing / searching for. This is extremely fun as you discover new music and songs you didn’t know you liked, its a new way of sharing music and getting to know people.
Tags: blip.fm, music, social network, twitter, web2.0




