All posts by sfitsos

Goat Herder, Adromeda Constellation, NZ1X1

Monero Mining Ban or How to Ban yourself from Google

I’m back

I haven’t posted in a while. Mainly because I was really busy with my morning job, and a lot of other stuff in the between. For all of you who actually kept in line with my blog I would have to say I have done a lot the past 3 years, career-wise.

This post is going to be mainly for talking about Crypto Currency mining, and the related technology.

Fintech

I have worked a lot in the Finance Tech Sector, even before it was the hot word. Unfortunately I didn’t have enough time to actually delve into the Crypto Finance part, only up until recently.

I decided I should have a look at the technological / mining part of a Crypto Currency.

Of course since I am primarily an engineer and not a coder, I decided that the mining must be done in a distributed way and not in a dedicated way most people without any specific technical background do… And that was the issue unfortunately.

Monero JS Mining

 

Even though my current morning job doesn’t include a lot of JavaScript (or ECMAScript as they renamed it nowadays), I still have some juice left in me. So since JS rules the world language-wise, the logical approach would be a JS miner. There is only one js-miner.  And also a nicely laid-out service is  Coin-Hive (I’m not linking the site as it will be marked as a malware, more on that later). The crypto currency is Monero (XMR), and it is mainly developed for mining using a CPU and not any specific ASIC just as Bitcoin or Ethereum are. Which also makes it more profitable in my opinion to mine right now, without actually having a monster like computer, which is needed to mine all the other currencies…

Profitablility

Ok, lets face it mining using others pc’s is not that profitable.
Having something like 30-40 visits per day on your website with an average stay of 1-2 mins could probably give out something like 10 cents per day, with roughly 1M hashes.

So it turns out that a lot of people had the same idea as me (a few months back) by using the browser’s V8 to run mining software.

Unfortunately users do not appreciate this. They do not appreciate ads, but also not their CPU spiking up a bit as they like to browse a site they might benefit from.

Frankly, I find this offensive. Especially from google’s part since I managed to set up a distributed miner. I distributed it’s source code (based on a flavour of CryptoNight algorithm) and mining software between some of my sites, using my github account to host the files for the miner, and a few other freeware sites for proxying the traffic for the mining pool.

The Monero Mining Ban

My github account was banned. Also my sites as well. Google thought that all my sites have been hacked and that they were infected with a malware.

Google sent me a lot of e-mails that my sites were infected, and that I should clean them. Apparently it is illegal to serve these assets even if you specifically ask permission from the users (or just simply notify them for this). So, users don’t like ads, since they are using an adblocker, and they don’t like also using their CPU for mining. OK, I get it. We just have to pay for domains and servers for ourselves, for the code and the brain power we burnt to create the content, and just give this away for nothing. Nice. Even though if I somehow have a guy who still owes me a lot of money for a website I helped him create and I don’t want to put him out of business by just closing it down.

Should you need any more info let me know to help you if you want to setup your own JS mining rig.

PS. I have started working on another big open source project which is really nice, you will hear from me again.

Request Loop

It’s been a while since I last posted…

There is always a reason for that. My reason was a sum of many different variables. Just as the great mentor said, luck is the sum of many coincidences, that’s what happened in my case as well.

Where do I begin?

Jobwise: Capital controls, working day and night, a lot to do and no time to do it…

Blogwise: I had a very strange setup with my blog (and a very very outdated one I might add). Since I am using Heroku, they decided to change their stack and migrate from Cedar 10 to Cedar 14 . Ok I said what the hell lets do it.

Alas, I had a serious problem with libssl0.98 which was built inside my php module and was not supported in Cedar 14. (whoever wants to do the upgrade have a look here first).

Long story short I fixed it, and I also found that many posts I did with various hacks for the pg4wp plugin were incorporated into a single release from kevinoid : here

I will contribute also into some changes that have to be taken into account since the module is quite old and I have previously stated that it’s not at all well written.

That’s not the main point of this post though.

I wanted to share an experience I keep coming across lately.

Now according to popular trends we are experiencing (and will experience in the future) a huge bloom of the microserviced architecture. This guy here explains how and why they decided to go for the microserviced architecture.

I agree. There are many benefits when having a monolithic single (and obsolete at times) repo for web applications. It is a nice solution when your company is scaling, and you have to maintain a lot of different parts. Especially if you have different teams and each team wants to “do their own thing” about a solution.

However it’s not the solution to Everything!

I will elaborate more:

I recently had to debug an http step based procedure (client requests this page, books this ticket, goes there, etc.) that was using 3 different instances of different technologies over http. The one was python and wsgi, the second was php with apache and the third one was ruby with unicorn.

Try to debug this. I dare you. Seriously. I had in my local setup all 3 different instances running with 3 different IDE’s and all running their debugger. Ok, ok you say that Docker will simplify the installation. I agree it does, but it does not help the debugging at all.

The most important thing though isn’t the debug/testing of many different apps over http.

It’s the HTTP by itself.

And believe me, I have seen a lot of “Senior” Devs falling into the same trap of API’zation and doing over and over the same architectural error.

The Request Loop

You won't guess how many time's I've seen this happening...
You won’t guess how many time’s I’ve seen this happening…

Consider the following diagram:

This is the actual loop - when one request is still open, another comes along, and things get messy...
This is the actual loop – when one request is still open, another comes along, and things get messy…

The Browser  sends a request to the Frontend app. Now the Frontend App could forward it (or change it a bit) to the Backend App.

In our setup the backend app was a PHP app.

Now since PHP by default does not support threading (not pthreads), each HTTP request is a different PHP thread, served via apache.

This is very complicating, since you keep a connection (process) open and you open another one which could (at some point maybe) rely on data from the first one. You cannot access that data in between processes.

Not to mention that, you can not either debug this thing, since you insert a break point in the first request procedure, and the second request (which happens a few ms after) is being served without the debugging stopping at that point.

My point is that when you decide to go Microservice’d

Try to avoid request looping, when you need to do something that is synchronous. Or, use something different. Do threading. Use a message queue, or something else.

You will be surprised how much time you will spend trying to debug and understand what is wrong in this set-up.

I will close with the following meme:

Some people, when confronted with a problem, think, “I know, I’ll use threads,” and then two they hav erpoblesms.

The Useless Web

Ah, the Internet. A place where most people can do their job a lot faster. A place where people can express also whatever the heck they feel. I’m one of those people. Plus some give or take more or less skills.

The birth of this Website

was mainly to express some frustrations while working as a software engineer, but also to report some findings my colleagues find during this endeavour.

Useless

That’s a word it has a very good meaning. For most of the people, quite the opposite, but, damn, when you’re useless you are funny (sometimes).

To the point then :

You have to click 2-3 times for the javascript to work.
You have to click 2-3 times for the javascript to work.

A colleague found The Useless Web

An awesome site (of which gave me the idea of a trolling based context site), contains 1 javascript which after each click gets you to a

Completely Useless, Pointless, (and sometimes Offensive) Site.

Author is Tim Holman and I quote what he says:

The Useless Web… because some websites, we just couldn’t do without.

Damn right! Some sites in there are PURE GOLD.

 The Staggering Beauty

Move cursor violently and you'll see the beauty behind this ugly  worm like being.
Move cursor violently and you’ll see the beauty behind this ugly useless worm like being.

 

And classics such as “Is it Christmas?

This one I think the guy also changed it. Now it resolves your IP and responds in your language :D.

Useless you say ?

Well I got one more step further. Below you will find all the sites featured in the master site , of which I got them from his source code.

Have fun 😀

var sitesList = [
['http://heeeeeeeey.com/', false, 7],
['http://cant-not-tweet-this.com/', false, 7],
['http://eelslap.com/', false, 5],
['http://www.staggeringbeauty.com/', false, 7],
// ['http://www.omfgdogs.com/', false, 7], Down 🙁
['http://burymewithmymoney.com/', true, 7],
['http://www.fallingfalling.com/', true, 3],
['http://ducksarethebest.com/', false, 7],
['http://www.trypap.com/', false, 4],
['http://www.republiquedesmangues.fr/', false, 7],
['http://www.movenowthinklater.com/', false, 6],
// ['http://www.hristu.net/', true, 6], Down 🙁
['http://www.partridgegetslucky.com/', false, 6],
// ['http://hectorsalamanca.com/', true, 5], Big fat donate button
['http://www.rrrgggbbb.com/', true, 7],
['http://beesbeesbees.com/', false, 3],
['http://www.sanger.dk/', true, 4],
// ['http://www.idiotic.com/', true, 7], Down 🙁
['http://breakglasstosoundalarm.com/', false, 3],
['http://www.koalastothemax.com/', false, 7],
['http://www.everydayim.com/', false, 7],
['http://www.leduchamp.com/', true, 7],
['http://www.geodu.de/', false, 4],
['http://grandpanoclothes.com/', false, 6],
['http://www.haneke.net/', false, 7],
// ['http://instantostrich.com/', true, 7], Lame banner
['http://r33b.net/', true, 6],
['http://randomcolour.com/', false, 6],
['http://cat-bounce.com/', true, 6],
['http://www.sadforjapan.com/', true, 5],
['http://isitchristmas.com/', false, 5],
// ['http://infinitefrogs.com/', false, 5],
['http://www.taghua.com/', true, 5],
['http://chrismckenzie.com/', true, 6],
['http://hasthelargehadroncolliderdestroyedtheworldyet.com/', false, 5],
['http://ninjaflex.com/', false, 4],
['http://iloveyoulikeafatladylovesapples.com/', true, 6],
['http://ihasabucket.com/', false, 4],
// ['http://www.feedthehead.net/', true, 5], Iphone banner
['http://corndogoncorndog.com/', false, 4],
// ['http://www.oppositeofpoop.com/', false, 4], Down
['http://giantbatfarts.com/', true, 4],
['http://www.ringingtelephone.com/', true, 6],
// ['http://chickenonaraft.com/', false, 4], Went down.
['http://www.pointerpointer.com/', false, 4],
['http://www.pleasedonate.biz/', false, 5],
['http://imaninja.com/', false, 3],
['http://willthefuturebeaweso.me/', false, 3],
['http://salmonofcapistrano.com/', false, 3],
['http://www.ismycomputeron.com/', false, 5],
['http://www.ooooiiii.com/', true, 3],
['http://www.wwwdotcom.com/', false, 3],
['http://www.nullingthevoid.com/', true, 6],
['http://www.muchbetterthanthis.com/', true, 5],
['http://www.ouaismaisbon.ch/', true, 3],
// ['http://cutmeoffmidfunk.com/', false, 4], Down now
['http://iamawesome.com/', false, 3],
['http://www.pleaselike.com/', false, 7],
['http://crouton.net/', false, 3],
['http://corgiorgy.com/', false, 3],
// ['http://www.clicktoremove.com/', false, 3], Lame external link
// ['http://dastardlydigitofdestiny.com/', false, 3], Sloooow
['http://www.electricboogiewoogie.com/', true, 6],
['http://www.nelson-haha.com/', false, 6],
['http://www.wutdafuk.com/', false, 6],
['http://unicodesnowmanforyou.com/', false, 3],
['http://tencents.info/', false, 3],
['http://intotime.com/', true, 4],
// ['http://haveahairymovember.com', false, 4], Broken
['http://leekspin.com/', true, 3],
['http://minecraftstal.com/', false, 4],
['http://www.riddlydiddly.com/', false, 5],
['http://www.patience-is-a-virtue.org/', false, 2],
['http://whitetrash.nl/', false, 2],
['http://www.theendofreason.com/', false, 2],
['http://zombo.com', true, 1],
['http://secretsfornicotine.com/', true, 1],
['http://pixelsfighting.com/', false, 1],
['http://crapo.la/', false, 1],
['http://baconsizzling.com/', false, 1],
];

P.S. Browse the above sites with your own consent.