Dave Noderer's Blog

Get Custom Fields using Quickbooks SDK May 28

I was attempting to get a custom field that a customer had added to Items.

It took me a while to figure out it is simple but obscure and basically just requires adding a child element of OwnerID = 0.

Once I found it, the QB SDK documentation was clear after looking at this article for getting Customer custom info:

One thing is that the DataExtRet element contains custom fields and only exists if that Item has data for the custom field(s) present.

Request for item query:

<?xml version="1.0" ?>
<?qbxml version="13.0"?>
-   <QBXMLMsgsRq onError="stopOnError">
      <ItemQueryRq requestID="2">

  • The customer is running Enterprise 16
  • I'm using SDK type library is QBXMLRP2 1.0 Type Library, File Version 13.0.R4000 + 10
  • The app is a WPF/C# desktop billing application.
  • Currently using  Visual Studio 2015 Enterprise.

Washington, DC App Con Trip April 17-19, 2016 Apr 13

We spend most of our time developing custom software solutions for companies.

As Washington policymakers consider action around critical issues including data security and encryption, government access to digital information, and the expansion of computer science education, they must understand the perspective of small software companies. In all of these cases, federal laws could change how we approach software projects.

For the past 6 years I’ve been privileged to travel to Washington, D.C. and participate first hand. This year I will be attending ACT | The App Association’s App Economy Conference from April 17-19 2016. There, I’ll join tech executives from across the country to network, learn, and engage elected officials on the most pressing issues facing the internet economy today.

This is a unique opportunity to learn how our government works (better than you might think!) and help educate our government officials and staff about the complex and ever changing technical world we live in.

I know from past experience that people in the house, senate and various government agencies appreciate a ground level view of these issues from small businesses.

You can stay up-to-date with the group’s activities in D.C. on Twitter by following #AppCon16.

SSL Certificate bundling for Tomcat 7 on a Windows Server Dec 29

Recently while working with a new warehouse management system with a java/Tomcat powered public portal I needed to to learn a few things. Coming to the party was the Java KeyTool utility  (which I had encountered publishing Android Apps), an SSL bundle from GoDaddy and a Tomcat 7 server.

I tried many experiments but none worked.

I started here with the Tomcat documentation:


This covers a lot and got me to the self signed stage. From this I was able to generate a certificate request file I passed on to the IT people to actually purchase the SSL certificate from GoDaddy. We did get a domain wild card *.domainname.com and will use it in this instance to cover “portal.domanname.com”.

FYI.. the Keytool on the server was located at: "C:\Program Files\Java\jdk1.7.0_25\jre\bin\keytool" . That specific location will change depending on the version of Java installed.

The “bundle” of certs for “Tomcat” came back from GoDaddy with three certificates. A couple of intermediate godaddy certs and the actual server aka client certificate.

I tried many ways to get these into the java keystore I had created and to get tomcat to recognize them.

I could see that the keychain from godaddy to the client  certficate was not correct, the two keys were:

  1. I needed to get the correct root and intermediate certificate from GoDaddy. What was sent in the bundle was not correct. To do this you can double click on your client certificate and the windows crypto extensions will display the certificate paths. It will also allow you to export these into a file which I did, one for the root and one for the intermediate cert. This stack overflow helped me with that: http://stackoverflow.com/questions/23611688/keytool-error-java-lang-exception-failed-to-establish-chain-from-reply
  2. I needed to make a certificate chain in my keystore with the root, intermediate and client certificates in the right order. This is done by creating a “.pem” file with the three certificates and then importing that file into the keystore. Then using that alias in TomCat will work. I exported the self-signed key/alias to a .pem file, deleted that alias from the keystore then imported the new pem with the real certificates into the keystore with that same alias. That is described here: http://stackoverflow.com/questions/9299133/why-doesnt-java-send-the-client-certificate-during-ssl-handshake/9300727#9300727

Dave’s Guitar String Log May 15

A couple of years ago I bought a new guitar (a 6 string Gibson Songwriter) and wanted to find out what strings I really liked.. So I started a log and began buying a variety of strings.. Some on sale, some recommended by others, some that looked interesting. It has been fun and I”m happy I did this!! I seem to like all phosphor bronze strings and of those I like the Gibson Masterbuilt Premium Phosphor Bronze Wound the best. I was surprised that I liked the Ernie Ball Aluminum Bronze strings, I might try them again sometime.

Mostly I did lights but had never realized that different brands may have slightly different sting sizes to make up the Light or Extra Light sets.

Some were were interesting, I liked them at first but after a week or two I thought they sucked!

The Elixir HD Light strings were pushed and “developed” with Taylor Guitars : http://www.elixirstrings.com/hdlight/ and I had to wait for a week or two until they came into stock. I heard about these at a Taylor demo at Gear Hero here in Deerfield Beach, FL. Sounded new and exciting but I did not like them that much!

I’m going to slow down my string changing now…

Here is my log for what it is worth.

  • Original
    • 7/2013 - 9/13/2013
    • What are they?
    • Nice full body
  • Gibson Masterbuilt Premium 80/20 Bronze Wound
    • 9/13/2013 - 10/16/2013
    • Lights - SAG-BRS12 - $7.99
    • Bright, harsher
    • Not such a great stringing job Dave…
  • Gibson Masterbuilt Premium Phosphor Bronze Wound
    • 10/16/2013 - 11/24/2013
    • 03/02/2014 -
    • Lights - SAGMB12 - $7.99
    • Fuller, less tiny than 80/20 on first play
    • Clear without being tinny..
    • Still missing a bit from the bass strings
    • I Like these!!
  • Gibson Phosphor bronze wound - J200
    • 11/24/2013 - 01/01/2014
    • Lights - SAG-J200L - $9.99
    • Nice, balanced, a little light on the base
  • Gibson - Masterbuilt Premium
    • 01/01/2014 - 01/10/2014
    • 80/20 bronze wound
    • Ultra Light - 11
    • $7.99
    • Nice enough, have not played much yet.
    • Very nice, probably my favorite
    • Almost a little too light.. Slight buzz on occasion striking opens
    • To light, they buzz, don't stay in tune after 8 days.
    • They suck
  • GHS - Vintage Bronze
    • 01/10/2014 - 02/01/2014
    • Light - 12
    • 5.49
    • Not bad, tinny top but new, not too much base
    • Pretty good but they seem stiff
  • D'Addario Coated Phosphor Bronze
    • Light - Exp16 ??
    • Spare set, no high E now.
  • D'Addario - Phosphor Bronze
    • 02/01/2014 - 06/08/2014
    • EJ16
    • 6.39
    • Light .012
    • Initial sounds nice
    • After a few weeks holds tune very good, I like them!!
    • Broke hi E and use the coated, probably the same
  • Elixir - Phosphor Bronze (HD Light, new!)
    • 06/08/2014
    • HD Lite - .013 - .053
    • Nanoweb coating
    • Developed with Taylor
    • Don't feel quite right.. B string too big I can feel it
    • This set not for me
  • Gibson Masterbuilt Premium Phosphor Bronze Wound
    • 2014-07-08 -
    • My favorites…
  • Martin Claptons Choice
    • 2014-09-07
    • Phosphor Bronze Light
    • .012, .025, .042, .016, 032, .054
    • Think these are identical to the normal Martin Phosphor Bronze light
    • Use Martin stringing technique
    • Feels too thick … and it is thicker on the upper strings
  • Martin Phosphor Bronze Lite - 2568
    • 2014-10-18
    • .12, .16, .25, .32, .42, .54
    • Feel better somehow than Claptons
    • Martin stringing but messed it all up.. Not sure how long 1st and 2nd will hold
    • Not holding a tune on 1 and 2 but mostly due I'm sure to the crappy stringing job!
  • Ernie Ball Aluminum Bronze Light
    • 2014-10-26
    • .11, .15, .22, .30, .42, .52
    • Nice feel, better base and resonance perhaps, lighter upper nice.
    • That’s what is says on the package too which I did not read until after.
    • Lasted well, still sound ok. Still has nice base.
  • Elixir Polyweb Light
    • 2015-03-12
    • 10, 13, 17, 26, 36, 46 (very light)
    • Does not indicate metal, aluminum/silver color
    • High E very thin
    • Sounds kind of mashed up. Maybe distorted highs. Weak lows.
    • After a day, they play ok but do not sound as good…
    • Coating makes them smooth and easy to slide but overall rating is suck.
  • Gibson Masterbuilt Premium Phosphor Bronze Wound Ultra Lights (11)
    • 2015-03-19
    • 11,15,22,32,42,52
    • Well.. I like the light version, sounds good, very melodic
  • Martin Phosphor Bronze SP Light
    • 2015-04-11 - Installed on Camerons Yamaha F-310 (Indonesia)
    • 12,16,25,32,42,54
    • Sounds pretty good, much better than the dirty, rusted strings that were on there.
    • Cleaned up the guitar, wax, oil the fretboard
    • Tough to do a direct compare, a much different guitar and smaller
  • Gibson Masterbuilt Premium Phosphor Bronze Wound Lights (12)
    • 2015-04-15
    • 12,16,24,32,42,53
    • Ok, back to what I like, I'll stick with these for a while!

ACT Flyin Washington DC - 3/22-24/2015 Mar 26

This past week I visited Washington, DC to take part in the annual ActOnline.org "flyin". Each year this organization of ~ 5000 software companies hosts 50 software and app developers to visit Washington and give briefings to capitol hill staffers and members on a number of subjects.

This year we discussed patent reform, access to cloud data here and abroad, child safety and privacy, internet domain name policy, device encryption and net neutrality.

On Monday we had briefings and discussions on the current status and issues on these and some other topics. The briefings last all day and are led by the ACTOnline staff but are very interactive.

This was my 5th fly in so I'm almost an old pro at it. Approximately 25% of the people are new each year with 75% alumni. For various reasons some people skip years or stop coming but there were a lot of familiar faces, many of whom I knew from other software conferences and organizations. There is a wide variety of age, gender and actual working skill sets but all are entrepreneurs and do or cause software and apps to be developed.

Patent reform has moved along recently with house bill HR.9 (aka "The Innovation Act") introduced last year and re-introduced this year in the house. It does have a lot of bi-partisan support with some sticking points. The purpose of this bill is to try and control "Patent" trolls. These are shadow companies (layers of corporations) that prey on small companies trying to extort money.

While we all believe in a strong patent system and of protecting intellectual property there are some bad patents and people exploiting the process. What happens is that a patent owner creates a list of target companies, most likely thousands, who MIGHT be violating the patent and send demand letters, not to sue but to try and get the company to send say $10,000 to settle. The letters are very vague because the company sending the letter has no idea if the target company is using the technology or violating the patent.

It is estimated that it costs $650,000 to fight a patent claim for under $1,000,000. Especially for a small business, it is cheaper to just pay the money which many do. Those a bit more savvy just ignore it to wait and see what happens.

The major points of the bill are forcing the claim letters to have clear and specific indication of what the patent violation is, transparency in patent ownership and it can cost a lot to find any details. Finally there is a fee shifting provision to force the party losing a frivolous challenge to pay the winners legal fees. This is under control of the judge so is not automatic. We want to keep a strong patent system!

Another aspect of the patent system where we asked that congress support the patent office making sure that the patent fees are used to train existing and hire more patent examiners. Having clear patents in the system will make enforcement easier and clearer.

A second area we discussed was the LEADS (Law Enforcement Access to Data) Act. From our standpoint the cloud is essential for our business and government actions threaten the cloud. The Department of Justice claims they have the authority to access the data of ant US country no matter where in the world it is stored.

Our concern is that we will be put in a situation where we have a choice of breaking a US law or breaking a law in another country. One of our members is based in the US with a partner and servers in Sweden. This Act will clarify that US law enforcement must comply with the law of the country where the data resides. The Act also provides technical updates that will greatly improve the speed and efficiency of information exchange. There is long standing precedent for cooperation between countries in the case of criminal search requests, we just ask that electronic data be given similar treatment as physical property.

One example given is say a foreign national has committed a crime and US law enforcement wants to search the hotel room at a Marriot in Germany. We would not expect that Marriot, a US company would allow that unless German laws were followed.

Internet governance is another area we discussed. Startups, small businesses and in fact the entire internet economy relies on a free and open internet and the Domain Name System (DNS) to allow business to be conducted. We are in the process of transitioning the oversight of ICANN (Internet Corporation for Assigned Names) from the Department of Commerce to a consensus driven, multi stakeholder structure. We want to make sure that procedures are in place to handle potential meddling or blocking by bad actor countries. Our request is that congress keeps a close eye on this transition to make sure the new process is robust, we only get to let go of it once. During our meetings, ActOnline President Jonathan Zuk was in Istanbul working on this process.

Another important area is online privacy for children. There is a FTC rule called COPPA (Children's Online Privacy Protection Act) that anyone collecting information from children needs to follow. Our organization and Moms With Apps has established a branding of "Know What's Inside" that members pledge to follow a set of requirements that actually go beyond COPPA. Unfortunately the FTC has not been enforcing this act and a number of large companies are getting away with violations of COPPA. We are asking congress to compel the FTC to start enforcing the laws already on the books not come up with new restrictions.

There are a few other areas but these are the main topics we discussed…

Visit http://www.ActOnline.org for more information.

EF 6.1 Code First Field Lengths – Reminder to self! Dec 20

Recently I was using Entity Framework 6.1.1 to implement functionality for a windows service.

I had used code first, that is creating a class in code then attaching to a db context and migrating it into a table on SQL Express 2014 but these had been small projects without a lot of data and hosted on full size sql servers and most projects start with an existing SQL Server so code first is not used.

This time through testing processing a dozen or two transactions was no problem and I was not worried about database size. The code is reading a csv file from a secure web service then importing and processing. These transactions include signature pad data whose fields can be quite lengthy, over 10kb in some cases as it is base64 encoded. The text and data are transformed into fields on a form including .jpg bytes for the signatures and then exported as a .tiff file.

During testing I kept asking for production file samples but only got the odd test transaction or two.. so when a large production file (over 20k transactions) hit there were problems, no surprise!

After handling a few other issues the program would error out after importing 300-400 transactions.

One issue is that the signatures were bigger than the test articles but the main problem is that if you make a class in code first like this:

public class foo()


public string text1 {get; set;}

public string text2 {get; set;}


In the database you end up with a table foo and all the fields are nvarchar(max). Even this is not so bad if you only have a small bit of data in the fields and the row fits within an 8k database page.

The problem is that with multi-kilobyte fields additional pages are allocated for each row in multiple tables and disk space quickly expands.

The error was that the database was filled which happens when SQL Express hits 10 gigabytes (SQL Express 2014).

Luckily this is easily fixed by annotating with the MaxLength so my classes now look like:


public class foo()



public string text1 {get; set;}


public string text2 {get; set;}


Run the database migration commands and now all 20k transactions fit in a few hundred megabytes.

Note that I’m not too worried about longer term storage, this information will be quickly purged and only has to handle a day or two of transactions at a time. If that changes we can always upgrade to a standard sql server instance…

Simple fix and common sense but some of us learn hard!!

Javascript Loading gif and logic Nov 17

When using ajax to load data from the server it is useful to display a “loading” animation to let the user know that something is happening.

These bits of code and this gif spinner will do the trick!

ajax-loader  you can find a number of alternative spinners or make your own!

Position the following div wherever you want it on your page.

Then in javascript turn it on when loading the page and  when re-fetching data (say after filtering):

$("#loading").css({ 'visibility': 'visible' });

Then turn it off on either successful return or data or an error:

$("#loading").css({ 'visibility': 'hidden' });

c# to vb.net Adding handlers with lambdas Aug 25

I am converting some of the APIMASH projects from c# to vb.net and having to translate between the two.

You can find the APIMASH projects at: https://github.com/apimash/StarterKits

This is part of inheriting behavior of the System.Net.WebClient, for Windows Phone 8.

The c# code looks like this:

DownloadStringCompleted += (s, e) =>
    if (e.Error == null)

I tried two c# to vb.net conversion tools, DevFusion: http://www.developerfusion.com/tools/convert/csharp-to-vb/ and Telerik thttp://converter.telerik.com/.

Simple code converts fine but this example that does not, both do the same thing, could be the same engine:

DownloadStringCompleted += Function(s, e)
                               If e.[Error] Is Nothing Then
                               End If

                           End Function

The lambda function works ok but that is not how event handlers are written in vb.net, this works much better:

AddHandler DownloadStringCompleted, Function(s, e)
                                        If e.[Error] Is Nothing Then
                                        End If
                                    End Function

APIMASH CNorris Windows 8 VB Starter Kit Aug 05

A couple of months ago my esteemed Microsoft Developer Evangelist, Joe Healy visited our user group and spent some time going through the APIMASH starter projects the DPE’s have been working on. I was impressed!!

It looked like fun and thought that members of my user group would respond to these fairly simple but complete examples for Windows 8, Windows Phone 8 and now Windows 8.1.

Being a Visual Basic .net MVP I noticed that none of these were done with vb.net and know that there are millions of vb programmers out there looking for samples.. so I volunteered!

I started with Bob Familiar’s Chuck Norris c# starter kit, downloaded it from github and tried a few approaches to porting it.  You can read about Bob’s original starter kit here: http://theundocumentedapi.com/2013/06/06/apimash-chuck-norris-starter-kit/

There are two libraries, APIMASH_CNorrisVBLib and APIMASHVBLib plus the main windows 8 project.

Being the lazy developer, I tried to bulk convert c# to vb.net. Two I tried were http://www.developerfusion.com/tools/convert/csharp-to-vb/ and  http://converter.telerik.com/. Neither really did a complete job and both left some c# remnants and just plain errors. In the end I used the DeveloperConfusion throughout just so I would get use to what it was doing. In retrospect I should have keep more detailed notes and will next time. Three areas I remember having to rewrite the code was for adding event handlers, lamdas and overrides.

The two libraries were pretty straight forward and I was able to get them to compile and look correct pretty quickly. There were no tests and I did not tackle that task.

What took me longer was the actual windows 8 app. Trying to convert the code behind and past it into the xaml forms did not go well. In the end I created a fresh windows 8 project and spliced in and ported pieces. The main problem was that the namespaces got confused and mixed up so that the code behind was not recognizing the few controls on the page.

Once I was over that hump the project worked!

I’m sure that there are many improvements that could be made and hope to hear from you.

The project can be found on github under the Windows Starter Kits: https://github.com/apimash/StarterKits

Problems getting Lightswitch HTML Client Preview 2 Feb 26

I finally downloaded the html client preview 2 to give it a run, had not had a chance to look at Lightswitch since last summer…


I ran into a few problems…

When trying to create a Silverlight html/c# client I got a dialog box:

Before installing this version of Silverlight, please close all browser windows and uninstall the current version of Silverlight.

Installed version: 5.1.10516.0

Requested version: Silverlight 5 (5.1.10411.0)

I un-installed the newer version of Silverlight, installed the recommended version and got past that error.. I searched around and did not see this problem in the forums but could have easily missed it…

A couple of other minor problems but then was stuck with a build error indicating Lightswitch could not access the localdb\v11.0:

Error    1    An error occurred while establishing a connection to SQL Server instance '(LocalDB)\v11.0'.
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 50 - Local Database Runtime error occurred. Error occurred during LocalDB instance startup: SQL Server process failed to start.
)    C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\LightSwitch\v2.0\Microsoft.LightSwitch.targets    146    10    ContosoMoving

After learning more than I wanted to about localdb over a couple of days, what was consistent were errors of this kind shown below from the localdb log if I let Lightswitch create the localdb\v11.0 instance:

FCB::Open failed: Could not open file e:\sql11_main_t.obj.x86release\sql\mkmastr\databases\objfre\i386\MSDBData.mdf for file number 0.  OS error: 2(The system cannot find the file specified.).

Note: I don’t have an E drive normally, these might be remnants of an installation disk.

These logs and the database system and other files can be found here: C:\Users\{your user name}\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\v11.0 on my Windows 8 installation.

Although localdb\v11.0 was created, I could not connect to (localdb)\v11.0 via sql management studio (or visual studio).

Final solution was to delete what was there and create / test (LocalDB)\V11.0 before trying to start/compile a Lightswitch project.

To delete an existing V11.0 and create a new one use the sqllocaldb (.exe) utility which should be mapped already if you use you visual studio developer command prompt. The sequence I used was:

cd c:\users….\Instances (see full directory above).

delete the v11.0 directory

run this sequence of commands:

sqllocaldb delete v11.0

sqllocaldb create v11.0

sqllocaldb start v11.0

After I verified I could connect to the localdb\v11.0 then I was able to run Lightswitch without problems.

Dave Noderer

Software Developer / Microsoft MVP

Cell: 954-270-1186

Company: http://www.computerways.com

Win Phone Beach Riser Pro: http://bit.ly/BeachRiserPro

Visual Studio 2012 change source control Feb 26

Note to self… when changing source control on a solution you need to remove the workspace associated with the old source control, connect to the new server and add / check in to the new server.

This is after frustratingly “change source control” which will unbind but not allow you to rebind / connect to a different server.

SkyDrive for South Florida Code Camp! Feb 20

We held out 9th annual South Florida Code Camp on 2/9/2013. Unlike past years, instead of stuffing bags with brochures and papers from the vendors, we bought 700 2gb USB keys and had all the vendors send us information, software, links and files to put on the USB key.

This was a great success.. but how about making it public too?

I setup a folder on my skydrive:


Then I renamed the new folder, selected it and clicked on the sharing button at the top:



By clicking on “People with a view link” I created a link I could share with all the code camp attendees to allow them access to the content. If you click on “Shorten” you will be a very usable and short link. After you copy the link, you can click on “Done” and distribute or post the link.

Then I realized there was more I could put there. Besides the USB content from sponsors I created directories for the speakers and a place to put all the photos we collect.


This was quick and easy, now I’m wondering why I did not do this before!

Feel free to browse the code camp skydrive here with the shortened link: http://sdrv.ms/122eAdh

Free Windows 8 book on programming with html, css and javascript Oct 31

Just a heads up from DevFish (http://devfish.net), a free book on writing applications for Windows 8using html, css and javascript by Kraig Brockschmidt .

You can find the book here:


I have not finished reading this but so far it looks like it will be a great resource if you have any interest in trying the windows 8 javascript programming model.

Besides all the aspects of controls, library support and animations the book also talks about how to make your own components in c#, vb or c++.

Microsoft Build 1st Day Oct 30

Great keynote and I don’t like keynotes..

Seeing the great breadth of large and small devices and the number of manufacturers along with the software vision for Windows 8 and Windows Phone 8 was inspiring.

Jordan Rudess demonstrates Tachyon on Windows 8

Then he played for a while too..


I especially liked Steve Balmers 82” slate!! Can I have one!



And best of all, they finally released the Windows Phone 8 SDK.


Off to sessions…


Stay tuned for more!

Azure Florida Association Nov 19

Herve Roggero, SQL Azure MVP,  has created a virtual community to focus on Azure. Here is the outline from Herve:


User Group Name:  Azure Florida Association

Purpose: Start a virtual Florida user group that targets the Azure platform

Venues: Most meetings will be virtual; however I plan to host a few physical events across Florida if possible from time to time; physical events may be a few hours long with potentially more than one speaker

Possible Topics: The topics will touch Azure generally speaking, but can have a wide array of concern such as Integration, Data Migration, Hosting, Security, Scalability, Mobile Device integration, successful ventures/lessons learned, cross cloud integration patterns, testing in the cloud, deployment management, reporting…

Target Members: Architects, Developers, IT Managers

Membership: Membership will be free; virtual events will be free; physical events may involve a minimal cover charge

Speakers: If you are interested in speaking or if you have topic ideas, please let me know

Frequency: Initially these meetings will be held every other month


The first meeting will be held on January 25, 2012 at 4PM EST. Vikas Sahni, SQL Azure MVP, will be presenting on Demystifying SQL Azure. Vikas will introduce SQL Azure, value proposition, usage scenarios, concepts and architecture, what is there and what is not, including Tips and Tricks. 

The actual meeting link will be available in January but please join the linked in group now to be kept informed of this and future events: http://www.linkedin.com/groups?gid=4177626.