All posts by onlyconnect

Adobe “shifting its business model”: more publishing, less programming

Adobe has announced a shift in its business strategy, together with the loss of around 750 employees.

So what is changing? Adobe says it will be focusing on digital media and digital marketing, while investing less in “certain enterprise solution product lines.” In line with this strategy, Adobe acquired video advertising company auditude last week.

Here are the things which Adobe says are “important elements” in its new approach:

  • Creative Suite extended with tablet apps and delivered through the cloud
  • Greater investment in HTML 5: Dreamweaver, Edge and PhoneGap
  • Flash positioned for “advanced” web, video, and mobile apps
  • Digital publishing solutions
  • Video advertising
  • Document services such as electronic contracts and signatures

So what will Adobe be doing less? This is harder to discern as the releases, naturally enough, say less about it. The key remark is that:

the company will reduce its investment, and expected license revenue, in certain enterprise solution product lines

We can conclude, I guess, that the Digital Enterprise Platform once known as LiveCycle is going to get less attention as the company focuses more on digital content and less on providing a platform for enterprise applications. I would guess that this will impact the middleware services more than things like the Flex framework and Flash Platform tools, but I am speculating. More information is coming in a financial analyst meeting tomorrow in New York.

Eclipse and Xtend: some confusion in getting started

Last weekend there was some publicity around Xtend, an Eclipse project which extends Java with new language features. Xtend now has a new landing page, as announced by the lead architect Sven Efftinge.

I did intend to post about this yesterday, but I wanted to see it in action first, so I tried to download it and have a look. I believe this is a case where those who wrote the new landing page are too close to the project and made some assumptions, because I did not find it obvious how to proceed.

If you follow the Download link you are invited to paste one of the three URLs into the Eclipse update manager.

image

As a newcomer to the project, I did not want three URLs to choose from, I wanted just one. I picked Release as in general this one is likely to work.

Now, the instructions say:

To install the Xtend plugins open the update manager and paste one of the URLs on the right into the field ‘Work with’ and select the Xtend SDK.

The update manager actually presents you with a long list of updates, none of which say Xtend. I took a stab at what I thought was the right thing.

image

The All-In-One includes the Xtend SDK, which is what I want, right?

Wrong. After installation I could not find the tutorial which the docs said would be available.

I did some messing around with Eclipse and got the occasional error like this one:

image

Then I realised that I should have looked under the TMF Xtext-2.1.0 tree, which is where the correct Xtend SDK resides:

image

Except that if you find this helpful post by  Max Rohde you will know:

The other packages need to be selected since otherwise the Xtend editors will not work.

So you should select all of TMF Xtext-2.1.0 (or the latest release). Easy when you know, but not obvious since the word Xtend does not appear in the top node of the tree.

I was then able to create the tutorial project. I opened HelloWorld.xtend and got this:

image

Ah, but you have read Rohde’s post so you know this is expected and that you should run this as a JUnit Test. However it does not have any output. To see some output, you have to run one of the other examples, like Xtend08_RichStrings, or perhaps add:

sayHelloToSystemOut2(‘Tim’)

to the testHelloWorld() method in HelloWorld.xtend.

image

OK, it works.

So what is Xtend? It is essentially a code generator which lets you write in Xtend and generate Java. You can see the generated code in the tutorial project under xtend-gen.

image

Xtend adds some nice features: type inference, property syntax, closures, switch expressions with no fall-through, template expressions, extension methods, and multiple dispatch.

I can imagine C# creator Anders Hejlsberg smiling here, as most of this is already in C# in some form or other.

But is Xtend the right way to bring these features to Java? I am not convinced so far. It is an interesting Eclipse project, but it may be more significant in speeding the implementation of features like these into Java itself, than as a mainstream approach to writing applications. Xtend is a kind of hybrid approach, where you will be switching between Java and Xtend while you code and debug your application, and I suspect it would get frustrating.

There is also the question of widespread community support – beyond Eclipse.

Finally, it would be good if the new landing page could be made more helpful for those getting started.

Quick thoughts on Xcode and Objective C versus Microsoft’s tools

I have been trying out JetBrains’ AppCode which meant working in an Apple development environment for a time. I took the opportunity to implement my simple calculator app in iOS native code.

image

Objective C is a distinctive language with a mixed reputation, but I enjoy coding with it. I used Automatic Reference Counting (ARC), a feature introduced in Xcode 4.2 and OSX 10.7, iOS 5; ARC now also works with 10.6 and iOS 4. This means objects are automatically disposed, and I did not have to worry about memory management at all in my simple app. This is not a complete memory management solution (if there is such a thing) – if you use malloc you must use free – but it meant that the code in my app is not particularly verbose or complex compared to other languages. Apple’s libraries seem to favour plain English method names like StringByAppendingString which makes for readable code.

I was impressed by how easy it is to make an app that looks good, because the controls are beautifully designed. I understand the attraction of developing solely for Apple’s platform.

I also love the integrated source control in Xcode. You find yourself using a local Git repository almost without thinking about it. Microsoft could learn from that; no need for Team Foundation Server for a solo developer.

I did miss namespaces. In Objective C, if you want to remove the risk of name collision with a library, you have to use your own class prefix (and hope that nobody else picked the same one).

image

Interface Builder, the visual UI designer, is great but many developers do not use it, because coding the UI without it is more flexible. It is a shame that you have to make this choice, unlike IDE’s with “two way tools” that let you edit in code or visually and seamlessly keep the two in synch. I found myself constantly having to re-display windows like the Attributes Inspector though it is not too bad once you learn the keyboard shortcuts. The latest Interface Builder has a storyboard feature which lets you define several screens and link them. It looks useful, though when I played with this I found it difficult to follow all the linking lines the designer drew for me.

It is interesting to compare the Mac and iOS development platform with that for Windows. Microsoft promotes the idea of language choice, though most professional development is either C# or C++, whereas on Apple’s platform it is Objective C and Cocoa or you are on your own. Although Mac and Windows are of a similar age, Microsoft’s platform gives a GUI developer more choices: Win32, MFC, WTL, Windows Forms, Windows Presentation Foundation and Silverlight, and in Windows 8 the new WinRT.

I get the impression that Microsoft is envious of this single-minded approach and trying to bring it to Metro-style Windows 8, where you still have a choice of languages but really only one GUI framework.

That said, Visual Studio is an impressive tool and both C# and C++ have important features which are lacking in Objective C. I would judge that Visual Studio is the more productive tool overall, but Apple’s developer platform has its own attractions.

Moving Windows with its applications: too difficult

I have just replaced my PC – well, if you count new motherboard, new CPU, new hard drive, new RAM as replacement, though it sits in the same case – and faced again the question of what to do with my Windows setup, complete with hundreds of applications.

A few years back, there was no question. You took every opportunity to do a clean install, because without it Windows gradually became unusable, as gloriously recounted by Verity Stob.

Stob’s analysis is not completely wrong today, but the matter has greatly improved. The Windows 7 64-bit installation that I use today was installed in August 2009 (run systeminfo if you want to check yours), and that was an in-place upgrade from Windows Vista 64-bit, as recorded here. That Vista install was done in January 2008, so I have preserved applications and settings for coming up to four years and two motherboard changes.

The trade-off is that in return for putting up with some cruft you get a big win in convenience. There is no need to dig out install media, downloads and licence codes, and migration to a new system is quicker.

So why complain? Well, although it can usually be done, moving Windows from one machine to another is not supported by Microsoft, unless the hardware is identical:

Microsoft does not support restoring a system state backup from one computer to a second computer of a different make, model, or hardware configuration. Microsoft will only provide commercially reasonable efforts to support this process. Even if the source and destination computers seem to be identical makes and models, there may be driver, hardware, or firmware differences between the source and destination computers.

What this means is that users who get a new computer are directed instead towards the Windows Easy Transfer application:

image

This is a handy tool, but it does not transfer applications. This last point can be particularly tiresome if you use software that requires activation on each machine on which it is installed, not least Microsoft’s own Windows and Office. Adobe’s Creative Suite, for example, allows installation on up to two machines, after which it will no longer install unless you specifically deactivate it:

image

If you trash your old PC, or it breaks, without deactivating first, then you have to call support and plead your case.

Apple’s Migration Assistant, by contrast, does move applications, making a better user experience.

If you can easily move applications, settings and data, of course, there is no need to move the entire operating system, since you have all that matters.

Why does Microsoft make this so hard? Two reasons I can think of.

One is that there are technical challenges in moving Windows to new hardware; though having said that, I suspect that Microsoft could easily have created a migration wizard that includes applications if it wished to do so.

The second, and more important, is licencing. Most consumer versions of Windows (and Office too) are OEM licences, which are not allowed to be transferred from the machine with which they are supplied. If Microsoft made it easier to move Windows or to migrate applications, less new software would be sold. Enterprises are expected to handle this in a different way, with centralised application management tools.

Virtualisation changes the game of course. The point of virtualisation is that you run the operating system on abstracted hardware that can easily be replicated on another machine. I really would like to run a virtual desktop, but I do not have a suitably high-powered server and there are niggles over fast graphics, USB devices, studio quality audio and so on. I expect all these to be solved and that a virtual desktop is in my future.

In the meantime, I have personally lost patience with the idea of reinstalling everything, and fortunately I do not use OEM Windows licences.

The wider question is interesting though. Although the desire of Microsoft and its partners to protect licence income is understandable, there are new models of application licencing that work better for users. In Google’s world you just sign on in your browser, and all your stuff is there. In Apple’s world, your iOS apps are licenced to you, not your device, and when you get a new device they all reappear. Even Microsoft’s Xbox works like this too, though that was not always the case.

This competition, in combination with virtualisation, means that Microsoft’s approach with Windows looks out of date as well as being unpleasant for users.

Windows 8 is on the horizon, and I would guess that the forthcoming Windows Store will be better in this respect, though note that at its Build conference in September Microsoft did not discuss the business aspects of the Store.

Review: JetBrains AppCode for Objective C

I have been trying out JetBrains AppCode, a new IDE for Apple’s Objective C. The company is best known for its IntelliJ IDE for Java, and AppCode essentially takes the same core IDE and reworks it for Objective C. AppCode is itself a Java application, but unless you have a religious objection to this I doubt you will find it a problem: I found it perfectly snappy and responsive on my machine, a 2.3 Ghz Core i5 with 8GB RAM.

Installation was a snap, as Mac users expect.

image

One thing I discovered immediately is that AppCode is not a replacement for Xcode, the official Apple IDE. The Apple SDKs are delivered with Xcode, and AppCode requires it. An AppCode project is also an Xcode project.

image

This is particularly important if you want to use Interface Builder, the Xcode visual designer, since AppCode has no equivalent. Double-click the .xib file and it opens in Xcode. This is a disorientating at first, but in practice I found it convenient to be able to switch between the two IDEs.

So why bother with AppCode, when Xcode is free? It is certainly not essential, but my view is that tools which save time or improve quality are worth the investment. Whether AppCode will do this for you will depend on how you work and whether you have any frustrations with Xcode, which improved considerably in version 4. Out of the box, Xcode has integrated Git or Subversion source code control, unit test integration, refactoring including Rename, Extract, and Encapsulate, the aforementioned Interface Builder, and a ton of other features. Sticking with Xcode is a safe choice.

That said, AppCode feels leaner and less cluttered than Xcode. It also has many additional productivity features in the editor. JetBrains’ IDEs are well known for refactoring, and while AppCode is not as rich as IntelliJ IDEA in this respect, it does have a more than Xcode.

Another strong feature is code generation. Press Command + n in the editor, and a context-sensitive Generate menu offers various time-saving options. I like the way I can type a new method in an implementation file, press Alt + Enter, and select Declare method in the interface to add it automatically to the interface file; or type it first in the interface and have it implemented automatically. It pays to learn the keyboard shortcuts

Live templates let you type an abbreviation and expand it to a block of code, which you then tab through to edit. Type for, select the template, press tab, and AppCode will create a for loop; press tab again to edit the variable name and the number of iterations. You can customise and create your own Live templates in the AppCode Preferences dialog.

image

There are also a ton of performance tools in AppCode [update: note these are links to Xcode tools].  Choose Profile from the Run menu and choose what you want to analyse:

image

then run your app

image

You can also do static analysis according to customisable rules.

There is a debugger which works as you would expect including stack trace and variable inspection.

The best thing I can say about AppCode is that it is a pleasure to use. It does not throw up unnecessary dialogs, it works logically, and the tools are easy to use and configure. I have not always found this to be the case with Xcode, and if you spend a significant amount of your time on Objective C development then I recommend grabbing the trial download to discover if it will speed your work.

Post sponsored by Monster for the best in IT Jobs.

The power of Google: how the Panda update hit Experts Exchange

Searching Google recently it struck me that I rarely see results from Experts Exchange. I used to see a lot of these, because I typically search on things like error messages or programming issues for which the site is a useful source.

The site is controversial, because it (kind-of) charges for access to its knowledgebase but does not pay its experts. I posted about this back in 2009. That said, the quality of its advice is often good, and most answers are available without payment if you scroll far enough down the page. You can also get free access as an expert if you answer a few queries successfully.

Experts Exchange has to some extent been replaced by the StackOverflow group of websites, which are nicer to use and free, but I have found that the chances of getting your obscure query answered can be higher on Experts Exchange, particularly for admin rather than programming queries (of course for admin I am comparing with ServerFault).

Still, I wanted to test my perception that I no longer see Experts Exchange results in Google. I had a look at the Alexa stats for the site.

image

Wow! That vertical line is around April 2011, which is when Google rolled out its "High Quality Sites Algorithm". The site still ranks in the top 3000 in the world according to Alexa – 2787 at the time of writing – but according to the chart it lost around 50% of its visitors then, and has since declined further.

As noted above, the site is controversial, but I personally never minded seeing Experts Exchange results in my searches since the advice there is often good.

The bit that disturbs me though is simply the power Google has over what we read on the Internet. I appreciate the reasons, but it is not healthy for one corporation to have this level of influence, especially bearing in mind the black box nature of its workings.

Nokia’s Windows Phone gamble

At Nokia World in London on Wednesday, CEO Stephen Elop presented the new Lumia range of Windows Phones. You can watch the keynote here – I was impressed by Elop’s clarity and conviction, and also by VP Blanca Juti who talked about the Asha range of nearly-smartphone feature phones.

image

The demonstration of the Windows Phone OS and apps seemed to me weaker and you could sense a struggle in energising the audience. I suspect this is because Windows Phone has already been out for a year and has failed to meet expectations; clearly it takes more than live tiles to make a success of a new Smartphone.

Elop is aware of this which is why he made the following widely quoted remark:

[Lumia is] the first ever instantiation of the windows phone platform that properly embodies, complements and amplifies the design sensibilities of windows phone … more simply stated, Lumia is the first real Windows Phone.

I have yet to handle a Lumia but I believe Elop, in that the other Windows Phone 7 devices are no more than ordinary in their design, whereas Nokia has done something distinctive.

I was impressed by the demo of turn by turn navigation; this does look like an attractive and useful app.

image

I was also impressed when Elop talked about the marketing effort which Nokia and its retail partners are putting behind Lumia. He said that there are 31 operators and retailers in size countries which:

…have each committed to significant levels of marketing investment which includes unprecedented retail exposure and three times the level of total marketing investment compared to any other single Nokia launch.

He added that Nokia will be distributing seed devices widely among retailers so that they really know (and, Elop claims, love) the Lumia Windows Phones.

My immediate reflection is that Microsoft needed Nokia a year ago; Windows Phone has never before received this kind of backing. I am not sure that I have ever seen a Windows Phone for sale in my local small town centre, which has several mobile phone shops.

The tough question: is the OS good enough to compete with Apple and Android? I think it is a reasonable alternative, though I personally find the 20 beautifully designed icons I see on the first screen of the iPhone 4 more appealing than the seven chunky, flickering tiles I see on a Windows Phone. That said, I can see that the Windows Phone makes a good Facebook phone. I also like the Office apps and their read-write support for SharePoint, which is useful to me as a SharePoint user.

Where Windows Phone falls short is in the quality and availability of apps. There may be 30,000 in the Marketplace, but most of them are rubbish, and if you have a niche interest it is less likely to be represented than on an iPhone. I play Bridge, and on the iPhone I can enjoy FunBridge among others; on Windows Phone, nothing yet.

I have also found the data in Local Scout, a location-based index of places to see, shop or eat, too poor to be of much use where I am, though it may be better in London or other big cities.

If Nokia can win significant market share through its new range, problems like these will solve themselves as more people will care about them, and more apps will be developed.

It does need early success though, and this will not be easy bearing in mind that the general public are not really discontented with what is already on offer from others.

Nokia seems to have the right marketing ideas though, and the prices look reasonable. Watch this space.

Sanity prevails at HP which is keeping its PC division

HP has announced that HP is keeping its Personal Systems Group, its PC division.

“HP objectively evaluated the strategic, financial and operational impact of spinning off PSG. It’s clear after our analysis that keeping PSG within HP is right for customers and partners, right for shareholders, and right for employees,” said Meg Whitman, HP president and chief executive officer. “HP is committed to PSG, and together we are stronger.”

The strategic review involved subject matter experts from across the businesses and functions. The data-driven evaluation revealed the depth of the integration that has occurred across key operations such as supply chain, IT and procurement. It also detailed the significant extent to which PSG contributes to HP’s solutions portfolio and overall brand value. Finally, it also showed that the cost to recreate these in a standalone company outweighed any benefits of separation.

I am not surprised – it took me and many other observers about two minutes to reach the same conclusion back in August, when HP announced that it was considering a “spin-off or other transaction” for PSG.

I find it remarkable that HP did not conduct this research before, rather than after, announcing its uncertainty to the world. These last couple of months must have been challenging for the PSG sales and marketing team and costly for HP.

Nevertheless, good news for HP and its customers, and for Microsoft for whom HP is perhaps its most important hardware partner.

Twilio: programmable telephony, SMS comes to the UK, Europe

Web telephony provider twilio, which is based in San Francisco, has today announced its first international office, in London. You can now purchase UK telephone numbers at a cost of $1.00 per month, or Freephone numbers for $2.00 per month.

Twilio is not in competition with Skype or Google Voice; rather it offers an API so that you can incorporate voice calls and SMS messaging into web or mobile applications. The REST API lets you provision numbers with various options for what happens to incoming calls (conferencing, forwarding to another number or voice over IP, recording, transcriptions), as well as notifications so that you can get email or SMS alerts.

CEO and co-founder Jeff Lawson came from Amazon Web Services (AWS), and has a similar business model in that twilio targets developers and offers infrastructure as a service, rather than selling complete applications to its customers. Twilio does not own any datacenters, but uses mainly AWS and some RackSpace virtual servers to provide a resilient and scalable service.

The launch partner for the UK is Zendesk, a cloud-based helpdesk provider, which is using twilio to add voice to what was previously an email-based product. Zendesk forms an excellent case study. Using the service, you can provision a support number and have calls redirected to agents, or have a voicemail recorded, using a simple setup procedure. Calls can be recorded and you can have alerts sent when they are received.

What this means is that even the smallest businesses can offer helpdesk support using a pay-as-you-go model.

Lawson observes that twilio is the 6th and 13th most popular API on ProgrammableWeb (he says it is 5th if you combine voice and SMS) and claims very rapid growth in traffic using the API, though he will not talk about revenue. The company has around 60 employees in San Francisco and just one in the UK initially.

The service is also launching in beta for 5 other European countries: Poland, France, Portugal, Austria and Denmark. 11 other countries will be added by the end of 2011, though there are prominent omissions – no Germany or Spain, for example.

I was impressed by the demo and presentation at the press launch. Lawson provisioned a conferencing number and had us dial in during the briefing. He says twilio is engaged in disrupting on-premise telephony applications with a cloud service, in the same way Salesforce.com has done for CRM (Customer Relationship Management). The service is inexpensive to set up; Lawson said that this commodity pay-as-you-go pricing is essential for disruptive technology to succeed, another strategy borrowed from AWS.

There are server libraries for web platforms including Ruby, PHP, Java and C#, and client SDKs for JavaScript, Android and iOS.

Delphi XE2 FireMonkey for Windows, Mac, iOS: great idea, but is it usable?

I am sure all readers of this blog will know by now that Delphi XE2 (and RAD Studio XE2) has been released, and that to the astonishment of Delphi-watchers it supports not only 64-bit compilation on Windows, but also cross-platform apps for Windows, Mac OS X and even iOS for iPhone and iPad (with Android promised).

I tried this early on and was broadly impressed – my app worked and ran on all three platforms.

image

However it is an exceedingly simple app, pretty much Hello World, and there are some worrying aspects to this Delphi release. FireMonkey is based on technology from KSDev, which was acquired by Embarcadero in January this year. To go from acquisition to full Delphi integration and release in a few months is extraordinary, and makes you wonder what corners were cut.

It seems that corners were cut: you only have to read this post by developer and Delphi enthusiast Chris Rolliston:

To put it bluntly, FireMonkey in its current state isn’t good enough even for writing a Notepad clone (I know, because I’ve been trying). You can check out Herbert Sauro’s blog for various details (here, also a follow up post here). For my part, here’s a highish-level list of missing features and dubious coding practices, written from the POV of FireMonkey being a VCL substitute on the Mac (since on OS X, that is what it is).

Fortunately I did not write a Notepad clone, I wrote a Calculator clone, which explains why I did not run into as many problems.

Update: See also A look at the 3D side of FireMonkey by Eric Grange:

…if you want to achieve anything beyond a few poorly texture objects, you’ll need to design and write a lot of custom code rather than rely on the framework… with obvious implications of obsolescence and compatibility issues whenever FMX finally gets the features in standard.

There has already been an update for Delphi XE2 which is said to fix over 120 bugs as well as an open source licensing issue. I also noticed better performance for my simple iOS calculator after the update.

Still, FireMonkey early adopters face some significant issues if they are trying to make VCL-like applications, which I am guessing is a common scenario. There is a mismatch here, in that FireMonkey is based on VGScene and DXScene from KSDev, and the focus of those libraries was rich 2D and 3D graphics. Some Delphi developers undoubtedly develop rich graphical applications, but a great many do not, and I would judge that if Embarcadero had been able to deliver something more like a cross-platform VCL that just worked, the average Delphi developer would have been happier.

The company must be aware of this, and one reading of the journey from VSCene/DXScene to FireMonkey is that Embarcadero has been madly stuffing bits of VCL into the framework. Eventually, once the bugs are shaken out and missing features implemented, we may have something close to the ideal.

In the meantime, you can make a good case for Adobe Flash and Flex if what you really want is cross-platform 2D and 3D graphics; while VCL-style developers may be best off using the current FireMonkey more for trying out ideas and learning the new Framework than for real work, pending further improvements.

On the positive side, even though FireMonkey is a bit rough, Embarcadero has delivered a development environment for Windows and Mac that works. You can work in the familiar Delphi IDE and code around any problems. The Delphi community is not short of able developers who will share their workarounds.

I have some other questions about Delphi. Why are there so many editions, and who uses the middleware framework DataSnap, or other enterprisey features like UML modeling?

There appear to be five editions of Delphi XE2: Starter, Professional, Enterprise, Ultimate and Architect, where Architect has features missing in Ultimate – should the Ultimate be called the Penultimate? It breaks down like this:

  • Starter: low cost, restrictive license that is mainly non-commercial (you are allowed revenue up to $1000 per year). No 64-bit, no Mac or iOS. $199.00
  • Professional: The basic Delphi product. Missing a few features like UML diagramming, no DataSnap. Limited IntraWeb. $899.00.
  • Enterprise: For more than double the price, you get DataSnap and dbExpress server drivers. $1,999.00
  • Ultimate: Adds a developer edition of Embarcadero’s DBPowerStudio. $2999.00
  • Architect: Adds more UML modeling, and a developer edition of Embarcadero’s ER/Studio database modeling tool. $3499.00

The RAD Studio range is similar, but adds C++ Builder, PHP and .NET development. No Starter version. Prices from $1399.00 for Professional to $4299.00 for Architect. The non-Ultimate Ultimate is $3799.00.

All prices discounted by around 40% for upgraders.

The problem for Embarcadero is that Delphi is such a great and flexible tool that you can easily use it for database or multi-tier applications with just the Professional edition. See here, for example, for REST client and server suggestions. Third parties like devart do a good job of providing alternative data access components and dbExpress drivers. I would be interested to know, therefore, what proportion of Delphi developers buy into the official middleware options.

As an aside, I wondered about DataSnap licensing. I looked at the DataSnap page which says for licensing information look here – which is a MIDAS article from 2000, yes Embarcadero, that is 11 years ago. Which proves if nothing else what a ramshackle web site has evolved over the years.

Personally I would prefer to see Embarcadero focus on the Professional edition and improve humdrum things like FireMonkey documentation and bugs, and go easy on enterprise middleware which is a market that is well served elsewhere.

I have seen huge interest in Delphi as a productive, flexible, high-performance tool for Windows, Mac and mobile, but the momentum is endangered by quality issues.