Showing posts with label Product and Service Reviews. Show all posts
Showing posts with label Product and Service Reviews. Show all posts

Friday, November 15, 2019

SunPlower Wind / Solar Energy Device HYPE (from Web Summit 2019)

SunPlower Wind / Solar Energy Device

ABUNDANT CLAIMS of Supposed Energy-Harvest Market Disruption Tech

For any of my readers that have a decent background in mathematics, engineering, physics, and a general inclination towards science and the reality of how things work, as soon as you read the claims made on the SunPlower.de website (yes, that is how they spell it; apparently trying to gain some name-recognition advantage for nearly copying the name of the large American solar company SunPower).  Just one quick look at the "SunPlower" device, which I first saw demonstrated at the Lisbon, Portugal Web Summit 2019, and you will instantly see why the company claims regarding "breakthrough" power-generation (implied efficiency) are completely absurd and utterly misleading for many reasons.

Here are some quotes from their website:
"SunPlower's (patent pending) world’s first Inclined Axis Wind Turbine (IAWT) propeller uses both lift and drag efficiently and reduces expensive & heavy masts costs. In addition to that propeller's blades are flat, which can be used for installing solar panels."
"Breakthrough in Fluid propulsion of both air and water more efficiently and effectively with SunPlower propeller."
"As the pitch of the propellers is synchronously varying while rotating, dust on blades with solar panels is self-cleaned. Its world’s first true Hybrid Solar + Wind technology, along with self-cleaning & self-cooling solar cells reducing maintenance costs."

Those are some rather wide-ranging and bold claims, implied and direct, and, given what was shown at Web Summit 2019 (a device which was a motor turning a windmill-like device whereby a set of gears simultaneously altered the blade angles), these claims are are highly unlikely, if not utterly impossible, to prove out in any controlled test environment (e.g., a wind tunnel).

Why these types of Claims are Problematic

There are many science blogs on the web that have tackled devices like this in the past and exposed obvious problems every time a new "disruptive" or "patent-pending" (not that a patent means anything with regard to efficiency, even if it were granted) or similar new wind-power technology — though, this one wants to call itself wind and solar power in one, or, as their home-page even goes further to state "Harvesting renewable energy using wind, solar hydro and tidal energy leveraging breakthrough technology", which sounds rather amazing.

Without diving too far into details, let's start by the simple fact that this and any other such device must respect:
  • Betz's law, which indicates the maximum power that can be extracted from the wind, independent of the design of a wind turbine in open flow.  Every time anyone claims they have created some "breakthrough" in a wind-power device that defies this law, by directly stating so or by implication, it is certainly an instantly dubious device! 
  • Bernoulli's principle, which, in fluid dynamics, states that an increase in the speed of a fluid occurs simultaneously with a decrease in pressure or a decrease in the fluid's potential energy — i.e., used to relate the velocity of the flow of air to the pressure difference across the turbine.
  • Mechanical efficiency, in general, especially with regards to loss throughout a mechanical device due to friction and gears and so forth.
Next, just looking at how modern wind-turbines work and some of the basic principles, you will notice quickly that the power-generation capability of this SunPlower device is certainly not going going to be in any way revolutionary or disruptive as compared to existing wind-power technology. Start by reading this Quora thread about Why 3-Blade Wind Turbines produce the best compromise between high energy yield and turbine stability and durability, and then keep in mind how this SunPlower device uses a 4-blade approach.

The device demonstrated at Lisbon Web Summit 2019 was fraught with problems and design issues that will certainly prevent it from being any "breakthrough" with regards to power-generation efficiency (whether wind and/or it's combined solar-on-blades idea, with dubious self-cleaning claims) or being produced with any sort of price/generated-watt advantage over many other existing technologies.  First of all, simply put, it is overly complex mechanically and complexity = likely for failure, just as a simple rule of mechanics. There is considerable mechanical efficiency-loss due to internal gearing that alters blade angle as the overall prop-mechanism rotates.

Keeping the Betz Limit in mind, consider the following equation that represents the theoretically available kinetic energy (in Watts) in the wind flowing through an area:
½pSv3
(where p = ~1.23kg/m3 density of air, S = swept area which is πr2 with r being the turbine blade-length in meters , v=air velocity in meters/second; also keep in mind that you cannot extract all that power or the wind would stop, and thus your wind-turbine would stop, and because of this, the maximum available power is ~59% of the number arrived at with above formula — modern turbines may reach only 35-45% in reality, and that is before loss in gears, bearings, power-transmission, etc)

Thus, the max power attainable by a turbine is known.
So, this little SunPlower device shown at the Web Summit did not even have blades of half a meter, and the swept diameter was perhaps not even half a meter.  This means very, very low power potential.  I'll keep this rough-out easy though and assume the firm may eventually build a one-meter-diameter-sweep device. So, max-theoretical-power that thing could produce at 10m/sec wind (which is a brisk and rather unlikely 22.4mph average sustained wind speed) would be:

~ .35 (efficiency extracted) x ½ x .25 (πr2, square-meters swept area) x 1.23 (air density) x 103 
... or, .35 x .125 x 1.23 x 1000 ... or, 53.81 Watts! 

THIS IS NOTHING!  We can get so much more out of a simple solar panel!  A SunPower brand ( NOT to be confused with this SunPlower thing) 405W solar panel outputs 200W per square meter!  And, unlike this overly-complex SunPlower device, the solar-panel is warranted for 25 years and has no moving parts; pair it with a simple Enphase IQ Microinverter, and the panel can be easily mounted near a cell-tower and you're all set.  Furthermore, the solar panel alternative is not going to be creating potential cell-tower signal interference like a spinning wind-rotor (especially if those blades were truly coated with solar-cells!).

Of course, my "red flag hype alert system" went off as soon as the developer began talking about how this device could be placed on some 4 billion (or whatever) cell-phone towers to power.  Sure. As could many existing, proven, and simpler technologies like a simple single solar-panel which is an already proven, affordable, mainstream solution. And, make no mistake: the tiny solar-panels on the rotating blades of this SunPlower (proposed) device are not going to produce any appreciable amount of electricity in the same overall footprint as a simple static solar panel, nor will it make much diff when combined with the wind-power (also, bear in mind, it's not like any solar-cells on the blades are all aiming the sun at once and capturing the power, especially given how the WIND is what will dictate which direction the supposed device is pointing).

I admire any attempt to come up with new green-tech, but please, remain aware of the limits imposed by science and the fact that hype cannot overcome such laws.  If this supposed breakthrough/disruptive-tech can prove they have overcome existing laws (like Betz), then bring it on!  Get it proven in lab conditions and you'll have achieved the formerly impossible; but, good luck at that!

Continue to read this Software Development and Technology Blog for computer programming articles (including useful free / OSS source-code and algorithms), software development insights, and technology Techniques, How-To's, Fixes, Reviews, and News — focused on Dart Language, SQL Server, Delphi, Nvidia CUDA, VMware, TypeScript, SVG, other technology tips and how-to's, plus my varied political and economic opinions.

Saturday, March 04, 2017

How to Fix: Microsoft Print to PDF (or Microsoft XPS Document Writer) Printer Not Working

How to Fix: Microsoft Print to PDF and Microsoft XPS Document Writer Printer Not Producing Output File

Symptoms: Print to PDF or Print-to-XPS Fails Silently, with no PDF File Created or no XPS File Created, in Microsoft Windows or Microsoft Office

This Microsoft Windows and/or Microsoft Office bug (or Windows "Feature") drove me crazy for a bit of time — when I wanted to print a document or spreadsheet, I would choose Print, then select either "Microsoft Print to PDF" or "Microsoft XPS Document Writer" as my target printer, proceed with printing to a file, where I would be prompted for the filename and file-location (directory), and choose to "Save" the file, and, even though all indications were that printing was functioning correctly, no XPS or PDF file was created!

Maddening!  In the end, it turns out that actually, this appears to be an issue (or problem or bug or feature) with Microsoft Windows that has to do with how the Windows Printer Driver functions (or does not function or work in certain situations), in particular with some security settings that mess it up.  I was using Microsoft Windows 10 and Microsoft Office 2013 (running in a Vmware Virtual Machine — which I mention only because this bug also prevents printing documents to PDF or XPS files via Vmware's ThinPrint driver too).

This is my list of available printers, and the two virtual printers (print to PDF or XPS file) experiencing this problem printing to a file are highlighted with a green box:
Printers: including Microsoft Print to PDF and XPS Document Writer

The problem cause, and how to fix this printing problem...

This took some time to figure out, but the root-cause of this printing problem was file-system directory security settings. It turns out that both the Microsoft Print-to-PDF and Microsoft XPS Document Writer need appropriate permissions in your temporary directory.

I tend to redefine my default Microsoft Windows temporary directory to some easier-to-quickly-locate place, like, e.g., "C:\temp" or "C:\tmp" (vs. buried in their default user subdirectories).  It turns out that creating that non-standard / non-default temp-directory is what led to my particular problem with the PDF / XPS driver not working.

In Windows 10 (or Windows 7 or whatever), your temporary directory is defined under Control Panel, System Properties, Advanced, Environment Variables, User Variables / System Variables, with the Variables of "TEMP" and/or "TMP" pointing to your temporary directory of choice, and whereby I have remapped my temp dir to be "C:\temp" or whatever.  I never even considered that changing my temp directory could break my Windows Printing (to file) features!  But, it did!

So, how to fix the fact that PDF files and XPS files were acting like they were printing, but nothing is being generated, not even in the print-queue? Easy: set the permissions on your newly chosen temporary directory location as follows:

Here is what the default permissions on my custom temp directory looked like when the PDF and XPS files refused to print:

Default custom-temporary-directory permissions

Now, this is all it took to fix the problem — one simple check-mark (see green circle), changing the permissions on the temp directory:



That did it! Enabling Authenticated Users to have Full Control of the temporary-directory fixed the Microsoft XPS Document Writer and Microsoft Print to PDF feature.

It is hard to believe that a system-level print-driver needs some special permissions on a temp directory (the same directory all sorts of program installers and software update logs go into, etc.) in order to create a PDF or XPS temp file, but that seems to be the case.  And, without that permission, you click Print and nothing happens... no file is produced... no printing errors during the PDF / XPS production process, no indication of failure... just no file produced. Period.  Ughhh.  But, now I know. I hope this saves some readers a bit of time and frustration.

This issue was as crazy as the one that forced me to write a blog about How to Fix: "Unable to find Adobe PDF resource files" - Adobe PDF Converter.joboptions - in Acrobat Pro a while back.  Equally ridiculous.

Continue to read this Software Development and Technology Blog for computer programming articles (including useful free / OSS source-code and algorithms), software development insights, and technology Techniques, How-To's, Fixes, Reviews, and News — focused on Dart Language, SQL Server, Delphi, Nvidia CUDA, VMware, TypeScript, SVG, other technology tips and how-to's, plus my varied political and economic opinions.

Monday, April 27, 2015

Delphi XE8 / RAD Studio XE8 New Features

Another 6 months, another (expensive) Delphi Release


Embarcadero keeps pushing out new Delphi versions

Yes, there is already another Version of Delphi / RAD Studio available — the XE8 Version!  If it seems like Delphi XE7 was "just released", that is because Embarcadero is pushing new versions of the Delphi programming and development platform out at the rate of approximately one new version every six months or thereabouts!  That is absurd!  Clearly these "new versions" are what should be released, in my opinion, as a free point-release to existing license holders of XE7 (or perhaps earlier versions still).

How is any small developer supposed to afford keeping up with this??  I suppose "software assurance" or some such perpetual-payment (to this Borland / CodeGear successor) model is recommended?   Rather than adopt such a money-sucking strategy, I stopped using Delphi for the simple reason that the software would bankrupt me if I bought ever darn version they release.

I would have highly considered adopting the Delphi XE  release series when the new FireMonkey stuff emerged, and I would have called it a "major release" at that point IF it was truly finished when it first came out.  I really like the idea of scalable vector-graphics controls and all the extra customization these controls may offer.  But, every time I look at it, FireMonkey still appears to be lacking commonly-used features the original VCL offered.

A full FIVE Delphi XE versions have now had this FireMonkey technology in it, and I am still not convinced it is on feature parity with the pre-Firemonkey VCL controls.  Case in point (quoted from the Delphi What's New web page):
  • New in XE8! ImageList component for FireMonkey
Seriously!?  An ImageList control is just now some new feature for FireMonkey after five versions of Delphi XE?  OK, fine... but do not charge me for all these incremental updates to the technology!  If I could have purchased Delphi XE4 and known for sure that all these future upgrades — upgrades that are still bringing FireMonkey features up to parity with the VCL — would have been available to me as free updates, I would have bought it.  But, there is no way I am paying for half-finished control sets over and over and over.

Furthermore, what is with the fact there are now so many Delphi features that are not even available on WINDOWS anymore?  Cross-platform may be great and all, but Embarcadero has gone a bit iOS crazy with what used to be a Windows-only product, and a lot of the newest features are not even implement for the Windows platform now/yet (oh, I guess that will be yet another paid-upgrade "version" of Delphi XE9, XE10, etc).   And, in what seems commonplace in most releases over the past few years, is seems that many new "features" are just tools and add-ons that Embarcadero has purchased from other companies to add into the Delphi environment and call them "features" —  that does not strike me much as REAL innovation that each paid version is including.

To be fair, there are some rather intriguing new features in Delphi XE8 (refer to that what's new page for details), but then again, along comes the next concern...

... Delphi XE8 Price!

You have to love this quote from an article The Register had regarding this XE8 release:
"RAD Studio XE8 has become somewhat expensive. It comes in four editions: Professional at $1,954, Enterprise at $3,244, Ultimate at $4,325 and Architect at $4,866."   
To that I say: "somewhat expensive"... OUCH, that is more than "somewhat"!  
Unless some (near magic) circumstance occurs where a paying-client wants to use Delphi so badly that they are not only willing to have me write Delphi code for them, but also are willing to pay for the latest and greatest XE8 license(s) for the privilege of using a language hardly any job openings exist for, I doubt I will ever get a chance to code in Delphi anymore.  Embarcadero has priced me out of the market and their push toward iOS and such has only further convinced me that I have better options available elsewhere.

Continue to read this Software Development and Technology Blog for computer programming articles (including useful free / OSS source-code and algorithms), software development insights, and technology Techniques, How-To's, Fixes, Reviews, and News — focused on Dart Language, SQL Server, Delphi, Nvidia CUDA, VMware, TypeScript, SVG, other technology tips and how-to's, plus my varied political and economic opinions.

Monday, October 13, 2014

Delphi Programming Popularity Increases in 2014?

Do you Believe the Delphi-Programming Statistics?


TIOBE Programming Language Popularity Index for October 2014 —Delphi Popularity Soars?

The TIOBE Programming Language Popularity Index for October 2014 shows Delphi / Object-Pascal moving upwards 6 notches from #17 at this time in 2013 to position #11 in 2014.  My use of question-marks in the blog title and main heading perhaps says it all: I question the accuracy of these rankings / statistics.

This is not to say I have not referred to these rankings before to back an observation I have made personally about various programming language and technology trends. In fact, I used the index to demonstrate how Google Dart popularity was rising in 2013 (in fact Dart is now #17 vs. #81 a year ago). I also believe the May, 2013 blog I wrote questioning whether Delphi programming is dead, and which referred to the TIOBE index at that time also, can lean on such rankings for some backing-data.  So, can the index be "wrong" and still offer enough "right" information to add value to an argument or decision-making process on occasion?

First, a bit of background on this programming-language-popularity index...

As quoted from the TIOBE site (hereinafter, "Quote A"):
"The index can be used to check whether your programming skills are still up to date or to make a strategic decision about what programming language should be adopted when starting to build a new software system."
and
"The TIOBE Programming Community index is an indicator of the popularity of programming languages."
Yeah, right!  Delphi is obviously taking off now (sarcasm abounds)! 

My Opinion, Explained

I believe I can understand how such a statistical move — like this current apparent substantial (and difficult to believe) resurgence in Delphi popularity — can be explained, given the key indicator this index is based on:
"Basically the [ranking] calculation comes down to counting hits for the search query (across 25 search engines) for: +"<language> programming""
Essentially, I posit that the TIOBE index is fundamentally flawed and a rather absurd way to truly know the "popularity" of a programming language, because [web] search behavior is not well-correlated with actual programming language activity, software projects, or technology hiring, and here is why...

The flaw in the index, in my opinion, is especially amplified in the case of languages that are "niche" or insignificant or perhaps even entering obsolescence, and the flaw exists not just as languages are sliding out of favor but also as new ones are fighting to get noticed as the next great software development language of choice.

Aside from maybe giving a slight bit of insight into "macro shifts" in the appeal and perhaps adoption (or lack thereof) of certain programming languages, I do not see much real value in this index.  The rankings of "stable" languages that occupy the top few ranking positions over long periods of time —  C, Java, Objective-C, C++, and C# which collectively hold the top 5 rankings currently — seem semi-believable, but, you cannot tell me that Delphi is more popular than JavaScript in 2014 (as the TIOBE index currently shows JS one step below Delphi) and that my programming skills repertoire would be better served knowing Delphi than JavaScript right now.  That is absurd.  Just search indeed.co.uk for London jobs mentioning Delphi skills (be sure to ignore the 6 unrelated hotel-operations software named Delphi) and compare the 3 (YES, THREE TOTAL DELPHI JOBS in London) to the nearly 2000 jobs in London that require JavaScript skills.

So, how could the TIOBE index be so wrong, and how can I have been so right when I pondered whether Delphi programming is dead last year?

Popularity skewed by unemployed Delphi developers?

I am sure I am not the only Delphi developer that is curious about the (minimal) presence of Delphi jobs, the current state of Delphi programming languages and tools, and so forth, that searches the web on a semi-regular basis using search-terms including "Delphi programming jobs" or similar phrases.   This search activity does not imply I have coded a single line of Delphi recently, nor does it mean there are any substantial number of Delphi software development projects to be found anywhere — in fact, such searches generally confirm the opposite: there are incredibly few Delphi jobs and Delphi programming opportunities anywhere, from what I see (especially relative to other "popular" languages on that programming-language index page).

So when I and others (that have Delphi skills which are essentially wasting away as fewer and fewer Delphi opportunities exist) go searching the web on the off chance there is actually a software development project that could use my Delphi programming skills (and actually pay me for those skills), we are somehow upping the "popularity" of Delphi according to TIOBE index.  This is just wrong.

As I put forth when positing this argument in the first place, I believe niche programming languages are going to be much more likely produce massive distortions in the popularity rankings for varied reasons.  First and foremost, software developers and programmers want to know that their skills may actually earn them money!  As such, they search for jobs that use: 1) the skills they already have, even if those skills are falling out of favor in the mainstream programming circles, and 2) skills they may be able to quickly migrate to in order to gain employment, maintain employment, and/or up their earnings with (ideally while not choosing "another Delphi" that turns out to be a career dead-end).  Period.

The first search-reason (i.e., finding jobs using one's existing skills) is where Delphi falls, and perhaps since Delphi is such a fantastic software development platform it encourages those with Delphi skills to be ever-persistent in their search for anyone willing to employ them using Delphi instead of another language. The second reason (i.e., finding skills to migrate to that will get one employed) is where things like Google Dart fall, and for all I know it is where Delphi developers are looking (in addition to JavaScript users that want true object-oriented class-based development) since the Dart language and features looks a lot like Delphi (certainly more so than JavaScript).

In any case, I believe the TIOBE index needs to be substantially altered in order to remain relevant.  In order to address Quote A with any real credibility, it needs to incorporate some job-postings data.  You cannot tell me that my programming skills are up-to-date if there are essentially zero jobs anywhere that actually rely on such skills.  That is just nuts.  And, a quick sanity-check on the relative rankings of "popularity" can be done by comparing even at a super-duper-high-level the number of jobs available that reference each programming language as a required skill for the open position.

I am glad the TIOBE index exists even as I find it fundamentally flawed.  I still use it for very, very high-level insight into what is going on in the programming language arena, but I also couple it with my own observations and insights for some sort of "reality checking" of the data.  Parts of the rankings are quite believable and match up with the reality I see in job postings, technology articles, presentations, and so forth, even as other parts of the rankings (like Delphi) do not.

So, take it all as you wish, and whilst busy wishing, maybe all of us that still appreciate how wonderful Delphi programming is should be wishing that there will be jobs out there to put our skills to use before we all finally give up looking and see Delphi fall off the charts completely.


Continue to read this Software Development and Technology Blog for computer programming articles (including useful free / OSS source-code and algorithms), software development insights, and technology Techniques, How-To's, Fixes, Reviews, and News — focused on Dart Language, SQL Server, Delphi, Nvidia CUDA, VMware, TypeScript, SVG, other technology tips and how-to's, plus my varied political and economic opinions.

Saturday, November 16, 2013

Google Dart Programming Language Milestone: Version 1.0 Released

Google Dart Reaches Stable 1.0 Release


Exciting times for web-developers frustrated by JavaScript!

I have been following the Google Dart language and associated software development APIs / Libraries since very early in the Dart life-cycle.  My early Dart-related blog postings began over a year and a half ago, and as impressed as I was with Dart and its objectives back then, I am even more impressed by Dart and the software development ecosystem that has emerged since.

The Dart language itself is but a small part of the story here.  In addition to the class-based object-oriented modern programming language, one of the greatest things about Dart is the included libraries for things like Collections, Asynchronous operations, and much more — just check out all the available standard Dart API libraries for common web software development tasks.  In addition to those, there are a growing number of community-sourced projects and libraries available on Github or the Dart "Pub" Package repository.

I have published my own open-source Dart / SVG Widgets on Github [UPDATE: I removed these after Google eventually created something similar, and eventually far more advanced, called Flutter!], and just finished updating them to be compatible with the 1.0.0 release of Dart.  These are only "experimental" or "alpha" stage UI Widgets, and require more work to make use of some of the newer features of Dart that were not around when I first wrote this code (e.g., Streams and such).  But, writing that open-source proof-of-concept SVG-UI-Framework in Dart definitely provided good experience and helped maintain my interest in Dart while the product made its march toward "stable 1.0" release.

The down-side of Dart...

After using Dart for web development work, I simply cannot stand to code JavaScript!  That is the biggest "down-side" or Dart for me... it has further eroded my ability to tolerate the (normal) hideous and unmaintainable JavaScript that usually accompanies any substantial web applications these days.  I am spoiled now!  And, any time I look at the source-code behind large JS libraries, I can barely stand it. Dart is just so fantastically better designed for building modern robust web functionality than JS.  Give it a try, you'll like it.

[NOTE: Dart can *output* JS code that runs on any modern browser, and the code runs fast!  So, why subject yourself to the typical maintenance nightmare of working directly in JS when you do not have to?]

There is also always Microsoft TypeScript if you prefer their approach to improving JS.

Continue to read this Software Development and Technology Blog for computer programming articles (including useful free / OSS source-code and algorithms), software development insights, and technology Techniques, How-To's, Fixes, Reviews, and News — focused on Dart Language, SQL Server, Delphi, Nvidia CUDA, VMware, TypeScript, SVG, other technology tips and how-to's, plus my varied political and economic opinions.

Friday, September 06, 2013

Windows Server 2012R2 Free Book Download (PDF, MOBI, EPUB)

Get a FREE Microsoft Windows Server 2012R2 Book


LEARN WHAT'S NEW IN Windows Server 2012 R2

If you are considering migrating from Microsoft Windows Server version 2008, 2008r2, or 2012 to the latest Windows Server 2012 R2 release, you may wish to see what's new in this operating system before making the move.

MICROSOFT PRESS MAKES PDF / MOBI / EPUB AVAILABLE FOR FREE

Microsoft Press was good enough to provide a downloadable Free ebook — Introducing Windows Server 2012 R2 — to help you catch up on their latest upgrade to the Windows Server product line.

I quickly read through the Introducing Microsoft Windows Server 2012 R2 (Preview Release) book, and as you may expect, a lot of it reads like marketing material, in my opinion, as the authors will try among other things to convince you that this latest Windows Server is ideal for all your "cloud" operating system needs.  Regardless, the book is fine for getting an overview of what's new in Windows Server 2012 R2, by major areas of interest within the product — like virtualization, cloud computing, networking, etc.

Just because the book exists (in some part for sure) to help promote Windows 2012R2, that does not mean there is not reason to truly be excited by new features in Windows 2012 R2 — there are!  I for one was especially impressed by the recent SMB 3.0 enhancements in Windows Server 2012; in particular, I was amazed by the performance improvements demonstrated with SQL-Server 2012 run against a database hosted on this new SMB 3.0 platform.  Win2012R2 builds on that...

Basically, Win Server 2012 implements SMB 3.0 File Servers that can support SQL-Server databases on file shares without a performance hit (with hardware config of course)!  This is a great alternative to dedicated and costly SAN (Storage Area Network) devices.  If SQL-Server on Windows 2012 SMB 3.0 is of interest to you, here is a link to a technet blog page full of useful information.  And, I expect the further updates to SMB 3 within Windows Server 2012R2, like the following items (as quoted from this e-book), will be quite useful for SQL-Server applications and more:

  • ...the performance of SMB Direct has been enhanced to provide a 50 percent improvement for small IO workloads when used with RDMA-capable network adapters...
  • ...increased efficiency and density of hosting workloads with small I/Os, for example when running an online transaction processing (OLTP) database workload inside a virtual machine...
  • ...SMB connections can also now be managed per share on SoFS instead of per file server as in Windows Server 2012...
  • ...Another new feature of SMB 3.0 in Windows Server 2012 R2 is SMB Bandwidth Management. Because SMB now has so many different functions in a network and storage infrastructure built using Windows Server 2012, it now represents a common infrastructure component in many environments. That means it’s important to be able to control how much bandwidth SMB uses when it’s performing many different tasks within an infrastructure...

The book also offers some decent discussion of enhancements to the data-deduplication features, Hyper-V enhancements, IIS 8.5 new features, and more.  Hey, the book is FREE, so there is not too much to lose other than some time spent perusing it for useful content.  Download it for yourself and share your thoughts here if you have a chance.

Continue to read this Software Development and Technology Blog for computer programming articles (including useful free / OSS source-code and algorithms), software development insights, and technology Techniques, How-To's, Fixes, Reviews, and News — focused on Dart Language, SQL Server, Delphi, Nvidia CUDA, VMware, TypeScript, SVG, other technology tips and how-to's, plus my varied political and economic opinions.

Thursday, September 05, 2013

VMware Workstation 10.0 New Features

VMware Desktop Virtualization Products Updated


NEW VMWARE WORKSTATION 10 AND FUSION 6

Another year, another set of "new product releases" (new versions of VMware products).  And, by now it should be very clear that VMware's software marketing goals, presumably to help product predictable and continual cash-flow, are to push annual full-product (read: paid) version releases of their core products, regardless of how significant the new features are in those products. Last year around this time, I wrote about the new features in VMware Workstations 9.0, and just a year before that I wrote about the new features in VMware Workstations 8.0.

There is a definite pattern forming here with regards to both timing and the fact that each release is a paid version upgrade (as opposed to a perhaps free "point upgrade"). It is not just VMware doing this — it is an industry-wide norm now that tries to force customers to keep pumping cash out for small features and bug-fixes that probably should have been included for free. Oh well, time to give up and take it (because this trend is NOT going away).

New Features in VMware Workstation 10.0

I am having a difficult time getting overly excited about this latest version of VMware workstation, especially since it is a paid release and I do not see many changes that I care about or plan to use.

Key New Features: Windows 8.1, tablet sensors, and expiring VMs (do you care?)

Windows 8.1 Features

Seeing that I have yet to even use Windows 8, I do not care about Windows 8.1 support from VMware Workstation either.  But, I will admit, I find it more likely I will perhaps actually take time to evaluate Microsoft Windows 8.1 final — as soon as Microsoft releases it and makes the trial download available — but that alone gives me little reason to consider paying for Workstation version 10.0.

I personally hope to stretch as many years out of Windows 7 (a very solid product) as possible until I can migrate everything to Linux.  Had Microsoft not turned Windows into what looks like some goofy smart-phone UI (that I am not to force upon desktop users and/or that I have to learn a whole new application-development and programming model for), perhaps I would think differently about this.

But, if you use Windows 8.1, the features of interest in this Workstation 10.0 release are bound to be handy for you: Unity mode has been enhanced to seamlessly work with Windows 8.1 UI changes and Workstation 10 can now convert a Windows 8.1 physical PC to a virtual machine.  Yay, I would expect that even in a "point release", but whatever.

Tablet-Sensor Support (in Virtual Machines)

Next, there is the new tablet-sensor (pass-through) to virtual-machines — accelerometer, gyroscope, compass, and ambient light sensor data available to VMs.  Great! (sarcasm... again, I do not care).  Call me old-school: I do not use a tablet, nor a smart-phone or whatever, for my daily applications... I still prefer a desktop with a big monitor for everything from email to spreadsheets to programming and so forth.

I do not currently need to pass tablet touch-sensor-data or gyroscope-data to a virtual machine.  But, I can see how tablet-software-developers would like this new tablet-sensor-virtual-machine-pass-through feature for testing their varied "apps" under different operating systems, web browsers, and other configurations.

Expiration Dates for Virtual Machines — something useful!

This feature got my attention. As a custom software developer, the ability to set an expiry-date on a virtual machine has quite a bit of potential. Consider the case of demonstrating a custom application to a client where the entire application may reside in a virtual-machine.  The client wants to evaluate it for a period of time, but you (the developer) wants at least some level of assurance the software will not function in perpetuity without you receiving some compensation for your product.

I will need to experiment with this feature in detail.  I want to see whether, in combination with other virtual-machine administrative-lockdown options, this will provide the security I need in order to leave an entire Virtualized application "stack" (an app, fully self-contained in a VM) with a client or potential client "safely".  Since the new expiration date can even require synchronization with a specified time-server (which should prevent the old "set the clock back" circumvention methods), this sounds like a good start for securing one's intellectual property.

Next, I would think that by locking down the VM hardware configuration (and any contained-operating-system's administrative rights, etc), I could prevent someone from gaining access to files via network-copy and such.  Coupled with diligent use of code obfuscation and so forth, this may all add up to a nice way to help guard intellectual property while giving clients a great way to evaluate a software product for a limited amount of time.

Other New Features in VMware Workstation 10

Some other miscellaneous features were mentioned in the VMware Workstation 10 release information, like:
  • Power Off Suspended Virtual Machines — at least, I hope that made the cut from the 2013 technology preview version of Workstation 10; that can be quite handy.
  • Support for 16 vCPUs, 
  • 8 TB SATA disks and 64GB of RAM
  • New Virtual SATA (vSATA) disk controller 
  • Now supporting 20 virtual networks 
  • USB3 streams support for faster file copying, which provides the following, per release notes:
USB 3 Streams have been implemented to enable high speed transfer of files from USB 3 external storage devices that support this technology. For customers running Workstation 10 on laptops with small hard disks, large data files, video files etc., can be stored on an external USB 3 storage device and accessed quickly from within the virtual machine.
  • VMware has also addressed issues Intel, NEC, AMD, TI and Linux Kernel host xHCI drivers to improve overall USB 3 compatibility and performance.
  • Improved application and Windows VM startup times 
  • SSD Pass through
  • Multiple monitor set-ups are easier than ever, whether you are using 2, 3, or 4. 
  • VMware-KVM provides a new interface for using multiple virtual machines
I need to find more information about the SSD Pass-through, as I wonder if that will help with both speed and SSD longevity; I believe this is limited to operating systems (inside a VM) like Windows 8 that can optimize themselves for running from an SSD.  I am also interested in speed-testing any USB3 devices; in the past, there seemed to be a lot of restrictions on USB3 use, and perhaps this is no longer an issue?  Time will tell.

New Operating System Support for:

  • Windows 8.1
  • Windows 8.1 Enterprise
  • Windows Server 2012 R2
  • Ubuntu 13.10
As well as for the latest Fedora, CentOS, Red Hat and OpenSUSE releases.


BOTTOM LINE: As always, the choice is yours as to whether the upgrade price (around $119) is worth it or not.  I have learned (the past few years) to wait for "Cyber Monday" sales that tend to knock $20 or $30 off this price via VMware's online store.  Since I am in no hurry, I plan to do that this year again if I decide to invest in this version to gain the expiring-virtual-machines feature or one of the other smaller updates.  The full release notes are available online at VMware site (took me a while to locate, too).

Continue to read this Software Development and Technology Blog for computer programming articles (including useful free / OSS source-code and algorithms), software development insights, and technology Techniques, How-To's, Fixes, Reviews, and News — focused on Dart Language, SQL Server, Delphi, Nvidia CUDA, VMware, TypeScript, SVG, other technology tips and how-to's, plus my varied political and economic opinions.

Wednesday, July 17, 2013

Bountysource Open-Source Crowd-Funded Software : Mini-Review

Bountysource : Show me the Bounties!

Crowdfunding for OSS : Where are the "funds"?

Bountysource, which is being promoted as "the first crowdfunding platform dedicated to supporting open-source software" (OSS) in news releases today (about their seed round funding), is perhaps a semi-interesting concept, though from my quick look at the site has me questioning its merits on a few levels.  Being "first" does not mean it will succeed or even be useful.

The whole point of this site is supposedly to "accelerate open-source development" by offering "bounties" to get desired OSS project(s) or project-feature(s) implemented or OSS-issues/bugs fixed quicker.  Well, what I saw when quickly perusing the "projects" is that there is a large list of "projects" (where Bountysource probably just loaded a database with a list of popular OSS projects from Github and other places), but hardly any "funding" available for any of them.


No Global Search-Available-Bounties Feature?

Maybe I just cannot locate such a feature (if it exists), but it seemed like for a site called "BOUNTYsource" (key word: bounty) you'd be able as a site-user (potential developer) to quickly search all projects to see which ones had active bounties so that if you had skills to apply in hopes of being rewarded by those bounties that you could find such projects quickly and see if any were a "fit" for your skills. I could find no such search-by-bounty feature on Bountysource.  Seems quite odd.

Sure, you can "search" an individual-project for a bounty, but what is the point?... any bounties on a project are easy to see at an individual level, but the time to go through a bunch of projects one-by-one is just ridiculous (especially when that list of "projects", is like I mentioned earlier -- and apparent "dump" of popular project names, where most have no issues to work on listed anyhow).  I'd go further: what would really "accelerate development" of OSS projects would be the ability for a potential developer to search for all projects with bounties that required certain skill(s), but good luck with that for now -- such functionality apparently does not exist.

Not Much Bounty-Money Available

I suspect the reason for this (apparent) lack of search functionality is a simple one: they (Bountysource) do not want you being able to quickly see that there are VERY LOW TOTAL BOUNTY dollars available (in total) for all these supposed "bounties".   Maybe that will change over time, maybe not.  But, quickly perusing the most popular "featured fundraisers", the highest bounty amount I could find for anything was just under $10K USD, and that is a *standout*.

The Bigger Issues with this Concept

Aside from the bounty money thing, the site itself was super-slow (perhaps due to the press-release today?  search speed was terrible and/or timed-out for me) and the "chat" feature was useless... I saw a list of (supposed) logged-in people (perhaps 20 or 30) and asked a question or two... waited... waited... NOTHING.... useless.

But, the biggest issue has to do with whether this "bounty" approach to accelerating open-source-software development is even a "good thing" to begin with.  I understand that many OSS developers could sure use any funding they could get to help offset their invested time/cost (I for one develop OSS for "free" otherwise), but I can also see this leading to Bountysource becoming the next eLance or oDesk or such in its own right: i.e., pure garbage! Don't over-analyze that comparison too much as I realize this will be a bit different, but I do think it could end up with similar issues.

For one, I think there is likely to be a group of people that search the web for existing-code to simply copy/paste (with perhaps minor alterations) where possible to make a submission toward a bounty (in hopes of quick cash), and bring into question all sorts of copyright mess.  Hopefully I am wrong about that, but it seems inevitable.  There is going to have to be some code-plagiarism-detection of sorts or this will likely happen (and the day other developers find their code posted as a "solution" to a Bountysource item without their consent, things will get ugly).  The bottom line is that I can see how simple it will be for money to "corrupt" the entire open-source-software paradigm; hopefully that is not the case.

Either way, you may want to check the new service out and decide for yourself whether it is "good or bad" for OSS software development.  Who knows... maybe Bountysource will implement a useful search feature for developers to locate projects that may be something they'd consider working on for money, and in tandem maybe they will find a way to (try to) ensure that submissions are not substantially-copied-source-code/fixes/etc that others have published or own already.  I will admit there are times where I would gladly pay a "bounty" to get an issue in certain OSS software fixed, or a feature implemented quickly, if I could... but, most of the time I am able to fix things myself, submit the fixes, and/or simply be patient and wait for a reported issue to be fixed or implemented by the developer(s).

Continue to read this Software Development and Technology Blog for computer programming articles (including useful free / OSS source-code and algorithms), software development insights, and technology Techniques, How-To's, Fixes, Reviews, and News — focused on Dart Language, SQL Server, Delphi, Nvidia CUDA, VMware, TypeScript, SVG, other technology tips and how-to's, plus my varied political and economic opinions.

Wednesday, July 10, 2013

Google Dart vs. JavaScript Debate

Dart vs. JS : Objective Reactions?


Google Invests in Dart to Improve Upon JavaScript.
Brendan Eich tries to Reason Why Dart is Not "Right" Approach

I was just reading Brandon Jones's blog entry titled "A Tale of two Web Technologies" today where Brandon put forth a nice call for discussion about Dart vs. JavaScript (JS).  I liked how Brandon summarized his position on this subject as follows:
"For my part I think they're both [Dart and asm.JS] awesome technologies with different use cases. If I were building a new web app from scratch I'd want to code it in Javascript or Dart but would prefer Dart due to its cleaner syntax, built-in libraries, and potential speed."
I am with Brandon all the way on this — there is no comparison between the cleanliness of Dart code and the equivalent (current) JS code (or asm.JS-infused mess): Dart makes writing large-scale, object-oriented, performant applications for the web so simple compared to JS!  Sure, it is not "perfect" and has some areas that need attention (as I have blogged about recently: see areas that Dart needs to improve upon to further adoption).  But, Dart solves a LOT of the issues that exist with JavaScript.

As expected, I noticed that Brendan Eich  (of Mozilla CTO and JS-inventor fame) was quick to jump in to represent and defend the JS camp (by commenting on Brandon's posting), while a few others expressed a mix of opinions about JS and/or Dart.  But, as of right now when I am writing this, I really didn't see anyone aside from Brendan (who has a serious vested interest in being a proponent of JS over most any "competition") really making any substantial arguments for sticking with JavaScript over Dart.  I think that alone says something.

An utterly huge number of JS developers are out there, but I cannot help wondering how many are at least in some part annoyed by the promise of what "ES6" or "ES7" will bring when the wait for such things has seemed infinite.  I personally gave up on waiting (for EcmaScript to get to where I wanted it) when I saw the difficulties the ES parties had even try to agree on how to implement classes (objects) and inheritance, etc.  Ugghhhh.  Like there is anything to "invent"??  How many languages do we need as a reference for a decent object system (plenty exist)?  Well, thankfully Google decided NOT to wait forever and instead created a language (Dart) that included the modern constructs and features I expect in a development language.  And, coming from Delphi, C#, C++, and other programming, Dart felt as natural as anything could be... and now I can code for the web much like how I write desktop applications.

Dart is FREE! Dartium (browser) Exists Now. Why knock it?

Maybe I am just unusual in my thinking.   Personally,  I do not see any problem at all with requiring a variety of Browsers (that may have varied VMs within them — Dart, JS, whatever) in order to access content that relies on applications / scripts written in a variety of languages.  E.g., "Dartium" (Chromium with the Dart VM in it) exists currently and works fine for viewing both Dart-based web applications as well as JS-based pages. We have all seen the "best viewed with XYZ browser" on sites at one point or another, so would it be that big of deal to see "runs faster with Dart" indicators too perhaps? And, what do I care if I need multiple browsers on my system to interact with various sites/services or to have an optimal experience?

Customers (i.e., users) don't seem to mind installing tens (or hundreds) of "apps" on their devices, so why would users care if the "app" called "Dartium" (or FireFox, Safari, etc) is required in order to access some other functionality/content? What I am getting at is that I don't think users care one iota about how their various apps/content are built, etc., so long as all are relatively stable, responsive, and simple enough to use. The rendering-engines in the browsers are what should be important (to users), and that's about it. So long as a browser renders the content of a site/app correctly, I doubt if any user could care less if the underlying scripting language (that augments the HMTL/CSS layout engine and standards) is Dart, JS, Forth, Modula-2, or Assembler... it is irrelevant to me and to most users. As a developer, I can choose whatever works best for me so long as the user has a simple way to use my site/app.

I think that arguing for "backwards compatibility" with JS is also nearly a pointless endeavor.  Users will not care so long as they are appropriately prompted to access content with the required "app" (Dartium, etc) and provided with a way to get that app.   Think about all the websites of old that had links for downloading the Adobe Flash Player that was needed to view content: and, guess what... people did, and did so in a huge way!  Flash became ubiquitous on the web.  Flash provided people with an improved user experience (well, "improved" if you like all those animations that is).  So, if Dart (or some yet-to-be-known technology) offers such an improvement, trust me: people will download Dart, Dartium, whatever in order to experience it! Games certainly come to mind: give gamers a higher frame refresh-rate that is only available through native Dart apps, and a whole group of Dart-aficionados will emerge.  Gamers could give a crap about whether their web-UI or app is "backwards compatible" with JS.  And, do you really think business-applications will be much different?  The only substantial challenge I see is mainstream public-facing web sites, but so what... that will come later.

Is Dart the Future of Web Programming?

Maybe.  I personally think JavaScript is likely ALREADY DEAD (its fate sealed), though there will undoubtedly be many people that will argue til the end that it is not (even beyond Brendan E.), as efforts like asm.js try to keep it alive.  And, regarding asm.JS, I like the comment left by an "EricomGuy" on Brandon's blog, stating:
"[...] I have two concerns regarding asm.js: 
1. JavaScript developers, in particular the "jsPerf crowd" will manually write asm.js code in an attempt to squeeze a few extra cycles out of the VM. This may end up pushing JS usage patterns in the wrong direction. 
2. JS VM manufacturers will focus on improving asm.js performance rather than on JS in general. I know V8 already stated they will not do it, but they may be forced to once they start falling behind in performance comparisons. 
If both #1 and #2 happen it can create a vicious loop that feeds itself, to the detriment of JS."
I think those are valid points, but moreover I think asm.js is a ridiculous attempt to decorate JS in such a way as to bring Dart's formal language features and benefits into JavaScript instead of simply admitting Dart is the correct way to truly "fix" JS.  I am amazed how long the JS language has held on, and it is starting to remind me of M (alternatively "MUMPS") or other such languages.  Like M, it is bound to hold on a long, long time, but I expect Dart, TypeScript, or some other languages/approaches to start whittling away JS's ubiquity, and soon.  In a way, I see asm.js as a JS version of Intersystems Cache's answer to the shortcomings of MUMPS (and, a way to extend the life of a language and technology that needed a major overhaul.  Don't analyze this comparison too deeply — I realize there are many differences — but, some similar history may come to pass.

Thinking a bit further ahead...

I suspect the Dart-vs-JS discussion is just a total myopic distraction that may obscure us from recognizing the emergence of much more substantial and possible paradigm-shifts (much more disruptive than Dart, asm.js, etc.) that could hit "browsers" and web-based apps in general.  Dart is a welcome nice natural step forward, and one that should have come much sooner.  But, as I contemplate the incredible growth in network bandwidth and processing power and then extrapolate what things may look like in perhaps a mere 10 years or less,... this Dart vs. JS language-choice discussion may look ridiculous in hindsight.  Some company is going to upend things in a way that a simple browser-language/VM change cannot.

I put forth part of a vision of things to come, as I saw it, in a 2006 blog of Software Prognostications (my upcoming sentences will perhaps be more meaningful after reading that), and part of what I foresaw then has come to be since, but things are not yet completely to where I envision them going.  I saw "apps" coming a long time ago.  And in a way, the modern browser(s) have become, to a lesser extent, the "virtualization" environments that I was expecting on the client — they offer at least some degree of sand-boxing and isolation for security (though hackers still find these too easy to break out of) — and, with the advent of the Dart-VM in a browser, or the V8-JS engine in a browser, or SpiderMonkey or any other language-processor in that browser-encapsulated-virtual-environment-for-rendering-HTML/CSS, things are getting closer to what I had hoped for.  I want the option to deploy my web apps using whatever tech-stack makes the most sense, and I want it to be super simple to do.

As I see it, the only thing the distributed client device needs is a hypervisor / hardware abstraction layer and the ability to interact with and "navigate" the web (i.e., find a URL to pull a VM from) and a way to very nicely isolate/sandbox this stuff.  Essentially, I am waiting for the day when end-users have the equivalent of a bare-bones VMware ESXi-like Web-Meta-OS on their devices and that each "site" or connected "app" is pushed down as a VM image immediately when someone navigates to it (perhaps persisted and used by multiple sites too, where it makes sense — as would a common "basic backwards-compatible JS/Dart web browser VM" would be for a while. heh),... and each VM may contain the "optimal software stack" (as determined by the creator/publisher) for its purpose, and that stack may be a minimalist-Linux with Dartium or Firefox or FutureFox or whatever, or perhaps a proprietary OS with custom apps written in god-knows-what.

Cloud-hosting may minimize what all "needs" to be downloaded to the client like this, and for applications that absolutely must run "on the client", my vision may well require a network backbone based on quantum entanglement and zero-latency-at-arbitrary distances, but I suspect that is coming too.  Fact is, Intel and other hardware makers are going to have to figure out some way to keep distributed computing-power a "must have" thing.   So, I have to bet on the further increase in computing power coupled with every-cheaper and ample storage too.

But, I can picture the day where particular to a website/app, the user gets a VM fully loaded and optimized for that site/app, be it browser-based (or maybe even an entire Windows 12 or OSX-15 application), ready-to-go, fully-isolated/secure, and so on.  If that VM is running a Delphi XE5 app on Windows 9, so be it.  If it is a browser-based app written in Dart that requires Dartium, great.   If it is asm.js or JS "classic", fine.  So long as users don't have to know anything the internals of the app, and so as a developer I can choose to write my sites/content/apps in whatever language/stack I choose, great!

In the mean time....

Bottom Line: Embrace Dart (or even TypeScript)

For now: Dart wins, hands down over JS!  TypeScript is a fine improvement too.  And, I'll be darned if I am going to waste time on asm.js — that just sounds nuts (my opinion).  I see asm.js as nothing but a workaround for embracing something like Dart and the DartVM in browsers in order to prop up the JS "side" of this debate.  But, maybe that asm.js code will be more easily and automatically converted to proper Dart-language or TypeScript code by automation tools down the road?  (perhaps there will be value in it after all).

Continue to read this Software Development and Technology Blog for computer programming articles (including useful free / OSS source-code and algorithms), software development insights, and technology Techniques, How-To's, Fixes, Reviews, and News — focused on Dart Language, SQL Server, Delphi, Nvidia CUDA, VMware, TypeScript, SVG, other technology tips and how-to's, plus my varied political and economic opinions.

Thursday, June 27, 2013

SQL-Server 2014 New Features of Interest : Newest Microsoft Database / RDMS

Microsoft SQL-Server 2014 New Features

SQL-SERVER 2014 UPGRADES AND ENHANCEMENTS OF NOTE

It seems like the pace of SQL-Server releases is picking up! SQL-Server 2014 CTP1 is just now available for download and it does not seem like that long since I wrote my blog about the previous version and SQL Server 2012 New Features. In general, I think I was more excited about SQL 2012 than I am about SQL-Server 2014, since there were more Transact SQL enhancements in that version, and I tend to focus quite a bit on programming stored procedures and user-defined functions.

But, SQL-Server 2014 definitely has some nice new features that deserve looking at, especially when it comes to "cloud" deployment on Microsoft Azure.

  • Microsoft's codename "Hekaton" in-memory OLTP engine.
  • Column store (columnstore in-memory indexes from SQL 2012) become update-able in SQL2014 by way of updateable clustered columnstore indexes — there are some limitations and restrictions (compared to non-updateable, non-clustered version), but these new indexes should lead to faster query speeds and greater data compression for certain data-warehousing and real-time analytics needs.
  • Buffer-pool-extension support for solid-state drives — enabling faster paging by extending the SQL Server in-memory buffer pool to SSDs.
  • Windows Azure — automatic or manual back-ups to Azure will allow you to keep your on-site data backed up to "the cloud" at a DB-instance-level (for disaster-recovery); restore to an Azure VM if needed too. Also, a new SSMS Migration Wizard for Windows Azure Infrastructure Services makes migrating your on-site SQL-Server to "the cloud" much simpler.
  • SQL 2012 "AlwaysOn" technology extended — SQL Server 2014 gets more "mission critical" availability with up to 8 readable secondaries and no downtime during online indexing operations; in addition, a new SSMS Wizard helps you deploy AlwaysOn secondaries to a Window Azure VM.
  • When used with Windows Server 2012 R2, Greater scalability of compute, networking and storage — including: Scaling up to 640 logical processors and 4TB of memory in a physical environment and up to 64 virtual processors and 1TB of memory per VM; Network Virtualization that abstracts networking layer allowing easy migration of SQL Server from one data-center to another; Storage Virtualization with Storage Spaces where you create pools of storage and storage tiers to prioritize "hot" data to access premium storage (e.g., SSDs) and "cold" data to access standard storage.
  • New security features — these enhancements should simplify administration, auditing, and some application requirements: new CONNECT ANY DATABASE Permission, IMPERSONATE ANY LOGIN Permission, SELECT ALL USER SECURABLES Permission, and ALTER ANY DATABASE EVENT SESSION Permissions;
  • The SELECT … INTO statement is improved and can now operate in parallel;
  • Compiled Transact SQL (compiled T-SQL) Stored Procedures using "WITH NATIVE_COMPILATION" directive — Expensive T-SQL stored procedures (SPs) that reference only In-memory OLTP ("Hekaton") tables can be natively compiled into machine code for further performance improvements. There are some additional requirements for compiling T-SQL that include:
    • Native compiled stored procedures must be schema-bound (use SCHEMABINDING directive);
    • Execution context is required (e.g., "EXECUTE AS OWNER");
    • Must be in an atomic block context — BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english') ... statements here ... END;
    • NOTE: While these "native compiled" stored procedures are written using Transact-SQL, they do not support the full Transact-SQL surface area.

SQL-SERVER 2014 : Initial Thoughts

When I first read about "compiled T-SQL procedures", I was excited, but... that quickly faded as I learned about all the limitations.  If I am correct (I think I am), these new compiled stored procedures are only available for the "Hekaton" related data, and even then it sure sounds like further limitations will abound.  I need more time to play with this feature.

Next, I think the simplified deployment to Azure makes sense (certainly for Microsoft, as they can sell you yet another product / service), but it seems a bit much for me to pay for another software upgrade to get feature(s) that enable me to spend more money on their other products.  

Bottom line: I think the reason SQL-Server 2014 showed up on the scene so quickly (relative to the release-cycle windows between SQL2005, 2008, and 2012) has a lot to do with Microsoft freaking out about Amazon and other "cloud" providers landing hosting gigs for SQL-Server databases on a platform they do not own or collect subscriber-cash from.  So, Microsoft had to throw together whatever it could for a new "SQL 2014" release and get it out there to encourage users to adopt Azure as their preferred "cloud" deployment option for SQL-Server.

The new features that accompany SQL2014 pretty much all fit with this analysis.  Sure, the "compiled stored procedures" may not be 100% to do with Azure, but I cannot help wondering if the reason they only work with Hekaton stuff is that they are really "half baked" (and were perhaps intended to apply to all procedures, but there was no "time" to make that happen while rushing to shore-up Azure sales).  Just my thoughts.

Continue to read this Software Development and Technology Blog for computer programming articles (including useful free / OSS source-code and algorithms), software development insights, and technology Techniques, How-To's, Fixes, Reviews, and News — focused on Dart Language, SQL Server, Delphi, Nvidia CUDA, VMware, TypeScript, SVG, other technology tips and how-to's, plus my varied political and economic opinions.

Friday, June 14, 2013

Google Dart Language Status / Popularity 2013

Google Dart Language Progress 2013


Time Flies: Dart, one year later...

In May of 2012, I wrote a blog about how Google's Dart Language ranking / usage was on the rise. I was watching the Github language-popularity rankings for Dart quickly move from 70th position to 55th ranking between May 2012 and October 2012. Now I just took another look today, and one year later Dart is showing up in 56th position on Github. So, Dart's Github rank has essentially gone nowhere since October of 2012. So, what does that mean?

Well, I believe some of the early excitement over Dart wore off as developers (including myself) have been waiting for the Dart language and APIs to stabilize. I switched from heavy-development mode to "just keep code working with latest Dart SDK / APIs" mode for much of the past year (not to mention the fact the Dart team destroyed my ability to have standalone SVG-docs using Dart for interactivity - which previously worked).  In addition, I think a lot of people are waiting for projects like the Dart Web UI (Web Components) stuff to mature so it can be put to use in projects without heavy re-working later.

It is worth noting that the free Dart Editor has come a long way since last year, if you use it.  I personally use JetBrains WebStorm / PHPStorm product (which has a nice Dart plugin), but I can certainly appreciate the effort Google is putting into creating a free editor.  Though, I cannot help thinking that some of the time spent working on the editor would be better spent getting the language features, APIs, and libraries completed and stabilized.

In addition, Dart's code execution-speed / performance is fantastic now!  This is certainly worth noting, and keeps my interest in Dart.  When Dart is running twice as fast as JS (in V8 engine, which is quite speedy JS to begin with), that is impressive, which is partly why...

Dart Language is Getting Noticed Yet

I just took a look at the TIOBE Programming Community Index (June 2013) site (FYI, the TIOBE Programming Community index is an indicator of the popularity of programming languages), were I encountered this (quoted material) in their monthly summary, which notes Dart's progress / presence:
...there are also some threats for JavaScript. The JavaScript language is generally regarded as a programming language in which it is easy to make mistakes. It is interpreted, so most errors show up only at run-time. That's why Google designed Dart (currently at position 80) as JavaScript's successor. But also other programming languages were designed to generate JavaScript code instead of writing it manually. Examples of this are CoffeeScript (position 139) and TypeScript (position 207).
Yes, Dart is more than holding its own compared to Microsoft's own Dart-like language, TypeScript.  But, it is nowhere near the well-entrenched JavaScript (which was in 10th place this month).  Google has done a decent job of talking Dart up at developer conferences and so froth, but much more will have to change before Dart truly threatens Javascript...

What is needed for Dart Language adoption to increase?

Now, that sure is an open question subject to all sorts of debate.  As I mentioned, I want/need the language features and APIs and libraries to stabilize before I commit much more heavy development time into Dart projects.  Furthermore, Google needs to really embrace Dart (internally) in such a way the shows us developers that we are not investing in something that is going to just fade away.  And, I mean more than just *talk*.

I find it frustrating that projects like the (native, not js-interop) Dart-based Google Visualization API / Google Charts projects have just stalled out and appear, essentially, abandoned (if anyone can even find these anymore).  What's up with that?  For a while, it looked like the Dart team was going to produce native Dart-language layer for products like Google Visualization, which I'd love to see.  I recently needed to use Google-Viz / Charts with some Google Table data, and I looked everywhere for native Dart stuff.  In the end, I just gave up and used JavaScript for the project, and hated every minute of it (I find Dart coding productivity to be much higher than JS, as I really enjoy class-based OOP as natively implemented in Dart).

There there is always the question about: when will Google's cloud (Google App Engine) support native Dart-based hosted web applications?  Seems like a very popular topic/question that remains as yet open. Or, how soon will the Dart VM be included in Chromium / Blink browser?

Until more "core" and "mainstream" libraries exist natively in Dart (starting with Google's own various public libraries and APIs), I just do not see how Dart's adoption will surge.  Sure, it will slowly grow, but it would grow a LOT faster if there were some substantial popular libraries and APIs out there that were written in native Dart.  Dart's execution speed is fantastic, but that alone is not quite enough for me to commit fully to Dart.  That's my opinion for now at least.  I remain a Dart developer, but a software developer that is also waiting for signs that I will not be investing my time into something that becomes the next Delphi (i.e., technically superior, fast, but low market adoption niche language/product).


Continue to read this Software Development and Technology Blog for computer programming articles (including useful free / OSS source-code and algorithms), software development insights, and technology Techniques, How-To's, Fixes, Reviews, and News — focused on Dart Language, SQL Server, Delphi, Nvidia CUDA, VMware, TypeScript, SVG, other technology tips and how-to's, plus my varied political and economic opinions.

Saturday, May 25, 2013

Is Delphi Software Development Dead?

[Additional discussion update: see my October-2014 blog about Delphi programming popularity, which references this article.]

I was a long-time user of the Embarcadero Delphi (formerly Borland, Inprise, and Codegear branded Delphi) RAD (Rapid Application Development) IDE, programming language (which is object-pascal) and VCL (Visual Component Library) -- having used it since the Delphi 2 days in the mid 1990's.  I have written about Delphi on this blog before, including my thoughts about Delphi XE2.   Since then, Delphi XE3 has been released, as has the newest Delphi XE4 variant (which, seems to me as XE3 with additions almost solely focused on iPhone/iPad/iOS targets.

With recent releases of Delphi (like XE4), one could assume that Delphi was still going strong and holding market share.  But, think again!  If you happen to read the TIOBE Programming Community Index (as of May 2013) site (FYI, the TIOBE Programming Community index is an indicator of the popularity of programming languages), you will encounter this (quoted material):
May Headline: Delphi is on its way out
Delphi/Object Pascal was once far ahead of its time. The Delphi development environment supported software engineers to create cool applications in a fast way. Moreover, since the underlying language of Delphi was Object Pascal, the "generated" applications were scalable and relatively easy to maintain. This in contrast to its competitor of that time, the rapid application environment Visual Basic of Microsoft. 
Delphi's major market is development of applications for the Windows platform (although they tried to get some Linux market share as well, remember Kylix). As a result they have to fight against the fierce competition of Microsoft's Visual Studio. A battle that inevitably has been lost.
Well, that certainly does not sound good for anyone that wants to make a career of developing Delphi applications!  Delphi has just dropped to 17th position (popularity) in this index after previously being at 14, and it is teetering on dropping out of the "A" category of Status/Relevance as a programming language. [Feb-2017 update, and a shocker at that: currently Delphi stands at a respectable 9th position, just behind VB.Net at 8th, and JavaScript at 7th position! Though, I am still not seeing any matching uptick in job advertisements for Delphi gigs, so I have no idea what is driving this ranking unless it is people like me posting my old Delphi code on blogs like this as OSS software, or if it is the cross-platform apps-development market now.]   Even these latest updates to Delphi (XE2, XE3, XE4) are unable to stop Delphi's slide into obscurity.  Instead, the TIOBE index puts Delphi at .7% usage-popularity as compared to C# at 6%, C++ at 9%, Java at nearly 17%, and C at nearly 19%.   Needless to say, when I search for jobs requiring Delphi expertise, I see these numbers play out in real economic sense -- i.e., there are "no jobs" (essentially) for Delphi developers as compared to C, C++, C# or even Python for that matter.

Time will tell if Embarcadero can dream up some way to increase market share, but I personally have my doubts given the trends I am observing (jobs, etc) and the trends that places like TIOBE are reporting.  In addition, Delphi can be a rather costly development tool/environment compared to all the open-source options out there for working with the leading popular languages.  That is not helping things... especially when Embarcadero thinks that I will be forking out $1000-$3000 year after year (per license) to keep getting "upgrades".  Sorry, I am past the point where I can justify purchasing new versions of the product year after year with little chance of having paying software development gigs that demand Delphi expertise.

I cannot help thinking Embarcadero has simply priced their way out of the market and into further obscurity.  With all the free and open-source software out there (including things like Microsoft's "Express" version of Visual Studio 2012 and so forth), coupled with the fact that I need to also pay extra for all sorts of Delphi 3rd party components (for functionality I can find for free in other languages/platforms), the management at Embarcadero really seems to not understand the macro-movements in the software development market.

IF they did understand, perhaps they'd release a very capable Delphi version that can compare to the Visual Studio "Express" line... but, I can nearly guarantee they will not, and it probably does not matter at this point as all the numbers are pointing to Delphi having secured its own fat: obscurity and an inevitable death.  I'd be nice if I was wrong and Delphi experienced a resurgence, as I really would like to put my nearly 20yrs of Delphi experience to use for paying gigs!).

Wednesday, September 26, 2012

Embarcadero Delphi XE3 New Features of Interest

Embarcadero Delphi XE3 Review of New Features

Although I am leaning toward using Google's Dart language along with HTML5 / CSS for my applications development needs lately, I find it hard to ignore my 17-year history of using Delphi for native executable desktop applications development. The fact is, Delphi has been an extremely important and productive RAD OOP language and IDE for me, and I find myself longing for the equivalent features and productivity (especially a VCL-like controls hierarchy) on the web side of things.

I previously wrote a review of the new features in Embarcadero Delphi XE2 — with much excitement too — as I was thrilled by the prospect of their new FireMonkey UI controls and 64-bit advancements. But a short time later, I wrote a followup article regarding the fact that more than a few Delphi developers were finding Embarcadero Delphi XE2 / FireMonkey full of bugs and incomplete features and suffering from lack of polish — clearly it was rushed out the door in order to make Embarcadero's annual-release-schedule, whether it was deserving of a label beyond "beta" or not.  I personally am very turned off by this experience, as I feel like I am being forced to constantly pay ever-increasing prices for a product that I am forced to continually upgrade in order to keep it "viable" (i.e., pay for what are "bug fixes" and/or feature-completions).

Contrast this XE2 experience to the superb Delphi 7 and Delphi 2006 releases which I could use for many, many years as-released and with only the free included updates/patches, and develop great applications with a very stable IDE and generated-executables.  Of course the main "problem" with those super-stable releases are how they stand to impact company cash-flow if product designers cannot otherwise create compelling features to entice me to upgrade to a newer version of Delphi. But, on the flip side (note to lame management at Embarcadero!), you have only driven me away with ever-increasing prices for unfinished products that I know I will have to upgrade every year (for substantial cost) in order to get a (hopefully) "finished" product and to get bug-fixes which should be part of FREE update-packs that will never address them; and, the more time I spend away from Delphi, the less likely I am to have a future "need" for it!

Furthermore, so many Delphi "features" of recent come from including a bunch of third-party crap that I don't need or want , like:

  • Embarcadero's stripped-down modeling software (whose clear purpose of inclusion is to attempt to generate an "up-sell" opportunity to their full product),
  • InterBase DB — seriously? I have NEVER encountered a company that uses this database in a production setting, let alone for development settings! Up-Sells are not happening guys, and I find it hard to believe this product is even worth developing in an age of great open-source free database options.
  • outdated versions of third-party controls,...
  • utterly useless junk like Intraweb — statistically totally insignificant market-share and again, I have not encountered a client in the past 5 or more years that has used this (let alone even contemplated using this)...
  • and, all the while, features I need are slow to emerge and/or are being stripped from the "Pro" version and pushed up into the "Enterprise" version.

    E.g., where is the support for SQL-Server 2012 in dbExpress controls (does not show in your literature for XE3 yet), should people want that.  Next, given Microsoft's push to go ODBC (vs. ADO) for SQL-Server connectivity, I find it detestable that Delphi's dbExpress ODBC Driver is relegated to an "Enterprise" version even as nearly all other development platforms consider ODBC to be an essential entry-level database-connectivity option.  I can currently use dbGO™ for ADO connectivity for Windows (MDAC 2.8) in the "Pro" version of Delphi, but what am I to use for SQL-Server's next version when MS says "ODBC is the only way"?  Wow, I see being forced to Delphi Enterprise at 2.5-times the price of "Pro" just to keep what I have had for years with "Pro".  Perhaps you can blame this on MS, but seriously: ODBC = "enterprise" only?
That said, let me continue with the new Delphi XE3 features for anyone that wants to risk upgrading only to have to upgrade again to get what they want, and/or be forced to move from the "professional" to "enterprise" version in order to get the database-connectivity they need, etc.


New Features in Delphi XE3

Now that the official Embarcadero Delphi XE3 release is available, the first thing I wondered was: is it "ready" this time? Time will tell, but for now, here are the features in XE3 that are supposedly worth pointing out:

Windows 8 "Metro" Applications


The Delphi RAD (Rapid Application Development) IDE and Component-Set framework now targets Microsoft Windows 8 "Metro" applications.  New Metro Project Templates and Application Styles for Delphi and C++Builder exist (including VCL Metropolis project templates blank, grid, split layout, plus Office 2013 styling), but there are apparently caveats to all this Windows 8 support with regards to WinRT.  Note that Embarcadero® literature regarding what's new in Delphi XE3 states that "Embarcadero® RAD Studio is preparing for full support of the Windows® 8 Metro® user interface".

This conditionalized-wording concerned me, so I went digging, and soon found this very active and lengthy Embarcadero  discussion forums topic regarding this issue where Allen Bauer (Embarcadero Chief Scientist) states that, in response to whether Delphi will be able to "support native Metro development using the unmanaged API", the following:
"Yes. We are very keen on supporting WinRT with native Delphi & C++ code. Right now, the issues surrounding the WinRT space center around the fact that many OS-supplied APIs which are required by anyone implementing their own language RTL are actually off-limits unless you're the VC++ RTL DLL. You know, little things like RtlUnwind for exception processing and VirtualAlloc (et. al.) for memory management... Any calls to those APIs from your application will automatically disqualify your application from being an "official" WinRT application capable of delivering through the MS app store. 
Right now the VC++ RTL DLL is given special dispensation since that is the library that makes the calls to those forbidden APIs and not directly from the user's app. We're currently rattling some cages at MS to find out how or if they're going to allow third-party tools to target WinRT. Until we can get past that, targeting WinRT isn't actually possible from a deliverable product sense. We are able to build WinRT applications with Delphi that work with a developer certificate, however they all fail the application qualification checks because of the aforementioned (an other) APIs. 
Like the APIs I mentioned above, there are lots of changes with WinRT that make targeting it a little more tricky. For instance, you cannot merely open any file, access the registry, and even use the loopback (127.0.0.1) adaptor. LoadLibrary cannot be used to load any arbitrary DLL; you must call LoadPackageLibrary and only on a DLL that is present in the digitally signed appx package. WinRT is a seriously locked down sandbox or "walled-garden" with some extremely high walls. 
This is a little known or understood "feature" of Windows 8. I see no press that even talks about this at all. IOW, it's Windows 8's "dirty little secret." "

So, I am just not totally sure what to make of all this. I understand where Embarcadero is coming from here and why WinRT applications are a challenge due to Microsoft implementation specifics, but how can one of the more substantial features of XE3 (Windows 8 support) be subject to such conditions yet? All I got out of this was: please wait for Delphi XE4 features that really make WinRT possible. Time will tell, but this is yet again another point of potential concern with regards to a paid upgrade for a feature I may not truly be able to fully exploit.

FireMonkey Changes for Delphi XE3 (aka, "FireMonkey2")


Given the incomplete state of FireMonkey in Delphi XE2, I was looking forward to seeing what the second full incarnation of the FireMonkey controls and technology in XE3 would yield — I essentially expected them to now be worthy of a "version 1.0" designation vs. what I considered an extended technology-preview in what came with the XE2-provided FireMonkey set.  Of course, Embarcadero calls them "version 2.0" for maximum marketing effect.

The new FireMonkey2 XE3 features include:
  • Bindings: TDatasource is no longer required for LiveBindings as you can now simply link a BindSource directly to a dataset like TClientDataset.
  • Actions: FireMonkey now supports actions and action lists, features that were previously supported only in VCL.
  • Anchors: Anchored controls "stick to" the sides of containers, and also stretch, if so specified. I really thought this was a substantial missing feature in XE2, especially seeing that I implemented anchor-support in my own SVG-UI-Widgets quite easily, but what do I know.
  • Audio-video: FireMonkey offers support for capturing media data (audio and video).
  • Layout management: new FireMonkey layouts (Flow layout, Grid layout) simplify the arrangement of controls in a FireMonkey application. Text Layout features were listed, but I have yet to see details of what that involves.
  • FireMonkey 3D enhancements: not that I give a darn, since I am one of the few software developers that care about business applications versus graphical "fluff". But, I guess it is neat to know that a new materials system and shader compiler exist to make better use of modern hardware and graphics frameworks (like DX9, DX10).
  • Gestures: FireMonkey now supports the gestures that are also supported by the VCL.  This is nifty and all, but the fact is, I have not encountered any clients that want a gesture-enabled Windows application: nobody has widely-deployed touch-enabled desktops, for starters.
  • New styling abilities, including Metro-look styling. And, these same FireMonkey2 components are supposed to be Mac OS Retina display optimized.
  • FireMonkey Sensor Components: Non-visual components for using device sensors (Location / Motion) have been added, though Motion sensor is Windows-only for now. Virtual keyboard is now supported too.

Other Delphi XE3 Features of Interest


One related (to FireMonkey mainly) feature of significance is the new Visual LiveBindings Designer and LiveBindings Wizard — bringing essentially a drag-n-drop approach to designing bindings. You can now create data sources (TPrototypeBindSource or TBindSourceDBX) from within the LiveBindings Wizard. Using a TPrototypeBindSource, now you can bind multiple properties of different objects to the same data. A set of Quick Binding Components components have been introduced in order to make LiveBindings links seamless — these produce auto-generated expressions for easy linking objects. LiveBindings can now be created from one control to multiple controls, seamlessly via the LiveBindings Designer.

And, by the way, TGrid is now supported by Live Bindings (given the widespread use of this control, that surely was a "need" for this technology to be useful). There is some new ability to group various Live Bindings together to form a "layer", which seems mostly about making complex groups of bindings easier to work with (layer data is saved in .vlb files).

There really was not much else in XE3 that got my attention.  There were some changes regarding the Mac OS X builds and such, but I am not experienced at all with deploying Delphi applications to OSX, so someone else will be able to review those features. So many other listed "new features" were simply included "junk" (as mentioned elsewhere in this review) or things I'd expect of any new release: like, updates to a list of supported databases, etc.

Conclusion

I would really like to believe that Delphi XE3 / FireMonkey is making strides toward relevance that could result in a resurgence in Delphi software development, but in an age of mass migration to "web based applications" and many, many alternatives (and much more popular ones at that, not to mention many lower-cost or free / OSS alternatives), I cannot help but think that Delphi will forever remain a niche product relegated to the few. It has potential to be so much more, but until Embarcadero gets over its hangup on including totally irrelevant products (like InterBase, IntraWeb, etc) and calling them "features" while simultaneously crippling the "Professional" version (i.e., the only "affordable" version) this product is destined to further obsolescence and obscurity.  Sad. It really had such incredible potential.

Continue to read this Software Development and Technology Blog for computer programming articles (including useful free / OSS source-code and algorithms), software development insights, and technology Techniques, How-To's, Fixes, Reviews, and News — focused on Dart Language, SQL Server, Delphi, Nvidia CUDA, VMware, TypeScript, SVG, other technology tips and how-to's, plus my varied political and economic opinions.