Starting From Zero: Gaining Witness Votes

in #steemit7 years ago

I know this is my third post in a row about Steemit witness stuff, but I usually blog about my current passions and right now I'm really passionate about being a Steemit witness!

It's an odd feeling essentially starting from zero when I've been here for almost a year and have worked hard to build a following of over 1,500 fellow Steemians. I can remember in the early days when people would message whales in the Slack chat to try and get their votes. I always avoided that approach because it didn't pass the basic community test of "What would happen if everyone did this?" (More on that here.)

I'm not a sales person. I'm a programmer. I don't like going around asking for help, especially if I can find the answers myself. I also don't like treating some people differently than others just because they have something which can benefit me (in this case high Steem Power witness votes which are needed to be a useful witness).

The witness list is driven by millions of VESTs which is an internal representation of Steem Power holdings. Those with the most Steem Power have the largest investment to protect, so their votes matter most in terms of electing witnesses to maintain the blockchain economics, run solid servers, and work well with the community.

So it seems I need to make more whale friends and get comfortable with self-promotion. If you're good at that sort of thing, please feel free to campaign on my behalf. :)

I figured maybe I should start with people who are already following my blog and go from there.

Tonight I did what I usually do when I want to solve problems: I started writing code.

For the curious, here's what I wrote after work today:

<?php
require '../../vendor/autoload.php';
$params = array();
$SteemServiceLayer = new \SteemTools\SteemServiceLayer($params);
$api = new \SteemTools\SteemAPI($SteemServiceLayer);

$witness_account = "lukestokes.mhth";
$controller_account = "lukestokes";

$followers = $api->cachedCall('getFollowers', $controller_account, true);
$accounts = array();
foreach($followers as $follower) {
    $accounts[] = $follower['follower'];
}
$account_records = $api->cachedCall('getAccounts', $accounts, true);
$accounts_by_vest = array();
$accounts = array();
foreach($account_records as $account) {
    $accounts[$account['name']] = $account;
    $accounts_by_vest[$account['name']] = (int) str_replace(' VESTS', '', $account['vesting_shares']);
}

arsort($accounts_by_vest);
$top_accounts = array_slice($accounts_by_vest,0,30);

function showPossibilities($top_accounts,$accounts,$witness_account,$show_available_only = false)
{
    $available_vests = 0;
    foreach($top_accounts as $account_name => $vests) {
        $print_account = true;
        $witnesses_voted_for = $accounts[$account_name]['witnesses_voted_for'];
        $proxy = $accounts[$account_name]['proxy'];
        $witness_votes = $accounts[$account_name]['witness_votes'];
        $voted = " Already Voted? ";
        $include_vests = true;
        if (in_array($witness_account, $witness_votes)) {
            $voted .= "YES";
            $print_account = !$show_available_only;
            $include_vests = false;
        } else {
            $voted .= "NO";
        }
        $free_votes = (30 - $witnesses_voted_for);
        if ($print_account && $show_available_only) {
            $print_account = ($free_votes > 0);
        }
        if ($print_account && $show_available_only) {
            $print_account = !($proxy != '');
        }
        $pad_amount = 20;
        if ($print_account) {
            if ($include_vests) {
                $available_vests += $accounts[$account_name]['vesting_shares'];
            }
            print str_pad($account_name,$pad_amount,' ',STR_PAD_RIGHT);
            print str_pad('Proxy: ' . $proxy,$pad_amount,' ',STR_PAD_RIGHT);
            print str_pad($voted,$pad_amount,' ',STR_PAD_RIGHT);
            print str_pad($vests . " VESTS",$pad_amount,' ',STR_PAD_LEFT);
            print str_pad($free_votes . " votes free",$pad_amount,' ',STR_PAD_LEFT);
            print "\n";
        }
    }
    print "Total Available MVESTS: " . round($available_vests/1000000) . "\n";
    print "\n";
}

showPossibilities($top_accounts,$accounts,$witness_account);
showPossibilities($top_accounts,$accounts,$witness_account,true);


It's just slapped together, but it gives me some nice output:

abit                Proxy: abitmore      Already Voted? NO      4006255185 VESTS       30 votes free
jamesc              Proxy:               Already Voted? NO      3198609804 VESTS       30 votes free
thejohalfiles       Proxy:               Already Voted? NO      2657774136 VESTS       15 votes free
tombstone           Proxy: dele-puppy    Already Voted? NO      2256414027 VESTS       30 votes free
xeldal              Proxy:               Already Voted? NO      1891626077 VESTS       11 votes free
arhag               Proxy:               Already Voted? NO      1634823209 VESTS        3 votes free
wackou              Proxy:               Already Voted? NO      1016653226 VESTS        0 votes free
fuzzyvest           Proxy:               Already Voted? NO       938527112 VESTS        6 votes free
recursive           Proxy:               Already Voted? NO       807953047 VESTS       30 votes free
slowwalker          Proxy:               Already Voted? NO       797428111 VESTS       13 votes free
gavvet              Proxy:               Already Voted? NO       774029929 VESTS        2 votes free
fulltimegeek        Proxy:               Already Voted? NO       722460777 VESTS        2 votes free
skan                Proxy:               Already Voted? NO       431695970 VESTS       30 votes free
nanzo-scoop         Proxy:               Already Voted? NO       416794647 VESTS        5 votes free
htooms              Proxy:               Already Voted? NO       375869774 VESTS       23 votes free
roelandp            Proxy:               Already Voted? NO       366830941 VESTS        0 votes free
steempty            Proxy:               Already Voted? NO       328834977 VESTS        0 votes free
sean-king           Proxy:               Already Voted? YES      325761740 VESTS       25 votes free
neoxian             Proxy:               Already Voted? NO       309686880 VESTS        1 votes free
twinner             Proxy:               Already Voted? NO       267742620 VESTS        2 votes free
gtg                 Proxy:               Already Voted? NO       264962536 VESTS        0 votes free
eeks                Proxy:               Already Voted? NO       253585400 VESTS       25 votes free
kevinwong           Proxy:               Already Voted? NO       253521106 VESTS        2 votes free
modprobe            Proxy:               Already Voted? NO       214183331 VESTS       30 votes free
benjojo             Proxy:               Already Voted? NO       213765603 VESTS        0 votes free
matt-a              Proxy:               Already Voted? NO       207469977 VESTS       15 votes free
good-karma          Proxy:               Already Voted? YES      196452115 VESTS        0 votes free
demotruk            Proxy:               Already Voted? NO       189993289 VESTS       18 votes free
rok-sivante         Proxy:               Already Voted? YES      189410018 VESTS       25 votes free
damarth             Proxy:               Already Voted? NO       178960313 VESTS       30 votes free
Total Available MVESTS: 24976

jamesc              Proxy:               Already Voted? NO      3198609804 VESTS       30 votes free
thejohalfiles       Proxy:               Already Voted? NO      2657774136 VESTS       15 votes free
xeldal              Proxy:               Already Voted? NO      1891626077 VESTS       11 votes free
arhag               Proxy:               Already Voted? NO      1634823209 VESTS        3 votes free
fuzzyvest           Proxy:               Already Voted? NO       938527112 VESTS        6 votes free
recursive           Proxy:               Already Voted? NO       807953047 VESTS       30 votes free
slowwalker          Proxy:               Already Voted? NO       797428111 VESTS       13 votes free
gavvet              Proxy:               Already Voted? NO       774029929 VESTS        2 votes free
fulltimegeek        Proxy:               Already Voted? NO       722460777 VESTS        2 votes free
skan                Proxy:               Already Voted? NO       431695970 VESTS       30 votes free
nanzo-scoop         Proxy:               Already Voted? NO       416794647 VESTS        5 votes free
htooms              Proxy:               Already Voted? NO       375869774 VESTS       23 votes free
neoxian             Proxy:               Already Voted? NO       309686880 VESTS        1 votes free
twinner             Proxy:               Already Voted? NO       267742620 VESTS        2 votes free
eeks                Proxy:               Already Voted? NO       253585400 VESTS       25 votes free
kevinwong           Proxy:               Already Voted? NO       253521106 VESTS        2 votes free
modprobe            Proxy:               Already Voted? NO       214183331 VESTS       30 votes free
matt-a              Proxy:               Already Voted? NO       207469977 VESTS       15 votes free
demotruk            Proxy:               Already Voted? NO       189993289 VESTS       18 votes free
damarth             Proxy:               Already Voted? NO       178960313 VESTS       30 votes free
Total Available MVESTS: 16523


In a nutshell, this analyzes my follower list, sorts them by Steem Power, and then figures out if they've already voted for me or not and have witness votes to give (if they aren't proxy voting through someone else).

So now I've got a list. Something about asking them individually in chat seems like the wrong approach. I don't want to bother people or put them in the awkward position of feeling the need to explain themselves if they don't want to vote for me as a witness.

Or maybe I should just get over it and start asking people directly?

What do you think?

Maybe I'll allow myself a little mention spam. Okay, here it goes.

@jamesc, @thejohalfiles, @xeldal, @arhag, @fuzzyvest, @recursive, @slowwalker, @gavvet, @fulltimegeek, @skan, @nanzo-scoop, @htooms, @neoxian, @twinner, @eeks, @kevinwong, @modprobe, @matt-a, @demotruk, @damarth

There. That felt a little dirty. Heheh.

Anyway, I should get some sleep. I've probably been thinking about this too much and should just give it some time to work itself out.

Big thank you to @sean-king, @good-karma, and @rok-sivante whose MVESTS make a huge difference in my witness campaign. I'm also very grateful for @billbutler, @jesta, @bacchist... I could list you all, but that would be silly. Anyway, thanks. I'm learning a lot, stretching myself in the process, and having fun.

Steem On

Related Posts:


Luke Stokes is a father, husband, business owner, programmer, voluntaryist, and blockchain enthusiast. He wants to help create a world we all want to live in.

I'm a Witness! Please vote for @lukestokes.mhth

Sort:  

Distinguish yourself from the pack. I know you are a nice person from the little interaction i had with you, but i think these witness runs tend to be stereotype. What will you do to recruit new blood? To make them thrive? What is your resolution to distribute power fairly among users?

I'm sure you are a good programmer. And I'm sure you are able to run a node. But so is many others.

Great questions.

For me, I think, the main value I can bring right now is being an active technical blogger AND someone non-technical people can understand. Some witnesses don't post much on Steemit and they don't have a real identity. For me, I put my real myself out there completely and actively blog, even at the risk of writing something some may not agree with. By staying active, I'm approachable and people can ask me to bring something to the rest of the witnesses. For now, I think, that's my unique value proposition.

Say it loud and clear:

Ask me anything!

That is distinguishing yourself from the pack! I'll try to remember next time i try to answer questions that get over my head :-)

Btw: you lost those 3000 or were you able to recover them?

I'll try to remember next time i try to answer questions that get over my head :-)

I'll help however I can or find someone who has the answers.

3000

Unfortunately it's still a waiting game. I'm concerned Poloniex may become the next MtGox. Some people have been waiting months and months for support to respond. For now... I just have to hope some day I'll get my STEEM back and it will be worth 10x what it is now. :)

It's so sad they can't do more for such a common problem. Wish you luck with a solution. for the three... I mean thirty thousand ;-)

Hmm, weird. I could've sworn I voted for your witness a week or two back. Anyhow, I just gave you my vote and happy to do so.

Thanks so much!

You got my vote for witness. Thank you for yesterday's response.

You being a programmer can appreciate the work of Steve Wozniak, the engineering mind behind Apple computers. He has an estimated net worth of 100 million dollars, while Steve Jobs, who is said to have never written a line of code contributing to Apple, has an estimated net worth of 19 billion dollars. I haven't read the full Steemit whitepaper yet; I don't know php, or why being a witness for Steemit is something one would aspire to become, but I do know that marketers will always be the ones selling the products of engineers until the engineers learn to promote themselves. I am a digital marketer and content creator that is currently learning python. You are a software engineer that is now learning to self-promote and market yourself. I think this merging of creativity in tech in all of us is the natural progression of society, but Steemit is taking it to an entirely new level and doing it in an open democratic way. I hope you will achieve your goal of being a witness, and I hope I will achieve my goal of eventually understanding what that means.
May all your steem be fire.
Best of Luck

Excellent points.

marketers will always be the ones selling the products of engineers until the engineers learn to promote themselves

This is true. What happens if they build AI systems to do it for them? Heheh.

I am a digital marketer and content creator that is currently learning python.

This is also what the world needs more of. With that knowledge, you can fully appreciate what goes into building good code.

I hope you enjoy this post I wrote months ago:

If You're Not Tech Savvy, You're a Muggle. Please let me know what you think.

Oh, also, this lecture by Vinay Gupta is amazing.

You have my vote brother. Wont be in a place I can sign the transaction for a couple days.

Thank you so much!

Wow, you just bumped me up to 40th! Thank you! :)

No worries brother. Thank you for your dedication and hard work.

I voted for you! I made a post trying to get people who hadn't yet to vote. I failed to mention you though, and now I feel like a dick because you introduced me to witnesses through one of your posts. I will however rectify it and hopefully you get a few more votes out of it. Wish you the best yo!!

So it seems I need to make more whale friends and get comfortable with self-promotion.

Welcome to the world of politics :)

Sigh.

Thankfully, I found out this morning I made it into the top 50 last night. :) :) :)

I feel a little silly for having been on Steemit since last August and not knowing this, but how does one vote for witnesses on here? Maybe a tutorial is in order for newbs like myself.

Hey @randr10. Check the links to the other articles at the bottom of the post for more information.

way to go , you have my support @lukestokes . Thank you for sharing your knowledege that you contributed in this community ;-))

Well, seems I will just have to whale up so my witness vote gives you more of a bump :-) And yeah, I hear you on the self promotion thing, something I'm slowly getting more comfortable with as that is part of the social media society we now live in.

Directly asking is still too brash for me.....but nothing wrong with a little campaigning, especially when its to promote the value you are adding!

Whale up indeed! :)