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.

Tuesday, July 15, 2014

How to Include an HTML File in another HTML File Without a Server or Code

Include HTML Files In HTML by Reference Without Any Server Technology

I have meant to write a blog about this for quite some time, and the newest Chrome 36 Beta release notes reminded me to do so now that yet another way of including HTML files within HTML files (without any particular server requirement and without JavaScript) exists —  i.e., you do not need ASPX and you do not need PHP or other server-side technology, and you do not need JavaScript.

The first method I will discuss is one I have used since as far back as Chrome 24, Firefox 17, and even Internet Explorer 9 (IE9) — "seamless IFrames". The second technique is the one that Chrome 36 Beta has implemented — "HTML Imports". Until all browser vendors support the new HTML imports, my "old" way will still work fine.

"How to" Include HTML Files — using Seamless IFrames

This technique is probably best described by way of example code. This way to implement "include" files in HTML5 without ANY "server" works to include any file referenced by "file:\\..." addresses or relative URL addresses.

In the “container” document (i.e., the “outer” document into which you would like to import / “include” content from another HTML file):

<div class="content">
   <iframe id="top-nav" seamless="seamless" src="include.top.nav.html" ></iframe>
</div>

Then, inside that external / referenced HTML file (in this example, “include.top.nav.html”), we simply include the HTML that we want to appear inside the iframe — in this case a simple reusable section of HTML with my navigation HTML code in it:
<div id="topnav">
   <a href="some-page-to-navigate-to.html" target="_top">link to home page</a>
</div>

Note the use of “_top” to indicate that our navigation is going to affect the outermost document; if we omit this, the contents of the iframe will be what changes during navigation instead of the contents of the outer container document.

Let us also assume we perhaps we want to style this iframe, so in our referenced CSS file we do so  — in this case I simply want to make sure it sizes to 100% of the container div's width and height:

     /*Set the seamless iframe properties; size as needed to fit embedded content*/
     #top-nav {
          width: 100%;
          height: 100px;
     }


A more complete view of the outer HTML document that includes the reusable HTML by way of the seamless iframe looks something like this:

<!DOCTYPE html>
<html>
<head>
    <title>DEFAULT DOCUMENT TITLE</title>
    <link rel="stylesheet" href="my_styles.css">
    <meta charset=utf-8>
</head>
<body>
    <div class="content">
        <iframe id="top-nav" seamless="seamless" src="include.top.nav.html" ></iframe>
        <h1 class="document-name">DOCUMENT NAME HERE</h1>
        <p>Paragraph...</p>
    </div>
</body>
</html>


Hopefully this was somewhat easy to follow.  Try it out.  This technique came in super-handy for a local HTML-Based WIKI I created that did not require any web-server to run.  I can access the WIKI pages from Chrome, Firefox, and IE and the included HTML file(s) work just fine with no web server and no dynamic language or dynamic web-page technology.


"How to" Include HTML Files — using HTML Imports (rel="import" directive)

This is an alternative serverless "include HTML file" method that has just recently come available in browsers like Chrome 36 (note: it has existed since Chrome 31, but you had to enable the experimental feature; now it is "on" by default).   If you took a look at the Chromium Blog release notes link (above), you will see a quick overview of this new technique, and I have pasted their description and example here for quick reference:

HTML Imports
HTML Imports, part of the Web Components standards umbrella, offer a way to include HTML documents in other HTML documents using <link rel="import">:
<head>
  <link rel="import" href="/path/to/imports/stuff.html">
</head>
An HTML Import can contain CSS, JavaScript, HTML, or anything else an .html file can include. This means they provide a convention for bundling related HTML/CSS/JS (even other HTML Imports) into a single package, making them a fantastic tool for delivering Web Components to users.

The first technique I showed (seamless iframes) can accomplish the same thing to an extent, but this new rel="import" technique is certainly the preferred way to go in the long term.  I look forward to this being widely adopted (hopefully sooner rather than later), but it seems Chrome is the only game in town today.  There are much "bigger picture" reasons why the rel="import" implementation is important as it is quite handy for web components packaging (something I plan to use in my SVG Dart Widgets, eventually).  Search the web for more examples and have fun with either, or both, of these ways to import HTML file contents into another HTML file without the need for server-side technologies.

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.

Monday, October 14, 2013

SQL Moving Average Query Techniques and Performance Comparison

SQL-Server Solutions to Moving-Average Query Requirements


Moving-Averages Overview

This article references future blog posts which present the source-code for several additional SQL-Server queries, functions, and stored procedures — these used to be hosted on my external Free SQL code library, which was migrated here in 2016/17. Among this set of SQL queries are a few pieces of code that address the topic of moving averages and approaches to calculating moving average values using only SQL.

Moving averages — and/or rolling averages, moving means, sliding averages, running averages, temporal averages, etc.  — are a common data requirement in these problem domains:
  • financial instrument pricing, and especially the analysis of financial time-series values and information: e.g., stock prices, commodity prices, interest-rates, etc. where it is very common to look at indicators like a 30-day or 90-day moving-average-price
  • operational indicators at a business: production and sales volume trends, error/defect rates trends, and so forth
  • economic indicators like unemployment and jobless claims, new home construction rates
  • environmental indicators like seasonal temperature trends, rainfall, snowfall, and so forth
  • and countless other applications where "smoothing" or "trending" or "momentum" is to be included in some analysis or reporting or charting.
Whether your moving-average needs are best served by SQL-only algorithms, as opposed to perhaps client-side number-crunching and/or non-SQL Server-side code (like .NET CLR procedures), is for you to decide, but with the techniques I have demonstrated, at least you can consider a Transact-SQL-only solution if you choose (and one that is set-based as opposed to relying on cursors).

SQL-only Solutions Compared

See my Set-based Moving-Averages SQL Example 1 page, as I will reference the techniques on that page in my discussion here.

That page and example includes execution-speed / performance comparisons between techniques also (run against the AdventureWorks sample database).  That page demonstrates three different approaches to solving (using only SQL-Server T-SQL) the moving average challenge using:
  1. my own custom approach to calculating a rolling average that takes advantage of some interesting features of Transact-SQL that, although may not work "forever" with every future release of SQL-Server, have worked fine from SQL-Server 2005 through SQL-Server 2008 and 2008r2 and SQL-Server 2012.

    The technique relies on CASE statements and a (so far, so good) predictable order-of-processing the values-assignments within the UPDATE statement where I use local-variables to maintain a "queue" of values as well as break-level-reset tracking information.  This code is quite speedy and flexible and easily adapted to related problem domains.

  2. an example of solving the same problem using a CTE (Common Table Expression) coupled with APPLY (CROSS APPLY / OUTER APPLY that are Microsoft SQL-Server specific extensions to ANSI SQL).  This approach is SLOW!

  3. A newer ANSI-SQL compatible solution that is available to you if you have SQL-Server 2012 or newer that implements the windowing functions using OVER and PARTITION BY.  This method is the simplest solution, is the fastest running, but requires SQL2012+ and also lacks the ability to easily change the "window size" (i.e., number of data-points the moving-average is based upon) without dynamic SQL.

Performance Results / Limitations Examined 

I have been very pleased with the performance of my custom solution to this problem and have used this approach (#1 above) for years now.  Sure, I could simplify my code using SQL-Server 2012's new OVER / PARTITION BY abilities while also gaining a performance boost.  But, until SQL-Server makes the PARTITION window-size (in the "ROWS BETWEEN integer_value_here PRECEDING AND CURRENT ROW" portion of the command) able to utilize a variable instead of a hard-coded integer value, this newest SQL method has limited value in my opinion.

My custom approach comes amazingly close to the native speed of the newer SQL-2012 windowing features, while also having the advantage of being able to handle a variable-window-size (which is perfect for requirements where you want to pass a moving-average-window-size value as a parameter to the procedure).

Notice that I hardly give the APPLY / CTE "solution" much thought.  I presented it as an "option" for a set-based solution to this problem, but its performance is awful and the APPLY is Microsoft-specific as well.  So, I might as well use my own custom approach that may rely on the specifics of MS T-SQL processing-order while gaining the advantage of speed and a rather simple-to-understand approach (as compared to the CTE/APPLY which I find not-readable or easily understandable by comparison).

Conclusion

There are certainly multiple ways to solve the rolling-average / moving-average problem using only SQL, and the choice is yours as to which approach best fits with your needs and situation.  I'd say that if you have a static-window-size and are using SQL-Server 2012 or newer, then the obvious choice is the newest OVER / PARTITION approach.  But, I personally have not run into rolling-average requirements that did not include a variable "window" (e.g., allowing a user to choose how many data-points, periods, etc to include in the average, as specified in a run-time query parameter).

Check out the other SQL queries, functions, and stored procedures I have in provided here on my blog for other related problems and solutions like running subtotals and much more.  I have made it all available as open-source-software (OSS) under a very permissive MIT License.  If you want to learn how to compute moving averages using only SQL, and solve other interesting problems within Microsoft Transact-SQL, this resource should provide some very useful information and ideas. Enjoy.


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.

Tuesday, September 17, 2013

Guaranteed 3.6% Savings Yield - Simple, Safe, Long-Term with EE Bonds

Guaranteed 3.6% Compounded Interest? Where!?
Look to EE Bonds

[Note that as of January 1, 2012 banks and other financial institutions terminated their sales of bonds, in case you were only familiar with the old way of buying them at a Bank.  Go to Treasury Direct instead.]

Seriously, consider EE Savings Bonds!

Yes, savings bonds... those "old fashioned" instruments for putting money away for the future. Why is it you never hear "investment advisers" or "financial advisers" talking about how USA Government Savings Bonds are still a damn-good option for long-term saving, especially for people that are not otherwise financially savvy or blessed with "extra" time to manage their investments? Simply put: there is no money in it for the advisers!

I argue that savings bonds should make up a portion of almost every investor's financial portfolio.  You should never have to worry about them... just put your money in and wait.  For anyone that wants to argue about hypothetical situations like "what if the US Government goes under",... well, if it does, do you really think ANY investment is going to be worth squat? (and that includes gold; chaos will make that useless too... you would be better off having stockpiles of food and oil)

So, read on, and give EEs some consideration...

3.6% Annual Interest Rate? That sure beats the bank!

Not only does the 3.6% EE yield potential beat anything (of recent) you could get in the bank — and that includes long-term products like 5-year CDs — it nearly matches the current 30-year US Treasury Bills rate (3.86% as quoted currently on Bloomberg US Government Bonds rates).  So, what is the catch?

Patience is required to obtain this yield!

If you visit the Treasury Direct website page on EE Bond Rates, you may first be scared by the currently posted quoted rate of 0.2% (as stated in the paragraph titled "What interest will I get if I buy an EE Bond now?").  But, have no fear and keep reading... you can get the 3.6% rate I am referring to if you are patient and buy these EE-bonds with a 20-year investment horizon in mind.

Now, look further down the page for the section / paragraphs with a heading of "When will my paper bond be worth its full value?".  This is where the IMPORTANT INFORMATION is contained that leads to the 3.6% minimum guaranteed annual compounded interest rate if you hold the bonds for 20 years.  Quoted from that section:
"Electronic bonds are sold at face value (not half of face value). They start to earn interest right away on the full face value. Treasury guarantees that for an electronic EE Bond with a June 2003 or later issue date, after 20 years, the redemption (cash-in) value will be at least twice the purchase price of the bond. If the redemption (cash-in) value is not at least twice the purchase price of the electronic bond as a result of applying the fixed rate of interest for those 20 years, Treasury will make a one-time adjustment at the 20 year anniversary of the bond's issue date to make up the difference."
So, if you HOLD the EE Bonds for full 20yrs, you can forget that "0.2%" stated current rate, as you are guaranteed a minimum of 3.6%-annual-compounded-interest (using rule of 72), since your money has been guaranteed to double in that 20yrs.

Briefly, the "rule of 72" helps us compute the approximate annual interest-rate over a period of time by dividing the interest-rate into 72 in order to obtain the term (length in years) in which that interest rate will cause an investment to double.  So, in this case: 72 / 3.6 (rate) = 20 (year term).  I.e., basically 3.6% annual interest has been guaranteed in one of the most historically safe investment options ever, so long as you can think long-term!

You think you can do better elsewhere?

Sure, you may obtain higher (historical) yields elsewhere — perhaps in the stock markets, commodities, or corporate bonds.  But, you had best know what you are doing and have 1) the time to actively manage such investments, and/or 2) the nerve to ride out massive downturns like what we saw occur during the Financial Crisis that really shredded most investments in 2008 (to the point it took years to get back to pre-crash levels).

And, if you consider putting money in "the bank" as a savings strategy, consider the fact that for over 5 years now, interest rates in the bank have been terrible!  And, think about it,... 5 years is a full quarter of the duration you would have have to leave your money in the EE Bonds (toward that 20-year term to get the doubling of EE funds).  In the current preceding 5 years, banks have paid essentially ZERO interest while you could have been getting 3.6% in your EEs.

Bank rates may ultimately rise, but I would not count on it changing quickly or holding higher rates for any length of time.  And, keep in mind: interest on savings accounts and CDs is taxed every year whereas savings-bond interest compounds pre-tax (i.e., you are only taxed on the interest when you redeem the bonds).  This can make a substantial difference in compounded returns.

The bottom line is this: If you think you can maintain a higher-average-annual-return elsewhere, go for it. I simply look at EE's as just a very simple "no brainer" hands-off way to save some money for retirement in about as safe of way as possible.  And, you do not need to hold paper bonds anymore: use the TreasuryDirect electronic bond-buying system (in fact, paper bonds have nearly gone extinct and I have no idea why anyone would want paper to have to place in a safe deposit box or whatever).  Signing up at TreasuryDirect is super-simple and can be done in just a few minutes.

There is perhaps the issue of what happens if you die within the 20-year term (I'd rather not think about that), but even that is covered by way of beneficiary-designations and survivorship terms.  A survivor beneficiary does not have to cash in the bond right away, so they can continue to hold the bond until that 20-year term is met if they choose (and, income taxes on the interest remain deferred until redemption just like they would have been for the original holder).

Give those EE bonds a look.  You never know, it may turn out to be a very wise long-term investment to hold.  FYI: also note that the government currently limits annual savings bonds purchases to $10,000 per individual, so it is not like you are going to be able to take the proceeds from selling a house and put them into savings bonds all at once. Feel free to consult with your "adviser" or accountant on any of this, as I am NOT acting in either capacity here... I am just putting forth an opinion for you to consider.

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.