Author: Aaron

Spin Rewriter blog has a new (better) home

It has finally happened! 😀

After quite a bit of effort over the past week or so, we have finally given the official Spin Rewriter Blog a home it deserves.

As you must have noticed, up until this point the Spin Rewriter Blog lived right here — inside my own personal (AaronSustar.com) blog. Sure, all relevant posts were tagged with the “Spin Rewriter” keyword for easy browsing, but still — at its core, this situation was less than ideal.

It also felt jarring for visitors browsing the Spin Rewriter website that they were taken to an entirely different website when they clicked the “Blog” link in the main header. Sure, a lot of companies are doing it this way, hosting company blogs on dedicated blogging platforms (such as WordPress) — but it’s definitely not the best way of doing it.

And here at Spin Rewriter, we only want what’s truly the BEST for you, our awesome users. 😀

So, here’s what we did:

  • We set up our own custom, in-house blogging platform.
  • We moved all 292 existing blog posts from the current WordPress-based blog into our own blogging platform.
  • We updated and re-formatted all imported posts as required (this included moving all uploaded images to the primary Spin Rewriter website).
  • We created 3 new types of subpages on the Spin Rewriter website: Blog Home (self-explanatory), Blog Archive (e.g. when browsing posts by month) and Blog Post (when reading an individual post).
  • We added “301 redirects” from all existing Spin Rewriter related blog posts on AaronSustar.com to their rightful place on the Spin Rewriter website. As you know, SEO is pretty dang important!
  • We rolled out the new on-site blog to our live (production) servers.

And that’s it. With that, all of our existing 292 blog posts about Spin Rewriter now live on the Spin Rewriter website, in its Blog section.

And now I’m off to write the first ever blog post that will only appear on the new on-site Spin Rewriter Blog.

It’s a big one. A HUGE ONE. And you’re welcome to read it here!

Further improved security

In early August we noticed a brute-force attack that was targeting our login form.

The attackers were targeting 6 specific Spin Rewriter accounts, and they were sending us hundreds of login attempts per minute that were coming in from a variety of different IP addresses.

These login attempts were trying what appeared to be a set of predetermined passwords (we have no way of knowing the exact passwords that were used in the attack because we always hash the passwords before storing them, like every web service should).

So, first the good news: None of the accounts were compromised. The attackers gave up after a couple of hours, after getting nowhere.

And the even better news: In light of this, we’ve taken another look at our login system and the code that powers it. We are extremely satisfied with how well it has done, and we’ve now also tweaked a few parameters to make the login system even more secure, out of an abundance of caution.

Without revealing too much (this information could help guide potential attackers in any future attacks), our login system remains truly state-of-the-art, following all modern security standards, now also including rate-limiting after a set number of failed login attempts in a certain time frame, and so on.

So you can rest assured that your Spin Rewriter account (and all of your articles and other information inside of it) is safe and waiting for you — and you only. 😉

Our WordPress Plugin – updated!

We’ve just rolled out an important update to our official Spin Rewriter WordPress Plugin… which lets you:

  • automatically spin & republish old posts,
  • automatically fetch new unique posts,
  • spin your posts right inside your WordPress admin panel,
  • connect your websites for 1-click remote posting from Spin Rewriter,
  • and more…

The updated version of the plugin now brings full Gutenberg compatibility.

What’s Gutenberg? That’s the name of WordPress’s fancy new text editor — you know, the one that splits all your posts into editable blocks.

Make sure to grab the newest version of our plugin, by either:

  1. Downloading it as a ZIP file from the WordPress page inside your Spin Rewriter account, OR…
  2. You can go to the “Plugins” page of your WordPress admin panel and then click the blue “Check for updates” link next to the Spin Rewriter plugin.

Either way you’ll be up and running (with the newest version) in no time. 😉

Even better encryption of user data

With our most recent upgrade of our codebase to PHP 7.3, we’ve also gone the extra mile in terms of making our customers’ data even safer than before.

We always want to keep our users’ sensitive data as safe as possible. For example, some Spin Rewriter users are using the “remote posting” feature of our optional WordPress License. Those users tell us the username and password they’re using with their WordPress website so we can post new high-quality & unique content to their website on their behalf.

But we want to keep this information as safe as humanly possible. That’s why we’ve now upgraded our encryption algorithms from using the mcrypt_* class of functions to the newer and even more secure openssl_encrypt_* class of functions.

When it comes to security and privacy, there is absolutely NO excuse for not doing your very best — and that’s why we’re always on the cutting-edge of technology when it comes to important things like that.

This was definitely a behind-the-scenes upgrade that is completely transparent to our users — but it makes a big difference in the long run. 😉

PHP 7.3 benchmarks

My previous post about our recent upgrade to PHP 7.3 has been incredibly well received — thank you to everyone who reached out or sent me an email with follow-up questions!

The most common question of them all, though, was this:

“What kind of performance improvements and speed-ups did you notice in your particular real-world case?”

And honestly, I’m more than happy to share our results publicly, as we’ve been running benchmarks on every new version of our codebase for years now — and this way I can put those benchmarks to an even better use. 😀

Compared to PHP 5.6 that we had been previously running for a relatively long time, the newest PHP 7.3 performs amazingly well:

  • When processing large-scale data, we can now run 1,000,000 standardized operations in 0.453 seconds where that same work-load took 0.818 seconds before. These results have been measured repeatedly over roughly 100-million-op work-loads, with averages taken. That’s an 80.5% improvement!
  • When running a really complex operation on a somewhat sizable dataset, we now get the same result in 10.48 seconds that previously took 14.84 seconds — which is another 41.5% improvement.
  • And finally, under simulated heavy website traffic load, our website can now serve 285% as many requests per second as it could before! In other words, that’s a 1.85x speed-up.

These results are mind-blowing for something that required us to rewrite a relatively small part of our codebase! Although, there is a caveat…

As soon as we started the required rewrite of the incompatible parts of our code, we decided (in true programmer fashion!) to pull off a major multi-month code-refactoring effort that touches virtually all of our existing code.

And as a final result, we’re looking to get the average performance increase somewhere into the 300-400% range… while making our code even more robust!

It’s going to be a huge win for both our customers and our dev team, and we couldn’t be more excited about it! Stay tuned! 😀

Cutting-edge PHP 7.3

This past year we’ve been working so much on back-end stuff that is silently making Spin Rewriter even better and faster that I sometimes struggle to tell you about all the updates we’ve been rolling out.

Remember my recent two posts about the Spin Rewriter website switching to HTTP/2 and about the huge code refactoring process that is currently underway?

Well, a significant part of our front-end (customer-facing) code that makes the Spin Rewriter website work is written in PHP. Yes, the same good old PHP that powers 79.1% of the web, including Wikipedia, Facebook, all WordPress websites, etc.

And recently, a new version of PHP was officially released. This brand new PHP 7.3 version makes the language more robust than ever, while — and this is equally as important! — making it incredibly fast.

Now, most times when there’s an update to an already established programming language or an interpreter (which is the software that actually takes your PHP code and runs it), the improvements are absolutely minuscule.

But this recent upgrade to PHP 7.3 is vastly different. Who better to tell you all about it than the creator of PHP, Mr Rasmus Lerdorf, himself? Here’s a short video that takes you from the beginnings of PHP to what makes the newest PHP 7.3 so special…

The takeaway is this: The PHP team worked extremely closely with Intel engineers to make the newest version of the language perform as well as it possibly can on modern CPUs, with their low-level caches, branch predictors, etc.

The results speak for themselves — just check out these benchmarks!

In most cases PHP 7.3 is 150-200% or even 300% faster than PHP 5.6 which was the standard up until very recently, and what the Spin Rewriter website was running on until last year.

And at last, this brings me to my final point: YES, if you noticed a significant speed-up when using Spin Rewriter about two months ago, that was because we’ve now been running the newest PHP 7.3 on our live (production) servers for quite some time!

It’s this sort of behind-the-scenes work that makes a HUGE difference in the final user experience. And we’re happy to keep up with the times for our amazing customers — which is you guys! 😀

All-encompassing code update

Today is a big day for Spin Rewriter — even though it may not seem like it.

20 minutes ago we rolled out a huge update to our entire codebase. Through a massive multi-month code refactoring effort we’ve made our code more streamlined, more maintainable, more readable, and vastly more future-proof.

Fun fact: When we deployed all this new code to our servers 20 minutes ago, more than 90% of all files containing code were updated.

In the process we’ve also eliminated over 1,100 lines of code.

Wait… Less code? Doesn’t that seem like a bad thing?

There’s a brilliant quote attributed to Bill Gates: “Measuring programming progress by lines of code is like measuring aircraft building progress by weight.

I think that’s an absolutely brilliant way of putting it. By making the code more compartmentalized and more reusable, we were able to significantly trim down the amount of code required in total.

And even though Spin Rewriter was running on great code before, with this latest update the code is downright beautiful. There’s another relevant quote:

Code is poetry.

Here at Spin Rewriter we believe that 100%, and with every update we make sure we’re delivering a better, faster and more robust user experience to our awesome users. Cheers! 😀

Serving pages through HTTP/2

This morning (well… extremely early morning, at 3 AM New York time) we rolled out another important upgrade to our front-end servers.

What do we mean by “front-end” servers? These are the servers that are actually serving the Spin Rewriter website with all its subpages to our awesome customers like yourself.

For contrast, the “back-end” servers run the actual ENL semantic spinning algorithms and do all the heavy lifting in terms of running the machine learning models, neural networks, selecting good synonyms given the context of your article, etc.

Anyway, our front-end servers have now been upgraded to support HTTP/2. That’s the newest reliable version of the protocol that’s used for communication between servers and web browsers (e.g. Chrome or Firefox or Safari).

As a result of this upgrade, the entire Spin Rewriter website will load even faster and feel even snappier. I think you’re going to like this upgrade. 😀

Quick Buttons – explained!

If you’ve been doing any manual spinning with Spin Rewriter (and not just relying on our magical One-Click Rewrite technology, haha), you’ll know that there are 3 little buttons just above the list of synonyms for each word or phrase.

Those buttons are called – “Top”, “All”, and “Apply to All”. They’re the bext way to speed up a manual rewrite of your article.

The “Top” button selects all reliable (top) synonyms of the current word that meet one of your three available One-Click Rewrite settings: more readable, recommended, or more unique.

The “All” button selects ALL synonyms of the current word. A second click of that same button then removes all synonyms.

Finally, the “Apply to All” button applies the selected synonyms of the current word to every occurrence of this word in your article. It also pluralizes or capitalizes the newly-applied synonyms where required.

Example – Let’s look at these button in practice:

When selecting the word “book” in your article, you’ll see a list of available synonyms.

Clicking “Top” will automatically select the best synonyms, for example “novel” and “magazine”.

Clicking “Apply to All” will then automatically add these 2 top synonyms to every single occurrence of the word “book” in your entire article. It will also capitalize or pluralize those synonyms as required (e.g. it will use “Novels” as a synonym of “Books” instead of “novel”).

All of this will let you manually rewrite your articles MUCH faster, and with even better results. Enjoy! 😀

Small UX win in Step 2

Sometimes it’s the smallest things that make a software product more enjoyable to use.

And we’ve just rolled out one of those “things” (or what we’re calling them internally, “UX wins”) earlier today.

You know the readability slider, the one that lets you choose if you want Spin Rewriter to make your articles more readable, or more unique?

Well, until today you had to grab the little slidey thing, and either drag it up the slider element, or down the slider element.

Now you can still do that… OR you can simpy click the label next to each of the 3 slider positions, that says more readable, recommended, or more unique.

Just one simple click will instantly adjust the slider to the correct setting — no more hunting and pecking. 😀

We’ve also improved the slider from an accessibility perspective, with vision-impaired users in mind.

And — if you want — you can even use the arrow keys to move the slider up and down once you’ve selected it. Hope you like it. 😉