In this article I will evaluate the latest functionality provided by Microsoft SQL Server 2012 – Power View for Multidimensional Models. This SQL Server 2012 Community Technology Preview (CTP) release allows connections between Power View and Multidimensional Models (cubes), in addition to the Tabular Models which have been supported since the release of SQL Server 2012 RTM/SP1.
Microsoft has updated the HTML client runtime in LightSwitch, its lightweight Web development tool. “Runtime Update 1″, as it’s called, is a bug and compatibility fix for the latest versions of jQuery, jQueryMobile and datajs.
The update adds support for jQueryMobile 1.3 and jQuery 1.9, according to this blog posting from the LightSwitch team. “Embracing the mobile-first, instead of mobile-only, approach was the main focus of this release,” the team states.
The key upgrade to the runtime, it appears from the blog, is the implementation of responsive design. Responsive design automatically resizes an interface according to the screen size of a particular device. (It’s something we did on VisualStudioMagazine.com; we’ve been writing about some of the challenges.)
The update is available through NuGet. The first step is to update the “Microsoft.LightSwitch.Client.JavaScript.Runtime” package, which also grabs the latest supported dependencies. The next step is to increment the version numbers of the JavaScript and CSS files in the default.htm file (the blog specifies which files). Note that you’ll need to do that for every LightSwitch project you have.
.. programming education .. may by chance have thrown the baby out with the bathwater, just as the reform maths educators did with calculators in schools.
In the old days, before calculators, children had to learn to do long multiplication, for example 431 × 27, using pencil and paper. This was a bit of a chore, now largely dropped in favour of tapping the problem into a calculator, which gets the answer more reliably. However, it turns out that the children were learning a lot more by accident than how to multiply long numbers. They were learning to set out their working in an error-displaying form, essentially a twentieth century proof that their answer was correct. They had to be absolutely precise in their working, but if they made a mistake, they could check their working, find the mistake and correct it. Their teachers could periodically take in this work and confirm that their pupils were working accurately and in a proper error-displaying way. Not only all that, but children were intuitively learning something about the mathematical structure of numbers by working with them, so that when they came to polynomials they found that working out (4x² + 3x + 1) × (2x + 7) was not much different to working out 431 × 27. (In fact it’s a bit simpler, because there are fewer carries.) To someone with a calculator, they are entirely different.
I wonder if, in the way we try to teach programming nowadays, we may have fallen into some similar traps, by not realising what students accidentally learned in the past.
For example — and here’s a heretical thought — are languages with GOTO really as bad as we imagine for noviceprogrammers? Dijkstra claimed that “It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration”. But don’t forget this was just a claim: where’s the evidence? Dijkstra himself obviously first learned to program in a language with only GOTOs, as I did, and I’m fairly happy that it did us no lasting damage. In fact I think it forced us to think about our code and to work with it in a particular detailed way, and this earlier practice may have served us well later, even when we programed in structured languages.
Like most SQL Server users I’m rather frustrated by Microsoft’s insistence on making the really cool features only available in Enterprise Edition. And it really doesn’t help that they changed the licensing for SQL 2012 to be core-based, so now it’s like 4 times as expensive! It almost makes you want to go with Oracle. That, and a desire to have Larry Ellison do things to your orifices.
And since they’ve introduced Availability Groups, and marked database mirroring as deprecated, you’d think they’d make make mirroring available in all editions. Alas…they don’t…officially anyway. Thanks to my constant poking around in places I’m not “supposed” to, I’ve discovered the low-level code that implements database mirroring, and found that it’s available in all editions!
It turns out that the query processor in all SQL Server editions prepends a simple check before every edition-specific DDL statement:
IF CAST(SERVERPROPERTY('Edition') as nvarchar(max)) NOT LIKE '%e%e%e% Edition%'
print 'Lame'
else
print 'Cool'
If that statement returns true, it fails. (the print statements are just placeholders) Go ahead and test it on Standard, Workgroup, and Express editions compared to an Enterprise or Developer edition instance (which support everything).
Once again thanks to Argenis Fernandez (b | t) and his awesome sessions on using Sysinternals, I was able to watch the exact process SQL Server performs when setting up a mirror. Surprisingly, it’s not actually implemented in SQL Server! Some of it is, but that’s something of a smokescreen, the real meat of it is simple filesystem primitives.
The NTFS filesystem supports links, both hard links and symbolic, so that you can create two entries for the same file in different directories and/or different names. You can create them using the MKLINK command in a command prompt:
This creates a symbolic link from my data and log folders to my Skydrive folder. Any file saved in either location will instantly appear in the other. And since my Skydrive will be automatically synchronized with the cloud, any changes I make will be copied instantly (depending on my internet bandwidth of course).
So what does this have to do with database mirroring? Well, it seems that the mirroring endpoint that you have to create between mirror and principal servers is really nothing more than a Skydrive link. Although it doesn’t actually use Skydrive, it performs the same function. So in effect, the following statement:
ALTER DATABASE Mir SET PARTNER='TCP://MyOtherServer.domain.com:5022'
The 5022$ “port” is actually a hidden system directory on the principal and mirror servers. I haven’t quite figured out how the log files are included in this, or why you have to SET PARTNER on both principal and mirror servers, except maybe that mklink has to do something special when linking across servers. I couldn’t get the above statement to work correctly, but found that doing mklink to a local Skydrive folder gave me similar functionality.
To wrap this up, all you have to do is the following:
Install Skydrive on both SQL Servers (principal and mirror) and set the local Skydrive folder (D:\SkyDrive in these examples)
On the principal server, run mklink /D on the data and log folders to point to SkyDrive: mklink /D D:\SkyDrive\Data D:\Data
On the mirror server, run the complementary linking: mklink /D D:\Data D:\SkyDrive\Data
Create your database and make sure the files map to the principal data and log folders (D:\Data and D:\Log)
Viola! Your databases are kept in sync on multiple servers!
One wrinkle you will encounter is that the mirror server will show the data and log files, but you won’t be able to attach them to the mirror SQL instance while they are attached to the principal. I think this is a bug in the Skydrive, but as it turns out that’s fine: you can’t access a mirror while it’s hosted on the principal either. So you don’t quite get automatic failover, but you can attach the files to the mirror if the principal goes offline. It’s also not exactly synchronous, but it’s better than nothing, and easier than either replication or log shipping with a lot less latency.
I will end this with the obvious “not supported by Microsoft” and “Don’t do this in production without an updated resume” spiel that you should by now assume with every one of my blog posts, especially considering the date.
And I’ve been using SQL Server for a long time.. but even I sometimes have embarrassing gaps in my knowledge about SQL Server.
This is one of those situations.. I cannot believe that I didn’t realize (until just a few months ago) that we could use CROSS APPLY without a function.
I’m utterly amazed by this, it’s a better method that what I was previously doing.. For the record, I was previously in the habit of returning the input parameters in the function so that I could join on it.
CROSS APPLY
(SELECT POMatQty = COALESCE(SUM(T.QTY),0),
POMatMBF = COALESCE(SUM(T.total_BF*0.001),0) — No Nulls…
FROM TRANSACT AS T
WHERE T.TRAN_CODE = ‘PO’
AND T.TYPE = ‘PORECPT’
AND T.LOC = L.LOC — Constrain sub-select to out record…..
AND [T].[ITEM_NO] = LEFT([L].[ITEM_NO],13)+’900′ — …. Loc and Item_No
AND T.TRAN_DATE BETWEEN CAST(DATEADD(MM,-@MonthsMAT,GETDATE()) AS DATE)
Embrace, extend, extinguish: How Google crushed and abandoned the RSS industry
Summary: Most of the commentary I’ve read so far about the loss of Google Reader has been about its use as an RSS client. But that’s a red herring. The real victims were companies that had planned in 2005 and 2006 to build RSS sync engines. Google stomped them out of business like Godzilla sweeping through Tokyo.
Google Reader was born in October 2005. Within two weeks of its soft launch, it had hundreds of thousands of users.
I know those details because the team responsible for developing Google Reader blogged about their progress regularly beginning with that first “Hello, Internet” post more than seven years ago.
The most recent post on The Official Google Reader Blog came earlier this month, when the company announced it was “Powering Down Google Reader.” The stated reason? According to Google’s Alan Green, “usage of Google Reader has declined, and as a company, we’re pouring all of our energy into fewer products.” It was all just one bullet on a longer “spring cleaning” post at the Google Official Blog.
It wasn’t always that way, though. In fact, the short life and sad death of Google Reader tells a familiar story of how Google swept into a crowded field, killed off almost all credible competition with a free product, and then arbitrarily killed that product when it no longer had a use for it.
It’s not unlike the widely criticized model that Microsoft pursued in its pre-Millennium days as a monopolist: Embrace, extend, extinguish. Except in this example it doesn’t appear to be part of a grand plan to destroy an industry. Google was Godzilla, sweeping through the landscape and crushing anything in its path, because few startups can compete with a free product from Google.
Most of the commentary I’ve read so far has been about the loss of Google Reader as a client. But that’s a red herring. It’s easy to write an RSS client, which is why so many alternatives have emerged since the surprise announcement.
No, Google Reader’s real competition back in its early days was not client software but services that aggregated RSS feeds and synchronized them across multiple devices. In 2005, when Reader started, Bloglines owned this space (although they weren’t very good it) and an upstart called NewsGator was also aggressively working to provide a central repository for RSS feeds as a service.
Google’s entry into this market decimated those companies and forced them to pivot or die. Ironically, the people who built Google Reader provided the death notices for both of those competitors.
In May 2007, more than 18 months after its release, Google Reader was still officially a beta, but that didn’t stop the team from offering offline support for Google Reader:
To do this, we’ve used the newly released Google Gears, a browser plugin that enables offline web applications. Once you’ve installed Google Gears, you can download your latest 2,000 items so they’re available even when you don’t have an internet connection. To get started, simply click the “Offline” link in the top right of Google Reader.
A small note of warning: the current version of Google Gears is a developer release. Given this, you may notice a few kinks here and there, but we’ll be working hard to iron those out over the coming months.
Spoiler alert: Google abandoned Google Gears (and thus dropped offline support in Google Reader) three short years later.
Google Reader came out of beta in September 2007. Normally, that would be a sign of commitment, but apparently Google management never really bought into Reader and it was on the chopping block for years.
In September 2008, Google talked about how it was using big-name journalists to endorse Reader by creating their own custom shared news feeds, called bundles, to Google Reader. That effort continued throughout 2009, with heavy-hitter endorsements from Arianna Huffington and Thomas Friedman and Paul Krugman as well as the editors of Lifehacker, Boing Boing and Kottke.
NewsGator surrendered to Google in July 2009, pivoting to a focus on enterprise customers after seeing their core business crushed. Such happy talk!
A hearty welcome to NewsGator users
A little while back, our friends over at NewsGator told us that lots of people who use their client RSS readers like FeedDemon and NetNewsWire had been asking for the ability to synchronize with Google Reader, since maintaining two separate subscription lists was a hassle. Today, we’re happy to report that we’ve worked with NewsGator to make this possible, and new versions of their client readers released today will use Google Reader as the synchronization backend. If you use one of these applications, check out NewsGator’s instructions and FAQ on transitioning your subscriptions.
Now that Google Reader can be used as the online companion to NewsGator’s client applications, they’ve decided to discontinue consumer use of NewsGator Online, their free web-based RSS reader, at the end of August. If you’ve been using this service, you’ll need to transition your subscriptions to Google Reader…. To those of you who have been waiting for this integration and to those of you who are using Reader for the first time, welcome!
It’s a shame, really, because NewsGator was committed to building a business around the back end of RSS. In a statement published in 2005, a few months before Google stomped in, NewsGator’s Greg Reinacker had laid out an ambitious roadmap:
One thing that’s definitely coming (and some of these already exist, although haven’t yet been made public) is extremely deep API support. Our general plan here is to expose nearly everything in NewsGator Online via API, and allow folks to build applications that leverage our platform in unique ways. Anything from simple notifiers, to complete aggregation applications, to some new kinds of apps that haven’t ever been built yet, will be possible using our API’s. This is a pretty exciting area — watch over the next few months as we start rolling these out.
In a story filled with irony, the announcement in May 2010 that Google was discontinuing offline access via Gears came with a suggestion that customers switch to two other NewsGator products instead (as well as a third for Linux)
Of course, we know that offline access is important to some of you, and with the wide range of third party clients that sync with Google Reader, you don’t need to give it up. Depending on your operating system, we recommend taking a look at:
NetNewsWire (Mac OS X)
FeedDemon (Windows)
Liferea (Linux)
Each of these alternatives will sync your subscriptions and read state with Reader, and continue to provide offline access to your feeds. … We realize that removing features and support is not easy, but with this spring cleaning done, we’ve laid the groundwork for more Reader improvements down the line. We apologize for any inconvenience….
There’s that “spring cleaning” again.
So, after gutting NewsGator’s original business model, Google encouraged the company to use its back end as a synchronization engine, which it then abandoned a few years later. Anyone who’s in the business of developing apps or services based on Google products should take note.
The Reader team was saddened to hear that Bloglines will be shutting its doors on October 1. Bloglines was a pioneer in the feed reading space, and for Web 2.0 in general.
We know that nothing will be quite like Bloglines in the hearts of its users, but if you’re looking for another online feed reader, we encourage you to give Reader a shot. All you need is a Google account … It’s also very easy to bring your Bloglines subscriptions over, you just have to export them from Bloglines and import them into Reader.
That post was accompanied by a graphic showing the impressive growth in Reader usage. Oddly, the graph didn’t include actual numbers, only a steadily increasing line showing relative growth.
The end of the road for Google Reader began on October 20, 2011, with yet another post in which the Godzilla of Mountain View announced it was “important to clean things up a bit.” (Note to Google partners: If you hear the word “cleaning,” your business is the trash that’s being taken out.)
In the next week, we’ll be making some highly requested changes to Google Reader. First, we’re going to introduce a brand new design (like many of Google’s other products) that we hope you love. Second, we’re going to bring Reader and Google+ closer together, so you can share the best of your feeds with just the right circles.
[…]
We recognize, however, that some of you may feel like the product is no longer for you. That’s why we will also be extending Reader’s subscription export feature …. Your data belongs to you, after all, and we want to make sure you can take it with you.
We have just announced on the Official Google Blog that we will soon retire Google Reader (the actual date is July 1, 2013). We know Reader has a devoted following who will be very sad to see it go. We’re sad too.
There are two simple reasons for this: usage of Google Reader has declined, and as a company we’re pouring all of our energy into fewer products. We think that kind of focus will make for a better user experience.
To ensure a smooth transition, we’re providing a three-month sunset period so you have sufficient time to find an alternative feed-reading solution. If you want to retain your Reader data, including subscriptions, you can do so through Google Takeout.
What’s fascinating now is that the entire RSS industry is being rolled back to about 2006 and asked to start over. All those clients that relied on Google’s sync engine? They’re back at Square One.
Given the discontinuation of Google Reader, I wanted to take a moment to talk about our plans for NetNewsWire.
First, we intend to bring sync to future versions of NetNewsWire. It’s too soon to go into details about this, but you should know that we recognize how extremely important it is and that it is a top priority for us.
Wisely, the developers of that product have decided not to make the same mistake twice. They’ve dropped their plans to rely on Apple’s iCloud.
Meanwhile, the news is not so good for the other NewsGator alumnus, FeedDemon for Windows. Developer Nick Bradbury says “it’s time for FeedDemon to die”:
If you’re an avid FeedDemon user, you probably know that I’ve struggled to keep it updated. FeedDemon stopped “paying the bills” a while ago, so I took a full-time job elsewhere and haven’t been able to give FeedDemon the attention it deserves.
Then today came the news that Google Reader is shutting down on July 1. FeedDemon relies on Google Reader for synchronization, and there’s no decent alternative (and even if there were, it’s doubtful I’d have time to integrate with it, at least not without trading time away from my family – which I won’t do).
That was the nail in the coffin for me. I hate to say goodbye to FeedDemon after a decade of working on it, but it’s time to say goodbye. When Google Reader shuts down on July 1, FeedDemon will also disappear.
In an era of mobile devices, where synchronizing content and settings between multiple locations is a crucial feature, losing Google’s sync platform is literally a killer.
Remember how NewsGator was going to build that sync platform years ago? We’ll never know what might have been, but it’s a dead certainty that Google’s entry into the market made that business untenable.
Of course, Twitter and Facebook made a very large dent in the usage of RSS, but there’s still a market there. A big one, in fact, if measured by the standards of a business that’s not Google-sized.
And now, with Google abandoning that service, any business that uses RSS gets to go back to the glory days of 2006. Ugh.
Back in 2009, when NewsGator surrendered to Google, I wrote this:
[S]elfishly, I’m glad Google has won. It’s the default online RSS reader, and I think they’ve done a fine job with it. I can still use FeedDemon and NetNewsWire on Windows PCs and Macs respectively.
[...]
In the bigger picture, I hate being beholden to Google for yet another service where they can watch what I do and who I watch. But I’m willing to trust them, just as I’m willing to trust Microsoft on many issues.