Development
Up until very recently I was employed at FoxGuard Solutions and had the pleasure of working with FoxGuard’s resident mad scientist, Monta Elkins. Monta loves to tinker and is especially enthralled with the vast array of projects which can be undertaken with small, programmable logic boards like the Arduino. Now, I’ve played around with these things before but never seriously. Yet, somehow, I let Monta talk me into collaborating with him on a small project.
Personally, I think this is just his attempt to get me more invested in the builder community. “Come to the dark side” they said, “we have projects.
Nonetheless, at my going-away lunch, Monta dropped this guy on my lap with nary a word of explanation but asked that I document my struggles.
![](https://images-na.ssl-images-amazon.com/images/I/71lrS8DBg9L._SL1035_.jpg)
Now, if you’re well versed in the hardware hacking community it’s probably obvious what this thing is but it took me a bit of research to work out how I was supposed to work with it.
Attempt #1: I naively fired up my Arduino editor from some long-forgotten project and verified that I could neither talk to this thing nor identify any obvious way in which I was supposed to talk to it.
Attempt #2: On the back of the board it says “Node MCU Amica” and offers a web address that I can go to. From this I learned that there’s apparantly an entire community of people who build firmware for this thing in a number of languages and that, if I’m brave enough, I can possibly brick this thing by flashing new firmware onto it. Also, there’s a button about the size of a pinhead on this labeled “flash” that I’m almost certainly going to press at some point and regret shortly thereafter. None of this told me much of anything helpful about how to start developing for this thing.
Attempt #3: On the largest and most obvious chip on this board, in Enron-Beelzebub font is written ESP8266MOD. Googling that gets you to a page documenting a TinySine product which looks like someone took a pair of pruning sheers and trimmed off about 35% of the device I have in front of me
![](http://www.tinyosshop.com/image/cache/data/wireless/wifi/ESP8266MOD%20-1-228x228.jpg)
Attempt #4: Discouraged, I did some more aimless Googling before landing on searching for the phrase “NodeMCU Amica” figuring that, while there was an address printed on the back of the chip, maybe there was some better resource out there that at least talked about the thing. That took me to Amazon and this device
![](https://images-na.ssl-images-amazon.com/images/I/71R-l3ZY2lL._SL1500_.jpg)
That looks close but not quite the same. At this point I’m thinking that, while I have no idea how to make this play nice with others, surely someone trying to sell it on the internet will have some barebones documentation to get me started. No luck on the page I’d landed on, but “Customers who viewed this item also viewed” the “HiLetgo New Version ESP8266 NodeMCU LUA CP2102 ESP-12E Internet WiFi Development Board Open Source Serial Wireless Module Works Great with Arduino IDE/Micropython” which, though a mouthful of a product name, had an image that nearly perfectly matched my device.
But more importantly, it also had instructions for getting started developing on it.
Instruction & Steps of How to use:
- Download the Arduino IDE, the latest version.
- Install the IDE
- Set up your Arduino IDE as: Go to File->Preferences and copy the URL below to get the ESP board manager extensions: http://arduino.esp8266.com/stable/package_esp8266com_index.json Placing the http:// before the URL lets the Arduino IDE use it…otherwise it gives you a protocol error.
- Go to Tools > Board > Board Manager> Type “esp8266” and download the Community esp8266 and install.
- Set up your chip as:
Tools -> Board -> NodeMCU 1.0 (ESP-12E Module)
Tools -> Flash Size -> 4M (3M SPIFFS)
Tools -> CPU Frequency -> 80 Mhz
Tools -> Upload Speed -> 921600
Tools–>Port–> (whatever it is) - Download and run the 32 bit flasher exe at Github(Search for nodemcu/nodemcu-flasher/tree/master/ at Github)
github.com/nodemcu/nodemcu-flasher/tree/master/Win32/Release
Or download and run the 64 bit flasher exe at:
github.com/nodemcu/nodemcu-flasher/tree/master/Win64/Release - In Arduino IDE, look for the old fashioned Blink program. Load, compile and upload.
- Go to FILE> EXAMPLES> ESP8266> BLINK, it will start blinking.
![](http://www.nephandus.com/wp-content/uploads/2019/08/signal-2019-08-18-230159-1024x616.jpg)
This is less of a blog post and more of a brief public service announcement. Â If you are using Entity Framework and you change the namespace of your Context file bad things will happen. Â Future Add-Migration commands will attempt to re-script your entire database. Â Google will be remarkably unhelpful in diagnosing this problem.
“But,” you say, in your best Comic-Book-Guy voice, “changing namespaces is annoying; no one would just change their Context’s namespace.” Â To which I reply, “if you’re using ReSharper you might, because it pretty much automates the process and nags you if you move files around.”
Not that solving that problem just consumed an hour of my day or anything.
One of my goals in spinning up a software development team at Foxguard has been to have a development environment ready to go before the first person comes through the door. Â That means a vague skeleton of the application we are developing as well as the apparatus of building, deploying, and testing that application. Â Since anything worth doing is worth doing right we’re approaching the latter problem with a Continuous Deployment solution in mind. Â That means that every time we commit code it is picked up by a automated script, built, tested, and published — ready to begin evaluation through some as-yet-to-be-determined test suite.
The first part of this is fairly easy. Â Jenkins is a great tool and there is no shortage of tutorials out there on how to make it play nicely with GitHub, MSBuild, or any other technologies you might be using.
Deployment, though, is a bit of an more difficult nut to crack. (more…)
Power users are important, or they ought to be. Â Power users are the folks who can help you figure out what your product is really capable of doing; they encourage you to push the boundaries of your existing feature set and can really help to highlight aspects of your service that you didn’t know were important.
No one seems to have told this to the folks at Netflix. (more…)
The great thing about computers and the internet is that, almost no matter what it is that you do, someone else will figure out some clever way to do something novel with the fruits of your labor. Â The folks over at If This Then That or IFTTTT have made a whole website that does little else, but that’s beside the point.
Indeed, the concept of the Rich Web — all those clever interactive widgets that you depend on to get through your day — is an appropriation of a technology that was never designed to do what it now does. Â HTML is not and was not designed as a way to build applications but simply as a way to represent documents. Â Were the HTML standard maintained simply as a method of document representation — in other words, were its features and functionality updated with only an eye for its original purpose — the resulting changes would destroy huge chunks of the public web.
Obviously, this would be bad. (more…)
![Oh Dear....](http://www.nephandus.com/wp-content/uploads/2012/11/amercia-300x191.jpg)
Project Orca isn’t the first run-in the Romney camp had with software testing. A photo-macro app released by the campaign also misspelled “America”
It’s no secret that I’m a bit of a political junkie.  While I enjoy the challenge of software development, there’s something fascinating about the gamesmanship and strategy that goes into political contests.  Ordinarily I have to keep these two aspects of my life separate but every so often they happen to overlap and, when they do, I can’t help but get a little giddy.
So while the political junkie in me was glued to a TV set on Tuesday night, obsessively checking reporting percentages for urban vs rural counties and referencing those against minority population figures and previous election results, the software developer in me didn’t care much about the election until today when I found a story entitled “The Romney Campaign Sure Had Some Bad Smartphone Apps.” (more…)
VirPack has me working on an application that needs a user administered list of options for people to choose from. It’s a fairly simple thing that doesn’t require relational tables so I thought I’d toss it into XML.
Now, C# deals with XML really well. Almost everything, if you just ask nicely, will be quickly and easily packed off into XML the framework with just a few lines of code.
Unit testing is good; test driven development is better. As Knuth once famously quipped “Beware of the above code. I have only proven it correct, not tested it.” There really is no substitution for good, solid testing.
Unfortunately, at least in C#, webpages don’t like to be unit tested. I approach this post with an uncomfortable realization that I am about to lay out the issues and problems I’ve had while the solution I am presently using is far from satisfactory. (more…)
Most of the blogging I’ve done in the past has been political and thus I really haven’t had an opportunity to try to post much in the way of source code in a blog. Once I got Nephandus up and running on WordPress, however, I thought I’d have a shot at it and thus posted a short article on my experiences with C#’s serialization quirks.
To illustrate a specific point I included a brief snippet of C# code which WordPress promptly turned into an illegible mess. The web is a notoriously difficult place to display source code and thus I set off in search of a WordPress plug-in that would allow me to do so without too much thought. Several days, a dozen plug-ins, and a string of curse words that would make a sailor blush with shame, I have a solution.
There is no shortage of syntax highlighting plug-ins available, but the support for their instantiation is practically non-existent.   Nephandus is running a number of plug-ins, none of which required much more than a few mouse-clicks to install and configure yet this particular task proved more difficult and involved than anything else I’ve done with WordPress.
The more I thought about this frustration the more I realized that this is an ongoing problem in the software development industry. (more…)
My “learn C# project” at work has centered around creating a drag-and-drop portlet style system for the display of custom widgets. I’ve been using JQuery UI for the javascript functionality but the backend has been all custom C# work.
People familiar with C# know that C# supports the inclusion of user defined controls called WebControls. These are more or less very simple C# programs which can be man-handled by another bit of C# code. They’re handy for making your code modular: you might design a web-control that takes and validates a credit card number, for example.
But WebControls are notoriously tricky beasts and over the course of the last few weeks I’ve come to understand that one of the reasons for this is that they don’t behave quite the way you might expect them to when they are serialized and deserialized. (more…)