The GPD Win 2 is a small computer designed for gaming on-the-go. It has an upgradeable 128GB M.2 2242 SATA SSD. I decided to upgrade to a larger drive.
ITEAD studio is an electronics shop based in Shenzhen, China with the tagline "make innovation easier". They sell a variety of hobbyist-friendly prototyping hardware such as LCD displays and Arduino shields, and they do seem to be one of the more innovative players in the market.
ITEAD has an Indiegogo campaign in progress for their latest products, Sonoff and Slampher, and they sent me pre-release samples of each to review.
The two devices are fairly similar, they're both essentially smart power switches. Both can be remote controlled via the included remote and/or via a Android or iOS app, and both can be assigned a schedule through said app.
The only real difference is the connectors and amount of amperage the devices can handle: Sonoff is hard-wired via screw terminals, and can handle up to 10 amps whereas Slampher is intended for lightbulbs (see the "lamp" in the name?) with an E27 socket and can only handle < 2A.
NodeMCU and other ESP8266 modules are starting to become very popular because they offer an embedded development platform with a CPU+RAM+Storage+WiFi all in one for (considerably) less than the price of an Arduino. There are a number of breadboard-friendly modules with all pins exposed (and more coming soon.)
However, this post is about the breadboard-unfriendly ESP-01 module. It only has two GPIO pins (four if you include the TX & RX pins), but it's smaller and most importantly, cheaper.
"Snatching defeat from the jaws of victory." That summarizes Samsung's implementation of HDMI CEC ("Anynet+") in their "Smart" TVs - everything works except the power button.
However, with help from an Arduino and an IR Shield, I was able to add in the missing parts and make things work properly.
There’s an awesome WordPress plugin called Comment Notifier – what it does is add that check box at the bottom of the comments section. If you leave it checked when you add a comment, then it will automatically email you with anyone ease’s comments in the future.
However, it has a slight problem with spam. When spammers leave comments, my combination of Akismet and NoSpamNX do a pretty good job of keeping spam comments of of the site, but not before their (usually fake) email gets added to the Comment Notifier database.
Recently, I realized that my server was trying to send out several hundred failing emails any time someone left a comment. I shot a short feature request (and a small donation) to the Comment Notifier plugin’s author, but then decided that this was one I could take on myself. Here’s how I did it:
I often open a new tab in my Terminal to run an Ant task, and often as not I forget to
cd into the correct directory first and so I am greeted with this error:
$ ant compile Buildfile: build.xml does not exist! Build failed
On my system, there’s only one main project that uses ant, so I almost always intend for ant tasks to be run against that project’s build.xml. So, I created a function that makes ant tasks “just work” no matter what directory I am in.
I just finished a writeup on the necessary JS changes to support Facebook's OAuth 2.0 upgrade, and then Hilary did a followup post on the server-side.
The upgrade enabled right now, but it gets forced out on October 1st. These two posts should give you all you need to know to get your site ready for Facebook's upgrade:
I’ve seen a lot of confusion about this lately, so I thought I’d make a quick writeup to explain how facebook does it. (I’ll also give a quick tip on how you can do it yourself.)
What Facebook Does
Facebook is in a unique position compared to many developers looking to set cross domain cookies: The user visits both facebook.com and the other website.
I’m working on a project that has a legitimate (non-spammy) reason to need cross-domain cookies, and we settled on flash as a good way to accomplish this.
Most anti-spam methods used by websites today are annoying at best. They use impossible-to-read captcha images, or they make users jump through some kind of hoop to get the email address instead of just clicking on it. This can mean lost sales and opportunities for you, because each hurdle turns away more users.
Unfortunately, most browsers think they know better and go off and do their own thing on RSS feeds.
We’re going to look at how and which browsers can be brought into line, and how to use XSLT to improve the look of your RSS feed in those browsers.
The twitter callback feature is nice – it makes it extremely easy to to add a twitter feed to a page. But to get the most benefit out of it, you really need to understand what it’s doing.
We’re going to look at how AJAX security works, specifically the Same Origin Policy, how Twitter gets around it, and the type of callback that twitter uses.
We're going to see what the differences between objects and arrays are, how to work with some of the common array-like objects, and how to get the most performance out of each.
SEO and SEM is all the rage these days. You can do all kinds of modifications to your website, but the age-old adage still holds true:
Content is king.
Unique, interesting, well-written content is what makes your site stand out. Well written content will have key words, but won’t feel spammy. It will naturally attract high quality links back to it.
That said, there are several factors you can keep in mind while writing your content…
Recently a client of mine had me pulling my hair out trying to figure out why some users couldn’t see the the secure https sections of their website.
As it turned out, the server had been upgraded to TLS only for PCI-compliance, and some users had TLS disabled.
This article goes in to the how, they why, and the solution to fix https websites that aren’t showing up for some users.
One of our Cart32 websites started having a problem recently where it would work great all the way until the last page of the checkout process, where it would give the error “Bad file name or number Error Number = 52″.
Even worse, it charged the customers credit card each time, so a persistent customer could wind up with multiple charges which you would need to undo!