Category Archives: web authoring

Adobe Acrobat X puts the focus on security and usability

Adobe has announced Acrobat X (pronounced Acrobat ten), the latest PDF document creator with its associated free reader, which will be available in November.

The Acrobat product is a bit of a chameleon. The PDF format – now an ISO standard – has three distinct roles.

The first and original role is as a means of distributing electronic documents that look the same everywhere. This has never been a goal of HTML, which was designed to give the browser, or “user agent”, flexibility over how to render documents. Word processor formats are also compromised in this respect, because they are for editing, whereas PDF is for output. This is how most users encounter PDFs – a document format which is somewhat annoying, especially when it opens to a full page view and you cannot read a thing, but which does show each page as originally designed.

The second role is for print professionals. This is a logical extension of the first role: the same characteristics make it ideal as a format for delivery to a printer. If terms like Preflight, Calibrated CMYK, Trap presets and Job Definition Format mean anything to you, this may be how you use PDF.

The third role is as the forms client in Adobe enterprise workflow systems. When I attended Adobe’s Partner Conference in Amsterdam, this usage was the area of focus. I saw case studies such as processing applications for planning permission, invoicing, and health insurance applications.

Is there any conflict between these roles? I believe there is, though Adobe will disagree. There are features in Acrobat and Adobe reader which exist to support its role in enterprise systems, but do not matter to the more common use of PDF, for distributing static documents. In particular, the ability to execute script and host Flash applications has value if you think of PDF as an application client, but if you just want to read a document it adds bloat and security risk.

Still, we should not complain too much. PDF is both useful and, for most of us, free – particularly now that PDF export is a standard feature in Microsoft Office and in many Mac applications.

After that preamble, what is new in Acrobat X? I’ve been trying a late pre-release, and from what I have seen the changes are more in the realm of the user interface, usability and security, than in new capabilities, though I would still describe this as a major update. Here are the highlights.

First, Adobe has responded to PDF security issues by introducing a new protected mode on Windows, which according to Adobe is the only platform where significant malware attacks via PDF occur. All write calls are sandboxed by default, making it hard for malware to infect a PC. Apparently this is just the first phase, and a future version will restrict read calls as well. Another weakness in the current sandbox is that it does not protect the Windows clipboard.

Second, Adobe has polished and simplified the user interface. In a web browser, a PDF appears without any additional controls or toolbars other than a small toolbar that appears if you hover the mouse around the bottom centre of the page.

image

Adobe’s intent is to make moving from HTML to PDF so seamless you hardly notice, further embedding the format into the web.

Acrobat’s user interface has also been revamped. There are a few basic commands on the traditional menu and toolbars, but most of the features are accessed through a tabbed right-hand column, with tabs for Tools, Comments and Share. It is similar to the old Office task pane. I think it is successful, making features easier to find and use.

image

One of the sections in the Tools pane is called Action Wizard, which is a new macro feature in Acrobat Pro. “Macro” is not quite right; it is more of a wizard authoring tool, with some pre-prepared wizards that you can use as-is or modify. The following illustration shows one of these wizards in edit mode.

image

The Action Wizard should both speed up repetitive tasks, and ensure that important steps are not omitted. The focus is on preparing documents, for example for review, distribution, or web publishing.

Third, Adobe is having another go at the portfolio feature, introduced in Acrobat 9 but perhaps not used as much as the company had hoped. Portfolios let you combine multiple documents into one, for single file distribution with some added features in the container. If you are nostalgic for the Microsoft Office Binder, you will like Portfolios.

Acrobat X makes portfolios easier to create, and adds features like layouts and visual themes, so you can achieve slick effects with little effort. Organisations might create their own themes so as to promote their brand.

image

It is cool stuff, but if the portfolio feature in Acrobat 9 found little use, I am not sure that this new improved version will make much difference. Maybe the need for gathering multiple documents into one is not as great as Adobe imagines.

Other features include Microsoft SharePoint integration, enhanced OCR (optical character recognition), and improved copy and paste from PDF to editable documents such as Word and Excel, while preserving formatting – this last quite an important feature since this is a common source of frustration.

I am not sure about portfolios, and have some concern that Adobe has pushed too many features into Acrobat. Nevertheless, I found myself liking the new Acrobat. The usability effort has paid off, and I found it more enjoyable to use than previous versions. Performance seems better as well. Taken together with security improvements on Windows, this is a welcome upgrade.

Update: UK price details are as follows

  • Acrobat X Standard is expected to be £278 ex VAT (£132 upgrade)
  • Acrobat X Pro is expected to be £444 ex VAT (£190 upgrade)
  • Acrobat X Suite (includes Acrobat X Pro, Photoshop CS5, Presenter 7, Captivate 5, Media Encoder CS5, LiveCycle Designer ES2) is expected to be £953 ex VAT (£635 upgrade)

PyCharm: JetBRAINS IDE for Python and Django

JetBRAINS has released PyCharm, an IDE for Python and the Django web development framework.

The company is best known for the IntelliJ IDEA Java IDE, and indeed PyCharm is mostly written in Java, but now has other tools for languages including PHP and Ruby and Rails. It also does add-ins for .NET developrs working in Visual Studio.

PyCharm

PyCharm has a small number of refactorings, lots of code search and assistance features,  integrated support for CVS, Git, Mercurial and Subversion version control, unit testing with a graphical test runner, graphical debugger, built-in deployment to Google App Engine as well as error highlighting for GQL queries, and editing support for HTML, CSS and JavaScript as well as Python.

Data analysis hot at Future of Web Applications Day One

I’ve been attending the Future of Web Applications conference in London. I spoke to several attendees in the evening and the general perception was that the event had been weaker than usual so far. Complaints concerned uninspiring sessions, lack of deep technical content, and information on HTML 5 that was really nothing new.

That said, several said how much they enjoyed a session from Hilary Mason at bit.ly on data analysis. Bit.ly does url shortening, with 70% of so of its traffic coming from Twitter clients, and Mason is a statistical expert who has worked on analysing and visualising the resulting data. She told us, for example, that news links are more popular than sports links, and sports links more popular than food links. She was also able to discover the best time to post a link for any particular Twitter account, if you want maximum clicks. There is no quick way to discover this, so this type of analysis is valuable for companies using Twitter as a PR tool. Another snippet of information was the half-life of a typical bit.ly link – in other words, the time interval by which it has recorded 50% of its likely total clicks – which in the example she showed us was between 20 and 25 minutes.

The consequence was that I went into the next session, on social gaming, with data analysis on my mind. The  session was presented by Kristian Segerstrale at Playfish, part of Electronic Arts focused on casual games for Facebook and the like. Gaming by the way is a huge part of Facebook, accounting for 30% to 40% of overall engagement, according to Segerstrale. As an insight into the future of gaming, it was a good session, but perhaps did not connect well with typical FOWA attendees.

Nevertheless, Segerstrale made a compelling point about how his company’s games evolve, which is also applicable to other kinds of web applications. He said that there is intense analysis of what works and what does not work, based on the flow of data that is available with web applications. You can see who is playing, when they are playing, which features are used, and get a level of insight into the strengths and weaknesses of your application which is typically unavailable for desktop applications. I imagine this works particularly well within Facebook, because of the rich user profile information there. If you take advantage of that data, you can get a lead over the competition; if you fail to make use of it, you will likely fall behind. There is now a data analytics skills gap, Segerstrale told us.

It was thought-provoking to see how data analytics was a common thread between such different sessions.

Google’s web app vision: use our store

I’m at the Future of Web Applications conference in London, a crazy mixture of tips for web start-ups and general discussion about application development in a web context. The first session was from Google’s Michael Mahemoff who enthused about HTML5 and open web standards, while refusing to be pinned down on what HTML5 is, which standards are in and which may in the end be out.

Microsoft is here showing off IE9; but one of my reflections is that while the HTML5 support in IE9 is impressive in itself, there are going to be important parts of what, say, Google considers to be part of HTML5 that will not be in IE9, and given the pace of Microsoft’s browser development, probably will not turn up for some time. In other words, the pressure to switch to Chrome, Firefox or some other browser will likely continue.

I digress. Mahemoff identified four key features of web apps – by which he means something different than just an application on the web. These are:

  • Local storage – encompassing local storage API and also local SQL, though the latter is not yet well advanced
  • Application cache – Cache Manifest in HTML 5 that lets your app run offline
  • Local installation – interesting as this is something which is not yet widely used, but clearly part of Google’s vision for Chrome, and also in IE9 to some extent.
  • Payments

The last of these is interesting, and I sensed Mahemoff showing some discomfort as he steered his way between open web standards on the one hand, and Google-specific features on the other. He presented the forthcoming Chrome Web Store as the solution for taking payments for your web app, whether one-time or subscription.

I asked how this would work with regard to the payment provider – could you freely use PayPal, direct debits or other systems? He said that you could do if you wanted, but he anticipated that most users would use the system built into Chrome Web Store which I presume is Google Checkout. After all, he said, users will already be logged in, and this will offer the smoothest payment experience for them.

The side effect is that if Chrome Web Store takes off, Google gets to make a ton of money from being the web’s banker.

Outside in the exhibition area Vodafone is promoting its 360 app store, with payments going through the mobile operator, ie in this case Vodafone. Vodafone’s apps are for mobile not for web, but it is relevant because it is trying to draw users away from Google’s Android Marketplace and onto its own store. PayPal is here too, showing its developer API.

The app store and payment provider wars will be interesting to watch.

Latest job stats on technology adoption – Flash, Silverlight, iPhone, Android, C#, Java

It is all very well expressing opinions on which technologies are hot and which are struggling, but what is happening in the real world? It is hard to get an accurate picture – surveys tend to have sampling biases of one kind or another, and vendors rarely release sales figures. I’ve never been happy with the TIOBE approach, counting mentions on the Internet; it is a measure of what is discussed, not what is used.

Another approach is to look at job vacancies. This is not ideal either; the number of vacancies might not be proportionate to the numbers in work, keyword searches are arbitrary and can include false positives and omit relevant ads that happen not to mention the keywords. Still, it is a real-world metric and worth inspecting along with the others. The following table shows figures as of today at indeed.com (for the US) and itjobswatch (for the UK), both of which make it easy to get stats.

Update – for the UK I’ve added both permanent and contract jobs from itjobswatch. I’ve also added C, C++, Python and F#, (which hardly registers). For C I searched Indeed.com for “C programming”.

  Indeed.com (US) itjobswatch (UK permanent) itjobswatch (UK contract)
Java 97,890 17,844 6,919
Flash 52,616 2,288 723
C++ 48,816 8,440 2470
C# 46,708 18,345 5.674
Visual Basic 35,412 3,332 1,061
C 27,195 7,225 3,137
ASP.NET 25,613 10,353 2,628
Python 17,256 1,970 520
Ruby 9,757 968 157
iPhone 7,067 783 335
Silverlight 5,026 2,162 524
Android 4,755 585 164
WPF 4,441 3,088 857
Adobe Flex 2,920 1,143 579
Azure 892 76 5
F# 36 66 1

A few quick comments. First, don’t take the figures too seriously – it’s a quick snapshot of a couple of job sites and there could be all sorts of reasons why the figures are skewed.

Second, there are some surprising differences between the two sites in some cases, particularly for Flash – this may be because indeed.com covers design jobs but itjobswatch not really. The difference for Ruby surprises me, but it is a common word and may be over-stated at Indeed.com.

Third, I noticed that of 892 Azure jobs at Indeed.com, 442 of the vacancies are in Redmond.

Fourth, I struggled to search for Flex at Indeed.com. A search for Flex on its own pulls in plenty of jobs that have nothing to do with Adobe, while narrowing with a second word understates the figure.

The language stats probably mean more than the technology stats. There are plenty of ads that mention C# but don’t regard it as necessary to state “ASP.NET” or “WPF” – but that C# code must be running somewhere.

Conclusions? Well, Java is not dead. Silverlight is not unseating Flash, though it is on the map. iPhone and Android have come from nowhere to become significant platforms, especially in the USA. Beyond that I’m not sure, though I’ll aim to repeat the exercise in six months and see how it changes.

If you have better stats, let me know or comment below.

Microsoft’s Scott Guthrie: We have 200+ engineers working on Silverlight and WPF

Microsoft is countering rumours that WPF (Windows Presentation Foundation) or Silverlight, a cross-platform browser plug-in based on the same XAML markup language and .NET programming combination as WPF, are under any sort of threat from HTML 5.0.

We have 200+ engineers right now working on upcoming releases of SL and WPF – which is a heck of a lot.

says Corporate VP .NET Developer Platform Scott Guthrie in a Twitter post. Other comments include this one:

We are investing heavily in Silverlight and WPF

and this one:

We just shipped Silverlight for Windows Phone 7 last week, and WPF Ribbon about 30 days ago: http://bit.ly/aB6e6X

In addition, Microsoft has been showing off IIS Media Services 4.0 at the International Broadcasting Conference, which uses Silverlight as the multimedia client:

Key new features include sub-two-second low-latency streaming, transmuxing between H.264 file formats and integrated transcoding through Microsoft Expression Encoder 4. Microsoft will also show technology demonstrations of Silverlight Enhanced Movies, surround sound in Silverlight and live 3-D 1080p Internet broadcasting using IIS Smooth Streaming and Silverlight technologies.

No problem then? Well, Silverlight is great work from Microsoft, powerful, flexible, and surprisingly small and lightweight for what it can do. Combined with ASP.NET or Windows Azure it forms part of an excellent cloud-to-client .NET platform. Rumours of internal wrangling aside, the biggest issue is that Microsoft seems reluctant to grasp its cross-platform potential, leaving it as a Windows and desktop Mac solution just at the time when iPhone, iPad and Android devices are exploding in popularity. 

I will be interested to see if Microsoft announces Silverlight for Android this autumn, and if it does, how long it will take to deliver. The company could also give more visibility to its work on Silverlight for Symbian – maybe this will come more into the spotlight following the appointment of Stephen Elop, formerly of Microsoft, as Nokia CEO.

Apple is another matter. A neat solution I’ve seen proposed a few times is to create a Silverlight-to-JavaScript compiler along the lines of GWT (Google Web Toolkit) which converts Java to JavaScript. Of course it would also need to convert XAML layout to SVG. Incidentally, this could also be an interesting option for Adobe Flash applications.

As for WPF, I would be surprised if Microsoft is giving it anything like the attention being devoted to Silverlight, unless the Windows team has decided to embrace it within the OS itself. That said, WPF is already a mature framework. WPF will not go away, but I can readily believe that its future progress will be slow.

Adobe extends SVG, HTML 5 support in Illustrator

Adobe has released a preview of the Illustrator CSS5 HTML5 Pack. There is already an HTML 5 Pack for Dreamweaver.

Illustrator CS5 could already export in SVG (Scalable Vector Graphics) format, but the pack adds some interesting features.

One is the ability to specify strokes and fills as variables, so that you can modify them in JavaScript.

image

Exporting an image that uses this feature creates a JavaScript file as well as the SVG itself.

You can also mark an Illustrator object as Canvas. This will convert the object to a bitmap that is drawn to a Canvas element within SVG.

There is also increased support for CSS (Cascading Style Sheets). You can use CSS to define fills, strokes, opacity, gradient, position, and named character styles.

Other features in the Pack include the ability to detect the HTML window size and vary the SVG that is delivered accordingly – to support mobile browsers.

When Apple’s Steve Jobs posted his thoughts on Flash – still online despite the company’s change of heart on cross-platform development tools for iPhone and iPad – he remarked:

Perhaps Adobe should focus more on creating great HTML5 tools for the future, and less on criticizing Apple for leaving the past behind.

Of course Adobe was doing this anyway, but it is interesting to see HTML 5 support now being extended. Export more HTML 5 goodness at the forthcoming MAX conference next month.

If you try the new HTML5 Pack read the installation instructions carefully. You have to back up certain files, otherwise it may affect whether you can apply future official updates.

Decompiling Silverlight

A Silverlight application is a .NET application. Most developers will be aware of this; but it is worth noting that whereas ASP.NET code executes on the server and is not normally available for download, Silverlight code is downloaded to the client and can easily be decompiled. It is almost as easy to view as JavaScript code in the browser.

If you want to investigate this, the first thing to do is to find the .xap file which contains the Silverlight application. You will likely find this in your browser cache, or you can download it directly from the web site hosting the application. If you have out-of-browser Silverlight apps, they are usually located at:

C:\Users\[username]\AppData\LocalLow\Microsoft\Silverlight\OutOfBrowser

Copy the .xap file somewhere convenient, and rename it to have a .zip extension. Then extract the files. The result looks something like this:

image

Next, you need a .NET decompiler such as Redgate .NET Reflector. Run Reflector and open a .dll file containing application code. Select a method, and Reflector does its best to show you the code. It does a good job too:

image

The purpose of this post is not to encourage decompiling other people’s code, but rather to make the point that even though Silverlight code is “compiled”, it is trivial to read it – just in case anyone thought it was a bright idea to store passwords or other authentication secrets there.

The solution is to never to put anything security-critical in client-side code. Second, you can use an obsfuscator such as dotfuscator to make the decompiled code harder to read.

Silverlight versus HTML, Flash – Microsoft defends its role

Microsoft’s Brad Becker, Director of Product Management for Developer Platforms, has defended the role of Silverlight in the HTML 5 era. Arguing that it is natural for HTML to acquire some of the features previously provided by plug-ins – “because some of these features are so pervasive on the web that they are seen by users as fundamentally expected capabilities” – he goes on to identify three areas where Silverlight remains necessary. These are “premium” multimedia which merges video with application elements such as conferencing, picture in picture, DRM, analytics; consumers apps and games; and finally business/enterprise apps.

It is the last of these which interests me most. Becker’s statements come soon after the preview of Visual Studio LightSwitch, which is solely designed for data-driven business applications. Taking the two together, and bearing in mind that apps may run on the desktop as well as in browser, Silverlight is now encroaching on the territory which used to belong to Windows applications. With LightSwitch in particular, Microsoft is encouraging developers who might previously have built an app in Access or Visual Basic to consider Silverlight instead.

Why? Isn’t Microsoft better off if developers stick to Windows-only applications?

In one sense it is, as it gets the Windows lock-in – and yes, this is effective. I’m aware of businesses who are tied to Windows because of apps that they use, who might otherwise consider Macs for all or some of their business desktops. On the other hand, even Microsoft can see the direction in which we are travelling – cloud, mobile, diverse clients – and that Silverlight fits better with this model than Windows-only desktop clients.

Another consideration is that setup and deployment issues remain a pain-point for Windows apps. One issue is when it goes wrong, and Windows requires skilled surgery to get some app installed and working. Another issue is the constant energy drain of getting new computers and having to provision them with the apps you need. Microsoft has improved this no end for larger organisations, with standard system images and centralised application deployment, but Silverlight is still a welcome simplification; provided that the runtime is installed, it is pretty much the web model – just navigate to the URL and the app is there, right-click if you want to run on the desktop.

If Microsoft can also establish Windows Phone 7, which uses Silverlight as the runtime for custom apps, the platform then extends to mobile as well as desktop and browser.

The downside is that Silverlight apps have fewer capabilities than native Windows apps. Printing is tricky, for example, though Becker refers to “Virtualized printing” and I am not sure what exactly he means. He also highlights COM automation and group policy management, features that only work on Windows and which undermine Silverlight’s cross-platform promise. That said, via COM automation Silverlight has full access to the local machine giving developers a way of overcoming any limitations if they are willing to abandon cross-platform and browser-hosted deployment.

A winning strategy? Well, at least it is one that makes sense in the cloud era. On the other hand, Microsoft faces substantial difficulties in establishing Silverlight as a mainstream development platform. One is that Adobe was there first with Flash, which has a more widely deployed runtime, works on Android and soon other mobile devices, and is supported by the advanced design tools in Creative Suite. Another is the Apple factor, the popular iPhone and iPad devices which are a spear through the heart of cross-platform runtimes like Silverlight and Flash.

Finally, even within the Microsoft development community Silverlight is a hard sell for many developers. Some us recall how hard the company had to work to persuade Visual Basic 6 developers to move to .NET. The reason was not just stubborn individuals who dislike change – though there was certainly some of that – but also existing investment in code that could not easily be migrated. Both factors also apply to Silverlight. Further, it is a constrained platform, which means developers have to live with certain limitations. It is also managed code only, whereas some of the best developers for both desktop and mobile apps work in C/C++.

I suspect there is division even within Microsoft with regard to Silverlight. Clearly it has wide support and is considered a strategic area of development. At the same time, it is not helpful to the Windows team who will want to see apps that take advantage of new features in Windows 7 and beyond.

Yesterday Windows Phone 7 was released to manufacturing, which means the software is done. Another piece of the Silverlight platform is in place; and I guess over the next year or two we will see the extent to which Microsoft can make it a success.

Develop for Adobe Flash/Flex in Amethyst for Visual Studio

SapphireSteel Software is poised to release Amethyst, which lets you develop Flash and Flex applications with Microsoft’s Visual Studio 2008 or 2010.

Why bother? There’s two aspects to this. One is simply the comfort factor: if you are a .NET developer used to Visual Studio, but now working on Flash or Flex, this could be an easier way in than the Eclipse-based Flash Builder. There is a visual designer, a full-featured debugger, a property inspector with sections for properties, events, effects and styles, for example, and double-clicking an event generates an event handler as you would expect.

The other factor is areas where Amethyst can improve on what Flash Builder offers. One example is ActionScript refactoring, disappointing in Adobe’s product. Amethyst is not brilliant, but does have a few extras including Extract Method, Encapsulate Field and Extract Interface.

image

Another useful feature is that Amethyst can share projects with Flash or Flash Builder. Before you get excited, it does not do the magic you might want, Visual Studio editing of .fla files with embedded ActionScript. It does work reasonably seamlessly though: you can open .fla file in the Flash IDE by clicking within Amethyst.

This would have been even more interesting if Adobe had not added a measure of Flash Builder integration in Flash Professional CS5; and that is the challenge facing SapphireSteel – how to keep up with Adobe’s official development tools.

I’ve only played briefly with Amethyst but although I’ve been impressed with it in some ways, I also found myself missing features in Flash Builder, such as the Connect to Data wizards, and the view state management.

It is early days though; and I would be interested to hear from others who have tried Amethyst on what they do or do not like about it.

Price is not yet stated, but SapphireSteel also offer a Ruby product which is priced at $49 for a basic edition, or $199 for a professional version. Amethyst also comes in two editions so perhaps we will see something similar.