tag:blogger.com,1999:blog-274680652024-03-13T12:48:01.968+01:00NiXPSUnknownnoreply@blogger.comBlogger195125tag:blogger.com,1999:blog-27468065.post-71231439814651512472011-01-14T10:39:00.001+01:002011-01-14T10:39:58.043+01:00Create XpsDocument From NOPackage Using MemoryStreamA customer asked for a way to create an XpsDocument in .NET using the NiXPS Library. This is the code you need:
<pre>
public static void test_XPSDocumentFromMemoryBuffer()
{
string pIn = "../../examples/testfiles/catalog.xps";
NOPackage lPackage = NOPackage.readPackageFromFile(pIn);
UInt32 lBufferSize = 1000 * 1000; // 1000 kb = 1M
byte[] lBuffer = new byte[lBufferSize];
uint lFileSize = 0;
lPackage.writePackageToBuffer(lBuffer, lBufferSize, ref lFileSize);
MemoryStream lStream = new MemoryStream(lBuffer, 0, (int)lFileSize);
string inMemoryPackageName = "memorystream://myXps.xps";
Uri packageUri = new Uri(inMemoryPackageName);
Package lXPSPackage = Package.Open(lStream);
//Add package to PackageStore
PackageStore.AddPackage(packageUri,lXPSPackage);
XpsDocument xpsDoc = new XpsDocument(lXPSPackage,
CompressionOption.Maximum,
inMemoryPackageName);
FixedDocumentSequence fixedDocumentSequence =
xpsDoc.GetFixedDocumentSequence();
// Do operations on xpsDoc here
// Note: Please note that you must keep the Package object
// in PackageStore until you are completely done with it since
// certain operations on XpsDocument can trigger delayed
// resource loading from the package.
PackageStore.RemovePackage(packageUri);
xpsDoc.Close();
}
</pre>
When you <a href="http://www.nixps.com/library_apply.php">download our SDK</a> you can paste this test in. However you will need to change the threading model of the Main method to STAThread. You can do this by adding [STAThread] just before the Main method like so:
<pre>
[STAThread]
public static void Main(string[] args)
{
// ... rest of code
}
</pre>
Hope this helps.
Anonymousnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-23657805011714281272010-11-05T16:45:00.002+01:002010-11-05T16:49:53.509+01:00WPF visual to PDF - control page sizeWith our NiPDF library it is very easy to build PDF based on WPF visuals. It is literally a few lines of code which you can find documented on <a href=" http://nixps.com/nipdf/example0001.html">our website</a>.<br /><br />This week I got the question from a customer who wanted to influence the page size.<br /><br />This is fairly easy to do by means of the PrintTicket class. <br />In line with the example on our website, the second step becomes:<br /><br /><pre><br />// STEP 2: Convert this WPF Visual to an XPS Document<br />MemoryStream lMemoryStream = new MemoryStream();<br />{ <br /> Package package = Package.Open(lMemoryStream, FileMode.Create); <br /> XpsDocument doc = new XpsDocument(package);<br /> XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc); <br /> //Create PrintTicket for document and set its page size to the proper custom page size<br /> PrintTicket printTicket = new PrintTicket(); <br /> //Set the page size to a custom 3.5" x 2.5" page<br /> printTicket.PageMediaSize = new PageMediaSize(3.5 * 96.0, 2.5 * 96.0);<br /> writer.Write(visual,printTicket); <br /> doc.Close();<br /> package.Close();<br />}<br /></pre><br /><br />Easy to do, provided you know how to do it - as always!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-65888782937937932692010-10-27T11:45:00.004+02:002010-10-27T11:52:29.280+02:00Experimental NiPDF.JS PDF Browser updateWe have updated our client-side Javascript PDF browser. When it encounters a flate/zip stream, it will deflate it. And binary stuff is now presented in a much more useful way:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_c1NiDXy7n5c/TMf1sq-dQBI/AAAAAAAAATI/xNVOgQwcpwM/s1600/screenshot.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 302px;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/TMf1sq-dQBI/AAAAAAAAATI/xNVOgQwcpwM/s400/screenshot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5532660815047245842" /></a><br /><br />Give it try at <a href="http://nixps.com/nipdf/pdfbrowse.html">http://nixps.com/nipdf/pdfbrowse.html</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-7373879808189762062010-10-14T08:38:00.003+02:002010-10-14T08:41:23.934+02:00NiPDF.NET: update to text searching for PDFA customer flagged that the PDFs generated with NiPDF weren't text searchable. <br />Previous versions of the NiPDF library didn't output the ToUnicode character mapping in the PDF, this has been fixed.<br /><br />If you go to <a href="http://nipdf.com">http://nipdf.com</a> and download the NiPDF SDK you will generate fully searchable PDFs!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-8977251792163248862010-10-12T11:37:00.004+02:002010-10-12T12:11:24.106+02:00PDF library in Client-Side Javascript - Adventures in JavascriptThe computer industry is in constant evolution.<br />One of the recent exciting developments is the fact that the web browser is becoming a lot more powerful than a few years back.<br />Chrome entered the browser landscape, Safari is going strong, Firefox as alternative browser is a big success, and Microsoft is catching up now with a massive technical leap in their upcoming Internet Explorer 9.<br /><br />These recent, powerful changes are not about web <i>pages</i>.<br />This is all about web <i>applications</i>.<br /><br />With the recent HTML5 developments, the browser is becoming a viable platform to host applications. Applications that do not need a server backend.<br /><br />Think about it: in the very near future everyone will have access to a HTML5 browser.<br />This HTML5 browser will be able to run HTML5 applications, independent of the underlying platform.<br />This means no configuration management issues, and instant installation, as these apps can be server directly from a bog standard web server.<br /><br />There are more advantages: scaling. A regular client-server application needs more power at the server, when the client base grows.<br />Pure in browser applications do not need a server for processing, pure elastic scaling, no additional investments server side.<br />And the extra beauty of it: a better use of the available processing power at the client, as in a lot of cases these system are very capable, but running idle.<br /><br />So at NiXPS are a big believer in this, and we also think that software developers will start looking for tools and components for this new world. And for this we have started to support our software 100% natively in Javascript.<br /><br />We are working on a 100% native Javascript NiPDF library, and as a demo we have build a tool that allows you to look structured at the innards of a PDF file.<br />You need a browser that supports the HTML5 FileReader object, so currently this means FireFox 3.6+ of Chrome 7.0 beta. Other are catching up soon.<br /><br />Take a look at: <a href="http://nixps.com/nipdf/tools/pdfbrowse.html">http://nixps.com/nipdf/tools/pdfbrowse.html</a><br />It is experimental, but all your feedback is very welcome at info@nixps.com!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_c1NiDXy7n5c/TLQ0BmvxFbI/AAAAAAAAATA/uOmpA4HvbbI/s1600/pdfbrowse.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 306px; height: 400px;" src="http://2.bp.blogspot.com/_c1NiDXy7n5c/TLQ0BmvxFbI/AAAAAAAAATA/uOmpA4HvbbI/s400/pdfbrowse.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5527099844875851186" /></a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-84668677474179323622010-09-21T20:38:00.003+02:002010-09-22T09:40:48.314+02:00NiXPS launches NiPDF v1.0After many months of work I'm pleased to announce a new product we are launching today: NiPDF v1.0.<br /><br />This product is a direct result of our experiences with customers all over the world working in .NET and wanting to generate PDF.<br />We have learned that generating PDF in .NET is cumbersome and downright painful - and our aim is to put our technology to work to alleviate the pain and simplify this.<br /><br /><b>.NET front and center</b><br />A lot of PDF solutions out there are not really .NET.<br />They are a thin veil of .NET around a big body of native code.<br />Our NiXPS SDK has exactly the same architecture. <br />This works, and is often very efficient, but it kind of defeats the purpose of working with managed code.<br />Often there is a requirement to only work with managed code assemblies.<br />With our NiPDF v1.0 we introduce a <i>100% managed code library</i>.<br /><i>No native code dependency</i>.<br />NiPDF is a lean and mean, 100% native, PDF library that allows you to efficiently generate PDF in .NET.<br /><br /><b>No special API to learn, no vendor lock-in</b><br />Another drag in today's PDF SDK's is the fact that in order to generate PDF, one needs to code against an API that the third party has defined.<br />This introduces a learning curve, and introduces vendor lock-in, as your code will depend on the third-party's API.<br />Thanks to our XPS heritage we are able to offer an innovative solution for this. <br />Via the .NET built-in ability to convert WPF visuals (and FixedDocuments) to XPS, you can code agains the default WPF API, and in <a href="http://nixps.com/nipdf/example0001.html">1-2-3</a> generate a PDF from this with a minumum of calls into our NiPDF library!<br /><br /><b>High quality, keeping text and vectors intact</b><br />The NiPDF PDF output keeps text and vectors intact, resulting a small, high quality, fully searchable PDFs.<br /><br /><b>NiPDF SDK and NiXPS Converter SDK, brothers in arms</b><br />NiPDF is premier choice for quick and easy PDF generation for .NET.<br />We continue to develop our NiXPS Converter SDK, which thanks to its native architecture, offers a better alternative for performance critical applications, has a more versatile feature set (f.i. PDF/A generation) and has supports C/C++ and OSX.<br /><br />Take a look at the NiPDF product site at <a href="http://nipdf.com">http://nipdf.com</a> and download the trial.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-28896567947255242102010-07-08T12:23:00.003+02:002010-07-08T12:30:22.483+02:00Example: create XPS and add hyperlink using NiXPS SDKA customer asked me for a code sample to illustrate the creation of an XPS document, and the ability to make content link to a hyperlink.<br /><br />It might be of interst to others, so I am posting it on the blog.<br />This sample works with NiXPS SDK 2.6.6, and uses .NET.<br /><br />First: create an XPS package with a document:<br /><br /><pre><br />NOPackage lPackage=NOPackage.createPackage(1,"out.xps");<br /></pre><br /><br />Now: create a page and add content using the document model.<br />We do this by getting the root FixedPage, create a Canvas inside, and store a Glyphs element which can hold a string of text.<br /><br /><pre><br />{<br /> NOPage lPage=lPackage.getDocument(0).createPage();<br /> NOXFixedPage lContent=lPage.getFixedPage();<br /> lContent.intialize(8.3*96,11.7*96); // A4: 210x297mm or 8.3x11.7inch<br /> NOXCanvas lCanvas=lContent.createCanvas(0);<br /> lCanvas.intialize();<br /> NOXGlyphs lGlyphs=lCanvas.createGlyphs(0);<br /></pre><br /><br />We also need to create and supply a NOFont to be used. We load this up from disk, where we have stored Arial.ttf, an opentype font we would like to use.<br />We then fill the Glyphs.<br /><br /><pre><br /> NOFont lFont=lPage.addFont("../testfiles/Arial.ttf");<br /> NOString lURI = new NOString("/" + lFont.getPartName());<br /> lGlyphs.intialize(20, lURI.getHandler(), 300, 50);<br /> lGlyphs.setFill(new NOString("#FF000000").getHandler());<br /> lGlyphs.setUnicodeString(new NOString("Take me to http://nixps.com").getHandler());<br /></pre><br /><br />Next: the link. We name the Glyphs, and add a NavigateURI attribute which gives us the intented behaviour to link to a website.<br /><br /><pre><br /> lGlyphs.setName(new NOString("page_1").getHandler());<br /> lGlyphs.setFixedPageNavigateUri(new NOString("http://www.nixps.com").getHandler());<br />}<br /></pre><br /><br />Now we're done. So all left is to write out the file and clean-up.<br /><pre><br />// write out and close<br />lPackage.writePackageToFile("out.xps");<br />NOPackage.destroyPackage(ref lPackage);<br /></pre>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-73196444768061329732010-07-02T09:48:00.003+02:002010-07-02T09:52:04.076+02:00XAML with databinding to PDF with NiXPSA lot of customers ask me how they can go from XAML with databinding to PDF.<br /><br />Our SDK can be a great part of a solution for this, if you go over XPS.<br /><br />Here is a great <a href="http://www.bradcurtis.com/2010/02/06/document-and-report-generation-using-xaml-wpf-databinding-and-xps/">article</a> that outlines how you can go from XAML with databinding to XPS with WPF.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-31250290684217756352010-06-01T14:54:00.002+02:002010-06-01T15:00:16.618+02:00TypographyStumled upon this little gem of a picture:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_c1NiDXy7n5c/TAUDMsL4AcI/AAAAAAAAARo/Bera0_XJKsY/s1600/200px-Fi_garamond_sort_001.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 286px;" src="http://2.bp.blogspot.com/_c1NiDXy7n5c/TAUDMsL4AcI/AAAAAAAAARo/Bera0_XJKsY/s400/200px-Fi_garamond_sort_001.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5477788038320357826" /></a><br /><br />One picture that explains the concepts of <a href="http://en.wikipedia.org/wiki/Typographic_ligature">ligature</a> + <a href="http://en.wikipedia.org/wiki/Type_foundry">foundry</a>.<br />They literally used to melt metal to make these glyphs.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-78959963811601942602010-05-17T16:58:00.002+02:002010-05-17T17:01:40.673+02:00XPS on iPhoneWe have send out a press release to celebrate our release of NiXPS View for iPhone, the world's first application for iPhone that allows you to preview XPS files.<br /><br />You can read our PR <a href="http://nixps.com/news.php?id=20100517">here</a>.<br /><br />We have added <a href="http://nixps.com/iphone/index.html">an overview on our website</a>, which also covers how you can use the app.<br /><br />Give it a try and let us know what you think!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-23388222583163145492010-05-13T00:03:00.001+02:002010-05-13T00:04:33.531+02:00NiXPS View for iPhone is now available on the App StoreFreshly approved by Apple, go get it <a href="http://itunes.apple.com/us/app/nixps-view/id369689325?mt=8">here</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-74786876920797310182010-04-29T10:23:00.001+02:002010-04-29T10:25:01.730+02:00The upcoming Internet Explorer 9 supports XPS printingIE9 moves to the XPS print path, read more about it <a href="http://blogs.technet.com/print/archive/2010/04/28/ie9-supports-xps-printing.aspx">here</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-22472180350860803402010-04-28T13:34:00.005+02:002010-04-28T13:46:05.978+02:00NiXPS View for iPhone<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_c1NiDXy7n5c/S9gddvUgIlI/AAAAAAAAARg/sXnhpUZxDMw/s1600/phone.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 215px; height: 400px;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/S9gddvUgIlI/AAAAAAAAARg/sXnhpUZxDMw/s400/phone.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5465150544569967186" /></a><br />We have ported our NiXPS SDK to the iPhone OS 3 platform, and build a viewer application around it.<br /><br />The viewer allows you to download XPS files from the web and view them.<br /><br />Thanks to the rich user interface platform that Apple offers on the iPhone, we were able to build a very nice and natural interface to view XPS files.<br /><br />We have submitted our application for review by Apple last Monday, so we hope to have it available to customers in a few weeks. I'll write more in detail and post more screenshots then.Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-27468065.post-85730397422696468842010-03-26T21:04:00.002+01:002010-03-26T21:11:36.256+01:00Optimizing, optimizing, optimizing....<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_c1NiDXy7n5c/S60TpQmenzI/AAAAAAAAARY/rWxj2gEy6xQ/s1600/shark.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 292px;" src="http://3.bp.blogspot.com/_c1NiDXy7n5c/S60TpQmenzI/AAAAAAAAARY/rWxj2gEy6xQ/s400/shark.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5453036323367460658" /></a><br /><br />Spend most of the week swimming with the shark, Apple's great code profiling tool.<br /><br />Profiling is a humbling experience for a developer - where big ego's, and long runtimes, slowly, but decisively shrink to it's razor sharp essence.<br /><br />Have a nice weekend!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-61713219005972103742010-03-09T16:56:00.002+01:002010-03-09T17:04:43.301+01:00NiXPS SDK v2.6.6 released!We have released NiXPS SDK v2.6.6 today.<br />This is a maintenance update, free for all current customers who are under maintenance.<br /><br />We roll out some optimizations in reading, writing and converting very large documents (+1000 pages). <br />You should see a significant speed boost, and reduced memory usage, when handling these type of files.<br />The XPS document outline (table of contents) is now also optionally converted into a PDF document outline.<br />And we have fixed a few minor bugs.<br /><br />Again a lot of fixes and optimizations were the result of issues reported by our customers.<br />Your continued feedback allows us to further improve our software and provide a field tested, high quality SDK.<br />Thank you very much!<br /><br />You can find the changelog for this v2.6.6 release <a href="http://nixps.com/changelog.html">here</a>.<br /><br />Download a trial version <a href="http://nixps.com/library_apply.php">here</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-69390528205569745262010-03-08T22:11:00.002+01:002010-03-08T22:13:55.798+01:00Palm goes C tooPalm announces support for <i>native plugins</i> for its WebOS platform (read <a href="http://developer.palm.com/index.php?Itemid=20&id=1850&option=com_content&view=article">here</a>).<br /><br />Android, Chrome OS, iPhone, Symbian, OSX, Windows, ... go native when speed is required.<br /><br />Speed still matters in the Web 2.0 age.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-81180952306588546342010-02-20T15:08:00.003+01:002010-02-20T15:11:13.921+01:00Photoshop turns 20If a product becomes the synonym for what it represents- that is the ultimate definition of success.<br /><br />This picture is photoshopped. You <i>know</i> what that means.<br /><br />The software applications blows out 20 candles - much software development respect!<br /><br />Read its history <a href="http://www.webdesignerdepot.com/2010/02/20-years-of-adobe-photoshop/">here</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-9205486676569792362010-02-13T14:51:00.001+01:002010-02-13T14:51:34.766+01:00On Client PlatformsSuppose you are going to develop your next application that needs to run on an as broad selection of user's client devices or computers, what development platform are you going to target?<br /><br />There are a lot of client platform possibilities that a developer can choose to develop their application for.<br />All of these client platforms have their technical and business merits and drawbacks.<br /><br />In this post I give my take on some of the major possibilities, feel free to comment or send in your thoughts!<br /><br /><u>Note:</u> <br />I list the main points is three categories:<br /><i>The Good</i>: are properties of the technology that are a clear advantage<br /><i>The Bad</i>: are properties that are limiting or stumbling blocks, and cannot be overcome<br /><i>The Ugly</i>: are properties that are limiting or stumbling blocks, that can be overcome or mitigated by the developer of the application<br /><br /><b>1. Native Application</b><br />An application that the user installs and runs on their computer/device.<br />For instance: native Windows application<br /><br />The Good<br />-integration in the overall user experience of the OS (or hardware: f.i. iPhone), native look and feel<br />-performance<br />-both an on-line and off-line solution<br />-mature development environments<br />-large ecosystem of 3rd party library/components<br /><br />The Bad<br />-locked to a specific OS/device, for each OS a version needs to be developed<br />-application needs installation, possible roadblock as sometimes not even allowed (f.i. corporate policy)<br /><br />The Ugly<br />-updates: need to be installed each time per user<br /><br />This platform is mostly pushed by Apple, and Microsoft<br /><br /><b>2. Flash application</b><br />A application that runs on the Adobe Flash runtime in a browser.<br /><br />The Good<br />-OS/browser/device independent<br />-large installed base of Flash runtimes (see: riastats.com), shrinking slightly<br />-no installation required, if plug-in is available<br />-updates easy, app is downloaded each time<br /><br />The Bad<br />-browser plug-in needed<br />-some platforms not supported (f.i. iPhone)<br /><br />The Ugly<br />-performance<br />-good integration in OS is challenging (no native look & feel; local file access, etc...)<br />-technically challenging to implement all required functionality<br />-development tools are so-so<br />-lack of large ecosystem of 3rd party library/components<br />-flash blockers, user apathy<br /><br />Biggest supporter for this is Adobe.<br /><br /><b>3. Silverlight application</b><br />A application that runs on the Microsoft Silverlight runtime in a browser.<br /><br />The Good<br />-OS/browser/device independent<br />-no installation required, if plug-in is available<br />-updates easy, app is downloaded each time<br />-mature underlying technology (.NET subset)<br /><br />The Bad<br />-browser plug-in needed<br />-small installed base, but growing (see: riastats.com)<br />-some platforms not supported (f.i. iPhone, Linux)<br /><br />The Ugly<br />-performance uncertain<br />-good integration in OS is challenging (no native look & feel; local file access, etc...)<br />-technically challenging to implement all required functionality<br />-Silverlight plug-in probably not installed, so user will need to do this<br />-lack of large ecosystem of 3rd party library/components<br />-user apathy<br /><br />This pushed heavily by Microsoft too, but with clear focus on Windows.<br /><br /><b>4. HTML/Javascript application</b><br />A application that runs entirely in a browser, using Javascript and HTML<br /><br />The Good<br />-OS/browser/device independent<br />-only a recent browser needed, virtually available everywhere<br />-large and growing ecosystem of 3rd party library/components<br /><br />The Bad<br />-no local storage of files<br />-basically an on-line only solution<br /><br />The Ugly<br />-performance<br />-there are technical limitations on what can be accomplished with HTML5/Javascript<br />-development environments non-existent<br />-good integration in OS is very challenging<br />-technically challenging to implement all required functionality<br />-some popular browsers (Microsoft IE) lack modern Javascript/HTML5, so graceful fallback needed<br />-Javascript + HTML not so elegant combo from a software development point of view: impact on maintenance, debugging, etc...<br /><br />This is a methodology that is being pushed by Google.<br /><br /><b>5. Java applet</b><br />A application that runs on the Java runtime in a browser.<br /><br />The Good<br />-OS/browser/device independent<br />-no installation required, if plug-in is available<br />-updates easy, app is downloaded each time<br />-mature underlying technology (Java)<br />-mature development environments<br />-large ecosystem of 3rd party library/components<br /><br />The Bad<br />-browser plug-in needed<br />-unpredictable installed base<br />-some platforms not supported (f.i. iPhone)<br /><br />The Ugly<br />-good integration in OS is challenging<br />-Java applets seem to be a dying platform<br /><br />This was push somewhat by Sun, taken over by Oracle now. New follow-up tech JavaFX didn't catch on.<br /><br />There are of course various others: Adobe AIR (need specific runtime installed), Java application (also special runtime needed), XBAP, Prism, etc...<br />But I wanted to focus on the main important ones.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-1045352045873506232010-02-05T08:53:00.002+01:002010-02-05T09:14:39.779+01:00Speed mattersFacebook uses a lot of PHP, and given the scale of the service, they must be watching performance very closely.<br />Bandwidth and infrastructure will be their main costs, so it makes economic sense to try to run as much of Facebook on as little infrastructure as possible.<br />And one of their tools they have announced this week: <a href="http://developers.facebook.com/news.php?blog=1&story=358">HipHop</a>.<br /><br />HipHop is a toolchain that preprocesses PHP into C++, which can subsequently be compiled by a C compiler, and then used with their webservers. Facebook says they are seeing a 50% increase in performance.<br /><br />This is beautiful engineering: they can now run double the load on the same infrastructure.<br /><br />Evangelists always cleam that dynamic (or interpreted) languages are a win-win.<br />You win on ease of use, as a dynamic language is easier to program for, easier to debug and easier to maintain.<br />And you supposedly win on performance, as they run as quick as compiled code.<br />The latter is never true in practice, no matter what complicated theoretical explanation they always give to say it really is so.<br /><br />There are numerous real world examples:<br /><ul><br /><li>Google wants you to use a Java-like on Android Phones, but if you want it to go fast, use C and compile to binary. (a brilliant video to drive the point home <a href="http://www.youtube.com/watch?v=It8xPqkKxis">here</a>). Java is not fast, using it on a small phone cpu is a challenge.<br /><li>Apple supposedly have written their first iPhone widgets (time, weather, stocks, etc...) with javascript/html - but decided to rewrite them in Objective-C because performance was poor<br /><li>Windows Vista contained a lot of .NET during development, but that was ripped out and changed to native x86 for speed reasons.<br /><li>Using PHP based Wordpress for a large site is only really doable when you use static caching, and do not run PHP at all for most of the requests. <br /></ul><br /><br />A lot of the evangelism for dynamic (and interpreted) languages is like marketing propaganda; they sell you a dream, but a lot of dreams do not survive a confrontation with reality. <br /><br />The fastest and most efficient way to run code is to use the least amount of the best instructions for a given cpu.<br /><br />Speed matters in the real world.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-47588968920428941572010-01-11T17:08:00.003+01:002010-01-11T21:07:49.719+01:00Microsoft joins SVG working groupMicrosoft <a href="http://www.sdtimes.com/MICROSOFT_JOINS_SVG_WORK_GROUP/By_Alex_Handy/About_MICROSOFT_and_SVG/34041">announced</a> that they took a seat on the <a href="http://www.w3.org/Graphics/SVG/">SVG working group</a>.<br />This good news for the SVG format, as a lot big players are backing it now.<br /><br />NiXPS has been <a href="http://nixps.blogspot.com/2008/11/xps-export-to-svg.html">supporting</a> SVG for almost two years now. It is an interesting technology, but it practice it was being let down by a lot of broken/missing/poor support in various software components (Webkit SVG has a few issues, Internet Explorer support is laky, Adobe has an on/off relationship with SVG, etc...).<br /><br />It is good news that Microsoft has decided to back the format more officially, it might improve Windows support for it, and make it a much more dependable format for the future.<br /><br />Here at NiXPS we will keep following it closely.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-66203849375195840542010-01-07T09:13:00.008+01:002010-01-07T09:54:06.484+01:00HP Slate - platforms, platforms and some more platforms<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.blogcdn.com/www.engadget.com/media/2010/01/01-06-10hpslate.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 281px; height: 500px;" src="http://www.blogcdn.com/www.engadget.com/media/2010/01/01-06-10hpslate.jpg" border="0" alt="" /></a><br />Microsoft's CEO Steve Ballmer showed a prototype of a new Tablet PC like device designed by HP, and running Windows 7: the HP Slate.<br />With the rumour mill going in overdrive about an imminent Apple Tablet-like product, and a large part of the industry totally ecstatic about 'touch computing', this is hitting all the right buttons.<br /><br />I kinda think the device looks very nice - a bit like an oversized iPod Touch, which is a good thing.<br /><br />The last couple of years a lot of attempts are made to open up a new categories of computing devices:<br /><ul><br /><li><b>Smartphones</b>. with poster child Apple, and runners up Nokia and Blackberry - and since a few days also Google with its Nexus One. There is a blurry line between regular mobile phones and smartphones, but I think it would be reasonable to say that smartphones are defined by the fact that it's fairly easy for 3rd parties to develop software for.<br /><li><b>Netbooks</b>. Invented by Asus, very popular small laptops. Here the blurry line between netbooks and laptops. But here the defining factors are size and prioce, typically Atom powered.<br /><li><b>Smartbooks</b>. A new category - it's a netbook that is not based on an x86, and runs some other os than Windows. Typically ARM and android combo.<br /><li><b>E-books</b>. Small computer to read books - typically a special screen technology to make reading more pleasant. People tend to forget, but these machines already exist for 10+ years.<br /><li><b>Tablets</b>. Laptop like computers that have a large touch screen, that can mostly be swiveled so that the device looks to be 'only screen'. Also already in existence for 10+ years.<br /></ul><br /><br />And people still buy desktop PCs (and Macs) and laptops, of course.<br /><br />I'm not quite sure where to fit in the iPod Touch. It's a touch based, tablet like computer. But it's smaller than your typical tablet. I like it, as it is really portable, but makes more sense in it's iPhone incarnation (if it wasn't for the price).<br /><br />These are a lot of computing devices, with a lot of different architectures.<br />Intersting times ahead for small, independent software vendors ;-)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-37699075192660887932009-12-24T12:59:00.004+01:002009-12-24T13:01:49.207+01:00Merry Christmas and a happy 2010<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_c1NiDXy7n5c/SzNXtfFqeCI/AAAAAAAAAQg/dbO7JbtosIE/s1600-h/2010.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 341px;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/SzNXtfFqeCI/AAAAAAAAAQg/dbO7JbtosIE/s400/2010.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5418771215607822370" /></a><br /><center><br />(download xps <a href="http://nixps.com/downloads/2010.xps">here</a>)<br /></center>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-72142769597558580712009-12-13T13:36:00.005+01:002009-12-13T14:04:50.816+01:00EXII've been tied up with a lot of work the last couple of weeks, resulting in too much blog radio silence for my liking.<br /><br />We have released a v2.6.5, which I will blog about more the coming days.<br />And we're working heavily on our next major SDK release v3, which will feature some impressive technological advancements.<br /><br />All new v2.6 SDK customers will receive the v3 for free. All existing v2.6 SDK customers will receive the v3 for free if they are under maintenance. <br /><br />One thing caught my attention this week: <a href="http://www.sdtimes.com/content/article.aspx?ArticleID=33980&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+SdTimesLatestNews+%28SD+Times+All+News%29">'Efficient XML Interchange' gets W3C green light</a>. <i>Efficient XML Interchange</i>. First time I heard about that one. This appears to be a binary representation of an XML document, the spec is being <a href="http://www.w3.org/XML/EXI/">drafted by the W3C</a>. I've browsed it lightly, and it seems to be a binary representation that reduces the overhead for XML, and facilitates SAX parsing.<br />I find it a bit of an odd thing. XML is verbose, but this verbosity helps humans reading, writing and understanding it. And a computer can always zip it. Turning it into a binary format, kind of defeats the purpose, and makes it just another binary format.<br /><br />I definitely need to study it further. Sharing the parser state, could be an interesting thing to have, but that would only matter for big XML files, I guess. And what if you do not want to be forced in a SAX style arrangement? <br /><br />But it exists, so I assume it must be scratching an itch!Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-28597451528478504012009-11-16T15:49:00.001+01:002009-11-16T15:53:48.974+01:00NiXPS SDK v2.6.4 released!We have released NiXPS SDK v2.6.4 today.<br />This is a maintenance update, free for all current customers who are under maintenance.<br /><br />This release brings mainly bug fixes, and a few optimizations.<br />We also ensured that our managed DLL is strong named.<br /><br />Again a lot of fixes were the result of issues reported by our customers.<br />The continued feedback we are getting allows us to further improve our software and provide a field tested, high quality SDK.<br />Thank you very much!<br /><br />You can find the changelog for this v2.6.4 release <a href="http://nixps.com/changelog.html">here</a>.<br /><br />Download a trial version <a href="http://nixps.com/library_apply.php">here</a>.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-27468065.post-84034709147757582312009-11-15T12:44:00.009+01:002009-11-15T13:11:27.910+01:00Why PDF portofolio's are a bad idea: a user's poor experienceI bought a new TV yesterday, a Philips 37PFL5604H. Good price, decent quality; chosen as the best buy based on a test of 20+ TVs by local consumer mag Test-Aankoop; but I digress.<br /><br />It's 2009, and no paper manual to be found in the box. <br />This is ok, never use them frequently anyway. And they use up limited physical shelve space. <br /><br />Philips included a sticker where they say that the manual is available on the machine itself via a help menu. Seems like a good idea, but as some other residents of the house were already watching, my suggestion that 'I want to have a look at the manual' were greeted with angry looks.<br /><br />Ok - on to the Philips website to download an electronic version.<br />Which was remarkably easy to do, I quickly found a PDF of the manual, and downloaded the file with the prosaic name '37pfl5604h_12_dfu_nld.pdf'. <br /><br />Opened it on may mac, and I was greeted with:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_c1NiDXy7n5c/Sv_rdCxPOFI/AAAAAAAAAP4/KD19woK6SLY/s1600-h/Picture+1.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 326px;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/Sv_rdCxPOFI/AAAAAAAAAP4/KD19woK6SLY/s400/Picture+1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5404296962060007506" /></a><br /><br />Oh, the joy! In stead of showing me the manual, I got the invitation <b>to download and install another piece of software</b>, otherwise I would be deprived of the ability <i>to read or print the damn manual</i>.<br />My regular PDF viewing software, Preview.app, which could be regarded as fairly up to date, was sadly not at liberty to preview <i>this</i> PDF.<br /><br />So caved in, and installed the latest version of Adobe's Reader, as apparently PDF might be an open, accessibly format, as long as you work with it using Adobe software.<br /><br />Waiting to be amazed by the sheer progress that portofolio's bring to the concept of an electronic manual, I got this one (after declining an Adobe Updater request to update itself, and another update offer for the software I just downloaded):<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_c1NiDXy7n5c/Sv_tDJv7JUI/AAAAAAAAAQA/UCGeuI56ANU/s1600-h/Picture+2.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 309px;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/Sv_tDJv7JUI/AAAAAAAAAQA/UCGeuI56ANU/s400/Picture+2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5404298716280202562" /></a><br /><br />?<br /><br />Ok, just give me that manual already. And I click on the right (Volledige Gebruikshandleiding.pdf), and make an attempt to get it out so I can go back to Preview.app to read it.<br />Then I get this gem:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_c1NiDXy7n5c/Sv_tjqREkNI/AAAAAAAAAQI/a_iONpGvknA/s1600-h/Picture+3.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 278px;" src="http://4.bp.blogspot.com/_c1NiDXy7n5c/Sv_tjqREkNI/AAAAAAAAAQI/a_iONpGvknA/s400/Picture+3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5404299274764980434" /></a><br /><br /><i>Achtung! You dare to save this document, and possibly use non Adobe software with this document! Beware, bad things might happen!!</i><br />Or something along those lines.<br />Anyway, it seems to extract alright, despite the dire warning, and then I have a new pdf, which does open in Preview.app.<br /><br />But sadly, they have spend so much time and effort in generating a PDF portofolio that can only be opened with some latest version of the Adobe Reader, but failed to include something basic like a clickable table of contents.<br /><br />Philips should reconsider this: go back to regular PDF (or *gasp* XPS) so anyone can open it, and include links in the manual - they're very useful!Unknownnoreply@blogger.com1