<CharlieDigital /> Programming, Politics, and uhh…pineapples

21Feb/12Off

Windows Azure “Introductory Special” — WTF?

Posted by Charles Chen

WTF Microsoft? Seriously?

This is what you call an "introductory special"?

 

This is fine and all, except in the months of January and February -- in fact, since I've signed up -- I've never used the caching service.  Heck, I've barely used Azure!  How can I possibly be billed for $46?  Yeah, I'm pretty much cancelling my sub after this; can't waste my time and energy every month double checking to see if I'm being ripped-off by Microsoft.  And on top of all that, I have to wait 4 hours for a support callback...

Now here is my theory: I am being billed $4/day just for having 128MB of cache allocated, whether I use it or not.  But this is beyond fucking stupid. It hurts adoption because it drives developers -- like me -- away from even signing up in the first place if I have to police by billing, even when I'm not using the service.  And seriously $46/mo. for having 128MB of web accessible memory available?  I get more memory allocated from my $7/mo. hosted shared server.  WTF?

I can accept the cost if there was some way to opt out or if there was some notice that I would be billed for being allocated the cache space or if there was some à la carte way to turn it off -- my mistake for not noticing in those cases.   But I was not given an option to opt out of cache, I was not notified that I would be billed regardless of actual usage, and as far as I can tell, there is no way to turn off cache.

This is some serious bullshit.

Filed under: Rants No Comments
1Nov/11Off

Airline Boarding and How to Make It Suck Less

Posted by Charles Chen

Caught an unexpected segment in the news on airline boarding (ending is great):

I've mostly had (terrible) experiences with boarding Continental flights and I've often thought why the process is so screwed up.  I've come up with the following conclusions myself:

  1. Problem: Last time I flew out of John Wayne International, literally 3/4 of the flight was "Elite" status.  So when they did the pre-boarding, it was a huge throng of people boarding the plane at once, which negated the whole point of boarding the plane from the back first. There's something broken about the system here because it creates a weird paradox.  Being able to board the plane faster is a "benefit" of Elite status, but by using this system, it extends the overall boarding time, thereby actually making those with Elite status spend an overall longer period of time sitting on the plane.  Solution: Elite status is only used in consideration for upgrades and seat selection at check-in, not boarding order.
  2. Problem: Gate reps don't actually check the size of carry-ons.  In some cases, preemptively removing larger carry-ons and forcing gate-checks would dramatically reduce overall boarding time since the large bag causes an additive delay effect.  That is that it not only slows down the individual with the large bag, but also affects every passenger that boards after that passenger because a large bag taking up too much space forces "bin hunting".  Solution: Actually enforce the existing rules?  Seems too simple to be true.
  3. Problem: No one keeps their outerwear until the boarding process is over.  Nothing more frustrating than people stuffing their outerwear in the overhead before everyone has boarded.  This takes up valuable overhead bin space and, again, delays the boarding process for everyone that comes afterwards by forcing bin hunting. Solution: Add coat hooks on the seats and people will more likely just hook their outerwear on the back of the seat for easy access.
  4. Problem: Some people just don't give a damn what the gate rep calls -- they're just going to get onto the plane anyways. Solution: See below.
  5. Problem: Because of a combination of the above, it often causes folks to end up back-tracking and bin-hunting.  Sometimes, it also causes folks to preemptively place their carry-ons in forward rows, thinking that there is no space in the back rows, which only further exacerbates the situation. Solution: See below

The whole process is generally full of chaos, completely inefficient, and seems dated -- as if no one has stopped to think about these issues and how to solve them for decades.  So it's interesting to see this guy -- Dr. Steffen -- propose something new.  But it got me thinking that this guy's method still has an issue: it's not realistic for gate reps to call out this seating scheme (one row, one aisle at a time).  Yet this is what it demands as the process breaks down if you have passengers in row n-2 blocking passengers in row n.  Furthermore, the Steffen method makes an assumption about the nature of people: that they will obey order and think in the best interest of everybody.  When the gate rep calls the aisles for rows n, n-2, n-4, n-6, all of those folks are going to rush the counter at once in a single mass.

So I think an extension or more realistic approach to this method is necessary to get it to work: a new passenger queue system at the gate.  It should be -- like a plane -- one center aisle with several color-coded lines on each side of the aisle and just have people queue up in "bins" first.  It shouldn't match the rows in count, but should be at a 1:3 ratio per bin.  In essence, it's a modified block boarding pattern, but we break it down within the block so that, for example, window aisle passengers in the block are in bin "Purple", middle seat passengers are in bin "Blue", and aisle seat passengers are in bin "Green".

The gate rep would call bin "Purple 1" to board the window seat passengers in the rear of the plane.  Then call "Purple 2" to queue the passengers in the window seat in the middle of the plane, then call "Purple 3" to queue the passengers in the window seat near the front of the plane.  However, the real efficiency is in having the folks get into the bins first, before they are queued up.  The current Continental system results in 60 people all standing around, blocking the entrance of the queue when all that's needed is a bin system so they know where to line up.

This system acknowledges that the ideal boarding pattern cannot be achieved in real life and thus only attempts to gain efficiency by segmenting the users by zone in a pre-boarding line first.  Now everyone isn't standing around in one big mass, blocking the boarding line and rushing the line as soon as their block is called.  It's a hybrid of block and WILMA (which is what the Steffen method is) but not as granular as the Steffen method and adds an extra layer of organization at the gate to account for real-world considerations.

13Sep/11Off

Lesson Learned on SharePoint Service Applications

Posted by Charles Chen

If you're setting out on writing your own SharePoint service applications, there is an important lesson that you should keep in mind (instead of learning it the hard way): ensure that all of your proxy, application proxy, service, service application, and service instance classes have public parameterless (default) constructors.

Otherwise, you'll have a heck of a time starting, instantiating, and uninstalling services with lots of MissingMethodExceptions and "{class} cannot be deserialized because it does not have a public default constructor" error messages.

Oddly enough, one thing I've learned from this is that the STSADM commands are often more "powerful" than the equivalent Powershell commands.  For example, Remove-SPSolution, even with the -force parameter, still failed with the aforementioned exceptions.  On the other hand, stsadm -o deletesolution {name} -override seemed to work fine.  Puzzling, for the moment, but it got the job done.  Similarly, stopping a service application that's AWOL (stuck on the processing screen) can be accomplished with stsadm -o provisionservice. Deleting it can be done using stsadm -o deleteconfigurationobject (though this one does seem to have side effects...).

Seems that Powershell is still a second class citizen when it comes to basic SharePoint command-line management.

But in any case, if you set out building your own service applications (<rant>and damn it Microsoft, can't you put some better examples out there?!  Even the few that are out there are convoluted, missing key details, hard to follow...</rant>), be sure to include public, default, parameterless constructors.

Filed under: .Net, Rants, SharePoint No Comments
7Sep/11Off

Why Teachers Are _Really_ Leaving the Profession

Posted by Charles Chen

I caught a portion of an interview last night on NPR as I was in my truck, leaving Lowes.

I sat there for a moment, dumbfounded by what I was hearing and entirely outraged by the bullshit that Republican Wisconsin State Senator Glenn Grothman was spouting.

LYDEN: Last week, the Associated Press reported that nearly 5,000 Wisconsin teachers retired since the beginning of the year and that's more than half of the number from 2010. It's not a great way to start the year. Could the Republicans who passed this bill have done a better job of talking about it?

GROTHMAN: Well, I'm trying to talk about it right now. I will point out that at least one of the reasons why more teachers are retiring - we have heard anecdotal evidence that some of the worst teachers not waiting around for the inevitable and finally deciding it's time to retire. And I think some of those teachers who shouldn't have been there all along realized that without collective bargaining their time is up.

I was kind of riled up by this given that my wife is a former teacher (now an Learning Disabilities Teacher Consultant, but still works in the school system).  I've seen the dedication that she put into her work, I've seen the long hours grading papers and dealing with parents, I've seen results of her labor when parents stop her in stores years later and thank her for transforming her kids, I've seen parents specifically request to be placed into her class.

For all of this, she collects a relatively meager paycheck, but it's her passion and it's rewarding for her to be involved in the education of children -- in one capacity or another.  The low salary is made up for, somewhat, by the benefits that she receives.  Today, she came home with news about our insurance premiums: we're now required to pay about $280/mo. more for our health insurance plan because of changes enacted by Chris Christie and possibly the entire sum in a few years time.  To be clear, the sum of those premiums for a family of 3 is pretty much more than half of her monthly income -- enough to pay the mortgage on a small house.

I don't want to get into a long discussion on whether tax payers should or should not pay for the benefits of public employees, but at the end of the day, it is my belief that public employees are by-and-large hard working, middle class folk who provide valuable services to the taxpayers that are often hard to put a price tag on.  A good teacher can set a child on a path for success and help produce members of our society that contribute to our prosperity instead of being a drain on it.

But how can we possibly entice highly qualified candidates to these important jobs when as a society, we decide to strip these individuals of the benefits which largely make up for the otherwise less then illustrious labor of love?  Even those with a passion for teaching and helping transform kids will have to do a double take now and consider alternative career paths as we the movement against labor and the public sector continues to erode the middle class in America.

So I say to Glenn Grothman: the reason that teachers are retiring from the profession or quitting out-right is because society has created an environment where it's become untenable to put in the long hours and dedication required to be a good teacher for the already low salaries.  As the benefits that used to make up for the low wages continue to be eroded, the financial calculus will surely force more teachers -- especially the smartest and most qualified -- to reconsider their career choices for more profitable alternatives.

Post script: I think this is another case of Republicans driving the public sector to fail (by creating a dis-incentive for the most qualified, most skilled applicants) so that they can later point to the failure of the public sector!  Well, no shit, Holmes!  If you set the system up for failure, of course it'll fail.  Instead of the worst teachers leaving the profession, it's the best teachers that will leave the profession for better paying opportunities because these individuals are the ones that have the highest qualifications, the highest levels of professional ethics, and the highest ability to translate their skills outside of the classroom.

Filed under: Rants No Comments
6Sep/11Off

A UX Pattern That Needs to DIAF

Posted by Charles Chen

Why, Home Depot, why?

There are more than a few shopping sites out there with these "fancy" picture viewers like Home Depot and Newegg.com.

This has to be one of the worst UX patterns out there and every site that uses it never fails to piss me off with aggravation just trying to get an idea of what a product looks like.

You see, these web designers, programmers, and architects seem to not realize that most browsers nowadays (and even a few years back at this point) have supported automatic resizing of images to fit the browser window with full-size "zoom" capabilities and that the built-in browser scrollbar is a perfectly acceptable method of navigating an image.

Better, but still a poor UX

Even worse in the case of the Home Depot site, the cursor shape over the image leads one to believe that the image can be clicked and dragged.  Instead, you can only drag and move the little red box on the right to pan the picture.

Newegg actually does the same thing, but it's a bit better because at the least, it doesn't popup in a new window in Firefox and to some degree, I can understand why they do it because of the gallery navigation and the 360-degree view (there's some "added value"), but I would appreciate the option of just being able to see the full image without it being cropped off within some silly window.

This pop-out, image viewer UX pattern is definitely one that needs to DIAF.

Filed under: Rants No Comments
23Aug/11Off

Damn It, Microsoft (SharePoint)

Posted by Charles Chen

Came across an interesting quirk today with regards to AddFieldAsXml in the SharePoint API.

It turns out that SharePoint doesn't really give a damn what you want to call your field when it adds it to the list; it's going to damn well do whatever it damn well pleases!

You see, in the MSDN documentation, it implies that you can specify the display name and the internal name (just look at that sample code).

However this isn't the case and, as Bill Simser points out, this has been an issue going back to 2005.

Thankfully, as commenter Morten Bundgaard Pedersen points out, you can use the SPAddFieldOptions.AddFieldInternalNameHint option to force SharePoint to use the name value that you specify in the XML.

Seems kind of silly to me given that this is the most likely use case and should be enabled by default given that the intent -- in specifying the Name and StaticName fields would be to, you know, use them when creating the field.

Damn it, Microsoft.

11Aug/11Off

Why I Can’t Be Bothered To Learn Silverlight

Posted by Charles Chen

Aside from hating Flash and Flash-like applications in general, as I've stated before, I view Silverlight as a dead/dying technology at the scope of web and business applications.

It may retain niche applications in gaming and the Xbox platform, but I think that's it.

Of course, Silverlight diehards will point their fingers hard at Windows Phone, but I say it really doesn't matter.  The trends seem to show that WP7 is dead in the water:

However, perhaps the most surprising finding of last quarter was that Microsoft's Windows Phone 7 platform was beaten out by Samsung's Bada operating system. According to Gartner, over 2 million Bada-based smartphones were sold last quarter, earning the platform 1.9 percent market share. Windows Phone 7 followed with 1.7 million units sold, helping it to earn 1.6 percent of the market.

The last 12 months have been difficult for Microsoft. According to Gartner, the company's market share just one year ago was 4.9 percent on over 3 million unit sales.

At an anemic 1.6% market share for 2Q11, one has to wonder -- from the perspective of a developer: why waste my time on a platform that has such a trivial market of users?  Silverlight is already dying in the wider web.  I can't remember the last time I saw a Silverlight enabled web page that wasn't a Microsoft property.   But with this news of WP7s declining market share, one has to wonder when the diehards, Silverlight defenders, and (the absolute worst!) the Silverlight evangelists will just give it a rest and stop trying to tell me how awesome it is and how every business wants Silverlight apps and all that nonsense.

With the news that Windows 8 will support HTML5+Javascript apps and a tablet- and touch-friendly interface, one has to wonder how much longer Silverlight will have applicability in the mobile space.  Could Microsoft scrape the current, Silverlight-driven Windows Phone platform for one based on HTML5 as a derivative of their Windows 8 platform?

One thing is for certain, the market has spoken: Silverlight sucks!  Now go away, please (and take Flash with you!).

Filed under: Rants 6 Comments
5Jul/11Off

When is InfoPath Ever the Answer?

Posted by Charles Chen

Since I've started working with SharePoint back in beta 2 of 2007, I've wondered what the infatuation with InfoPath is.

Everyone from enterprise architects and business users seems to be very intrigued by it.

As a more technical guy who's had to dig into it, I find it a puzzling beast and really don't understand why folks even give it a second whiff.

To understand why, let's take a step back and examine the landscape of forms technologies which are available in the typical enterprise environment and how they fit into SharePoint.

Web Forms

  • Pros
    • Extremely flexible and powerful; a developer can create any form imaginable.
    • People are familiar with web forms because they use them: Every.  Single. Day.  When they log on to their gmail, when they buy something from Amazon, when they sign up for Facebook, when they log into The New York Times website -- people use web forms every day.
    • Deploys fairly easily into a SharePoint environment using .wsps and can be permissioned like other SharePoint artifacts.
    • Easily understood by developers and easy to hire developers or contractors to manage; web forms developers are a dime a dozen.
    • Easy to integrate additional data into the forms since it's easy to call out to web services, look up files in a file system, perform searches across SharePoint, etc. to incorporate additional data and intelligence into your forms.
  • Cons
    • Requires a developer to create and update the form.
    • Requires custom programming.
    • Not available on the desktop or offline.
    • Doesn't work well for forms that need to also support print versions since it's nearly impossible to create a printed layout that will 100% match the on screen layout.

Word Document Forms

  • Pros
    • Fairly flexible with a programming model that can be easily accessed by power users via record macro or custom written macros.  Can build fairly complex interactions.
    • Deploys easily into a SharePoint environment by simply uploading a document template to a list and associating it as the default template.
    • Quick Parts map fields directly onto content type fields on the list - save the document back to SharePoint, and the fields are updated in SharePoint.  Update fields in SharePoint and they are pushed down to the Word document.
    • Business users can create these easily.  In fact, if you asked someone in HR -- for example -- to create a form, more likely than not, they will create a Word or Excel based form.
    • Form can be completed offline and saved back to SharePoint.
    • Printed form is pretty much identical to electronic form.
    • Businesses already have large inventories of Word forms.
  • Cons
    • Macro programming isn't accessible to most business users.
    • Macros may present a security risk.
    • Not as easy to perform complex tasks (for example, multiple web service calls) as it is in web forms.
    • No direct integration with the server environment and the SharePoint content store - may still need event receivers and what not to accomplish certain tasks.
    • Requires Word runtime on the desktop.

PDF Forms

  • Pros
    • Form is "locked down" once deployed.
    • Form is easy to build using Adobe Acrobat.
    • Printed form is identical to electronic form; create one form and use it everywhere.  This is especially useful in some cases in some industries like life sciences.
    • Everyone has Acrobat on their desktops.
    • Business users already have the skills to work with Adobe PDF forms and PDF forms can be easily created from Word forms.
    • Businesses already have large inventories of PDF forms.
  • Cons
    • Requires paid versions of Acrobat to create forms, but your business users probably already have these.
    • Requires some custom programming to expose the form fields to SharePoint (but easy to program and only needs to be done once); not supported out of the box.
    • Dynamic forms are difficult to create, requiring developers to write embedded Javascript or logic to build the form dynamically on the server before serving it.

InfoPath Forms

  • Pros
    • Microsoft really wants you to use it and thus they've rigged it into various points in SharePoint, Office, and SharePoint workflows (but you can do these with web forms, too).
    • Some forms can be used in the web or on the desktop.
    • Easy to build basic forms (but not as easy as it is to use Quick Parts in Word).
  • Cons
    • Requires license to InfoPath to create forms and your business users probably don't have these.
    • If you ask a business user to create a form, the user will either: 1) create it in Word, 2) create it in Excel, 3) create it in PDF, 4) ask IT to create it.  No business user will instinctively think "Ah, I'll create an InfoPath form".  It's not a technology easily leveraged by anyone but someone technical.  The idea that power users can create and own their forms is a myth; no business user wants to spend their week working on a form when they have hamsters in IT to do that for them.
    • With that said, it's going to be a LOT easier to find developers who are strong in web forms (and they'll probably be cheaper) than it is to find developers who are strong in InfoPath (and they'll probably require higher rates).
    • While some forms can be used via Forms Server or on the desktop, the truth of the matter is that Forms Server enabled forms are limited to a subset of the desktop forms' functionality.
    • InfoPath forms are difficult to work with programmatically compared to writing Word macros or ASP.NET web forms.
    • Anything beyond basic interactions will require programming anyways, so why not pick the technology that's easier to program for?
    • Complex form fields (for example, repeating rows) don't map to SharePoint fields and cannot be surfaced in SharePoint as metadata, making it somewhat less useful unless you're willing to spend the effort to manually manage that serialization of data.  But then, why would you choose InfoPath and not Word or web or PDF forms?
    • Electronic forms are not identical to printed versions (as is required for some FDA forms which can be submitted electronically or as paper forms or as scanned versions of paper forms) so in some workflows, you'll need to create separate forms for printed versions and consolidate that data manually.  If you need to create those printed forms in Word or PDF anyways, why bother creating InfoPath forms?
    • Difficult to share forms with users outside of your corporate firewall because: 1) they probably won't have InfoPath on their desktop (but they will have or can easily get Acrobat or Word) or 2) you have to get them access to your network to serve them the form via Forms Server.  With Word based forms or PDF forms, you could theoretically just email the forms, collect them, and upload them -- it gives you the flexibility to create these types of workflows.

Ultimately, I think InfoPath is a poor choice for forms because there are better options either from the perspective of developers or the perspective of a business user.  It's a myth that InfoPath will allow business users to self service and easily create and customize their own forms and thus save time and money.  If anything, it's even easier for business users to create their forms in Word, a tool they are already intimately familiar with.  Anything beyond the most basic of forms will require programming and IT involvement anyways and if that's the case, why bother with InfoPath when it's harder to resource for?

I don't think I'll ever understand the infatuation with InfoPath as a solution.  I do wonder if most folks are simply unaware of the Quick Parts functionality in Word 2007 and 2010 and how nicely it integrates with SharePoint.

Filed under: Rants No Comments
17Feb/11Off

Responsibility in Consultancy

Posted by Charles Chen

As a consultant, I feel strongly about giving sound technical advice to my clients, even if such advice means saying "no" to a client or possibly turning back a larger project for a more pragmatic one. It's about doing the right thing and offering sound technical advice to the best of my knowledge -- not just money, projects, and utilization.

The one personal example that really sticks out for me is the case where Microsoft sold a deal to a hedge fund to build a bulk import system using BizTalk that would have cost them triple the price (once licensing and hardware was factored in) of doing it using SQL Server DTS, which was easier to program, maintain, and more robust in every way (not to mention this company already had SQL Server skillsets in-house).  Luckily, we were able to convince the client that DTS was purposefully designed for carrying out bulk import and transform of data before they committed the cash to BizTalk.

Recently, a friend of mine showed me a project that the Big Consulting Company he works for was delivering to their client, a public library. It looked really good for a public library website...until he dropped the bomb that it was built using Silverlight (and to top it off, he was really proud, too -- as if I was supposed to find it impressive).  I don't think I've ever done a bigger facepalm in my life.

As I've stated in the past, I have a strong disdain for the misuse of Silverlight.  There are certainly scenarios where it should be used for building web sites:

  1. Streaming media
  2. Scalable 2D vector graphics and animation
  3. 3D graphics and animation
  4. Interactive games

And that's it!  Beyond that, if a company wants to use it in their intranet site, it doesn't concern me as much because the environment is more homogeneous and controlled in terms of having the platform to run the Silverlight applications; it's their headache going forward.  Besides, if it's a private, multi-national company, then by all means; if they wish to waste their capital and resources, that's their choice.

However, it is a damn crime to recommend Silverlight to any client building basic web applications that are Internet facing, especially a public library financed by taxpayers.  I mean, people should be fired and embarrassed for offering such terrible advice.  To begin with, few non-Windows devices natively support Silverlight (and even folks on older Windows OSes can't natively run Silverlight apps).  iPad?  iPhones?  Android phones?  Linux based netbooks?  As sales of traditional laptops and desktops decline, it's important to factor in the presence of these newer platforms when designing a publicly facing Internet site.  I would think that this would be even more important for a public library.

Now, if the site were media focused -- like a YouTube -- perhaps it could be forgiven; after all, HTML5 is still a moving target and supported only by newer browser versions.  But this is a public library website that was listing books...It's as bad as websites that still use Java (yes, Java without the "Script") for image galleries or raindrop effects.  It's as bad as websites using Flash for menus and menu rollover animations.

I would be embarrassed to be a part of the company or the team that sold and implemented this deal.  A fucking crime to the taxpayers of the township with me as the perpetrator; no better than stealing money from your neighbors.  I couldn't live with myself for being so evil.

Now, he told me that the client insisted on Silverlight and that it was they who wanted it done in Silverlight.  To me, that makes no difference.  As a consultant, it's my duty to provide sound technical guidance to the best of my knowledge and ability.  If there is a more compatible, cheaper, easier to maintain solution built on a platform with greater longevity that solves the same problem, I will recommend taking that route, even if it takes me out of the running.  It's our job as consultants to consult and to offer sound technical advice.

For you see, the client may not know or care for the difference between Silverlight and HTML5 or jQuery based UIs.  The client may be under the impression that a given UI or bit of functionality is only possible because of Silverlight if that's what they've been sold and demo'd.  The client may not understand the alternative solutions as certainly, for a non-expert, the difference between two types of wood -- for example -- aren't perceivable.  The client may be enamored with one buzzword or technology, but it is our duty and responsibility as consultants (and decent human beings) to tell the truth because I'd like to believe that when I ask a contractor to come to my house for a quote or get a diagnosis from an auto mechanic, he'd do the same for me and give me the low-down to the best of his or her ability and knowledge.

In the end, I was so peeved by what my friend had shown me, I took 30 minutes and rebuilt the same exact functionality that they had implemented in Silverlight using nothing but jQuery and CSS with only 20 lines of JavaScript and 5 lines of CSS after being challenged to do so.

I'm still peeved by this as it's a critical misunderstanding of the Internet ecosystem and managing device compatibility as well as a critical misunderstanding of technology and their suitability for a purpose.  Not to mention that it's a terrible choice for audience accessibility, long term costs, and maintenance.  I really don't want to be upset by the fact that my friend or his team could have purposefully offered bad advice for greater financial returns as that would be a true embarrassment and I only hope that all sides in this come to their senses and ditch Silverlight.

In the end, for me, consultancy is about people and treating customers with respect by offering the best technical advice to one's knowledge.  Even if it costs me my job, I've always believed that I am accountable to my clients and I'm responsible for giving sound technical advice.

Filed under: DevLife, Rants 2 Comments
21Sep/10Off

Commentary on “Frankenfish”

Posted by Charles Chen

The news media has recently been abuzz about about this so-called "Frankenfish".

It's been puzzling to me what the hullabaloo has been all about.  The fact of the matter is that humans have been altering the genetics of just about everything we eat for centuries (millennia?).

Those navel oranges you eat? They're all genetic clones of a single mutation that occurred in the 1800's and every navel orange since has been grown via cutting and grafting techniques. Most cultivars of avocados are also grown via cutting and grafting of a single plant with a desirable genetic mutation.  That bread you eat? It's probably made from wheat that's been bred and cross-bred for resistance to certain strains of fungi and resistance to insects.  The corn that you eat (and all of the byproducts made from that corn)? It's been bred, cross-bred, and selected for desirable traits for centuries.

Humans have been manipulating the genetics of the food that we eat and disrupting or enhancing the natural reproductive cycles of plants and animals alike to breed for desirable traits like pest resistance, drought resistance, fatter meat, leaner meat, tastier meat, greater milk production, faster growth, sweeter fruit, and so on. And when genetics aren't enough to get the desired results, humans aren't shy to rely on other aspects of science like artificial steroids, hormones, antibiotics, pesticides, fungicides, herbicides, and so on. All of which make it into our waterways and our digestive systems.  I'm not saying that these are "good", but that the food supply that you already eat from is hardly free from human intervention.

The rampant and unjustified fear around genetically modified food is symptomatic of a culturally ingrained distrust of science (maybe it stems from religiosity...) and a general ignorance about agriculture and the long history of selection and crossbreeding for genetic traits. Certainly, we can't simply take AquaBounty's word, but we can approach this rationally and study the science and study the data to ensure that indeed, the inserted genes do not have an undesirable side effect in humans and that the environmental impact will be safe.

In the big picture, this type of science is needed if we wish to responsibly address the growing population of the Earth. Our natural resources aren't getting any more bountiful, yet the human population continues to grow, devour, want, and so on. If genetic modification can help yield greater harvests from the same land, if genetic modification and result in the decreased use of pesticides or fungicides or herbicides or fertilizer, if genetic modification can make farm raised fish profitable and thus help the recovery of wild salmon stocks, if genetic modification can help feed the growing population of the Earth and decrease famine and hunger, then I ask why should we not embrace this science and find solutions that work?

It recalls the criticism that Norman Borlaug's work received:

Borlaug's name is nearly synonymous with the Green Revolution, against which many criticisms  have been mounted over the decades by environmentalists, nutritionists, progressives, and economists. Throughout his years of research, Borlaug's programs often faced opposition by people who consider genetic crossbreeding to be unnatural or to have negative effects.

And yet, Borlaug's work has arguably saved billions of lives:

Borlaug received his Ph.D. in plant pathology and genetics from the University of Minnesota in 1942. He took up an agricultural research position in Mexico, where he developed semi-dwarf, high-yield, disease-resistant wheat varieties.

During the mid-20th century, Borlaug led the introduction of these high-yielding varieties combined with modern agricultural production techniques to Mexico, Pakistan, and India. As a result, Mexico became a net exporter of wheat by 1963. Between 1965 and 1970, wheat yields nearly doubled in Pakistan and India, greatly improving the food security in those nations.  These collective increases in yield have been labeled the Green Revolution, and Borlaug is often credited with saving over a billion people worldwide from starvation.

Of course, there are many that decry humanitarianism as being far from the objectives of AquaBounty; they say that AquaBounty is only in it for greed, for money, for profit.  But then I have to ask: what commercial fishing or farming operation isn't in it for money and profit?  Even that mom & pop organic farm down the street is in it for profit.  It's the very basis of the capitalistic system: do more, cheaper, faster, more efficiently.  There's no such thing as food production that doesn't follow this basis (with few exceptions like the production of fine liquors or wines, for example).

Certainly, there are pitfalls and certainly, there are dangers. However, the reality is that many wild fish populations are being fished to the edge of extinction or will be fished to the brink of extinction if we don't take responsible action today. That includes developing better systems of quotas and monitoring of natural populations, decreasing pollution in our waterways, and developing alternatives that can alleviate the strain that commercial fisheries place on these populations.  In the broader picture, if we also consider land based crop farming, improving efficiency through genetic engineering may be necessary to curb deforestation and the continued destruction of natural habitat while still meeting the nutritional needs of a growing population.  Borlaug developed a hypothesis with regards to the importance of increasing yields through science:

The large role he played in both increasing crop yields and promoting this view has led to this methodology being called by agricultural economists the "Borlaug hypothesis", namely that increasing the productivity of agriculture on the best farmland can help control deforestation by reducing the demand for new farmland. According to this view, assuming that global food demand is on the rise, restricting crop usage to traditional low-yield methods would also require at least one of the following: the world population to decrease, either voluntarily or as a result of mass starvations; or the conversion of forest land into crop land. It is thus argued that high-yield techniques are ultimately saving ecosystems from destruction.

I deem these fish safe until the science tells me otherwise. For all intents and purposes, they've only inserted genes from two other fish species (one of them being another type of salmon!) for their desirable traits; hardly worth the shock response and uproar over these GM salmon. The "Frankenfish" label is completely based on ignorance and stoking the fears of the ignorant.