Check out Dev.to

I have found a number of awesome articles about Node on Dev.to. So much so, that I am in the process of migrating my domain, http://www.dyor..com, on over to https://dev.to/mattdyor/. Stay tuned, and in the meantime check out the couple of articles I have posted over there. Thanks.

Matt

Building a Node App with Architecture

My favorite part of Rails was that it was highly opinionated. There was a right way to do things, and really no wrong way (or else it was not rails).

I have also been impressed with the lean-ness of Node. When dealing with APIs, it seems like Node simply works.

I got a note about this blog post in my email that seemed exactly perfect for what I was searching for: an opinionated approach to Node. Granted, this is not a framework, but a collection of independent components that works well to provide a Rails-like experience in Node.

https://medium.com/@victorsteven/restful-api-with-nodejs-express-postgresql-sequelize-travis-mocha-coveralls-and-code-climate-f28715f7a014

Love to hear your thoughts on the technologies discussed. And give https://twitter.com/stevensunflash a follow if you like this work.

View at Medium.com

View at Medium.com

View at Medium.com

View at Medium.com

Building Native Apps with Flutter

I have a Windows machine (and a Linux machine) and an iPhone. This combination left me with no ability to build native mobile apps. I considered buying a Mac, but I figured that would be a bit expensive…and I already have too many laptops floating around.

So I decided to go with Andoid + Windows route, and chose Flutter so that I would be able to (eventually) deploy the app to my iPhone at some point in the future. Here are some notes of how I got up and running:

  1. Start with the Complete Flutter Development Bootcamp for $10 – great overview of installation process which by itself is worth it.
  2. Install Flutter SDK and Android Studio using the Flutter install notes.
  3. Purchase an LG K8 unactivated / unlocked phone for ~$100 after taxes (that means no monthly charges from a carrier / 1 time fee).
    1. If you got with the K8, you will need to follow the very specific instructions in the tutorial + (not in the documents/tutorial) you will need to install the LG drivers. https://www.lg.com/us/support/help-library/lg-mobile-drivers-and-software-CT10000025-20150179827560

I started thinking about going this route (of Android + Flutter + Windows) yesterday, and it took me about 5 hours to get everything plumbed right (that includes a trip to Best Buy). If I would have known to install those drivers, I would have shaved a couple of hours off my time. Most of that time will be spent just waiting for downloads. So for $110, you can be up and running as a Native app developer (or is that Flutter Native :).

Enjoy.

Matt

Azure Databricks Introduction

I am testing out Azure Databricks for some data science research. So what is Azure Databricks? According to the source:

Azure Databricks is an Apache Spark-based analytics platform optimized for the Microsoft Azure cloud services platform. Designed with the founders of Apache Spark, Databricks is integrated with Azure to provide one-click setup, streamlined workflows, and an interactive workspace that enables collaboration between data scientists, data engineers, and business analysts.

https://docs.microsoft.com/en-us/azure/azure-databricks/what-is-azure-databricks

Signing Up

I am always a bit confused by Azure accounts. I believe that if you have a private account, you can:

  • set up a 14-day trial, where you get unlimited usage of Azure Databricks
  • get $200 of credit that can be used for 30 days (useful from days 15 to 30)
  • get one year of free services (not clear what this will cover)

I will update this and pricing as I get a better sense of how this works.

Pricing

To be completed

Getting Started

Once you have set up your free trial:

Submitting PDF Files to USPTO Website

This is pretty much 100% a note to self, but if somebody else finds it useful, great.

If you submit a PDF to the patent office, it seems that 10 times out of 9 you get some error, and this is the most worst of them all:

The attached PDF file references a non-embedded font: Arial. Please remove file, embed the font and reattach.

The requirement is to use to convert your PDF into a PDF-A format, short for PDF Archive, that includes all of the fonts embedded into the document.

If you are generating a PDF from a Word document, there is an option to specify that the document should be generated as a PDF-A.

In Word: File > Export > Options > check the PDF/A checkbox > OK > Publish

Ironically, this option of printing to PDF-A is not available if you are using Acrobat Reader. Even if you use an application like Solid PDF Creator, you will still get the error.

The key is to upload an updated and saved version of the ]editable form that you downloaded from the PTO website. Do not print it as a PDF.

So, in summary, for Word, use the File Export option referenced above, and for Acrobat Reader just upload a saved version of the editable form.

 

Calculating WAPE

WAPE stands for weighted absolute percentage error. It is a very simple calculation that is woefully under-represented on the internets…so here goes the most simple explanation.

1) You have a set of baseline measurements that are, in your professional opinion, the best (often actuals)
2) You have a set of experiment values for which you want to calculate the WAPE against the baseline.
3) For each value in baseline, calculate an absolute difference field (e.g., absolute value of Baseline – Experiment)
4) Sum all of the absolute differences
5) Divide that sum of absolute differences by the sum of all baseline values.

Boom. You have WAPE. The benefit for WAPE is that it lets you see your error on an item by item basis at an aggregate level. Replay. If you just calculated the error at an aggregate level, a lot of item level shifts (aka-errors) would cancel themselves out…and that is bad. If you just averaged the errors on the item level, you might have a nominal item with a high error rate seriously throwing off your results. WAPE is the way to get the aggregate error of your set of measurements.

Simple Example: What does a fruit shopper purchase at a farmer’s market?
Baseline: what we measured this weekend:
100 Apples
20 Pears
10 Bananas
Experiment: what we predicted they would buy
80 Apples
30 Pears
5 Bananas

The worst thing you can do is just say “expected purchases v. actual purchases.” With this, you would have 115 experiment v 130 actual, or 15/130 = 11.5% error. The problem is that some of your under-estimates cancel out some of your over-estimates.

Absolute Difference
|100-80|=20
|20-30|=10
|10-5|=5

Absolute Error
20/100=.2
10/20=.5
5/10=.5

If we were to average these values, we would end up with .4 or 40% error rate (or MAPE). . But this is not right…our biggest measurement was most accurate, so we should punish ourselves less than the average. This is where WAPE comes in: weighting your errors based on their significance.

20+10+5=35
100+20+10=130
35/130=27%

Here, our WAPE is 27%, Not as good as delta/actuals (11.5%), not as bad as MAPE (40%), but just right at a weight adjusted 27%.

Let me know if you have any questions.

Thanks.

Matt

Creating an LLC in Washington State

It is usually a good idea to set up a legal entity when you are embarking on a new business venture. But, you have a million things to do, so this gets tacked on to the list – usually a bit near the bottom because you think it is going to take a long time.

Instead of adding this to your to-do list, just spend ten minutes knocking it out. Here is how:

  1. Create an account at https://ccfs.sos.wa.gov/#/UserRegistration (chose User Account > Individual)
  2. Create or register a business https://ccfs.sos.wa.gov/#/businessFormationIndex
  3. Select WA LIMITED LIABILITY COMPANY (there are a lot of options…so spend weeks learning about those differences, or just chose LLC).
  4. Defer initial report for 120 days. Add a reminder to your calendar for 3 months out so you do not forget!
  5. Specify yourself as the executor and authorized person.
  6. Chose a name with LLC in it (e.g., RANDOM STUFF LLC – that is the LLC that Oliver and I set up to license PuttMate) – you may never even use this business name (you can operate under a “DBA” or doing business as, so do not spend time/energy worry about it).
  7. Pay $200
  8. Get a FEIN (Federal Employer ID Number…basically the SSN of your business) https://www.irs.gov/businesses/small-businesses-self-employed/employer-id-numbers
    1. In honor of the 1990s, the FEIN website is only open Monday – Friday, 7AM – 10PM eastern time, so tough luck you weekend warriors!
  9. Complete a Business License Application http://www.bls.dor.wa.gov/ > https://secure.dor.wa.gov/home/ (note: you will need your SSN as well as the SSN of any of your partners).
  10. Pay $20

PuttMate : Gravity-Powered Putting Ramp

 

Perfect your 5-foot putt with PuttMate. This is a new product that helps golfers of all levels perfect their short putt. Place the ball 2.5 feet from the front of the ramp–about the length of your putter–and PuttMate’s half-sized hole emulates a 5 foot putt. If you miss, PuttMate’s unique design guides it right back to you, without the power cables and without the noise of conventional putting devices. And when you make it, PuttMate stores up to 6 golf balls, keeping things nice and tidy for the home or office.

How can I get a PuttMate putting ramp?

Request Loaner : $5

Send your street address to matt at dyor dot com, and I will mail you a PuttMate so that you can try it in the comfort of your own home or office.*

Purchase Prototype : $20

Purchase a prototype PuttMate putting ramp from Amazon, and I will send you payment instructions and get a hot-off-the-3D-printer PuttMate in the mail for you.

Pre-Order via KickStarter : $20

Pre-order a production-grade PuttMate. The Kickstarter campaign is targeted at getting an injection mold built for PuttMate. The cost for the injection mold is a little over $10,000 (I will cover the difference). The more pre-orders I get, the quicker I will pull the trigger on making the injection mold.

Investment Options : $50 and up (hypothetical)

If you are interested in investing in PuttMate, check out our hypothetical investment round. If you are interested, you can request to be notified should I open up an actual investment round.

Tell me what you think of PuttMate.

*If I do not know you, I may ask for you to purchase a prototype, and I can refund your money when you get the prototype back to me.

GoDaddy, you broke my heart

For starters, you broke my website.

Recently, I have sporadically seen random characters being appended to my domain redirect URLs, so that when somebody types in this:

www.puttmate.com

They end up here:

https://inventoselive.azurewebsites.net/Prototypes/Details/35/UMheZ/

Instead of here:

https://inventoselive.azurewebsites.net/Prototypes/Details/35

Notice the random 6 characters that are being appended to the first URL: UMheZ. Since my server does not have a path/page/route that maps to these random characters, it does not render a page.

It seems like I am not the only one having this problem:

https://www.godaddy.com/community/Managing-Domains/My-domain-name-not-resolving-correctly-6-random-characters-are/td-p/60782

So why do I claim that GoDaddy broke my heart, and not just my website? Because of the absolute apathy, borderline antipathy, they have shown to their customers. I would expect them to fix this. But I get it-the solution may be complex, it may be caused by somebody else’s issue, the Internet is a complex place.

But there is simply no excuse to say “not my fault” and consider the case closed. We are your customers. Tell us “sorry this is broken, we are working to fix it and will let you know once we do; in the meantime, adding a ? to the end of your redirect domain usually solves the problem; I have sent you a screencast of me doing that if you want to see exactly how it is done.” The fact that they are so eerily quiet on this thread brings me to a sad realization: the love has gone from our relationship, and it has been for years now. We are only together because it is too expensive for us to break up.

But I think it is time for me to get back in the game, and find a domain partner who really likes me, who brings me unexpected surprises that make me happy, and works hard to make it right when something bad happens. Yep, we are breaking up.

If you have had a positive experience with GoDaddy that can offset this experience, I would love to hear about it. If GoDaddy broke your heart too, tell me in the comments below.

Have a great day.

Matt

Fixed: Failed Publish to Production on Azure

For some reason, my deployments to my production service on http://www.inventose.com stopped working. It looked like some automated process had made a change to my deployment scripts, so I deleted them and started over. Then, I ran into this annoying problem….which I had resolved before, but had just deleted the solution:

Error Code: ERROR_FILE_IN_USE More Information: Web Deploy cannot modify the file ‘INV.dll’ on the destination because it is locked by an external process. In order to allow the publish operation to succeed, you may need to either restart your application to release the lock, or use the AppOffline rule handler for .Net applications on your next publish attempt. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_FILE_IN_USE. Error count: 1.

This time, I am going to store my solution so that when this happens again, I will know exactly what to do. The solution is actually quite simple:

  • go to your visual studio website (e.g., https://inventose.visualstudio.com/)
  • Navigate to the appropriate project > release
  • Click on the ellipses (…) next to the release definition (on the left side) that controls your failing deployment, and select edit
  • Click on the tasks tab, and select the environment that you are publishing to (probably Production)
  • Click on Deploy Azure App Service
  • There is an option for “Additional Deployment Options” that appears on the settings page for the Deploy Azure App Service. You guessed it: click that!
  • Finally, check the “Take App Offline” checkbox and save your way back home.