April 2004 Entries
Open Standards are one thing, Open Source is another.
The thing that really irks me are when NEITHER exist in an incredibly popular format such as DVD movies.
This MIT Interview with Jack Valenti is precious, it shows the closed-mindedness and the depths that Hollywood will go to just to maintain an archaic distribution channel. It also demonstrates their complete cluelessness of where technology is today.
(found on slashdot)
Even Microsoft and Sun offer Open Standards so we can hook most things into their API. I don't need to license anything to hook into Office, but if I use Office, I have to buy it, that's perfectly fair. If I want to use a DVD I bought, I should surely be allowed to do so any way I like.
At first I was excited, then totally let down...
Importing Content into OneNote 2003 SP1 Preview
You know I don't mind limiting the export capabilities, but not even allowing import to current cursor location was a bit of a shortcoming.
For example, I want to create an import for SVG files from Grafigo (or anything else) as either Ink or an Image (support for both).
With this API, I will have to create a scratch page just to get the graphic into OneNote, but then I am not sure if I'll be able to move it around to the section where I need it.
I don't need programmatic control of deletions, the user can do that themself in OneNote, what I need is some way to get things into OneNote that it doesn't natively support and allow the user to cut/paste/drag/drop it whever they need it in any notebook/section.
Perhaps allowing InsertObject (in addition to just image) would be the way to go on this, then an SVG Importer would be moot. It really surprises me that it's not avalable as an Office Filter by now (which seems to be what controls importimg images into office).
However, I would really like to insert SVG as INK, which I'm sure an Office importer wouldn't support anyway. The way I am thinking about doing it with this API is to make a scratchpad page, but I am going to have to test to see if cut/paste once it's in OneNote will work as expected since it will then be Ink and not an SVG.
When I get my Ink applications running the way I like them, everything is going to be saved as SVG because it just makes sense.
I am putting together my preliminary Breakout Schedule for TechED.
I vow NOT to attend any security breakouts this Year... I vow....
That is going to be my mantra... After a year of almost exclusively being fed security briefings and re-architecting alot of my code to conform to tighter security, I am moving on this time.
It looks like my first session is going to be CTS200 with Don Box, no doubt it will be another fantastic session.
I think I'll post the schedule somewhere in case anyone wants to hook up with me, then again just use Rio and scan me.
Here are a few listings that are sticking out for me as must attends:
- CTS200 Connected Systems: Service Orientation and the Windows/.NET Developer
- MBL341 GENERAL SESSION: Going Mobile with .NET, XML and SOAP
- DEV310 ASP.NET: Top 10 Tricks for a "Killer" Web Application
(Ken Getz and Paul Sheriff together sounds like fun)
- DEV412 ASP.NET: Blackbelt Web Forms Programming
- DEV413 ASP.NET: Tips and Tricks for Building Server Controls
- MBL225 Designing Mobile Applications for Laptops and Tablet PCs: Networking, Data, Power and Other Considerations
- MBL344 Tablet PC Development: Best Practices
- ARC301 Service-Oriented Business Architecture: A Conceptual Model
- ARC404 Managing Service-Oriented Architecture Using Existing Platforms
- ARC310 Improving Application Performance and Scalability
- CTS303 Connected Systems: Applied Web Services at the Ohio State University Medical Center
- CTS400 Connected Systems: Using Web Services Enhancements v2.0 for Messaging Over Multiple Machines and Networks
- DAT329 SQL Server 2005 (code named "Yukon"): A Platform for Web Services
- DEV410 ASP.NET: Inside the ASP.NET Runtime - Intercepting HTTP Requests
- DEV464 Windows Forms: Advanced Topics in Building Applications with Visual Studio .NET
- DEVC15 Connected Systems: Distributed Applications Performance Panel
- DEVC35 Web Services Interoperability
- DAT405 Extreme SqlXml
I recently started using SharpReader with consistency and I really, Really like it...
I don't know why I put this off for so long, but this tool is really great.
If you read ANY blogs, you should have this tool, or at least give it a try.
Chris Prately has announced the availability of OneNote Service Pack1. While this is just a preview, it seems pretty stable and offer alot of new features.
Some highlights:
Drawings can be edited by selecting parts of them
Use pen as a pointer (very nice, and quite useful when demoing)
Simple API
Capture Screen Clips
Open Folder (this was a major annoyance of mine)
Insert MS-Office Docs (as pictures though, not as objects)
Import Pictures ...
I'm in a suckage hotel for TechEd it seems :-(
Basically everything decent is already Sold Out and it's over a month before the conference.
Hotels are too predatory in their fluctuating price practices. I know its a supply and demand thing for fer cryin out loud how can they justify (or be aloud to price gouge) a $127 dollar a night room (which in itself is a tad high already...) for $389 during TechED.
It's not like they are putting in a free XBox, 10mbps lan connections and All-the-Coffee you can drink just for the conference. This is the exact same room (with a modem port, not even wireless) in the exact same hotel one week apart.
I'm not paying for that nonsense. I'm only in that room for about 4 hours a day during conferences anyway so I'll take the less spectacular room in exchange for being right next to the Convention Center and put a couple hundred dollars on my Duetto card (for the Starbucks in the CC) so I don't have to sleep.
 |
It's official, I'm going to TechED 2004.
I really had no doubt I was going, but everything is all registered and final now :-)
If you are going, drop me a line and we can grab a coffee and yack about something.
I know there are several people I am going to target a chat with. |
This a looks like an interesting application - BlogJet. It's a new Windows client for blog post composition.
Many blog systems are supported natively. Too bad its not open source and has such a restrictive test expiration. I'm going to play with it for a while and see if I really like it.
Chris Pratley is writing about adding Blogging capabilities to OneNote.
I was wondering a while ago why OneNote has no support like the rest of the Office Tools for 3 things...
An API, Add-in modules and Scripting.
I understand this is a 1.0 release product, but really, it's billed as part of Office sytem, but acts totally like a stand-alone product that has no relation
I was working on a couple things for a User control that were absolutely making me nuts...
If you need to get the ClientID of an object (for use with javascript) and you are adding objects Dynamically, you are going to have to consider a few things...
Robert Scoble never ceases to impress me in the community ideas he comes up with.
Channel 9 is a great idea that will hopefully provide some interesting insights.
Polyvinyl is an eclectic sort of music soundscape.
I really enjoy the work and would surely by a CD when he gets a contract, but unfortunately whatever misguided label he probably gets on will force him to remove his excellent and freely available web work.
I would encourage him to SELF-PUBLISH and promote the heck out of himself by buying a google ranking, etc. If he sold (self-pressed) CDs for say something like $5 on his website I'll bet he would make a decent amount of sales... Who needs a Label if you have the ambition to go market yourself, the quality of Konstantin's work is excellent. I would not doubt that he would put the same effort into pressing a disc as he has put into his engaging music. As soon as he sold enough to order a mass pressing (say 10k discs) then he could do the math like Aimee Mann did and forget dreaming about a record deal that will ultimately leave him just as poor as when he started.
Does this article terrify you as much as it does me? Orwell was RIGHT! it only took 20 years longer to happen than he predicted.
I don't recommend plagiarism, nor do I support WHOLESALE cut & paste of other peoples work in any form.
However, the problem here is what they state clearly— "We've come to rely more and more on the Internet," he said, "and it's not humanly possible to verify every sentence and word. I was amazed we have the wonders of technology to help in that fashion."— John Zakarian
That is about the most naive statement I have heard from anyone in a really long time. As if two people cannot come up with the same sentence entirely oblivious to one another. They have ruined a man's career for using someone elses material in 11% of a total document. What about the 89% of original material, and the completely new idea that he derived/generated built on a few sentences from someone else... Is that really plagiarism, how far should we take it 5%, 1%, 0.00001%? This is absurd.
The same stupidity is running rampant in the software industry. Micro patents are the worst thing that have ever happened to software. What if you were told that you could not use the Pythagorean Theorem without paying the decendants of Pythagoras? Would you stand for it? Did the Wright Brothers patent the idea of a lifting body? Algorithms are basic structures and can only be written in any one language if a very finite way. Should someone patent the quicksort algorithm? I think not. It's really analogous to mathematics, they are fundamental things that just shouldn't be patentable.
This kind of lunacy is getting completely out of hand. What will happen when CodeGen really comes of age and we have algorithm engines that regularly spit out fully formed code? This has existed for years actually, it just doesn't register with people that the IDE is doing exactly that when you design a form, all your positioning and property information IS CodeGen. Generics are going to take this to the next level.
I don't mind paying Microsoft for MSDN so I have a license to build code and a ton of material to start from. If they ever try to patent the CodeGen and charge me every time I sell/give away a product that I built with their tools, I will stop using it the next day.
Full applications are one thing, when you make a complete application for a very specific purpose, sure go ahead and patent it, though not to restrict the knowledge from others, but rather to protect yourself from the RAVING MANIACS that will try to sue you. If someone recreates one of your algorithms independently should you be allowed to sue them, extort money from them for something they did having no knowledge of your closed source code? Even if it's Open Source, that doesn't mean I looked at your code and copied it just to do the same task.
I have never been accused of doing this, but I am sure as time marches on the similarities of my code with others will become much more blurred. As Lawrence Lessig states— “Creativity and innovation always builds on the past. The past always tries to control the creativity that builds upon it.” I should never have to reinvent the wheel to make a program roll.
We really need to start teaching people to think different. (is Apple going to sue me for saying that?) We need to teach people how to work together, not how to be extortionists.
I think there needs to exist a Non-Profit entity that releases basic algorithms into the public domain that can be regurgitated in any language and no one has to be charged or credited for their use. This is WAY beyond Open Source, it's beyond Fair Use, its completely UNREGULATED use which is what some of these things really should be.
If I sound cynical, it's because I am, it's just disgusting what some people try to charge for these days. Do I hold copyrights and patents? Yes, I do, but only to keep people from suing me for what I have already written, it has NOTHING to do with keeping people from using what I have written or trying to extort money from them because MY EGO says “I am God” and I wrote it first!
Actually, I don't really think I am cynical, I am enraged about this!
Do you want to use something I wrote? go ahead, I'll be happy to share it with you, just ask me (not that I even require you to ask, I mean ask if you don't see something you need, I probably have written it in some form over the past 20 odd years I have been programming.)
All software developers should read this.
Do you ever have a need to embedd XSLT Documents into your Application?
I was thinking about how to do this recently for a few reasons, Deployment, Obfuscation and Security being a few. I really wanted a way to embed the XSLT Stylesheets into my application for ease of deployment, but not have to load them from an embedded resource everytime.
I came up with this function to load the embedded file into a String:
Private Function ResourceToString(ByVal ResourceName As String) As String
'// get the namespace
Dim strNameSpace As String = _
System.Reflection.Assembly.GetExecutingAssembly().GetName().Name.ToString()
'// put the resource into a stream
Dim str As IO.Stream = _
System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream( _
strNameSpace & "." & ResourceName)
If (str Is Nothing) Then Return ""
'// put stream into a byte array
Dim ba(str.Length) As Byte
str.Read(ba, 0, str.Length)
'// return the byte array as a string
Return Text.Encoding.Default.GetString(ba)
End Function
With this I can issue a sequence like the following:
'// assuming xpathDoc is valid data in the form of an XPath.XPathDocument
Dim xslt As New Xsl.XslTransform
Dim ms As New IO.MemoryStream
Dim xtw As New XmlTextWriter(ms, Nothing)
xslDoc = New XPath.XPathDocument(New _
XmlTextReader(ResourceToString("Reports.xslt"), XmlNodeType.Document, Nothing))
xslt.Load(xslDoc.CreateNavigator, Nothing, Nothing)
xslt.Transform(xpathDoc, xslArgs, xtw, Nothing)
litReports.Text = Text.Encoding.Default.GetString(ms.ToArray)
This lets me dump some XSLT transformed data in HTML format into a Literal.
I can just as easily put it in anything else, but by putting it in a Literal I expect ALL the formatting to be done in the XSLT, with XSLTArguments you could toggle formatting from Tables to Unordered Lists, etc..
To make this cacheable and overridable... I put a Key for the Resource in Web.Config along with another Key for scriptCache like this:
<add key="ReportsXML" value="~/Reports/DynamicReports.xml" />
<!-- Directory for the Script Cache to check, loads from embedded resources
if the files required do not exist -->
<add key="ReportsScriptCache" value="/scripts" />
Then I can test the ScriptCache to see if it is set to “none” or doesn't exist, if so, load from the embedded resource, if the cache is set, it will write the file to the cache directory so later calls are made to the file. If the file exists, then I can override the embedded resource with changes made directly to the file.
Now I can deploy a default set of formatting, but change it after installation without alot of fuss.
I found this also works great for CSS Files, Javascript Files and anything else that you really don't want to embed all the time, but need a way to easily deploy a default setting or version. Screw up a file when editing it by mistake and can't find a backup? There is always a backup now, embedded in the Application.
Using Web.Config Keys allows me to deploy in one directory, but change it later or set the webconfig of a root directory and have all the subwebs inherit the setting. This is quite flexible for many, many things, in fact I have even done this with an embedded DLL where I wrote out the Byte Array instead of using the Text conversion seen above.
Knoppix has got to be the coolest implementation of Linux yet.
Having been a longtime supporter of Debian, I really like the fact that it is built around Debian. To further that thought, LiveCDs for linux are awesome, I have been using them as “rescue” disks for quite a while.
I am currently working on about 4 “flavors” of Knoppix for my own use:
- Toshiba M200 special version for a Linux Tablet
- a Mono configuration so I can test AND Demo my ASP.NET code running under Mono
- NTFS capable (as in read AND write) recovery disk
- Personal Favorite Desktop Implementation
Having a way to just create a filesystem in a file, then pick one of them at boot is nothing new you say... It is when there is no configuration involved when moving from machine to machine... AND when there is NO dual booting/6 partitions on my laptop sort of nonsense happening either.
For some reason Toshiba decided not to let the M200 boot from a USB Device, so I set out to do something even more interesting... I have CF cards laying around and it CAN boot from that and from an SD card.
My idea was to use syslinux to just boot off the SD/CF card and select the environment from the HD, this really isn't all that difficult if you have some idea how to do the shell script. Stay tuned if you're interested in this sort of thing, I should have it all working (it mostly does now, but I have to polish it up) in the next few days and I will post a few articles related to my adventures in doing this.
The best thing about this is-- you can create a bootable CD and just run it on any machine without worrying about damaging the Windows implementation on it. Ever want to experiment with Clustered Linux? Imagine taking over you corporate workgroup (say a couple dozen P4s) at night when you want to do some major number crunching or large graphics output using parallel processing (IOW, build a super computer) Well, ClusterKnoppix will do that by simply inserting the CD in each machine and rebooting without touching the HD or the Windows implementation. It also requires no special software compiles to do the load balancing since its all done at the kernel level. Terrific use for older equipment like a dozen P3-600s that I have collecting dust in a utility room. They can make a great Mono web server as a test platform :-)
Blogroll Me!
Blog Search Engine
Copyright © 2003-2004 H. Steele Price, IV -
All opinions are my own, not necessarily those of my employer, your mother, or any government agency.