Ecoer Logo

@rossbulat

25

Director @ JKRB Investments

steemit.com/@rossbulat
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS0.00%
Net Worth
0.680USD
STEEM
4.116STEEM
SBD
0.007SBD
Own SP
7.548SP

Detailed Balance

STEEM
balance
4.116STEEM
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.000STEEM
STEEM POWER
Own SP
7.548SP
Delegated Out
0.000SP
Delegation In
0.000SP
Effective Power
7.548SP
Reward SP (pending)
0.000SP
SBD
sbd_balance
0.007SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
0.000SBD
{
  "balance": "4.116 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.000 STEEM",
  "vesting_shares": "12276.629716 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "0.000000 VESTS",
  "sbd_balance": "0.007 SBD",
  "savings_sbd_balance": "0.000 SBD",
  "reward_sbd_balance": "0.000 SBD",
  "conversions": []
}

Account Info

namerossbulat
id761277
rank157,048
reputation584602287
created2018-02-13T06:10:15
recovery_accountsteemcreate
proxyNone
post_count29
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2018-07-16T13:45:21
last_root_post2018-07-16T13:45:21
last_vote_time2018-07-16T13:48:30
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power9,800
delayed_votes0
balance4.116 STEEM
savings_balance0.000 STEEM
sbd_balance0.007 SBD
savings_sbd_balance0.000 SBD
vesting_shares12276.629716 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares0.000000 VESTS
reward_vesting_balance0.000000 VESTS
vesting_balance0.000 STEEM
vesting_withdraw_rate0.000000 VESTS
next_vesting_withdrawal1969-12-31T23:59:59
withdrawn0
to_withdraw0
withdraw_routes0
savings_withdraw_requests0
last_account_recovery1970-01-01T00:00:00
reset_accountnull
last_owner_update2018-02-13T14:12:54
last_account_update2018-02-13T14:12:54
minedNo
sbd_seconds0
sbd_last_interest_payment2018-02-28T18:16:51
savings_sbd_last_interest_payment1970-01-01T00:00:00
{
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM5tKJzSsPzv2C5RMRdVvg5NQN8cvt87fghkjtnXikvnLhwwWGo1",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "balance": "4.116 STEEM",
  "can_vote": true,
  "comment_count": 0,
  "created": "2018-02-13T06:10:15",
  "curation_rewards": 0,
  "delegated_vesting_shares": "0.000000 VESTS",
  "downvote_manabar": {
    "current_mana": 0,
    "last_update_time": 1518502215
  },
  "guest_bloggers": [],
  "id": 761277,
  "json_metadata": "{\"profile\":{\"profile_image\":\"https://jkrbinvestments.com/assets/images/other_images/rossBulat.jpg\",\"name\":\"Ross Bulat\",\"about\":\"Director @ JKRB Investments\",\"location\":\"Hong Kong\",\"website\":\"https://jkrbinvestments.com\",\"cover_image\":\"https://jkrbinvestments.com/assets/images/other_images/steemit.jpg\"}}",
  "last_account_recovery": "1970-01-01T00:00:00",
  "last_account_update": "2018-02-13T14:12:54",
  "last_owner_update": "2018-02-13T14:12:54",
  "last_post": "2018-07-16T13:45:21",
  "last_root_post": "2018-07-16T13:45:21",
  "last_vote_time": "2018-07-16T13:48:30",
  "lifetime_vote_count": 0,
  "market_history": [],
  "memo_key": "STM72vtAgBjWAhavJhqAYar1FSvmx3kWuoKvqGhg5w1FKpBE9kgAL",
  "mined": false,
  "name": "rossbulat",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "other_history": [],
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM6jiMFQwVw7qpZAmWJzqXZN4bM2BzMe4Son3nmQsQR3FuChr7ot",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "pending_claimed_accounts": 0,
  "post_bandwidth": 0,
  "post_count": 29,
  "post_history": [],
  "posting": {
    "account_auths": [],
    "key_auths": [
      [
        "STM8HJdXBT91NZp7z9BcQVNDsKrKnnCuMvgS38ek53TBhPZ6wwtze",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting_json_metadata": "{\"profile\":{\"profile_image\":\"https://jkrbinvestments.com/assets/images/other_images/rossBulat.jpg\",\"name\":\"Ross Bulat\",\"about\":\"Director @ JKRB Investments\",\"location\":\"Hong Kong\",\"website\":\"https://jkrbinvestments.com\",\"cover_image\":\"https://jkrbinvestments.com/assets/images/other_images/steemit.jpg\"}}",
  "posting_rewards": 8,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "proxy": "",
  "received_vesting_shares": "0.000000 VESTS",
  "recovery_account": "steemcreate",
  "reputation": 584602287,
  "reset_account": "null",
  "reward_sbd_balance": "0.000 SBD",
  "reward_steem_balance": "0.000 STEEM",
  "reward_vesting_balance": "0.000000 VESTS",
  "reward_vesting_steem": "0.000 STEEM",
  "savings_balance": "0.000 STEEM",
  "savings_sbd_balance": "0.000 SBD",
  "savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_sbd_seconds": "0",
  "savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
  "savings_withdraw_requests": 0,
  "sbd_balance": "0.007 SBD",
  "sbd_last_interest_payment": "2018-02-28T18:16:51",
  "sbd_seconds": "0",
  "sbd_seconds_last_update": "2018-02-28T18:16:51",
  "tags_usage": [],
  "to_withdraw": 0,
  "transfer_history": [],
  "vesting_balance": "0.000 STEEM",
  "vesting_shares": "12276.629716 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "vote_history": [],
  "voting_manabar": {
    "current_mana": 9800,
    "last_update_time": 1531748910
  },
  "voting_power": 9800,
  "withdraw_routes": 0,
  "withdrawn": 0,
  "witness_votes": [],
  "witnesses_voted_for": 0,
  "rank": 157048
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
2020/02/13 07:36:51
authorsteemitboard
bodyCongratulations @rossbulat! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@rossbulat/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@rossbulat) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=rossbulat)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
parent authorrossbulat
parent permlinksafari-push-notifications-complete-setup
permlinksteemitboard-notify-rossbulat-20200213t073650000z
title
Transaction InfoBlock #40777355/Trx f47f0c52201e87a35e5736ad57ae0c43a620774e
View Raw JSON Data
{
  "block": 40777355,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @rossbulat! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@rossbulat/birthday2.png</td><td>Happy Birthday! - You are on the Steem blockchain for 2 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@rossbulat) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=rossbulat)_</sub>\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
      "parent_author": "rossbulat",
      "parent_permlink": "safari-push-notifications-complete-setup",
      "permlink": "steemitboard-notify-rossbulat-20200213t073650000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-02-13T07:36:51",
  "trx_id": "f47f0c52201e87a35e5736ad57ae0c43a620774e",
  "trx_in_block": 5,
  "virtual_op": 0
}
2019/02/13 07:21:36
authorsteemitboard
bodyCongratulations @rossbulat! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@rossbulat/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table> <sub>_[Click here to view your Board](https://steemitboard.com/@rossbulat)_</sub> > Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!
json metadata{"image":["https://steemitboard.com/img/notify.png"]}
parent authorrossbulat
parent permlinksafari-push-notifications-complete-setup
permlinksteemitboard-notify-rossbulat-20190213t072136000z
title
Transaction InfoBlock #30305231/Trx cf21be19d403803bc121115727396502774180ea
View Raw JSON Data
{
  "block": 30305231,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @rossbulat! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@rossbulat/birthday1.png</td><td>Happy Birthday! - You are on the Steem blockchain for 1 year!</td></tr></table>\n\n<sub>_[Click here to view your Board](https://steemitboard.com/@rossbulat)_</sub>\n\n\n> Support [SteemitBoard's project](https://steemit.com/@steemitboard)! **[Vote for its witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1)** and **get one more award**!",
      "json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
      "parent_author": "rossbulat",
      "parent_permlink": "safari-push-notifications-complete-setup",
      "permlink": "steemitboard-notify-rossbulat-20190213t072136000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-02-13T07:21:36",
  "trx_id": "cf21be19d403803bc121115727396502774180ea",
  "trx_in_block": 3,
  "virtual_op": 0
}
2018/09/17 11:59:54
authorrossbulat
permlinkvitalik-buterin-fireside-chat-breakdown-blockchain-2018-in-zug
voterjoelkenny
weight10000 (100.00%)
Transaction InfoBlock #26037765/Trx 0ac06c5c619b7073757dd89828d0f9616551f0d8
View Raw JSON Data
{
  "block": 26037765,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "vitalik-buterin-fireside-chat-breakdown-blockchain-2018-in-zug",
      "voter": "joelkenny",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-09-17T11:59:54",
  "trx_id": "0ac06c5c619b7073757dd89828d0f9616551f0d8",
  "trx_in_block": 60,
  "virtual_op": 0
}
2018/08/07 09:00:48
authorrossbulat
permlinksafari-push-notifications-complete-setup
voterjoelkenny
weight10000 (100.00%)
Transaction InfoBlock #24854616/Trx 53fb1f2eb8d0fd73f7431bd8fe20b9391dd5ed65
View Raw JSON Data
{
  "block": 24854616,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "safari-push-notifications-complete-setup",
      "voter": "joelkenny",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-08-07T09:00:48",
  "trx_id": "53fb1f2eb8d0fd73f7431bd8fe20b9391dd5ed65",
  "trx_in_block": 25,
  "virtual_op": 0
}
2018/08/06 07:43:06
authorrossbulat
permlinkvitalik-buterin-fireside-chat-breakdown-blockchain-2018-in-zug
voterjoelkenny
weight10000 (100.00%)
Transaction InfoBlock #24824275/Trx 60502fc2d65589b18936cdce2691636e5a5e8317
View Raw JSON Data
{
  "block": 24824275,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "vitalik-buterin-fireside-chat-breakdown-blockchain-2018-in-zug",
      "voter": "joelkenny",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-08-06T07:43:06",
  "trx_id": "60502fc2d65589b18936cdce2691636e5a5e8317",
  "trx_in_block": 8,
  "virtual_op": 0
}
2018/08/06 07:43:06
authorrossbulat
permlinksafari-push-notifications-complete-setup
voterjoelkenny
weight10000 (100.00%)
Transaction InfoBlock #24824275/Trx 3cbd06e25d27a55b7d6240e44503ca65a6452972
View Raw JSON Data
{
  "block": 24824275,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "safari-push-notifications-complete-setup",
      "voter": "joelkenny",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-08-06T07:43:06",
  "trx_id": "3cbd06e25d27a55b7d6240e44503ca65a6452972",
  "trx_in_block": 0,
  "virtual_op": 0
}
2018/07/19 17:36:42
authorrossbulat
body@@ -15672,17 +15672,17 @@ e is no -D +d ebug con @@ -15877,16 +15877,17 @@ may also + wish to @@ -16141,25 +16141,24 @@ inX location -s to handle a @@ -16172,15 +16172,18 @@ int -to +for fir -e +ing a n
json metadata{"tags":["mac","ios","safari","notifications","apn"],"image":["https://cdn.steemitimages.com/DQmdMjxZfYtSNGURA5smD7sUfowcqeBgQSbW6FfZPYDUGuc/safariPush.jpg"],"links":["http://developer.apple.com/","https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/CompanionFile.zip","https://developer.apple.com/account/ios/certificate/","https://developer.apple.com/support/certificates/expiration/","https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/PushNotifications/PushNotifications.html","https://github.com/Gypsyan/APNS_Safari_Push"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkmac
permlinksafari-push-notifications-complete-setup
titleSafari Push Notifications: Complete Setup
Transaction InfoBlock #24318469/Trx 91013c538fda5961a72c837dd8f10ac0f8029bb7
View Raw JSON Data
{
  "block": 24318469,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "@@ -15672,17 +15672,17 @@\n e is no \n-D\n+d\n ebug con\n@@ -15877,16 +15877,17 @@\n may also\n+ \n wish to \n@@ -16141,25 +16141,24 @@\n inX location\n-s\n  to handle a\n@@ -16172,15 +16172,18 @@\n int \n-to\n+for\n  fir\n-e\n+ing\n  a n\n",
      "json_metadata": "{\"tags\":[\"mac\",\"ios\",\"safari\",\"notifications\",\"apn\"],\"image\":[\"https://cdn.steemitimages.com/DQmdMjxZfYtSNGURA5smD7sUfowcqeBgQSbW6FfZPYDUGuc/safariPush.jpg\"],\"links\":[\"http://developer.apple.com/\",\"https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/CompanionFile.zip\",\"https://developer.apple.com/account/ios/certificate/\",\"https://developer.apple.com/support/certificates/expiration/\",\"https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/PushNotifications/PushNotifications.html\",\"https://github.com/Gypsyan/APNS_Safari_Push\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "mac",
      "permlink": "safari-push-notifications-complete-setup",
      "title": "Safari Push Notifications: Complete Setup"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-19T17:36:42",
  "trx_id": "91013c538fda5961a72c837dd8f10ac0f8029bb7",
  "trx_in_block": 6,
  "virtual_op": 0
}
2018/07/16 14:52:36
authorrossbulat
permlinksafari-push-notifications-complete-setup
votersensation
weight10000 (100.00%)
Transaction InfoBlock #24228875/Trx 76cbf807f18fdc5c2d099b5f83647aee6200b19e
View Raw JSON Data
{
  "block": 24228875,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "safari-push-notifications-complete-setup",
      "voter": "sensation",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-16T14:52:36",
  "trx_id": "76cbf807f18fdc5c2d099b5f83647aee6200b19e",
  "trx_in_block": 4,
  "virtual_op": 0
}
2018/07/16 14:08:42
authorrossbulat
body@@ -3820,22 +3820,22 @@ to._%0A%0A* -Export +Obtain ing the @@ -3862,67 +3862,8 @@ cate - .pem file from Keychain to use when sending a notification .%0A_Y @@ -3936,101 +3936,8 @@ ons. - We will export what is needed from Keychain Access and upload it to the notification server. _%0A%0A*
json metadata{"tags":["mac","ios","safari","notifications","apn"],"image":["https://cdn.steemitimages.com/DQmdMjxZfYtSNGURA5smD7sUfowcqeBgQSbW6FfZPYDUGuc/safariPush.jpg"],"links":["http://developer.apple.com/","https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/CompanionFile.zip","https://developer.apple.com/account/ios/certificate/","https://developer.apple.com/support/certificates/expiration/","https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/PushNotifications/PushNotifications.html","https://github.com/Gypsyan/APNS_Safari_Push"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkmac
permlinksafari-push-notifications-complete-setup
titleSafari Push Notifications: Complete Setup
Transaction InfoBlock #24227998/Trx 7cb5b5c67ed58a0e888e5e97877fc4f61347961e
View Raw JSON Data
{
  "block": 24227998,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "@@ -3820,22 +3820,22 @@\n to._%0A%0A* \n-Export\n+Obtain\n ing the \n@@ -3862,67 +3862,8 @@\n cate\n- .pem file from Keychain to use when sending a notification\n .%0A_Y\n@@ -3936,101 +3936,8 @@\n ons.\n- We will export what is needed from Keychain Access and upload it to the notification server.\n _%0A%0A*\n",
      "json_metadata": "{\"tags\":[\"mac\",\"ios\",\"safari\",\"notifications\",\"apn\"],\"image\":[\"https://cdn.steemitimages.com/DQmdMjxZfYtSNGURA5smD7sUfowcqeBgQSbW6FfZPYDUGuc/safariPush.jpg\"],\"links\":[\"http://developer.apple.com/\",\"https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/CompanionFile.zip\",\"https://developer.apple.com/account/ios/certificate/\",\"https://developer.apple.com/support/certificates/expiration/\",\"https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/PushNotifications/PushNotifications.html\",\"https://github.com/Gypsyan/APNS_Safari_Push\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "mac",
      "permlink": "safari-push-notifications-complete-setup",
      "title": "Safari Push Notifications: Complete Setup"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-16T14:08:42",
  "trx_id": "7cb5b5c67ed58a0e888e5e97877fc4f61347961e",
  "trx_in_block": 46,
  "virtual_op": 0
}
2018/07/16 14:03:57
authorrossbulat
permlinksafari-push-notifications-complete-setup
voteryoungogmarqs
weight2 (0.02%)
Transaction InfoBlock #24227903/Trx 037e78ca895ecea5cb4299446aeb27916ee86769
View Raw JSON Data
{
  "block": 24227903,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "safari-push-notifications-complete-setup",
      "voter": "youngogmarqs",
      "weight": 2
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-16T14:03:57",
  "trx_id": "037e78ca895ecea5cb4299446aeb27916ee86769",
  "trx_in_block": 0,
  "virtual_op": 0
}
2018/07/16 13:48:30
authorrossbulat
permlinksafari-push-notifications-complete-setup
voterrossbulat
weight10000 (100.00%)
Transaction InfoBlock #24227594/Trx 1d41a0fdb9402d7826a5168d0dc534e2c9a38f10
View Raw JSON Data
{
  "block": 24227594,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "safari-push-notifications-complete-setup",
      "voter": "rossbulat",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-16T13:48:30",
  "trx_id": "1d41a0fdb9402d7826a5168d0dc534e2c9a38f10",
  "trx_in_block": 133,
  "virtual_op": 0
}
2018/07/16 13:45:27
authorrossbulat
permlinksafari-push-notifications-complete-setup
votersteeming-hot
weight400 (4.00%)
Transaction InfoBlock #24227533/Trx 9157b6332656493fb41c813f558c4fde71b7adae
View Raw JSON Data
{
  "block": 24227533,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "safari-push-notifications-complete-setup",
      "voter": "steeming-hot",
      "weight": 400
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-16T13:45:27",
  "trx_id": "9157b6332656493fb41c813f558c4fde71b7adae",
  "trx_in_block": 25,
  "virtual_op": 0
}
2018/07/16 13:45:21
authorrossbulat
body#### The walkthrough that stops you pulling your hair out ![safariPush.jpg](https://cdn.steemitimages.com/DQmdMjxZfYtSNGURA5smD7sUfowcqeBgQSbW6FfZPYDUGuc/safariPush.jpg) Safari Push Notifications is an Apple developer service that delivers notifications directly to your Mac. Beyond the web app notification use case, it is a useful tool for organisations to deliver notifications directly to their teams — without spending an additional $299 for an enterprise developer licence for in-house applications. If you have backend web services, mission critial processes that can’t afford downtime, or real time market analysis being processed behind the scenes, Safari Push Notifications are very useful for keeping you in the loop without spamming email or developing custom apps just for status updates. If you wish to integrate SPNs, an <a href="http://developer.apple.com/" target="_blank">Apple Developer Licence</a> is required, however this article also provides good insights for those contemplating setting up SPNs, or just for the curious wondering how they work. Apple provide a <a href="http://developer.apple.com/" target="_blank">comprehensive integration guide</a> for implementing the service. However, for a variety of reasons — I suspect mostly because of the broad range of protocols used in the service — integrating can cause headaches. Here are some pretty serious problems I have found integrating SPNs over the years: * Projects that have broken code, with no logging functionality * Permission problems on the server preventing log reporting * Push packages not being configured correctly (if you’re new to SPNs, we will go over what your push package consists of) * Apple miss vital configuration documentation, like being compulsory to match the amount of notification arguments with how many URL parameters you configured in your website.json file; if they are blank, an empty string is required. When an error occurs and you do not have logging functioning, paranoia kicks in. You begin to wonder: Is my certificate valid? Is SELinux blocking the Safari Agent? Did I use the correct encryption function? Is this push package zipped up correctly? This guide will hopefully give you confidence in your process management and maintain a coherent way of getting your service implemented. What will be covered in small coherent steps: * Generating your website push certificate. _An Apple provided certificate from your developer portal is needed in order to send notifications._ * Configuring your raw push package folder, and then using the <a href="https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/CompanionFile.zip" target="_blank">companion PHP file</a> (link also provided below) to zip up your final push package. _Your “push package” is a folder of icons and configurations that is used by each Mac that subscribes to your notification service._ * Configuring your web server to handle Safari Agent requests. I will be using NginX to route 2 requests that Safari Agent calls. _When a client attemptes to subscribe to your service, a Safari Agent (from the client’s mac) will make a call to your server to fetch your push package. We need to handle these requests and present the package as a zip folder._ * Running the front end Javascript to subscribe to your notifications, and getting the device token returned. _Granting a client access to your notifications is very simple using Javascript. If a valid push package is returned, access will be granted and a device token is given in a JSON response. A device token is a unique identifier for each Mac that subscribes to the notification service. When sending a notification, the device token determines which Mac the notification will be sent to._ * Exporting the Apple WWDRCA certificate .pem file from Keychain to use when sending a notification. _Yes, another certificate is needed when actually sending notifications. We will export what is needed from Keychain Access and upload it to the notification server._ * Configuring a PHP script to connect to Apple’s notification service gateway and send a notification. _Here we will actually deliver a notification! The script provided here is written in PHP due to it being readily available on Github, but you are by no means limited to using PHP._ Let’s run through the process. #### Generating your Website Push Certificate SPNs require a certificate from Apple, generated from your developer account. Do the following in your <a href="https://developer.apple.com/account/ios/certificate/" target="_blank">Apple Developer Certificates</a> section to generate your Push ID certificate. * Visit the **Website Push IDs** section under **Certificates, Identifiers & Profiles** * Click the `+` icon on the top right to add a new Website Push ID * Description: Can be your service name. * Identifier: typically `web.com.domain.appname`. If Medium were creating a notification service, they might use `web.com.medium.stories` for example. Click **Continue**, **Register**, and **Done**. * If you now go to Edit the record, we can now create a certificate for the Push service. Do that by clicking **Create Certificate**. * At this stage you need a CSR from your Keychain. On your Mac, open **Keychain Access** and from the top menu, go to **Keychain Access**, **Certificate Assistant**, **Request a Certificate from a Certificate Authority**. * Fill in your email address, and Common Name can be the identifier you used for your Push ID (`web.com.domain.appname`). Change **Request Is** to **Save to Disk**. * Continue and save the certificate, on your Desktop perhaps for easy access. * With this new file, go back to Apple Developer and upload the certificate where we last left off. Click **Continue**, then **Download** the certificate. * Now, back in Keychain Access, make sure the Login keychain is selected on the upper left menu, and My Certificates on the lower left menu. Now drag your newly downloaded certificate into that list. _(Double clicking the certificate to open in Keychain may fail depending on what state the app is in)_ * Right click the certificate in Keychain, and Export it as a *.p12*. You will be prompted to input a password. Do so and remember it. #### Uploading certificates to server and converting to .pem We are almost done with the push certificates. Login to your server and create a directory dedicated to the push service. Lets say `/var/www/safari.push/`. * Create the directory: `sudo mkdir /var/www/safari.push` * Create a certs directory to store the certificates: `sudo mkdir /var/www/safari.push/certs` * Change user permissions to your user in order to upload the certificates: `sudo chown -R your_user /var/www/safari.push/certs` * Upload your **certificate.cer** file and **certificate.p12** file, using SFTP or another secure protocol. * Now generate a .pem file from your .p12 file. To do this, run the following: `cd /var/www/safari.push/certs` `openssl pkcs12 -in certificate.p12 -out certificate.pem -nodes` #### The Apple Worldwide Developer Relations Intermediate Certificate The Apple WWDRCA certificate is also needed later on when sending notifications. <a href="https://developer.apple.com/support/certificates/expiration/" target="_blank">Download it from here</a> and also upload it to your `certs` directory. Now with the certificates out of the way, let’s move on to the push package. #### Configuring your raw push package Your push package is a zip folder of files that are needed to get the notification service working. We set up a raw package consisting of icons and a website.json file, then run a PHP script to generate a couple more files. _All that is needed in your raw push package are your icons and website.json file_. Apple document a signature and manifest.json file, but these are generated with the <a href="https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/CompanionFile.zip" target="_blank">PHP Companion Script</a> that follows this step. This is why we are calling this folder your **_raw_ push package**. The final push package will be a zip folder that the PHP script will generate. Within your safari.push directory, create a `pushPackage.raw` folder and files within to match the following structure: ``` pushPackage.raw website.json icon.iconset [email protected] icon_16x16.png [email protected] icon_32x32.png [email protected] icon_128x128.png ``` #### icon.iconset icon.iconset is a folder, containing your icons. These icons are displayed when notifications are delivered, as well as in Safari preferences, keep them consistent. Make the 2x images twice as big as their figures. e.g. 16x16@2x is actually a 32 x 32px image. #### website.json This is just a JSON formatted file with some details about your service. Let’s run through it. ``` { "websiteName": "Your Website Name", "websitePushID": "web.com.domain.appname", "allowedDomains": ["https://yourdomain.com"], "urlFormatString": "http://yourdomain.com/notification/%@/%@", "authenticationToken": "a_random_string_atleast_16_characters", "webServiceURL": "https://yourdomain.com/push" } ``` * `websiteName`: Can use your Website Push ID Description to keep things consistant. * `websitePushId`: Super important to be the same as your Apple Push ID. * `allowedDomains`: An array of top level domains you want whitelisted to grant notifications. * `urlFormatString`: The URL a user is taken to when they click a _received notification_. Note how many `%@` there are at the end — this is how many arguments your URL supports, and **must match** the amount of arguments you place in your notification payload (more on the payload later). * `authenticationToken`: A random string at least 16 characters long. * `webServiceUrl`: The URL that handles Safari Agent requests when granting / removing subscribers, and writing logs. **This URL must point to your _`/var/www/safari.push`_ folder in this guide**. We need to configure NginX to do that, in the next section. #### Configure the PHP Companion File The companion file will be the index file of your `safari.push` directory; its job is to generate a valid push package upon request. Lets go ahead and configure that file: * <a href="https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/CompanionFile.zip" target="_blank">Download it from here</a> and change the name to `index.php`. Upload it to your `/var/www/safari.push` directory. The script is not complete. Make the following changes: * `$certificate_password` — change to the password you assigned earlier * `$certificate_path` — change to certs/certificate.p12 * Locate the `create_signature` function, and within it the following like: `openssl_pkcs7_sign(“$package_dir/manifest.json”, $signature_path, $cert_data, $private_key, array(), PKCS7_BINARY | PKCS7_DETACHED);` This line is incomplete, as the apple WWCRCA certificate also needs to be supplied as an additional argument. Change it to the following: `openssl_pkcs7_sign(“$package_dir/manifest.json”, $signature_path, $cert_data, $private_key, array(), PKCS7_BINARY | PKCS7_DETACHED,”/var/www/safari.push/certs/AppleWWDRCA.pem”);` Notice that at the end of the file, a push package is echoed as a zip folder. this triggers a download if you visit this page in your web browser. #### Configuring NginX to handle Safari Agent Requests Even though you are not limited to NginX, I will be using it here to demonstrate how to route the safari agent requests. In this guide I will focus on 2 endpoints, downloading the push package and logging errors. These endpoints are **webServiceURL/version/pushPackages/websitePushID** and **webServiceURL/version/log** respectively. Use the following locations configuration as a template for your own configuration: ``` #Safari Push Package Request location /push/v2/pushPackages/web.com.domain.appname { add_header "Access-Control-Allow-Origin" *; allow all; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/safari.push/index.php; include fastcgi_params; } #Safari Push Log location /push/v2/log { add_header "Access-Control-Allow-Origin" *; allow all; fastcgi_pass 127.0.0.1:9000; fastcgi_index log.php; fastcgi_param SCRIPT_FILENAME /var/www/safari.push/log.php; include fastcgi_params; } ``` There are some things to run through here: * Remember to change the web.com.pushid value to your Push ID. * Safari Agent may fall back to **v1** instead of **v2** in some cases, so check out your NginX `/var/log/nginx/access.log` and `/var/log/nginx/error.log` if things do not seem to be working. * The log endpoint points to the log.php file in your safari.push folder. The contents of this file just handles the error received, and stores it in a log file: ``` <?php $file = 'log'; $current = file_get_contents($file); $current .= file_get_contents("php://input") . "\n"; file_put_contents($file, $current); ``` You may wish to run a touch `/var/www/safari.push/log` command now to initiate that file. At this point, visit the push package endpoint (`https://yourdomain.com/v2/pushPackages/web.com.domain.appname`) in your browser to check the package is being downloaded. If not, check the NginX access logs to troubleshoot the issue. #### Run client Javascript to Grant Access / Retreive Device Token It is time to put our push package and server setup to the test and request access to our notification service. This is quite easy to do — * Copy and paste Figure 2.3 from the <a href="https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/PushNotifications/PushNotifications.html" target="_blank">Apple documentation</a> into your front end page. * Find the `permissionData.permission === 'granted'` if statement and include a `console.log(permissionData);` in there. Now, if everything is working well, you should be able to refresh the page and be greeted with an **Allow** or **Deny** notification dialogue prompt. Upon Allowing, refresh the page and check your **Javascript Console**. The device token should be waiting for you to copy, under `permissionData.deviceToken`. In real world use, you should handle the response and display UI / store the device token in your database associated with a user. For this guide we are just obtaining the device token so we can then test notifications. #### Sending Live Notification You are now ready to send a live notification. We are going to refer to a PHP script that has been written to handle this function already. Check out <a href="https://github.com/Gypsyan/APNS_Safari_Push" target="_blank">https://github.com/Gypsyan/APNS_Safari_Push</a>, a ready-made PHP script for sending notifications. Well, almost. Let’s run down some things to look out for in this file: * `$certificate` needs to point to your .pem certificate. * `$passphrase` needs to be your certificate passphrase. * `$token` — the device token to send the notification to. This is not very flexible when you want the same notification to go to multiple users. For that, change this to an array of tokens and create a for loop from line 62–100. * __Big Issue__: The notification will fail if the arguments supplied do not match your website.json argument count ( remember the %@?). For this reason it may be worth testing `$body` with a simple JSON string before converting an array to JSON. * There is no Debug control here, echos are everywhere. You may wish to create a DEBUG environment variable to remove all that feedback in production. * Connect a database to the script to make it smarter. You may alsowish to $_POST the notification details, then verify them within your own systems. #### Further Implementation At this stage you have a working notification system. To further improve the system, you could do the following: * Configure an additional NginX locations to handle an endpoint to fire a notification (using the safari_push.php script). * Configure an additional NginX location for routing the notifications, setting up the endpoint for your `urlFormatString` within website.json. Once a user clicks the notification, this file will be responsible for taking the user to a webpage or deep linking to somewhere else. * Better front end management. When do you want to flag the notification Allow / Deny dialogue? Where do you want to set up the unsubscribe functionality? These are all things to consider on top of a working fundamental system.
json metadata{"tags":["mac","ios","safari","notifications","apn"],"image":["https://cdn.steemitimages.com/DQmdMjxZfYtSNGURA5smD7sUfowcqeBgQSbW6FfZPYDUGuc/safariPush.jpg"],"links":["http://developer.apple.com/","https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/CompanionFile.zip","https://developer.apple.com/account/ios/certificate/","https://developer.apple.com/support/certificates/expiration/","https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/PushNotifications/PushNotifications.html","https://github.com/Gypsyan/APNS_Safari_Push"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkmac
permlinksafari-push-notifications-complete-setup
titleSafari Push Notifications: Complete Setup
Transaction InfoBlock #24227531/Trx ad2138728c38e6b9961f40db8dbb1d2aca9ecce8
View Raw JSON Data
{
  "block": 24227531,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "#### The walkthrough that stops you pulling your hair out\n\n![safariPush.jpg](https://cdn.steemitimages.com/DQmdMjxZfYtSNGURA5smD7sUfowcqeBgQSbW6FfZPYDUGuc/safariPush.jpg)\n\n\nSafari Push Notifications is an Apple developer service that delivers notifications directly to your Mac. Beyond the web app notification use case, it is a useful tool for organisations to deliver notifications directly to their teams — without spending an additional $299 for an enterprise developer licence for in-house applications.\n\nIf you have backend web services, mission critial processes that can’t afford downtime, or real time market analysis being processed behind the scenes, Safari Push Notifications are very useful for keeping you in the loop without spamming email or developing custom apps just for status updates.\n\nIf you wish to integrate SPNs, an <a href=\"http://developer.apple.com/\" target=\"_blank\">Apple Developer Licence</a> is required, however this article also provides good insights for those contemplating setting up SPNs, or just for the curious wondering how they work.\n\nApple provide a <a href=\"http://developer.apple.com/\" target=\"_blank\">comprehensive integration guide</a> for implementing the service. However, for a variety of reasons — I suspect mostly because of the broad range of protocols used in the service — integrating can cause headaches.\n\nHere are some pretty serious problems I have found integrating SPNs over the years:\n\n\n* Projects that have broken code, with no logging functionality\n* Permission problems on the server preventing log reporting\n* Push packages not being configured correctly (if you’re new to SPNs, we will go over what your push package consists of)\n* Apple miss vital configuration documentation, like being compulsory to match the amount of notification arguments with how many URL parameters you configured in your website.json file; if they are blank, an empty string is required.\n\nWhen an error occurs and you do not have logging functioning, paranoia kicks in. You begin to wonder: Is my certificate valid? Is SELinux blocking the Safari Agent? Did I use the correct encryption function? Is this push package zipped up correctly?\n\nThis guide will hopefully give you confidence in your process management and maintain a coherent way of getting your service implemented. What will be covered in small coherent steps:\n\n* Generating your website push certificate.\n_An Apple provided certificate from your developer portal is needed in order to send notifications._\n\n* Configuring your raw push package folder, and then using the <a href=\"https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/CompanionFile.zip\" target=\"_blank\">companion PHP file</a> (link also provided below) to zip up your final push package.\n_Your “push package” is a folder of icons and configurations that is used by each Mac that subscribes to your notification service._\n\n* Configuring your web server to handle Safari Agent requests. I will be using NginX to route 2 requests that Safari Agent calls.\n_When a client attemptes to subscribe to your service, a Safari Agent (from the client’s mac) will make a call to your server to fetch your push package. We need to handle these requests and present the package as a zip folder._\n\n* Running the front end Javascript to subscribe to your notifications, and getting the device token returned.\n_Granting a client access to your notifications is very simple using Javascript. If a valid push package is returned, access will be granted and a device token is given in a JSON response. A device token is a unique identifier for each Mac that subscribes to the notification service. When sending a notification, the device token determines which Mac the notification will be sent to._\n\n* Exporting the Apple WWDRCA certificate .pem file from Keychain to use when sending a notification.\n_Yes, another certificate is needed when actually sending notifications. We will export what is needed from Keychain Access and upload it to the notification server._\n\n* Configuring a PHP script to connect to Apple’s notification service gateway and send a notification.\n_Here we will actually deliver a notification! The script provided here is written in PHP due to it being readily available on Github, but you are by no means limited to using PHP._\n\nLet’s run through the process.\n\n#### Generating your Website Push Certificate\n\nSPNs require a certificate from Apple, generated from your developer account. Do the following in your <a href=\"https://developer.apple.com/account/ios/certificate/\" target=\"_blank\">Apple Developer Certificates</a> section to generate your Push ID certificate.\n\n* Visit the **Website Push IDs** section under **Certificates, Identifiers & Profiles**\n\n* Click the `+` icon on the top right to add a new Website Push ID\n\n* Description: Can be your service name.\n\n* Identifier: typically `web.com.domain.appname`. If Medium were creating a notification service, they might use `web.com.medium.stories` for example. Click **Continue**, **Register**, and **Done**.\n\n* If you now go to Edit the record, we can now create a certificate for the Push service. Do that by clicking **Create Certificate**.\n\n* At this stage you need a CSR from your Keychain. On your Mac, open **Keychain Access** and from the top menu, go to **Keychain Access**, **Certificate Assistant**, **Request a Certificate from a Certificate Authority**.\n\n* Fill in your email address, and Common Name can be the identifier you used for your Push ID (`web.com.domain.appname`). Change **Request Is** to **Save to Disk**.\n\n* Continue and save the certificate, on your Desktop perhaps for easy access.\n\n* With this new file, go back to Apple Developer and upload the certificate where we last left off. Click **Continue**, then **Download** the certificate.\n\n* Now, back in Keychain Access, make sure the Login keychain is selected on the upper left menu, and My Certificates on the lower left menu. Now drag your newly downloaded certificate into that list.\n_(Double clicking the certificate to open in Keychain may fail depending on what state the app is in)_\n\n* Right click the certificate in Keychain, and Export it as a *.p12*. You will be prompted to input a password. Do so and remember it.\n\n#### Uploading certificates to server and converting to .pem\n\nWe are almost done with the push certificates. Login to your server and create a directory dedicated to the push service. Lets say `/var/www/safari.push/`.\n\n* Create the directory: `sudo mkdir /var/www/safari.push`\n\n* Create a certs directory to store the certificates: `sudo mkdir /var/www/safari.push/certs`\n\n* Change user permissions to your user in order to upload the certificates: `sudo chown -R your_user /var/www/safari.push/certs`\n\n* Upload your **certificate.cer** file and **certificate.p12** file, using SFTP or another secure protocol.\n\n* Now generate a .pem file from your .p12 file. To do this, run the following: \n`cd /var/www/safari.push/certs`\n`openssl pkcs12 -in certificate.p12 -out certificate.pem -nodes`\n\n#### The Apple Worldwide Developer Relations Intermediate Certificate\n\nThe Apple WWDRCA certificate is also needed later on when sending notifications. <a href=\"https://developer.apple.com/support/certificates/expiration/\" target=\"_blank\">Download it from here</a> and also upload it to your `certs` directory.\n\nNow with the certificates out of the way, let’s move on to the push package.\n\n#### Configuring your raw push package\n\nYour push package is a zip folder of files that are needed to get the notification service working. We set up a raw package consisting of icons and a website.json file, then run a PHP script to generate a couple more files.\n\n_All that is needed in your raw push package are your icons and website.json file_. Apple document a signature and manifest.json file, but these are generated with the <a href=\"https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/CompanionFile.zip\" target=\"_blank\">PHP Companion Script</a> that follows this step.\n\nThis is why we are calling this folder your **_raw_ push package**. The final push package will be a zip folder that the PHP script will generate.\n\nWithin your safari.push directory, create a `pushPackage.raw` folder and files within to match the following structure:\n\n```\npushPackage.raw \n    website.json\n    icon.iconset   \n        [email protected]  \n        icon_16x16.png  \n        [email protected]  \n        icon_32x32.png\n        [email protected]  \n        icon_128x128.png\n```\n\n#### icon.iconset\n\nicon.iconset is a folder, containing your icons. These icons are displayed when notifications are delivered, as well as in Safari preferences, keep them consistent. Make the 2x images twice as big as their figures. e.g. 16x16@2x is actually a 32 x 32px image.\n\n#### website.json\n\nThis is just a JSON formatted file with some details about your service. Let’s run through it.\n\n```\n{\n    \"websiteName\": \"Your Website Name\",\n    \"websitePushID\": \"web.com.domain.appname\",\n    \"allowedDomains\": [\"https://yourdomain.com\"],\n    \"urlFormatString\": \"http://yourdomain.com/notification/%@/%@\",\n    \"authenticationToken\": \"a_random_string_atleast_16_characters\",\n    \"webServiceURL\": \"https://yourdomain.com/push\"\n}\n```\n\n* `websiteName`: Can use your Website Push ID Description to keep things consistant.\n\n* `websitePushId`: Super important to be the same as your Apple Push ID.\n\n* `allowedDomains`: An array of top level domains you want whitelisted to grant notifications.\n\n* `urlFormatString`: The URL a user is taken to when they click a _received notification_. Note how many `%@` there are at the end — this is how many arguments your URL supports, and **must match** the amount of arguments you place in your  notification payload (more on the payload later).\n\n* `authenticationToken`: A random string at least 16 characters long.\n\n* `webServiceUrl`: The URL that handles Safari Agent requests when granting / removing subscribers, and writing logs. **This URL must point to your _`/var/www/safari.push`_ folder in this guide**. We need to configure NginX to do that, in the next section.\n\n#### Configure the PHP Companion File\n\nThe companion file will be the index file of your `safari.push` directory; its job is to generate a valid push package upon request. Lets go ahead and configure that file:\n\n* <a href=\"https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/CompanionFile.zip\" target=\"_blank\">Download it from here</a> and change the name to `index.php`. Upload it to your `/var/www/safari.push` directory.\n\nThe script is not complete. Make the following changes:\n\n* `$certificate_password` — change to the password you assigned earlier\n\n* `$certificate_path` — change to certs/certificate.p12\n\n* Locate the `create_signature` function, and within it the following like: `openssl_pkcs7_sign(“$package_dir/manifest.json”, $signature_path, $cert_data, $private_key, array(), PKCS7_BINARY | PKCS7_DETACHED);`\n\nThis line is incomplete, as the apple WWCRCA certificate also needs to be supplied as an additional argument. Change it to the following:\n\n`openssl_pkcs7_sign(“$package_dir/manifest.json”, $signature_path, $cert_data, $private_key, array(), PKCS7_BINARY | PKCS7_DETACHED,”/var/www/safari.push/certs/AppleWWDRCA.pem”);`\n\nNotice that at the end of the file, a push package is echoed as a zip folder. this triggers a download if you visit this page in your web browser.\n\n#### Configuring NginX to handle Safari Agent Requests\n\nEven though you are not limited to NginX, I will be using it here to demonstrate how to route the safari agent requests.\n\nIn this guide I will focus on 2 endpoints, downloading the push package and logging errors. These endpoints are **webServiceURL/version/pushPackages/websitePushID** and **webServiceURL/version/log** respectively.\n\nUse the following locations configuration as a template for your own configuration:\n\n```\n#Safari Push Package Request\nlocation /push/v2/pushPackages/web.com.domain.appname {\n      add_header \"Access-Control-Allow-Origin\"  *;\n      allow all;\n      fastcgi_pass 127.0.0.1:9000;\n      fastcgi_index index.php;\n      fastcgi_param SCRIPT_FILENAME /var/www/safari.push/index.php;\n      include fastcgi_params;\n}\n\n#Safari Push Log\nlocation /push/v2/log {\n     \n      add_header \"Access-Control-Allow-Origin\"  *;\n      allow all;\n      fastcgi_pass 127.0.0.1:9000;\n      fastcgi_index log.php;\n      fastcgi_param SCRIPT_FILENAME /var/www/safari.push/log.php;\n      include fastcgi_params;\n}\n```\n\nThere are some things to run through here:\n\n* Remember to change the web.com.pushid value to your Push ID.\n\n* Safari Agent may fall back to **v1** instead of **v2** in some cases, so check out your NginX `/var/log/nginx/access.log` and `/var/log/nginx/error.log` if things do not seem to be working.\n\n* The log endpoint points to the log.php file in your safari.push folder. The contents of this file just handles the error received, and stores it in a log file:\n\n```\n<?php\n$file = 'log';\n$current = file_get_contents($file);\n$current .= file_get_contents(\"php://input\") . \"\\n\";\n \nfile_put_contents($file, $current);\n```\n\nYou may wish to run a touch `/var/www/safari.push/log` command now to initiate that file.\n\nAt this point, visit the push package endpoint (`https://yourdomain.com/v2/pushPackages/web.com.domain.appname`) in your browser to check the package is being downloaded. If not, check the NginX access logs to troubleshoot the issue.\n\n#### Run client Javascript to Grant Access / Retreive Device Token\n\nIt is time to put our push package and server setup to the test and request access to our notification service. This is quite easy to do —\n\n* Copy and paste Figure 2.3 from the <a href=\"https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/PushNotifications/PushNotifications.html\" target=\"_blank\">Apple documentation</a> into your front end page.\n\n* Find the `permissionData.permission === 'granted'` if statement and include a `console.log(permissionData);` in there.\n\nNow, if everything is working well, you should be able to refresh the page and be greeted with an **Allow** or **Deny** notification dialogue prompt. Upon Allowing, refresh the page and check your **Javascript Console**. The device token should be waiting for you to copy, under `permissionData.deviceToken`.\n\nIn real world use, you should handle the response and display UI / store the device token in your database associated with a user. For this guide we are just obtaining the device token so we can then test notifications.\n\n#### Sending Live Notification\n\nYou are now ready to send a live notification. We are going to refer to a PHP script that has been written to handle this function already.\n\nCheck out <a href=\"https://github.com/Gypsyan/APNS_Safari_Push\" target=\"_blank\">https://github.com/Gypsyan/APNS_Safari_Push</a>, a ready-made PHP script for sending notifications. Well, almost. Let’s run down some things to look out for in this file:\n\n* `$certificate` needs to point to your .pem certificate.\n\n* `$passphrase` needs to be your certificate passphrase.\n\n* `$token` — the device token to send the notification to. This is not very flexible when you want the same notification to go to multiple users. For that, change this to an array of tokens and create a for loop from line 62–100.\n\n* __Big Issue__: The notification will fail if the arguments supplied do not match your website.json argument count ( remember the %@?). For this reason it may be worth testing `$body` with a simple JSON string before converting an array to JSON.\n\n* There is no Debug control here, echos are everywhere. You may wish to create a DEBUG environment variable to remove all that feedback in production.\n\n* Connect a database to the script to make it smarter. You may alsowish to $_POST the notification details, then verify them within your own systems.\n\n#### Further Implementation\n\nAt this stage you have a working notification system. To further improve the system, you could do the following:\n\n* Configure an additional NginX locations to handle an endpoint to fire a notification (using the safari_push.php script).\n\n* Configure an additional NginX location for routing the notifications, setting up the endpoint for your `urlFormatString` within website.json. Once a user clicks the notification, this file will be responsible for taking the user to a webpage or deep linking to somewhere else.\n\n* Better front end management. When do you want to flag the notification Allow / Deny dialogue? Where do you want to set up the unsubscribe functionality? These are all things to consider on top of a working fundamental system.",
      "json_metadata": "{\"tags\":[\"mac\",\"ios\",\"safari\",\"notifications\",\"apn\"],\"image\":[\"https://cdn.steemitimages.com/DQmdMjxZfYtSNGURA5smD7sUfowcqeBgQSbW6FfZPYDUGuc/safariPush.jpg\"],\"links\":[\"http://developer.apple.com/\",\"https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/CompanionFile.zip\",\"https://developer.apple.com/account/ios/certificate/\",\"https://developer.apple.com/support/certificates/expiration/\",\"https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/NotificationProgrammingGuideForWebsites/PushNotifications/PushNotifications.html\",\"https://github.com/Gypsyan/APNS_Safari_Push\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "mac",
      "permlink": "safari-push-notifications-complete-setup",
      "title": "Safari Push Notifications: Complete Setup"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-16T13:45:21",
  "trx_id": "ad2138728c38e6b9961f40db8dbb1d2aca9ecce8",
  "trx_in_block": 16,
  "virtual_op": 0
}
2018/07/11 15:54:09
authorrossbulat
permlinkvitalik-buterin-fireside-chat-breakdown-blockchain-2018-in-zug
votersensation
weight10000 (100.00%)
Transaction InfoBlock #24086147/Trx a25c56cb2a873b638ab13aec6079d1dc3134751d
View Raw JSON Data
{
  "block": 24086147,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "vitalik-buterin-fireside-chat-breakdown-blockchain-2018-in-zug",
      "voter": "sensation",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-11T15:54:09",
  "trx_id": "a25c56cb2a873b638ab13aec6079d1dc3134751d",
  "trx_in_block": 31,
  "virtual_op": 0
}
2018/07/11 15:17:36
authorrossbulat
permlinkvitalik-buterin-fireside-chat-breakdown-blockchain-2018-in-zug
voterrossbulat
weight10000 (100.00%)
Transaction InfoBlock #24085417/Trx 9c3e2d545c8abe0dc2e24d94305c59b6c041309f
View Raw JSON Data
{
  "block": 24085417,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "vitalik-buterin-fireside-chat-breakdown-blockchain-2018-in-zug",
      "voter": "rossbulat",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-11T15:17:36",
  "trx_id": "9c3e2d545c8abe0dc2e24d94305c59b6c041309f",
  "trx_in_block": 50,
  "virtual_op": 0
}
2018/07/11 15:17:24
authorrossbulat
body![vitalikBreakdown.jpg](https://cdn.steemitimages.com/DQmfNanZEfqznTTV9QNFjvbEVPkFw8byFrkGpy7mt4dmDK1/vitalikBreakdown.jpg) Vitalik Buterin took part in a "fireside chat" at the Techcrunch Blockchain conference 2018 in Zug. In this article I break down what was talked about and highlight some key topics for further reading. Scaling, privacy and security are what Vitalik wants to focus on with Ethereum's growth in the coming months. Scaling was covered in Vitalik's main talk so this chat was more about the latter subjects. #### Critics of Proof of Stake *Proof of stake (PoS) is a consensus algorithm being developed in an Ethereum upgrade proposal named Casper. The project is at <a href="https://github.com/ethereum/casper" target="_blank">https://github.com/ethereum/casper</a>, whereas a full FAQ breakdown can be found at <a href="https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQs" target="_blank">https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQs</a>.* **Buterin:** _**Back in 2013 when GHash briefly had 51%, that was a big scare moment - and eventually GHash backed down and voluntarily dropped themselves to 40%. But now it has happened a second time, people are not talking so much.  … Proof of work is like rich get richer squared. So if we can get a rich getting richer to the power of 1 that already is a substantial improvement.**_ From a pool's perspective, there are real incentives to hide the level of centralisation from the public. Reasons range from PR reasons of the pool company to the overall reputation of Bitcoin - but it is quite clear that the top 3 mining pools have half of the Bitcoin hash power. We can refer to the geographic concentration in relation to the floods that happened in Sichuan, China in early July that knocked around 20% of the hashpower offline. This is a clear indication of centralised PoW. PoS is somewhat immune to geographic concentration due to the less strict requirements for operating it. #### Security, Ethereum Hack Headlines Ethereum hack is a great headline for FUD news, and for the ill informed, may believe that the Ethereum network has indeed been hacked. These headlines however stem from smart contracts having buggy code and consequently leading them to become compromised, often resulting in a loss of funds. The question here is: how can we decrease the rate at which smart contracts are being deployed with bugs and consequently become abused? One of the important things is the continued development of better programming languages and standards. One of the examples is a recent high level programming language was released in Beta called Vyper. *Head over to <a href="https://github.com/ethereum/vyper" target="_blank">https://github.com/ethereum/vyper</a> to check out the project. There exists a coherent overview of the language and its goals, as well as installation and smart contract compilation instructions. For more in depth documentation visit the ReadTheDocs site, at <a href="http://vyper.readthedocs.io/en/latest/" target="_blank">http://vyper.readthedocs.io/en/latest/</a>.* Vyper was designed from the start to be more restrictive and target readability and security to make it harder to write deliberately misleading code. It is a Python like language with a stronger type system. Python, although not the speediest language under the hood, is praised for its structural simplicity and friendly learning curve. It makes sense to introduce a language to the Ethereum ecosystem with similar characteristics to encourage developer adoption, and less bugs. Apparently Vyper looked at the 10 biggest screw-ups in Solidity programming history and are trying to make features that deliberately make those as hard as possible, or impossible entirely. Grants are being given to groups aiming to create another high level language that was based more on functional programming principles. The Ethereum Foundation announced 2 subsidy programs back January 2018 to encourage research and adoption into the ecosystem. Check out this <a href="https://www.coindesk.com/vitalik-buterin-announces-new-subsidies-for-ethereum-scaling-research/" target="_blank">Coindesk article</a> that covered the announcement. There have been various improvements in Solidity over the past couple of years like safe math libraries and stricter checks. The community is very actively developing new ways to make the Solidity language more secure and less prone to bugs. I will naturally become safer over time. Having good code samples and code templates will be another key factor in bug free code. E.g. if you want a multi sig wallet, where do you go and whose code do you implement? According to Buterin, there should just be standardised versions that have been formally audited / verified and ready to use. It is not there yet but is getting closer. **Buterin:** _**With better standards, better templates and better defaults, we can really start reducing the smart contract security issues by a lot, probably to the point where like at some point private key security once again becomes the dominant issue, and that is something we want to tackle as well.**_ #### Multi-sig bug and locked funds In regards to locked funds (funds locked in a smart contract as a consequence of a bug or poor logic, with no means of recovery without a network modification), there are 2 ways that money could theoretically move. The first way is if the Ethereum community agrees on a hard fork. This fork would modify the smart contract and be able to recover the funds associated with it. But there is negative sentiment on doing that, at least in the short term. Historically, hard forking the network to recover human mistakes is not something the Ethereum community is interested in. And if they were, they now support Ethereum Classic. The second way to recover is if someone makes another blockchain which hard spoons or airdrops all the ETH account balances, but makes the one modification to unlock the wallet. This way the ETH blockchain’s immutability will not be compromised. To familiarise yourself on the hard spoon concept, check out <a href="https://cryptovest.com/education/the-hard-spoon-concept-explained/" target="_blank">this article from Cryptovest</a>. Ethereum is community driven, and Vitalik wants to stay away from becoming too heavily involved in making high level decisions. #### Vitalik as a Celebrity Driving Force and Chief Scientist behind Ethereum Jokes about parrallel to Microsoft and who is Vitaliks Steve Ballmer? took place on stage. The chief executive director (didn’t catch his name) of the foundation has been doing a great job at holding the fort on the administrative side to make sure the foundation continues to “smoothly role”, as well as managing the bureaucracy; a side Vitalik has been stepping away from for a while. Strong individual team leaders and strong managers exist, with a growing team on research and development. An important difference between the Ethereum foundation and Microsoft (or pretty much all corporations) is that Ethereum tries very hard to be a decentralised organisation. Ethereum try very hard to not have inside / outside divides. There are multiple ways to interact with the Ethereum community: * Become a full time contributor * Apply for a grant (The budget for the grant program is larger than the budget for the foundation’s full time staff. * Work for a project in the Ethereum ecosystem (e.g. OmiseGo) and in time end up collaborating with Ethereum researchers closely. The questions of who is on the biggest pay role, or who are the core members of the team, often end up diverging a lot. #### Talk on Privacy Vitalik is confident that Ethereum is “Absolutely” moving more in the direction of ZCash and zero proof technologies. E.g. shielding the sender, receiver and amount of the transaction from outsiders, even though it is publically verified and guaranteed on the Blockchain. In October 2017, the Byzantium upgrade was deployed that optimized cryptographic and zero knowledge proof constructions, and there are already projects that are starting to use them to build various kinds of privacy preserving applications. One person in the community is building a ring signature mixing contract. “Barry Whitehat”, who released the project on Reddit, said that he used ZK-SNARKs to build a zero knowledge shielded token that is already running on the testnet, and could theoretically run on the mainnet tomorrow. In the longer term: Raw virtual machine optimization. Not optimised for cryptography today. If its faster more kinds of cryptographic primitives can be implemented. **Buterin:** _**The current VM can be good for certain kinds of 256bit stuff, but there is a much wider space of it that is still not performing well right now, but we have efforts like web assembly and so forth to try to really improve on that.**_ Ethereum plan to do a lot more on SNARKs in the future, participating and supporting development of zero knowledge and proof technologies including the tooling around SNARKs. Trying to see what it will take to make the Ethereum blockchain to be friendly towards SNARKs, Buterin suggests supporting finite field operations amongst other things in SNARK verifications, like optimised hash functions. The takeaway here: the community is still developing the building blocks for privacy preserving schemes, and is also planning to look at computing models that can be built on top of Ethereum. The ultimate goal is to develop a smart contract privacy preserving ecosystem that is as friendly to interact with as the current ecosystem. #### Will zero knowledge implementations attract regulatory attention? Sure it will at some point down the road, but it is important to keep in mind that ETH is a general purpose technology that can be used for ordinary people: * To protect their online privacy in general * Institutions to protect their trading privacy * To minimise front running and market manipulation on the blockchain * To improve mechanisms in auctions where privacy on inputs is a must. **Buterin:** _**More than half of the excitement of ZK-SNARKS and ZK-STARKS isn’t because of the privacy angle, its because they allow you to prove arbitrarily complex computations in a single proof that can be very compact and verified in a few milliseconds. I do hope that people see this much wider array of general purpose applications for privacy technologies.**_ #### What if someone eventually uses Ethereum for something bad? Realistically the darknet market is already using Monero, there is not much more Ethereum can do to make the state of affairs larger than it already is. Focus on usability and security of these technologies will allow them to be used by regular people. If regulatory entities have problems, they will ban exchanges now. Developers are fungible people; if someone goes down, someone else will fill that void. A humorous example was presented that if a gun is held to Vitalik’s head, he would definitely publish a hard fork patch and oblige to all the gunman’s demands, but no one will adopt it, rendering the patch useless. Decentralisation at work. #### Tokens for gaming and virtual collectables A comparison to World of Warcraft was made where the community were heavily against real money trades; gamers persecuted it as much as possible. WoW is a mutual playground that you cannot get ahead just by throwing money at the problem, therefore using tokens with real-world value poses a threat to the fundamental phycology of in-game trading. Asset tradability on a blockchain does create a mutual playground where you don’t have centralised providers that end up taking over the ecosystem as rent seekers. Interoperability makes it easier for newer games to plug themselves in, and the existing infrastructure for trading can readily be utilised. **Overall, gaming tokens and virtual collectables is a viable next stage use case to bring the technology to the mainstream.** #### The bottleneck of the Blockchain experience is losing your private key, or getting hacked There is not much difficulty to sign a private key; press a button and see a confirmation. Where user experience starts fraying is a hack or you lose your password. This is where authentication technologies need to evolve. If self-sovereign user authentication technologies end up failing, then it will be very difficult for the blockchain space to achieve mass adoption, or fulfil its promises. Social recovery may be an option, or multi-key schemes where you have one key and a server has another. Social recovery is used today, .e.g. in WeChat where you select some of your friends that you recognise in order to unlock your account. This concept is currently in active experimentation for the blockchain. We will see if they end up being good enough for regular people to use and stay secure. **Buterin:** _**If not use Coinbsase Custody.**_ #### Buzz about security tokens — shares in companies or real estate ownership Advantages of using tokenised assets were run down: * Access to an open ecosystem where you can trade * Use as collateral and means of payments * Store them and use with financial contracts * Any ERC20 token can work with any other app that uses ERC20 tokens. The main concern with tokenised assets is what value are you getting by blockchainifiying the underlying asset? It doesn’t seem psychologically viable for people who go from paying $40 million for an original painting to $40 million for a digital private key that has some attachment to a painting. #### Centralised Exchanges **Buterin:** _**I definitely personally hope centralised exchanges burn in hell as much as possible.**_ On the fiat to crypto side you are ultimately interfacing with the Fiat world, which only has centralised gateways, making it hard to decentralise the service. On Crypto to crypto — its still early days but the technology will become more efficient. The advantages of decentralised exchanges available today were run down: * Don’t have to register and create an account. * Just send tokens from one address to another. These features undeniably need to be refined, but offer a fundamentally better experience that a centralised exchange. **Buterin:** _**Ultimately I guess, even if decentralised exchanges end up having a lot of volume through the better decentralised exchanges as a baseline, kind of the most happy I am because that way we can really take away this stupid king making power that centralised exchanges have where they have the ability to decide which tokens become big by deciding to list them and charge these crazy $10–15million listing fees. The more we can get away from that world and something that actually satisfies the values of the blockchain world like openness and transparency the better.**_ #### Other takeaways — Ethereum world has less strife compared to Bitcoin world People know what the social contract is with at Ethereum. Often times 2 sides have different ideas, and further down the line didn’t realise they had different expectations from the start. Ethereum’s vision always was one of social evolution, PoS, sharding, etc. There definitely are disagreements on how to best implement technologies, _but everyone involved is convinced what their opponents are proposing are vastly better than what exists in current systems._ So the goals are aligned with moving forward and people understand what moving forward means, and people understand what sacrifices are required to achieve it. Ethereum as a foundation is trying to: * Promote the right values that in turn attract the right people, both internally and externally. * Promote fundamental blockchain purposes for political and social betterment. * Value intellectual diversity. The core people have been exposed to these values early on. * Value technology and technological progress; cryptography, fault tolerance theory, etc * Value not being maximalist. And that concludes our roundup!
json metadata{"tags":["ethereum","bitcoin","blockchain","zug","techcrunch"],"image":["https://cdn.steemitimages.com/DQmfNanZEfqznTTV9QNFjvbEVPkFw8byFrkGpy7mt4dmDK1/vitalikBreakdown.jpg"],"links":["https://github.com/ethereum/casper","https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQs","https://github.com/ethereum/vyper","http://vyper.readthedocs.io/en/latest/","https://www.coindesk.com/vitalik-buterin-announces-new-subsidies-for-ethereum-scaling-research/","https://cryptovest.com/education/the-hard-spoon-concept-explained/"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkethereum
permlinkvitalik-buterin-fireside-chat-breakdown-blockchain-2018-in-zug
titleVitalik Buterin Fireside Chat Breakdown @ Blockchain 2018 in Zug
Transaction InfoBlock #24085413/Trx 603f81e30c051b1f7e7f00bcbffe975d92159392
View Raw JSON Data
{
  "block": 24085413,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "![vitalikBreakdown.jpg](https://cdn.steemitimages.com/DQmfNanZEfqznTTV9QNFjvbEVPkFw8byFrkGpy7mt4dmDK1/vitalikBreakdown.jpg)\n\nVitalik Buterin took part in a \"fireside chat\" at the Techcrunch Blockchain conference 2018 in Zug. In this article I break down what was talked about and highlight some key topics for further reading.\n\nScaling, privacy and security are what Vitalik wants to focus on with Ethereum's growth in the coming months. Scaling was covered in Vitalik's main talk so this chat was more about the latter subjects.\n\n#### Critics of Proof of Stake\n\n*Proof of stake (PoS) is a consensus algorithm being developed in an Ethereum upgrade proposal named Casper. The project is at <a href=\"https://github.com/ethereum/casper\" target=\"_blank\">https://github.com/ethereum/casper</a>, whereas a full FAQ breakdown can be found at <a href=\"https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQs\" target=\"_blank\">https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQs</a>.*\n\n**Buterin:**\n\n_**Back in 2013 when GHash briefly had 51%, that was a big scare moment - and eventually GHash backed down and voluntarily dropped themselves to 40%. But now it has happened a second time, people are not talking so much. \n…\nProof of work is like rich get richer squared. So if we can get a rich getting richer to the power of 1 that already is a substantial improvement.**_\n\nFrom a pool's perspective, there are real incentives to hide the level of centralisation from the public. Reasons range from PR reasons of the pool company to the overall reputation of Bitcoin - but it is quite clear that the top 3 mining pools have half of the Bitcoin hash power.\n\nWe can refer to the geographic concentration in relation to the floods that happened in Sichuan, China in early July that knocked around 20% of the hashpower offline. This is a clear indication of centralised PoW. PoS is somewhat immune to geographic concentration due to the less strict requirements for operating it.\n\n#### Security, Ethereum Hack Headlines\n\nEthereum hack is a great headline for FUD news, and for the ill informed, may believe that the Ethereum network has indeed been hacked. These headlines however stem from smart contracts having buggy code and consequently leading them to become compromised, often resulting in a loss of funds.\n\nThe question here is: how can we decrease the rate at which smart contracts are being deployed with bugs and consequently become abused?\n\nOne of the important things is the continued development of better programming languages and standards. One of the examples is a recent high level programming language was released in Beta called Vyper.\n\n*Head over to <a href=\"https://github.com/ethereum/vyper\" target=\"_blank\">https://github.com/ethereum/vyper</a> to check out the project. There exists a coherent overview of the language and its goals, as well as installation and smart contract compilation instructions. For more in depth documentation visit the ReadTheDocs site, at <a href=\"http://vyper.readthedocs.io/en/latest/\" target=\"_blank\">http://vyper.readthedocs.io/en/latest/</a>.*\n\nVyper was designed from the start to be more restrictive and target readability and security to make it harder to write deliberately misleading code. It is a Python like language with a stronger type system.\n\nPython, although not the speediest language under the hood, is praised for its structural simplicity and friendly learning curve. It makes sense to introduce a language to the Ethereum ecosystem with similar characteristics to encourage developer adoption, and less bugs.\n\nApparently Vyper looked at the 10 biggest screw-ups in Solidity programming history and are trying to make features that deliberately make those as hard as possible, or impossible entirely.\n\nGrants are being given to groups aiming to create another high level language that was based more on functional programming principles. The Ethereum Foundation announced 2 subsidy programs back January 2018 to encourage research and adoption into the ecosystem. Check out this <a href=\"https://www.coindesk.com/vitalik-buterin-announces-new-subsidies-for-ethereum-scaling-research/\" target=\"_blank\">Coindesk article</a> that covered the announcement.\n\nThere have been various improvements in Solidity over the past couple of years like safe math libraries and stricter checks. The community is very actively developing new ways to make the Solidity language more secure and less prone to bugs. I will naturally become safer over time.\n\nHaving good code samples and code templates will be another key factor in bug free code. E.g. if you want a multi sig wallet, where do you go and whose code do you implement?\n\nAccording to Buterin, there should just be standardised versions that have been formally audited / verified and ready to use. It is not there yet but is getting closer.\n\n**Buterin:**\n\n_**With better standards, better templates and better defaults, we can really start reducing the smart contract security issues by a lot, probably to the point where like at some point private key security once again becomes the dominant issue, and that is something we want to tackle as well.**_\n\n#### Multi-sig bug and locked funds\n\nIn regards to locked funds (funds locked in a smart contract as a consequence of a bug or poor logic, with no means of recovery without a network modification), there are 2 ways that money could theoretically move.\n\nThe first way is if the Ethereum community agrees on a hard fork. This fork would modify the smart contract and be able to recover the funds associated with it. But there is negative sentiment on doing that, at least in the short term.\n\nHistorically, hard forking the network to recover human mistakes is not something the Ethereum community is interested in. And if they were, they now support Ethereum Classic.\n\nThe second way to recover is if someone makes another blockchain which hard spoons or airdrops all the ETH account balances, but makes the one modification to unlock the wallet. This way the ETH blockchain’s immutability will not be compromised.\n\nTo familiarise yourself on the hard spoon concept, check out <a href=\"https://cryptovest.com/education/the-hard-spoon-concept-explained/\" target=\"_blank\">this article from Cryptovest</a>.\n\nEthereum is community driven, and Vitalik wants to stay away from becoming too heavily involved in making high level decisions.\n\n#### Vitalik as a Celebrity Driving Force and Chief Scientist behind Ethereum\n\nJokes about parrallel to Microsoft and who is Vitaliks Steve Ballmer? took place on stage. The chief executive director (didn’t catch his name) of the foundation has been doing a great job at holding the fort on the administrative side to make sure the foundation continues to “smoothly role”, as well as managing the bureaucracy; a side Vitalik has been stepping away from for a while.\n\nStrong individual team leaders and strong managers exist, with a growing team on research and development.\n\nAn important difference between the Ethereum foundation and Microsoft (or pretty much all corporations) is that Ethereum tries very hard to be a decentralised organisation. Ethereum try very hard to not have inside / outside divides. There are multiple ways to interact with the Ethereum community:\n\n* Become a full time contributor\n\n* Apply for a grant (The budget for the grant program is larger than the budget for the foundation’s full time staff.\n\n* Work for a project in the Ethereum ecosystem (e.g. OmiseGo) and in time end up collaborating with Ethereum researchers closely.\n\nThe questions of who is on the biggest pay role, or who are the core members of the team, often end up diverging a lot.\n\n#### Talk on Privacy\n\nVitalik is confident that Ethereum is “Absolutely” moving more in the direction of ZCash and zero proof technologies. E.g. shielding the sender, receiver and amount of the transaction from outsiders, even though it is publically verified and guaranteed on the Blockchain.\n\nIn October 2017, the Byzantium upgrade was deployed that optimized cryptographic and zero knowledge proof constructions, and there are already projects that are starting to use them to build various kinds of privacy preserving applications.\n\nOne person in the community is building a ring signature mixing contract. “Barry Whitehat”, who released the project on Reddit, said that he used ZK-SNARKs to build a zero knowledge shielded token that is already running on the testnet, and could theoretically run on the mainnet tomorrow.\n\nIn the longer term: Raw virtual machine optimization. Not optimised for cryptography today. If its faster more kinds of cryptographic primitives can be implemented.\n\n**Buterin:**\n\n_**The current VM can be good for certain kinds of 256bit stuff, but there is a much wider space of it that is still not performing well right now, but we have efforts like web assembly and so forth to try to really improve on that.**_\n\nEthereum plan to do a lot more on SNARKs in the future, participating and supporting development of zero knowledge and proof technologies including the tooling around SNARKs. Trying to see what it will take to make the Ethereum blockchain to be friendly towards SNARKs, Buterin suggests supporting finite field operations amongst other things in SNARK verifications, like optimised hash functions.\n\nThe takeaway here: the community is still developing the building blocks for privacy preserving schemes, and is also planning to look at computing models that can be built on top of Ethereum. The ultimate goal is to develop a smart contract privacy preserving ecosystem that is as friendly to interact with as the current ecosystem.\n\n#### Will zero knowledge implementations attract regulatory attention?\n\nSure it will at some point down the road, but it is important to keep in mind that ETH is a general purpose technology that can be used for ordinary people:\n\n* To protect their online privacy in general\n\n* Institutions to protect their trading privacy\n\n* To minimise front running and market manipulation on the blockchain\n\n* To improve mechanisms in auctions where privacy on inputs is a must.\n\n**Buterin:**\n\n_**More than half of the excitement of ZK-SNARKS and ZK-STARKS isn’t because of the privacy angle, its because they allow you to prove arbitrarily complex computations in a single proof that can be very compact and verified in a few milliseconds. I do hope that people see this much wider array of general purpose applications for privacy technologies.**_\n\n#### What if someone eventually uses Ethereum for something bad?\nRealistically the darknet market is already using Monero, there is not much more Ethereum can do to make the state of affairs larger than it already is. Focus on usability and security of these technologies will allow them to be used by regular people.\n\nIf regulatory entities have problems, they will ban exchanges now. Developers are fungible people; if someone goes down, someone else will fill that void.\n\nA humorous example was presented that if a gun is held to Vitalik’s head, he would definitely publish a hard fork patch and oblige to all the gunman’s demands, but no one will adopt it, rendering the patch useless. Decentralisation at work.\n\n#### Tokens for gaming and virtual collectables\n\nA comparison to World of Warcraft was made where the community were heavily against real money trades; gamers persecuted it as much as possible. WoW is a mutual playground that you cannot get ahead just by throwing money at the problem, therefore using tokens with real-world value poses a threat to the fundamental phycology of in-game trading.\n\nAsset tradability on a blockchain does create a mutual playground where you don’t have centralised providers that end up taking over the ecosystem as rent seekers. Interoperability makes it easier for newer games to plug themselves in, and the existing infrastructure for trading can readily be utilised.\n\n**Overall, gaming tokens and virtual collectables is a viable next stage use case to bring the technology to the mainstream.**\n\n#### The bottleneck of the Blockchain experience is losing your private key, or getting hacked\n\nThere is not much difficulty to sign a private key; press a button and see a confirmation. Where user experience starts fraying is a hack or you lose your password. This is where authentication technologies need to evolve. If self-sovereign user authentication technologies end up failing, then it will be very difficult for the blockchain space to achieve mass adoption, or fulfil its promises.\n\nSocial recovery may be an option, or multi-key schemes where you have one key and a server has another.\n\nSocial recovery is used today, .e.g. in WeChat where you select some of your friends that you recognise in order to unlock your account. This concept is currently in active experimentation for the blockchain. We will see if they end up being good enough for regular people to use and stay secure.\n\n**Buterin:**\n\n_**If not use Coinbsase Custody.**_\n\n#### Buzz about security tokens — shares in companies or real estate ownership\n\nAdvantages of using tokenised assets were run down:\n\n* Access to an open ecosystem where you can trade\n* Use as collateral and means of payments\n\n* Store them and use with financial contracts\n\n* Any ERC20 token can work with any other app that uses ERC20 tokens.\n\nThe main concern with tokenised assets is what value are you getting by blockchainifiying the underlying asset? It doesn’t seem psychologically viable for people who go from paying $40 million for an original painting to $40 million for a digital private key that has some attachment to a painting.\n\n#### Centralised Exchanges\n\n**Buterin:**\n\n_**I definitely personally hope centralised exchanges burn in hell as much as possible.**_\n\nOn the fiat to crypto side you are ultimately interfacing with the Fiat world, which only has centralised gateways, making it hard to decentralise the service. On Crypto to crypto — its still early days but the technology will become more efficient.\n\nThe advantages of decentralised exchanges available today were run down:\n\n* Don’t have to register and create an account.\n\n* Just send tokens from one address to another.\n\nThese features undeniably need to be refined, but offer a fundamentally better experience that a centralised exchange.\n\n**Buterin:**\n\n_**Ultimately I guess, even if decentralised exchanges end up having a lot of volume through the better decentralised exchanges as a baseline, kind of the most happy I am because that way we can really take away this stupid king making power that centralised exchanges have where they have the ability to decide which tokens become big by deciding to list them and charge these crazy $10–15million listing fees. The more we can get away from that world and something that actually satisfies the values of the blockchain world like openness and transparency the better.**_\n\n#### Other takeaways — Ethereum world has less strife compared to Bitcoin world\n\nPeople know what the social contract is with at Ethereum.\nOften times 2 sides have different ideas, and further down the line didn’t realise they had different expectations from the start.\n\nEthereum’s vision always was one of social evolution, PoS, sharding, etc. There definitely are disagreements on how to best implement technologies, _but everyone involved is convinced what their opponents are proposing are vastly better than what exists in current systems._\n\nSo the goals are aligned with moving forward and people understand what moving forward means, and people understand what sacrifices are required to achieve it.\n\nEthereum as a foundation is trying to:\n\n* Promote the right values that in turn attract the right people, both internally and externally.\n\n* Promote fundamental blockchain purposes for political and social betterment.\n\n* Value intellectual diversity. The core people have been exposed to these values early on.\n\n* Value technology and technological progress; cryptography, fault tolerance theory, etc\n\n* Value not being maximalist.\n\nAnd that concludes our roundup!",
      "json_metadata": "{\"tags\":[\"ethereum\",\"bitcoin\",\"blockchain\",\"zug\",\"techcrunch\"],\"image\":[\"https://cdn.steemitimages.com/DQmfNanZEfqznTTV9QNFjvbEVPkFw8byFrkGpy7mt4dmDK1/vitalikBreakdown.jpg\"],\"links\":[\"https://github.com/ethereum/casper\",\"https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQs\",\"https://github.com/ethereum/vyper\",\"http://vyper.readthedocs.io/en/latest/\",\"https://www.coindesk.com/vitalik-buterin-announces-new-subsidies-for-ethereum-scaling-research/\",\"https://cryptovest.com/education/the-hard-spoon-concept-explained/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "ethereum",
      "permlink": "vitalik-buterin-fireside-chat-breakdown-blockchain-2018-in-zug",
      "title": "Vitalik Buterin Fireside Chat Breakdown @ Blockchain 2018 in Zug"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-11T15:17:24",
  "trx_id": "603f81e30c051b1f7e7f00bcbffe975d92159392",
  "trx_in_block": 80,
  "virtual_op": 0
}
2018/07/10 04:58:39
authorrossbulat
permlinkusing-promises-async-await-with-mongodb
voteralphabot
weight100 (1.00%)
Transaction InfoBlock #24044247/Trx ec5bcbeb12895f3a0e69d6014e0cb6db135956df
View Raw JSON Data
{
  "block": 24044247,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "using-promises-async-await-with-mongodb",
      "voter": "alphabot",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-10T04:58:39",
  "trx_id": "ec5bcbeb12895f3a0e69d6014e0cb6db135956df",
  "trx_in_block": 17,
  "virtual_op": 0
}
2018/07/10 04:58:27
authorrossbulat
body@@ -454,31 +454,8 @@ and - then when it is ready, ret @@ -482,16 +482,33 @@ ront end + when it is ready .%0A%0AYou w @@ -896,17 +896,17 @@ wait in -J +j avascrip @@ -1391,17 +1391,18 @@ tended t -o +he promise @@ -2661,23 +2661,8 @@ ng = - () =%3E ( return (da @@ -2680,23 +2680,18 @@ == null) -) ;%0A - %0Aif(some @@ -2708,17 +2708,16 @@ rong ? %0A - rejec @@ -2742,18 +2742,18 @@ d up') : -%0A +%0A resol @@ -2777,16 +2777,17 @@ %0ANow let +' s move o @@ -3822,16 +3822,17 @@ her%0A%0ALet - +' s put ev
json metadata{"tags":["mongodb","javascript","nodejs","development","async"],"image":["https://cdn.steemitimages.com/DQmecwRjGPxtWuQeFxL8FgT8pJFYpM9eyULteBB6oyoEUx9/mongoPromises.jpg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkmongodb
permlinkusing-promises-async-await-with-mongodb
titleUsing Promises, async / await with MongoDB
Transaction InfoBlock #24044243/Trx bb7392a0867970a9a1a53b1f65f724fd86f9396e
View Raw JSON Data
{
  "block": 24044243,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "@@ -454,31 +454,8 @@\n  and\n- then when it is ready,\n  ret\n@@ -482,16 +482,33 @@\n ront end\n+ when it is ready\n .%0A%0AYou w\n@@ -896,17 +896,17 @@\n wait in \n-J\n+j\n avascrip\n@@ -1391,17 +1391,18 @@\n tended t\n-o\n+he\n  promise\n@@ -2661,23 +2661,8 @@\n ng =\n- () =%3E ( return\n  (da\n@@ -2680,23 +2680,18 @@\n == null)\n-)\n ;%0A\n-    \n %0Aif(some\n@@ -2708,17 +2708,16 @@\n rong ? %0A\n- \n    rejec\n@@ -2742,18 +2742,18 @@\n d up') :\n-%0A\n  \n+%0A\n    resol\n@@ -2777,16 +2777,17 @@\n %0ANow let\n+'\n s move o\n@@ -3822,16 +3822,17 @@\n her%0A%0ALet\n-\n \n+'\n s put ev\n",
      "json_metadata": "{\"tags\":[\"mongodb\",\"javascript\",\"nodejs\",\"development\",\"async\"],\"image\":[\"https://cdn.steemitimages.com/DQmecwRjGPxtWuQeFxL8FgT8pJFYpM9eyULteBB6oyoEUx9/mongoPromises.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "mongodb",
      "permlink": "using-promises-async-await-with-mongodb",
      "title": "Using Promises, async / await with MongoDB"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-10T04:58:27",
  "trx_id": "bb7392a0867970a9a1a53b1f65f724fd86f9396e",
  "trx_in_block": 38,
  "virtual_op": 0
}
2018/07/09 17:11:24
authorrossbulat
permlinkusing-promises-async-await-with-mongodb
voterjoelkenny
weight10000 (100.00%)
Transaction InfoBlock #24030107/Trx 92dc46d80b3d8c6aa5b762191d07076afd0bdb3c
View Raw JSON Data
{
  "block": 24030107,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "using-promises-async-await-with-mongodb",
      "voter": "joelkenny",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-09T17:11:24",
  "trx_id": "92dc46d80b3d8c6aa5b762191d07076afd0bdb3c",
  "trx_in_block": 1,
  "virtual_op": 0
}
2018/07/09 13:31:36
authorrossbulat
permlinkusing-promises-async-await-with-mongodb
voterrossbulat
weight10000 (100.00%)
Transaction InfoBlock #24025716/Trx bfc4e6d06a4d6ba99dd4ffe30bcd80dfb1432e5b
View Raw JSON Data
{
  "block": 24025716,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "using-promises-async-await-with-mongodb",
      "voter": "rossbulat",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-09T13:31:36",
  "trx_id": "bfc4e6d06a4d6ba99dd4ffe30bcd80dfb1432e5b",
  "trx_in_block": 2,
  "virtual_op": 0
}
2018/07/09 13:09:54
authorrossbulat
body![mongoPromises.jpg](https://cdn.steemitimages.com/DQmecwRjGPxtWuQeFxL8FgT8pJFYpM9eyULteBB6oyoEUx9/mongoPromises.jpg) ## How to handle API requests with a chain of MongoDB queries You are writing a backend service for your web app and you need to fetch data from your mongo cluster. The problem is, you do not want your request to be returned in a synchronous manor — instead I want mongo queries to be carried out, get the returned result, handle it, and then when it is ready, return the JSON to my front end. You want to conform to ES6/7 javascript standards to maintain your app code and stay relevant; you need to implement `promises`, `async` and `await` functionality, wrapped around your `db.collection` mongo requests. #### Breaking down the process Before the full example and explanation of a fully-fledged asynchronous API request, I want to briefly revisit promises and using async/await in Javascript. `Promise` Promises give us a way to handle asynchronous processing in a more synchronous fashion. They represent a value that we can handle at some point in the future; it will eventually be returned, or resolved. If we call a promise and `console.log it`, we will be greeted with a *pending promise*. The promise has not yet been resolved. It is in the middle of completing what we code it to do. When it has resolved we will be able to retreive the data we originally intended to promise to return to us. Promises are immutable, the handler cannot be changed. We are also guaranteed to receive a return value, either what we intended, or an error. *We will write our promises inside ES6 functions, and then asynchronously call it using await and async.* What does a promise look like? Something like this: ``` var myPromise = () => { return new Promise((resolve, reject) => { //do something, fetch something.... //you guessed it, mongo queries go here. db.collection('your_collection').find(...) //I can continue to process my result inside my promise .then(function(result){ //another query can be called based on my result... return updatedResult; }) //This promise may take a while... .then(function(result){ //when you are ready, you can resolve the promise. resolve(result); }); }); }; ``` Notice the second handler (*typically named* `reject`). It is a function to call to reject the promise if it can't resolve the future value. We could expand the previous psuedocode to account for rejecting unwanted data: ``` //when you are ready, you can resolve the promise. var somethingWentWrong = () => ( return (dataReturned == null)); if(somethingWentWrong ? reject('something messed up') : resolve(result)); ``` Now lets move onto asynchronously processing our promises. `async / await` As you can see, the `async` and `await` keywords are absent from our Promise code. We use them to configure an asynchronous function that will call our promise, and wait for it to complete, like this: ``` var callMyPromise = async () => { var result = await (myPromise()); return result; }; ``` See how simple that was? Some articles online make the process look rather complicated. It is not — separate your promise declarations and your asynchronous functions. Make things simple to read and build upon; your team will appreciate it. So the last piece of the puzzle is to coherently put everything together so we can finally return our API request, which looks something like this: ``` callMyPromise().then(function(result) { //close mongo client client.close(); //feel free to process your final result before sending //it back to your front end //return the API request res.json(result); }); ``` #### Putting everything together Lets put everything we just went through together to create a full API request. Let’s say I am using Express as my backend service. Notice the router handler is asynchronous too, declaring `async` before my handler. ``` router.post('/api/get_data', async (req, res, next) => { try { await MongoClient.connect(connectionStr, mongoOptions, function(err, client) { assert.equal(null, err); const db = client.db('db'); //Step 1: declare promise var myPromise = () => { return new Promise((resolve, reject) => { db.collection('your_collection').find({id: 123}) .limit(1) .toArray(function(err, data) { if(err ? reject(err) : resolve(data[0])); }); }); }; //Step 2: async promise handler var callMyPromise = async () => { var result = await (myPromise()); return result; }; //Step 3: make the call callMyPromise().then(function(result) { client.close(); res.json(result); }); }); //end mongo client } catch (e) { next(e) } }); module.exports = router; ``` Some points about this example: * Router handler is asynchronous, and I am awaiting my MongoClient with `await MongoClient.connect` * The entire process is wrapped in a `try` `catch` so I can handle any errors that occur. * `res.json` returns the result of my data as a JSON object.
json metadata{"tags":["mongodb","javascript","nodejs","development","async"],"image":["https://cdn.steemitimages.com/DQmecwRjGPxtWuQeFxL8FgT8pJFYpM9eyULteBB6oyoEUx9/mongoPromises.jpg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkmongodb
permlinkusing-promises-async-await-with-mongodb
titleUsing Promises, async / await with MongoDB
Transaction InfoBlock #24025282/Trx 1b9de25dc649b3967fc51a043581daf473ee2c35
View Raw JSON Data
{
  "block": 24025282,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "![mongoPromises.jpg](https://cdn.steemitimages.com/DQmecwRjGPxtWuQeFxL8FgT8pJFYpM9eyULteBB6oyoEUx9/mongoPromises.jpg)\n\n## How to handle API requests with a chain of MongoDB queries\n\nYou are writing a backend service for your web app and you need to fetch data from your mongo cluster. The problem is, you do not want your request to be returned in a synchronous manor — instead I want mongo queries to be carried out, get the returned result, handle it, and then when it is ready, return the JSON to my front end.\n\nYou want to conform to ES6/7 javascript standards to maintain your app code and stay relevant; you need to implement `promises`, `async` and `await` functionality, wrapped around your `db.collection` mongo requests.\n\n#### Breaking down the process\n\nBefore the full example and explanation of a fully-fledged asynchronous API request, I want to briefly revisit promises and using async/await in Javascript.\n\n`Promise`\n\nPromises give us a way to handle asynchronous processing in a more synchronous fashion. They represent a value that we can handle at some point in the future; it will eventually be returned, or resolved.\n\nIf we call a promise and `console.log it`, we will be greeted with a *pending promise*. The promise has not yet been resolved. It is in the middle of completing what we code it to do. When it has resolved we will be able to retreive the data we originally intended to promise to return to us.\n\nPromises are immutable, the handler cannot be changed. We are also guaranteed to receive a return value, either what we intended, or an error.\n\n*We will write our promises inside ES6 functions, and then asynchronously call it using await and async.*\n\nWhat does a promise look like? Something like this:\n\n```\nvar myPromise = () => {\n    return new Promise((resolve, reject) => {\n        \n        //do something, fetch something....\n        //you guessed it, mongo queries go here.\n        db.collection('your_collection').find(...)\n        //I can continue to process my result inside my promise\n        .then(function(result){\n            //another query can be called based on my result...\n            return updatedResult;\n        })\n         //This promise may take a while...\n         .then(function(result){\n             //when you are ready, you can resolve the promise.\n             resolve(result);\n        });\n    });\n};\n```\n\nNotice the second handler (*typically named* `reject`). It is a function to call to reject the promise if it can't resolve the future value.\n\nWe could expand the previous psuedocode to account for rejecting unwanted data:\n\n```\n//when you are ready, you can resolve the promise.\nvar somethingWentWrong = () => ( return (dataReturned == null));\n    \nif(somethingWentWrong ? \n    reject('something messed up') :\n    resolve(result));\n```\n\nNow lets move onto asynchronously processing our promises.\n\n`async / await`\n\nAs you can see, the `async` and `await` keywords are absent from our Promise code. We use them to configure an asynchronous function that will call our promise, and wait for it to complete, like this:\n\n```\nvar callMyPromise = async () => {\n    var result = await (myPromise());\n    return result;\n};\n```\n\nSee how simple that was? Some articles online make the process look rather complicated. It is not — separate your promise declarations and your asynchronous functions. Make things simple to read and build upon; your team will appreciate it.\n\nSo the last piece of the puzzle is to coherently put everything together so we can finally return our API request, which looks something like this:\n\n```\ncallMyPromise().then(function(result) {\n    //close mongo client\n    client.close();\n    //feel free to process your final result before sending\n    //it back to your front end\n    //return the API request\n    res.json(result);\n});\n```\n\n#### Putting everything together\n\nLets put everything we just went through together to create a full API request. Let’s say I am using Express as my backend service.\n\nNotice the router handler is asynchronous too, declaring `async` before my handler.\n\n```\nrouter.post('/api/get_data', async (req, res, next) => {\n   try {\n      await MongoClient.connect(connectionStr, mongoOptions, function(err, client) {\n       assert.equal(null, err);\n       const db = client.db('db');\n      \n       //Step 1: declare promise\n      \n       var myPromise = () => {\n         return new Promise((resolve, reject) => {\n        \n            db.collection('your_collection').find({id: 123})\n               .limit(1)\n               .toArray(function(err, data) {\n                   if(err ? reject(err) : resolve(data[0]));\n               });\n         });\n       };\n\n       //Step 2: async promise handler\n       var callMyPromise = async () => {\n          var result = await (myPromise());\n          return result;\n       };\n \n       //Step 3: make the call\n       callMyPromise().then(function(result) {\n          client.close();\n          res.json(result);\n       });\n\n    }); //end mongo client\n   \n   } catch (e) {\n     next(e)\n   }\n});\nmodule.exports = router;\n```\n\nSome points about this example:\n\n* Router handler is asynchronous, and I am awaiting my MongoClient with `await MongoClient.connect`\n\n* The entire process is wrapped in a `try` `catch` so I can handle any errors that occur.\n\n* `res.json` returns the result of my data as a JSON object.",
      "json_metadata": "{\"tags\":[\"mongodb\",\"javascript\",\"nodejs\",\"development\",\"async\"],\"image\":[\"https://cdn.steemitimages.com/DQmecwRjGPxtWuQeFxL8FgT8pJFYpM9eyULteBB6oyoEUx9/mongoPromises.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "mongodb",
      "permlink": "using-promises-async-await-with-mongodb",
      "title": "Using Promises, async / await with MongoDB"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-09T13:09:54",
  "trx_id": "1b9de25dc649b3967fc51a043581daf473ee2c35",
  "trx_in_block": 27,
  "virtual_op": 0
}
2018/07/04 17:08:21
authorrossbulat
permlinkdeploy-a-3-node-mongodb-3-6-replica-set-with-x-509-authentication-self-signed-certificates
voterjoelkenny
weight10000 (100.00%)
Transaction InfoBlock #23886129/Trx 51073133536e3bf31f680eebc3735667dd206d10
View Raw JSON Data
{
  "block": 23886129,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "deploy-a-3-node-mongodb-3-6-replica-set-with-x-509-authentication-self-signed-certificates",
      "voter": "joelkenny",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-04T17:08:21",
  "trx_id": "51073133536e3bf31f680eebc3735667dd206d10",
  "trx_in_block": 51,
  "virtual_op": 0
}
2018/07/04 17:08:00
authorrossbulat
permlinkmacos-install-mongodb-php-driver-and-mongodb-composer-extension
voterjoelkenny
weight10000 (100.00%)
Transaction InfoBlock #23886122/Trx 4f3c83090195c8060a71611173a91fa490ca7fbb
View Raw JSON Data
{
  "block": 23886122,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "macos-install-mongodb-php-driver-and-mongodb-composer-extension",
      "voter": "joelkenny",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-04T17:08:00",
  "trx_id": "4f3c83090195c8060a71611173a91fa490ca7fbb",
  "trx_in_block": 7,
  "virtual_op": 0
}
2018/07/04 17:07:54
authorrossbulat
permlinkcryptocurrency-momentum-is-building-as-bank-fragility-increases
voterjoelkenny
weight10000 (100.00%)
Transaction InfoBlock #23886120/Trx 3c83b40a49a4e2a2e3a0d68ff0b3c6d8fff50dd8
View Raw JSON Data
{
  "block": 23886120,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "cryptocurrency-momentum-is-building-as-bank-fragility-increases",
      "voter": "joelkenny",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-04T17:07:54",
  "trx_id": "3c83b40a49a4e2a2e3a0d68ff0b3c6d8fff50dd8",
  "trx_in_block": 45,
  "virtual_op": 0
}
2018/07/04 17:07:51
authorrossbulat
permlinkhow-a-decentralised-automated-economy-works
voterjoelkenny
weight10000 (100.00%)
Transaction InfoBlock #23886119/Trx ae865573e0333e353fce9447a856325ee1d1306e
View Raw JSON Data
{
  "block": 23886119,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "how-a-decentralised-automated-economy-works",
      "voter": "joelkenny",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-04T17:07:51",
  "trx_id": "ae865573e0333e353fce9447a856325ee1d1306e",
  "trx_in_block": 23,
  "virtual_op": 0
}
2018/07/04 17:07:48
authorrossbulat
permlinkceiling-analysis-in-deep-learning-and-software-development
voterjoelkenny
weight10000 (100.00%)
Transaction InfoBlock #23886118/Trx dfb326cba34dde1579c127856c695687ef191349
View Raw JSON Data
{
  "block": 23886118,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "ceiling-analysis-in-deep-learning-and-software-development",
      "voter": "joelkenny",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-04T17:07:48",
  "trx_id": "dfb326cba34dde1579c127856c695687ef191349",
  "trx_in_block": 15,
  "virtual_op": 0
}
2018/07/04 17:07:42
authorrossbulat
permlinkwhy-the-blockchain-is-needed
voterjoelkenny
weight10000 (100.00%)
Transaction InfoBlock #23886117/Trx 444b738bd04e45e3496e7bf1abbcf73b8c121c26
View Raw JSON Data
{
  "block": 23886117,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "why-the-blockchain-is-needed",
      "voter": "joelkenny",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-04T17:07:42",
  "trx_id": "444b738bd04e45e3496e7bf1abbcf73b8c121c26",
  "trx_in_block": 10,
  "virtual_op": 0
}
2018/07/04 17:07:36
authorrossbulat
permlinkis-big-data-for-you
voterjoelkenny
weight10000 (100.00%)
Transaction InfoBlock #23886115/Trx c0a85d6a903cbf8f7ce984590af82905caa339be
View Raw JSON Data
{
  "block": 23886115,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "is-big-data-for-you",
      "voter": "joelkenny",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-04T17:07:36",
  "trx_id": "c0a85d6a903cbf8f7ce984590af82905caa339be",
  "trx_in_block": 20,
  "virtual_op": 0
}
2018/07/04 17:07:24
authorrossbulat
permlinkbusiness-intelligence-vs-data-science
voterjoelkenny
weight10000 (100.00%)
Transaction InfoBlock #23886111/Trx 7cc00a86d66f3dd12e5785e6420b267ce49b62ac
View Raw JSON Data
{
  "block": 23886111,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "business-intelligence-vs-data-science",
      "voter": "joelkenny",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-04T17:07:24",
  "trx_id": "7cc00a86d66f3dd12e5785e6420b267ce49b62ac",
  "trx_in_block": 26,
  "virtual_op": 0
}
2018/07/04 17:07:18
authorrossbulat
permlinktransaction-hell-in-2018
voterjoelkenny
weight10000 (100.00%)
Transaction InfoBlock #23886109/Trx 1e9e6f6311dd6838b0ea278690c939164c5b8079
View Raw JSON Data
{
  "block": 23886109,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "transaction-hell-in-2018",
      "voter": "joelkenny",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-07-04T17:07:18",
  "trx_id": "1e9e6f6311dd6838b0ea278690c939164c5b8079",
  "trx_in_block": 39,
  "virtual_op": 0
}
2018/06/30 12:54:15
authora-a-a
body# # upvote for me please? https://steemit.com/news/@bible.com/6h36cq #
json metadata{"tags":["blockchain"],"links":["https://steemit.com/news/@bible.com/6h36cq"],"app":"steemit/0.1"}
parent authorrossbulat
parent permlinktransaction-hell-in-2018
permlinkre-rossbulat-transaction-hell-in-2018-20180630t125417131z
title
Transaction InfoBlock #23775705/Trx 87f1df89b68b64b4403c40548846329ca96e2871
View Raw JSON Data
{
  "block": 23775705,
  "op": [
    "comment",
    {
      "author": "a-a-a",
      "body": "#\n# upvote for me please? https://steemit.com/news/@bible.com/6h36cq\n#",
      "json_metadata": "{\"tags\":[\"blockchain\"],\"links\":[\"https://steemit.com/news/@bible.com/6h36cq\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "rossbulat",
      "parent_permlink": "transaction-hell-in-2018",
      "permlink": "re-rossbulat-transaction-hell-in-2018-20180630t125417131z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-30T12:54:15",
  "trx_id": "87f1df89b68b64b4403c40548846329ca96e2871",
  "trx_in_block": 33,
  "virtual_op": 0
}
2018/06/30 12:54:03
authorrossbulat
permlinktransaction-hell-in-2018
voterrossbulat
weight10000 (100.00%)
Transaction InfoBlock #23775701/Trx 1fb2fe86e2bdbd9d89af05fcabcb99c99763f78b
View Raw JSON Data
{
  "block": 23775701,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "transaction-hell-in-2018",
      "voter": "rossbulat",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-30T12:54:03",
  "trx_id": "1fb2fe86e2bdbd9d89af05fcabcb99c99763f78b",
  "trx_in_block": 11,
  "virtual_op": 0
}
rossbulatpublished a new post: transaction-hell-in-2018
2018/06/30 12:53:48
authorrossbulat
body![transactionHell.jpg](https://cdn.steemitimages.com/DQmPoiQj79vtamUhAvugpCq4tYtM8fmiu5v8AY49PpTBodc/transactionHell.jpg) #### China’s need to re-open Crypto exchanges Transaction hell should not be happening in 2018. Yet it has happened to me just this week, in June 2018. A failed transaction, terrible customer support, lengthy waiting times and high transaction fees. Whether Cryptocurrency is supplemented into the current banking system or replaces it, there is a need for the technology. A big need to avoid scenarios that should be a thing of the past. #### My Scenario A transfer from Hong Kong into my mainland China bank account was rejected, for a reason that was not communicated to me. Unfortunately this was not a surprise given the general customer service of the bank I am using in China, however a telephone call would have been appreciated. Due to the localised nature of my Chinese bank, I will now need to organise a trip into China to rectify my account with the bank, and provide the necessary documentation for my account to accept incoming oversees transfers. The banks took 230 RMB (~£27 at current time) to process the rejected transaction and return the funds back to my HK account. #### HSBC website from hell In general Hong Kong websites leave a lot to be desired, and HSBC is no exception. Navigating the HSBC website to exchange my HKD into RMB + transfer took 1:30 hours due to website bugs, timeouts, and the fact they prompted I change my transfer limit after I confirm the payment — security device and all. Overall the developers of hsbc.com.hk have recently attempted to redesign the UI of the website. Testing has not been carried out thoroughly, and I regularly get directed back to the old version, reminiscent of 2001 and Internet Explorer 6. #### This could have all been avoided 36 hours after the transfer was made, there was no sign of the transaction landing in China. I sent an enquiry to HSBC using their online banking service. This was after their telephone service failed to route me to an appropriate department — all of which were automated. Not a live representative in sight. 72 hours after I sent the message, I received a reply stating that I needed to communicate with the mainland China bank to get the status of my transaction. This was after the transaction landed back in my HK bank account. The amount landing back was considerably less than the amount I sent originally. #### 96 hours and not a successful transaction Now, if China allowed Bitcoin transactions into the country via an exchange, where I can then exchange my BTC into RMB and withdraw to my bank account, things would be much better: * 1 hour maximum for the entire process * Minimal transaction fees, currently a fraction of what banks charge * Modern, reliable apps handling my Cryptocurrency trades that do not crash * No need to contact customer support, the blockchain validates my transaction. Blockchain and Cryptocurrency is an inevitable evolution of our current banking system, and will finally keep transaction hell in the past.
json metadata{"tags":["blockchain","bitcoin","china","banks","banking"],"image":["https://cdn.steemitimages.com/DQmPoiQj79vtamUhAvugpCq4tYtM8fmiu5v8AY49PpTBodc/transactionHell.jpg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkblockchain
permlinktransaction-hell-in-2018
titleTransaction Hell in 2018
Transaction InfoBlock #23775696/Trx 514ae48a75e06bb07506d3e3d25e1a299f31d5b8
View Raw JSON Data
{
  "block": 23775696,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "![transactionHell.jpg](https://cdn.steemitimages.com/DQmPoiQj79vtamUhAvugpCq4tYtM8fmiu5v8AY49PpTBodc/transactionHell.jpg)\n\n#### China’s need to re-open Crypto exchanges\n\nTransaction hell should not be happening in 2018. Yet it has happened to me just this week, in June 2018. A failed transaction, terrible customer support, lengthy waiting times and high transaction fees.\n\nWhether Cryptocurrency is supplemented into the current banking system or replaces it, there is a need for the technology. A big need to avoid scenarios that should be a thing of the past.\n\n#### My Scenario\n\nA transfer from Hong Kong into my mainland China bank account was rejected, for a reason that was not communicated to me. Unfortunately this was not a surprise given the general customer service of the bank I am using in China, however a telephone call would have been appreciated.\n\nDue to the localised nature of my Chinese bank, I will now need to organise a trip into China to rectify my account with the bank, and provide the necessary documentation for my account to accept incoming oversees transfers.\n\nThe banks took 230 RMB (~£27 at current time) to process the rejected transaction and return the funds back to my HK account.\n\n#### HSBC website from hell\n\nIn general Hong Kong websites leave a lot to be desired, and HSBC is no exception.\n\nNavigating the HSBC website to exchange my HKD into RMB + transfer took 1:30 hours due to website bugs, timeouts, and the fact they prompted I change my transfer limit after I confirm the payment — security device and all.\n\nOverall the developers of hsbc.com.hk have recently attempted to redesign the UI of the website. Testing has not been carried out thoroughly, and I regularly get directed back to the old version, reminiscent of 2001 and Internet Explorer 6.\n\n#### This could have all been avoided\n\n36 hours after the transfer was made, there was no sign of the transaction landing in China.\n\nI sent an enquiry to HSBC using their online banking service. This was after their telephone service failed to route me to an appropriate department — all of which were automated.\n\nNot a live representative in sight.\n\n72 hours after I sent the message, I received a reply stating that I needed to communicate with the mainland China bank to get the status of my transaction. This was after the transaction landed back in my HK bank account.\n\nThe amount landing back was considerably less than the amount I sent originally.\n\n#### 96 hours and not a successful transaction\n\nNow, if China allowed Bitcoin transactions into the country via an exchange, where I can then exchange my BTC into RMB and withdraw to my bank account, things would be much better:\n\n* 1 hour maximum for the entire process\n\n* Minimal transaction fees, currently a fraction of what banks charge\n\n* Modern, reliable apps handling my Cryptocurrency trades that do not crash\n\n* No need to contact customer support, the blockchain validates my transaction.\n\nBlockchain and Cryptocurrency is an inevitable evolution of our current banking system, and will finally keep transaction hell in the past.",
      "json_metadata": "{\"tags\":[\"blockchain\",\"bitcoin\",\"china\",\"banks\",\"banking\"],\"image\":[\"https://cdn.steemitimages.com/DQmPoiQj79vtamUhAvugpCq4tYtM8fmiu5v8AY49PpTBodc/transactionHell.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "blockchain",
      "permlink": "transaction-hell-in-2018",
      "title": "Transaction Hell in 2018"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-30T12:53:48",
  "trx_id": "514ae48a75e06bb07506d3e3d25e1a299f31d5b8",
  "trx_in_block": 3,
  "virtual_op": 0
}
2018/06/30 12:47:06
authora-0-1
body# # upvote for me please? https://steemit.com/news/@bible.com/6h36cq #
json metadata{"tags":["ai"],"links":["https://steemit.com/news/@bible.com/6h36cq"],"app":"steemit/0.1"}
parent authorrossbulat
parent permlinkis-big-data-for-you
permlinkre-rossbulat-is-big-data-for-you-20180630t124709033z
title
Transaction InfoBlock #23775562/Trx d91aed977044a31c1d8120cdc5332bc75c4825b4
View Raw JSON Data
{
  "block": 23775562,
  "op": [
    "comment",
    {
      "author": "a-0-1",
      "body": "#\n# upvote for me please? https://steemit.com/news/@bible.com/6h36cq\n#",
      "json_metadata": "{\"tags\":[\"ai\"],\"links\":[\"https://steemit.com/news/@bible.com/6h36cq\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "rossbulat",
      "parent_permlink": "is-big-data-for-you",
      "permlink": "re-rossbulat-is-big-data-for-you-20180630t124709033z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-30T12:47:06",
  "trx_id": "d91aed977044a31c1d8120cdc5332bc75c4825b4",
  "trx_in_block": 45,
  "virtual_op": 0
}
2018/06/30 12:46:48
authorrossbulat
permlinkis-big-data-for-you
voterrossbulat
weight10000 (100.00%)
Transaction InfoBlock #23775556/Trx 13d35422d55cc019c9f666318ddc1aaa63a1227a
View Raw JSON Data
{
  "block": 23775556,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "is-big-data-for-you",
      "voter": "rossbulat",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-30T12:46:48",
  "trx_id": "13d35422d55cc019c9f666318ddc1aaa63a1227a",
  "trx_in_block": 23,
  "virtual_op": 0
}
2018/06/30 12:46:39
authormagic8ball
bodyTo the question in your title, my Magic 8-Ball says:<blockquote>Without a doubt</blockquote><hr>*Hi! I'm a bot, and this answer was posted automatically. Check [this post out](https://steemit.com/introduceyourself/@magic8ball/introducing-the-magic-8-ball-bot) for more information.*
json metadata{"tags":["test"],"app":"steemjs/examples"}
parent authorrossbulat
parent permlinkis-big-data-for-you
permlink20180630t124639766z
title
Transaction InfoBlock #23775553/Trx d1912764d6cc6f664edaf97b94ae06fb634799f0
View Raw JSON Data
{
  "block": 23775553,
  "op": [
    "comment",
    {
      "author": "magic8ball",
      "body": "To the question in your title, my Magic 8-Ball says:<blockquote>Without a doubt</blockquote><hr>*Hi! I'm a bot, and this answer was posted automatically. Check [this post out](https://steemit.com/introduceyourself/@magic8ball/introducing-the-magic-8-ball-bot) for more information.*",
      "json_metadata": "{\"tags\":[\"test\"],\"app\":\"steemjs/examples\"}",
      "parent_author": "rossbulat",
      "parent_permlink": "is-big-data-for-you",
      "permlink": "20180630t124639766z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-30T12:46:39",
  "trx_id": "d1912764d6cc6f664edaf97b94ae06fb634799f0",
  "trx_in_block": 23,
  "virtual_op": 0
}
rossbulatpublished a new post: is-big-data-for-you
2018/06/30 12:46:33
authorrossbulat
body![bigDataForYou.jpeg](https://cdn.steemitimages.com/DQmSz8DXW6VyjT5gdGWcLwRTWwnmb1UDkM1t9MhK7wSk7iB/bigDataForYou.jpeg) #### Big Opportunities with Big Data as a Data Scientist Is big data for you? If so, the demand is here and now. Big data is already playing a huge role in our lives and is predicted to increase at a rapid pace, and deep learning and growing interest in AI is stimulating futher growth. A McKinsey report dating back to May 2011 predicted that big data jobs will be in high demand, quoting huge figures for employment and investment opportunities for 2018 — heres the full quote: *“Now, the US government has earmarked $200 million to support research in big data. But the advancement and use of big data technology can be inhibited by a lack of deep analytical talent. By 2018, the US alone can face a shortage of 140,000 to 190,000 people with deep analytical skills, as well as a 1.5 million managers and analysts with sufficient knowledge, to use the analysis of big data to make effective decisions”* So here we are in 2018 and big data has become a necessity for enterprise level applications to survive. With this emergence, data scientists are in high demand. A data scientist is a professional with a deep technical background who can expertly manipulate data, and be well versed in analytical tools for huge amounts of unstructured data. These professionals can be people with advanced training in the quantitative area, such as statistics, mathematics, and economics. If you come from these fields, you have a head start! As a data scientist you need to have a combination of skills to handle raw data and unstructured data, strong technical knowledge, strong analytical skills and background. Being able to grasp both technical and business sides of an organisation is a must for a data scientist, manipulating data for practical application. In other words, what makes the data scientist unique is the ability to use technical skillsets to solve actual real world problems. A range of complex skills are required, advance quantitative knowledge, business skills, technical experience and problem solving capacity. An analytical, curious individual fits the roll well, who can tell a story with the data in overcoming business challenges. The following qualities characterise a data scientist: * A variety of academic backgrounds acting as a foundation. Graduate or PHD level education in computer science, statistics, applied mathematics, physics or ecomomics provide solid foundations, where proficiency in applied mathematics is a must. * Technical expertise is required. Experience in software engineering, software programming or developing who have developed programming skills. * Mathmaticians or statisticians with advance qualitative skills. * An individual passionate about the idea of data, consistently seeking creative ways to solve data problems and collection of new data, or data mining. Someone who asks “what can we do next?”, as opposed to “what happened?” * Being skeptical of the work, consistently examining the work critically. Be willing to question old assumptions and to re-analyze business problems to come up with fresh solutions. * Understanding and experience of business, knowing and respecting the value of analytics and how analytical tools fit within the organization. Business knowledge is essential in order to position yourself and your solutions correctly to ensure actionable insights can be derived, and therefore make a positive impact on the business. A data scientist needs to have experience in a variety of domains, and in working with different issues, so that solutions can be quickly realised, ranging from a new statistical model to adopting a particular machine learning algorithm. Programming knowledge for Python, R, Hadoop, HBase, Cassandra or SAS is required; Python being widely adopted in the machine learning space for its simplicity and ease of use, making it a good entry into the space. A data scientist can create the tools used to interpret and translate the streams of data into innovative new products. #### The power of Facebook’s Like button Facebook’s data science team consists of 12 researchers. They use math, statistics, computer programming skills and social science to mine the data for insights, which keeps Facebook’s application intelligence up to date. One of their innovations, the Like button, plays a very important role. Letting your network of friends know what you have liked and being able to see who else liked a social media item has fuelled the ability to categorise interests. Within the first 5 months after this feature’s launch, Facebook catalogued more than 5 billion instances of people listening to songs online; the like button is an extremely powerful yet simple tool. Does the role of a data scientist an attractive proposition for you? If so, now is a great time to get into the role as big data continues to dominate enterprise level applications and the forefront of machine learning capabilities.
json metadata{"tags":["ai","deeplearning","bigdata","data","datascience"],"image":["https://cdn.steemitimages.com/DQmSz8DXW6VyjT5gdGWcLwRTWwnmb1UDkM1t9MhK7wSk7iB/bigDataForYou.jpeg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkai
permlinkis-big-data-for-you
titleIs Big Data For You?
Transaction InfoBlock #23775551/Trx f45fdf8965589c6fc8c108a52a7508f785e1aa40
View Raw JSON Data
{
  "block": 23775551,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "![bigDataForYou.jpeg](https://cdn.steemitimages.com/DQmSz8DXW6VyjT5gdGWcLwRTWwnmb1UDkM1t9MhK7wSk7iB/bigDataForYou.jpeg)\n#### Big Opportunities with Big Data as a Data Scientist\n\nIs big data for you? If so, the demand is here and now.\n\nBig data is already playing a huge role in our lives and is predicted to increase at a rapid pace, and deep learning and growing interest in AI is stimulating futher growth.\n\nA McKinsey report dating back to May 2011 predicted that big data jobs will be in high demand, quoting huge figures for employment and investment opportunities for 2018 — heres the full quote:\n\n*“Now, the US government has earmarked $200 million to support research in big data. But the advancement and use of big data technology can be inhibited by a lack of deep analytical talent. By 2018, the US alone can face a shortage of 140,000 to 190,000 people with deep analytical skills, as well as a 1.5 million managers and analysts with sufficient knowledge, to use the analysis of big data to make effective decisions”*\n\nSo here we are in 2018 and big data has become a necessity for enterprise level applications to survive. With this emergence, data scientists are in high demand.\n\nA data scientist is a professional with a deep technical background who can expertly manipulate data, and be well versed in analytical tools for huge amounts of unstructured data. These professionals can be people with advanced training in the quantitative area, such as statistics, mathematics, and economics. If you come from these fields, you have a head start!\n\nAs a data scientist you need to have a combination of skills to handle raw data and unstructured data, strong technical knowledge, strong analytical skills and background. Being able to grasp both technical and business sides of an organisation is a must for a data scientist, manipulating data for practical application.\n\nIn other words, what makes the data scientist unique is the ability to use technical skillsets to solve actual real world problems.\n\nA range of complex skills are required, advance quantitative knowledge, business skills, technical experience and problem solving capacity. An analytical, curious individual fits the roll well, who can tell a story with the data in overcoming business challenges.\n\nThe following qualities characterise a data scientist:\n\n* A variety of academic backgrounds acting as a foundation. Graduate or PHD level education in computer science, statistics, applied mathematics, physics or ecomomics provide solid foundations, where proficiency in applied mathematics is a must.\n\n* Technical expertise is required. Experience in software engineering, software programming or developing who have developed programming skills.\n\n* Mathmaticians or statisticians with advance qualitative skills.\n\n* An individual passionate about the idea of data, consistently seeking creative ways to solve data problems and collection of new data, or data mining. Someone who asks “what can we do next?”, as opposed to “what happened?”\n\n* Being skeptical of the work, consistently examining the work critically. Be willing to question old assumptions and to re-analyze business problems to come up with fresh solutions.\n\n* Understanding and experience of business, knowing and respecting the value of analytics and how analytical tools fit within the organization.\n\nBusiness knowledge is essential in order to position yourself and your solutions correctly to ensure actionable insights can be derived, and therefore make a positive impact on the business. A data scientist needs to have experience in a variety of domains, and in working with different issues, so that solutions can be quickly realised, ranging from a new statistical model to adopting a particular machine learning algorithm.\n\nProgramming knowledge for Python, R, Hadoop, HBase, Cassandra or SAS is required; Python being widely adopted in the machine learning space for its simplicity and ease of use, making it a good entry into the space.\n\nA data scientist can create the tools used to interpret and translate the streams of data into innovative new products.\n\n#### The power of Facebook’s Like button\n\nFacebook’s data science team consists of 12 researchers. They use math, statistics, computer programming skills and social science to mine the data for insights, which keeps Facebook’s application intelligence up to date.\n\nOne of their innovations, the Like button, plays a very important role. Letting your network of friends know what you have liked and being able to see who else liked a social media item has fuelled the ability to categorise interests. Within the first 5 months after this feature’s launch, Facebook catalogued more than 5 billion instances of people listening to songs online; the like button is an extremely powerful yet simple tool.\n\nDoes the role of a data scientist an attractive proposition for you? If so, now is a great time to get into the role as big data continues to dominate enterprise level applications and the forefront of machine learning capabilities.",
      "json_metadata": "{\"tags\":[\"ai\",\"deeplearning\",\"bigdata\",\"data\",\"datascience\"],\"image\":[\"https://cdn.steemitimages.com/DQmSz8DXW6VyjT5gdGWcLwRTWwnmb1UDkM1t9MhK7wSk7iB/bigDataForYou.jpeg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "ai",
      "permlink": "is-big-data-for-you",
      "title": "Is Big Data For You?"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-30T12:46:33",
  "trx_id": "f45fdf8965589c6fc8c108a52a7508f785e1aa40",
  "trx_in_block": 44,
  "virtual_op": 0
}
2018/06/30 12:18:33
authorrossbulat
permlinkwhy-the-blockchain-is-needed
voterendorphoenix
weight10000 (100.00%)
Transaction InfoBlock #23774991/Trx 21e3e49a36e0b4cda9a8edd0dddcce945ccd9f40
View Raw JSON Data
{
  "block": 23774991,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "why-the-blockchain-is-needed",
      "voter": "endorphoenix",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-30T12:18:33",
  "trx_id": "21e3e49a36e0b4cda9a8edd0dddcce945ccd9f40",
  "trx_in_block": 0,
  "virtual_op": 0
}
2018/06/30 12:18:21
authorrossbulat
permlinkwhy-the-blockchain-is-needed
voterrossbulat
weight10000 (100.00%)
Transaction InfoBlock #23774987/Trx bcdd59c41da51e1f9dc21d89aa660168bbb3f3cd
View Raw JSON Data
{
  "block": 23774987,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "why-the-blockchain-is-needed",
      "voter": "rossbulat",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-30T12:18:21",
  "trx_id": "bcdd59c41da51e1f9dc21d89aa660168bbb3f3cd",
  "trx_in_block": 16,
  "virtual_op": 0
}
2018/06/30 12:18:21
authorrossbulat
permlinkwhy-the-blockchain-is-needed
voterfastresteem
weight100 (1.00%)
Transaction InfoBlock #23774987/Trx 17fe3731291d8e1ee73b4e153aec190fb8319dd4
View Raw JSON Data
{
  "block": 23774987,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "why-the-blockchain-is-needed",
      "voter": "fastresteem",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-30T12:18:21",
  "trx_id": "17fe3731291d8e1ee73b4e153aec190fb8319dd4",
  "trx_in_block": 1,
  "virtual_op": 0
}
2018/06/30 12:18:09
authorrossbulat
body![whyBlockchainNeeded.jpg](https://cdn.steemitimages.com/DQmQMZxHWzUMQRgGjuPHi1apL3TKPiqsdniK93mZWNabSUf/whyBlockchainNeeded.jpg) #### The core problem blockchain solves Maintaining **integrity** in distributed systems is the major purpose of the blockchain. But why is maintaining integrity in distributed systems and purely distributed peer-to-peer systems in particular such a challenge? This article answers that question by discovering the subtle relation between trust and integrity of purely distributed peer-to-peer systems. ### Tust and Integrity Trust and integrity are two sides of the same coin. In the context of software systems, integrity is anonfunctional aspect of a system to be: * Safe — resistant to hacking or monopoly of a small amount of participants. * Complete, consistent, correct. * Free of corruption and errors. *Trust* is also the firm belief of humans in the reliability /truth of someone or something without evidence, proof, or investigation. *Trust is given in advance and will increase or decline based on the results of interactions on an ongoing basis:* * You trust your bank until a recession hits, consequently closing the bank and losing your savings. * You trust a particular food brand until you find something undesirable inside the packaging. * You trust an employee to do their job in a satisfactory manor until it comes to light they are not taking their work seriously, which is being reflected in monthly reports. With respect to peer-to-peer systems, this means that people will join and con- tinue to contribute to a system: 1. If they trust it to begin with, and 2. If the results of interacting with the system on an ongoing basis confirm and reinforce their trust. Integrity of the system is needed in order to fulfill the expectations of the users and reinforce their trust in the system. If the trust of the users is not reinforced by the system due to a lack of integrity, the users will abandon the system, which, as a result, will eventually cause it to terminate. Due to the importance of trust for the existence of peer-to-peer systems, the major question is: **How do we achieve and maintain integrity in a purely distributed peer-to-peer system?** Achieving and maintaining integrity in purely distributed systems depends on a variety of factors, some of the most important are: * Knowledge about the number of nodes or peers * Knowledge about the trustworthiness of the peers The chances of achieving integrity in a distributed peer-to-peer system are higher if the number of nodes as well as their trustworthiness is known. This situation is comparable to running a private club that adheres to high moral standards and utilizes a rigorous on-boarding process for new mem- bers. However, the worst circumstances for achieving integrity in a distributed peer-to-peer system are given when the number of nodes and their trust- worthiness is unknown. This is the case when running a purely distributed peer-to-peer system on the Internet that is open to everyone. ### Integrity Threats in Distributed Systems For simplicity, one can consider two major integrity threats in peer-to-peer systems: **Technical failures** Peer-to-peer systems are comprised of the individual computers of its users who communicate via a network. All hardware and software components of a computer system as well as any component of a computer network have the immanent risk of failing or creating errors. Hence, any distributed system has to face the problem that its components may fail or may produce wrong results by chance. **Malicious peers** Malicious members are the second integrity threat in peer-to-peer systems. This source of untrustworthiness is not a technical problem, but rather a problem caused by the goals of the individuals who decide to exploit the system for their own purposes. ### The Core Problem to Be Solved by the Blockchain Achieving integrity and trust in the best of all conditions is easy, but what a blockchain can achieve is the real challenge: **To achieve integrity and trust in a distributed system in the worst of all conditions.** And this is the problem that the blockchain is supposed to solve. The core problem to be solved by the blockchain is achieving and maintaining integrity in a purely distributed peer-to-peer system that consists of an unknown number of peers with unknown reliability and trustworthiness. This problem is not a new one. It is actually a well-known and widely discussed problem in computer science. By utilizing a metaphor from the military, the problem is widely regarded as the Byzantine general problem. *The problem to be solved by the blockchain is achieving and maintaining integrity in a purely distributed peer-to-peer system that consists of an unknown number of peers with unknown reliability and trustworthiness.*
json metadata{"tags":["blockchain","crypto","bitcoin","ethereum","trust"],"image":["https://cdn.steemitimages.com/DQmQMZxHWzUMQRgGjuPHi1apL3TKPiqsdniK93mZWNabSUf/whyBlockchainNeeded.jpg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkblockchain
permlinkwhy-the-blockchain-is-needed
titleWhy The Blockchain is Needed
Transaction InfoBlock #23774983/Trx 0649355d1e83f342e0868affa053e86bb382c55c
View Raw JSON Data
{
  "block": 23774983,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "![whyBlockchainNeeded.jpg](https://cdn.steemitimages.com/DQmQMZxHWzUMQRgGjuPHi1apL3TKPiqsdniK93mZWNabSUf/whyBlockchainNeeded.jpg)\n#### The core problem blockchain solves\n\nMaintaining **integrity** in distributed systems is the major purpose of the blockchain.\n\nBut why is maintaining integrity in distributed systems and purely distributed peer-to-peer systems in particular such a challenge?\n\nThis article answers that question by discovering the subtle relation between trust and integrity of purely distributed peer-to-peer systems.\n\n### Tust and Integrity\n\nTrust and integrity are two sides of the same coin. In the context of software systems, integrity is anonfunctional aspect of a system to be:\n\n* Safe — resistant to hacking or monopoly of a small amount of participants.\n\n* Complete, consistent, correct.\n\n* Free of corruption and errors.\n\n*Trust* is also the firm belief of humans in the reliability /truth of someone or something without evidence, proof, or investigation.\n\n*Trust is given in advance and will increase or decline based on the results of interactions on an ongoing basis:*\n\n* You trust your bank until a recession hits, consequently closing the bank and losing your savings.\n\n* You trust a particular food brand until you find something undesirable inside the packaging.\n\n* You trust an employee to do their job in a satisfactory manor until it comes to light they are not taking their work seriously, which is being reflected in monthly reports.\n\nWith respect to peer-to-peer systems, this means that people will join and con- tinue to contribute to a system:\n\n1. If they trust it to begin with, and\n\n2. If the results of interacting with the system on an ongoing basis confirm and reinforce their trust.\n\nIntegrity of the system is needed in order to fulfill the expectations of the users and reinforce their trust in the system. If the trust of the users is not reinforced by the system due to a lack of integrity, the users will abandon the system, which, as a result, will eventually cause it to terminate.\n\nDue to the importance of trust for the existence of peer-to-peer systems, the major question is: **How do we achieve and maintain integrity in a purely distributed peer-to-peer system?**\n\nAchieving and maintaining integrity in purely distributed systems depends on a variety of factors, some of the most important are:\n\n* Knowledge about the number of nodes or peers\n\n* Knowledge about the trustworthiness of the peers\n\nThe chances of achieving integrity in a distributed peer-to-peer system are higher if the number of nodes as well as their trustworthiness is known.\n\nThis situation is comparable to running a private club that adheres to high moral standards and utilizes a rigorous on-boarding process for new mem- bers.\n\nHowever, the worst circumstances for achieving integrity in a distributed peer-to-peer system are given when the number of nodes and their trust- worthiness is unknown. This is the case when running a purely distributed peer-to-peer system on the Internet that is open to everyone.\n\n### Integrity Threats in Distributed Systems\n\nFor simplicity, one can consider two major integrity threats in peer-to-peer systems:\n\n**Technical failures**\n\nPeer-to-peer systems are comprised of the individual computers of its users who communicate via a network. All hardware and software components of a computer system as well as any component of a computer network have the immanent risk of failing or creating errors. Hence, any distributed system has to face the problem that its components may fail or may produce wrong results by chance.\n\n**Malicious peers**\n\nMalicious members are the second integrity threat in peer-to-peer systems. This source of untrustworthiness is not a technical problem, but rather a problem caused by the goals of the individuals who decide to exploit the system for their own purposes.\n\n### The Core Problem to Be Solved by the Blockchain\n\nAchieving integrity and trust in the best of all conditions is easy, but what a blockchain can achieve is the real challenge:\n\n**To achieve integrity and trust in a distributed system in the worst of all conditions.**\n\nAnd this is the problem that the blockchain is supposed to solve. The core problem to be solved by the blockchain is achieving and maintaining integrity in a purely distributed peer-to-peer system that consists of an unknown number of peers with unknown reliability and trustworthiness.\n\nThis problem is not a new one. It is actually a well-known and widely discussed problem in computer science. By utilizing a metaphor from the military, the problem is widely regarded as the Byzantine general problem.\n\n*The problem to be solved by the blockchain is achieving and maintaining integrity in a purely distributed peer-to-peer system that consists of an unknown number of peers with unknown reliability and trustworthiness.*",
      "json_metadata": "{\"tags\":[\"blockchain\",\"crypto\",\"bitcoin\",\"ethereum\",\"trust\"],\"image\":[\"https://cdn.steemitimages.com/DQmQMZxHWzUMQRgGjuPHi1apL3TKPiqsdniK93mZWNabSUf/whyBlockchainNeeded.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "blockchain",
      "permlink": "why-the-blockchain-is-needed",
      "title": "Why The Blockchain is Needed"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-30T12:18:09",
  "trx_id": "0649355d1e83f342e0868affa053e86bb382c55c",
  "trx_in_block": 30,
  "virtual_op": 0
}
2018/06/30 03:28:21
authorrossbulat
permlinkre-rossbulat-macos-install-mongodb-php-driver-and-mongodb-composer-extension-20180630t032753436z
voterrossbulat
weight10000 (100.00%)
Transaction InfoBlock #23764388/Trx 8b7aca85e85f71a8864be963b33c75a710b9b48b
View Raw JSON Data
{
  "block": 23764388,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "re-rossbulat-macos-install-mongodb-php-driver-and-mongodb-composer-extension-20180630t032753436z",
      "voter": "rossbulat",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-30T03:28:21",
  "trx_id": "8b7aca85e85f71a8864be963b33c75a710b9b48b",
  "trx_in_block": 21,
  "virtual_op": 0
}
2018/06/30 03:28:15
authorrossbulat
body@@ -35,16 +35,17 @@ s comman +d should
json metadata{"tags":["macos"],"app":"steemit/0.1"}
parent authorrossbulat
parent permlinkmacos-install-mongodb-php-driver-and-mongodb-composer-extension
permlinkre-rossbulat-macos-install-mongodb-php-driver-and-mongodb-composer-extension-20180630t032753436z
title
Transaction InfoBlock #23764386/Trx d799a68e15739abb93bbbf3266e46dbc4d6b89b8
View Raw JSON Data
{
  "block": 23764386,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "@@ -35,16 +35,17 @@\n s comman\n+d\n  should \n",
      "json_metadata": "{\"tags\":[\"macos\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "rossbulat",
      "parent_permlink": "macos-install-mongodb-php-driver-and-mongodb-composer-extension",
      "permlink": "re-rossbulat-macos-install-mongodb-php-driver-and-mongodb-composer-extension-20180630t032753436z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-30T03:28:15",
  "trx_id": "d799a68e15739abb93bbbf3266e46dbc4d6b89b8",
  "trx_in_block": 4,
  "virtual_op": 0
}
2018/06/30 03:27:54
authorrossbulat
bodyPosting a correction: The csrutils comman should be csrutil (no s).
json metadata{"tags":["macos"],"app":"steemit/0.1"}
parent authorrossbulat
parent permlinkmacos-install-mongodb-php-driver-and-mongodb-composer-extension
permlinkre-rossbulat-macos-install-mongodb-php-driver-and-mongodb-composer-extension-20180630t032753436z
title
Transaction InfoBlock #23764379/Trx c400e1fb78dd09a37967244ed98eea014d63b1f9
View Raw JSON Data
{
  "block": 23764379,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "Posting a correction:\n\nThe csrutils comman should be csrutil (no s).",
      "json_metadata": "{\"tags\":[\"macos\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "rossbulat",
      "parent_permlink": "macos-install-mongodb-php-driver-and-mongodb-composer-extension",
      "permlink": "re-rossbulat-macos-install-mongodb-php-driver-and-mongodb-composer-extension-20180630t032753436z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-30T03:27:54",
  "trx_id": "c400e1fb78dd09a37967244ed98eea014d63b1f9",
  "trx_in_block": 10,
  "virtual_op": 0
}
2018/06/22 17:36:03
authorrossbulat
permlinkbusiness-intelligence-vs-data-science
voterubg
weight100 (1.00%)
Transaction InfoBlock #23551018/Trx 6afa5d66c626e77ad876f96ccdd0bf0eed64f07c
View Raw JSON Data
{
  "block": 23551018,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "business-intelligence-vs-data-science",
      "voter": "ubg",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-22T17:36:03",
  "trx_id": "6afa5d66c626e77ad876f96ccdd0bf0eed64f07c",
  "trx_in_block": 18,
  "virtual_op": 0
}
2018/06/22 17:11:27
authorrossbulat
permlinkbusiness-intelligence-vs-data-science
voterluigion
weight10000 (100.00%)
Transaction InfoBlock #23550526/Trx 1c56602a3ca64fd4e32069840b04567c2b1f7286
View Raw JSON Data
{
  "block": 23550526,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "business-intelligence-vs-data-science",
      "voter": "luigion",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-22T17:11:27",
  "trx_id": "1c56602a3ca64fd4e32069840b04567c2b1f7286",
  "trx_in_block": 27,
  "virtual_op": 0
}
2018/06/22 16:33:33
authorrossbulat
body@@ -3575,18 +3575,18 @@ that ar - e + more peo
json metadata{"tags":["bigdata","ai","data","science","deeplearning"],"image":["https://cdn.steemitimages.com/DQmXajkVEtNw443tSqb1q7jTANzrFw9bMUr1WXydjckte98/bigData.jpg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkbigdata
permlinkbusiness-intelligence-vs-data-science
titleBusiness Intelligence Vs Data Science
Transaction InfoBlock #23549768/Trx e0b23b338af6c7f9bbfb966058deaf82dedaaa1f
View Raw JSON Data
{
  "block": 23549768,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "@@ -3575,18 +3575,18 @@\n  that ar\n- \n e\n+ \n more peo\n",
      "json_metadata": "{\"tags\":[\"bigdata\",\"ai\",\"data\",\"science\",\"deeplearning\"],\"image\":[\"https://cdn.steemitimages.com/DQmXajkVEtNw443tSqb1q7jTANzrFw9bMUr1WXydjckte98/bigData.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "bigdata",
      "permlink": "business-intelligence-vs-data-science",
      "title": "Business Intelligence Vs Data Science"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-22T16:33:33",
  "trx_id": "e0b23b338af6c7f9bbfb966058deaf82dedaaa1f",
  "trx_in_block": 61,
  "virtual_op": 0
}
2018/06/22 16:19:54
authorrossbulat
body@@ -104,19 +104,19 @@ g)%0A%0A -In the last +Within this dec
json metadata{"tags":["bigdata","ai","data","science","deeplearning"],"image":["https://cdn.steemitimages.com/DQmXajkVEtNw443tSqb1q7jTANzrFw9bMUr1WXydjckte98/bigData.jpg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkbigdata
permlinkbusiness-intelligence-vs-data-science
titleBusiness Intelligence Vs Data Science
Transaction InfoBlock #23549495/Trx 5456de346f9aadb7f68de116254bdca6096745b7
View Raw JSON Data
{
  "block": 23549495,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "@@ -104,19 +104,19 @@\n g)%0A%0A\n-In the last\n+Within this\n  dec\n",
      "json_metadata": "{\"tags\":[\"bigdata\",\"ai\",\"data\",\"science\",\"deeplearning\"],\"image\":[\"https://cdn.steemitimages.com/DQmXajkVEtNw443tSqb1q7jTANzrFw9bMUr1WXydjckte98/bigData.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "bigdata",
      "permlink": "business-intelligence-vs-data-science",
      "title": "Business Intelligence Vs Data Science"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-22T16:19:54",
  "trx_id": "5456de346f9aadb7f68de116254bdca6096745b7",
  "trx_in_block": 4,
  "virtual_op": 0
}
2018/06/22 16:14:36
authorrossbulat
permlinkbusiness-intelligence-vs-data-science
voterrossbulat
weight10000 (100.00%)
Transaction InfoBlock #23549389/Trx a0d8b3e7545d3fd8f8899ab62aa508612ba24df7
View Raw JSON Data
{
  "block": 23549389,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "business-intelligence-vs-data-science",
      "voter": "rossbulat",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-22T16:14:36",
  "trx_id": "a0d8b3e7545d3fd8f8899ab62aa508612ba24df7",
  "trx_in_block": 17,
  "virtual_op": 0
}
2018/06/22 16:13:45
authorrossbulat
body![bigData.jpg](https://cdn.steemitimages.com/DQmXajkVEtNw443tSqb1q7jTANzrFw9bMUr1WXydjckte98/bigData.jpg) In the last decade Big Data has become the focus of organisations to discover insights they would never have asked using traditional analysis methods. Organisations of all fields now combine and compare data, in an effort to: * Optimise business operations * Lower cost * Improve quality of products and services * Increase productivity and create new products. Businesses are becomnig more data driven, and analytics are playing an increasingly more important role. If you have been running an online business for the past decade, how many analytics tools do you use today compared to 5–8 years ago? Regardless, these tools have become an order of magnitude more capable at the above tasks. The breakthroughs have been coming from a Data Science approach to storing and analysing data — as opposed to the traditional Business Intelligence method. At this point it is worth visiting what exactly Big Data really means, as the Data Science appraoch requires large amounts of data from various sources. Here are some characteristics: * Clusters of data consisting of millions if not billions of data records * A collection of data too big to store on one storage array, and too large to be processed by a single machine. * Constantly growing, connected, organic. * Unstructured. ~90%+ of new data generated today is semistructured or unstructured data. As you can imagine, trying to analyse Big Data in a traditional manor like spreadsheets and metric reporting is rather like trying to fit a sphere into a square hole; it won’t work. Let’s summarize the difference between these two terms, and then reflect on which method you are using the most in your business today. You may ask yourself whether there is potential to introduce more of one, or the other. *__Business Intelligence__ is a traditional data analysis method, whereby questions are predetermined and attempted to be answered through your data collection and analysis processes.* *__Data Science__ is a method of analysing data of various sources to find what questions to ask; to find important questions that your organisation would otherwise miss: trends, predictions and insights you would not otherwise notice through traditional intelligence methods are derived from this Data Science approach.* ### Business Intelligence Simple reporting, spreadsheets and sophisticated drill-down analysis, have become commonplace usage for business intelligence, using a consistent set of metrics to measure past performance, and inform business planning. Business Intelligence refers to the use of company data to understand the business operation and facilitate decision making. In traditional data warehousing, business data are gathered, stored and analyzed to develop business reporting. This standard method has been somewhat automated and conveniently processed by computers for the best part of 2 decades as we have endeavoured to understand more about our businesses. Microsoft, Google and others provide great tools for these kinds of tasks. ### Data Science “Data Science” refers to the tools and methods that are being used to analyze large amounts of data, to make sense of big data, and to find out what the data can tell us about how to do business better. By querying millions of records, analysing terabytes or even zetta-bytes (1,120,000,000,000,000,000,000; a trillion million bytes) of information, businesses are able to predict prices, trends, and design future products that ar emore people oriented. In the traditional business intelligence method, business users determine what questions to ask, such as monthly sales reports, customer surveys and product profitability analysis. **IT departments capture structured data from their storage system and analyze it to answer pre-determined questions.** With the new Data Science approach, your business **delivers a platform to store, refune and analyze various data sources that enable creative discovery**. Business users then explore what questions can be asked, such as how can we maximise our asset utilisation? What is the best product strategy? Rich data allows users to tackle questions that are impossible to answer by the traditional BI systems. The Data Science method is indeed an attractive prospect, laying the groundwork for predictive tools in machine learning, the utilisation of neural networks to come to conclusions on your path of discovery; personal interests of mine at least. But Business Intelligence is also necessary. A fixed suite of tools we can use to analyse progress in a structured, measurable manor. Now this article has outlined a clear understanding of the 2 approaches, ask yourself which one you are adopting the most in your business. Is there a healthy balance? *The future belongs to the companies and the people that can use data science to turn data into products.*
json metadata{"tags":["bigdata","ai","data","science","deeplearning"],"image":["https://cdn.steemitimages.com/DQmXajkVEtNw443tSqb1q7jTANzrFw9bMUr1WXydjckte98/bigData.jpg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkbigdata
permlinkbusiness-intelligence-vs-data-science
titleBusiness Intelligence Vs Data Science
Transaction InfoBlock #23549372/Trx a753c74de5fd077661b128cf3122e12dbad0539f
View Raw JSON Data
{
  "block": 23549372,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "![bigData.jpg](https://cdn.steemitimages.com/DQmXajkVEtNw443tSqb1q7jTANzrFw9bMUr1WXydjckte98/bigData.jpg)\n\nIn the last decade Big Data has become the focus of organisations to discover insights they would never have asked using traditional analysis methods.\n\nOrganisations of all fields now combine and compare data, in an effort to:\n\n* Optimise business operations\n\n* Lower cost\n\n* Improve quality of products and services\n\n* Increase productivity and create new products.\n\nBusinesses are becomnig more data driven, and analytics are playing an increasingly more important role. If you have been running an online business for the past decade, how many analytics tools do you use today compared to 5–8 years ago? Regardless, these tools have become an order of magnitude more capable at the above tasks.\n\nThe breakthroughs have been coming from a Data Science approach to storing and analysing data — as opposed to the traditional Business Intelligence method.\n\nAt this point it is worth visiting what exactly Big Data really means, as the Data Science appraoch requires large amounts of data from various sources. Here are some characteristics:\n\n* Clusters of data consisting of millions if not billions of data records\n\n* A collection of data too big to store on one storage array, and too large to be processed by a single machine.\n* Constantly growing, connected, organic.\n\n* Unstructured. ~90%+ of new data generated today is semistructured or unstructured data.\n\nAs you can imagine, trying to analyse Big Data in a traditional manor like spreadsheets and metric reporting is rather like trying to fit a sphere into a square hole; it won’t work.\n\nLet’s summarize the difference between these two terms, and then reflect on which method you are using the most in your business today. You may ask yourself whether there is potential to introduce more of one, or the other.\n\n*__Business Intelligence__ is a traditional data analysis method, whereby questions are predetermined and attempted to be answered through your data collection and analysis processes.*\n\n*__Data Science__ is a method of analysing data of various sources to find what questions to ask; to find important questions that your organisation would otherwise miss: trends, predictions and insights you would not otherwise notice through traditional intelligence methods are derived from this Data Science approach.*\n\n### Business Intelligence\n\nSimple reporting, spreadsheets and sophisticated drill-down analysis, have become commonplace usage for business intelligence, using a consistent set of metrics to measure past performance, and inform business planning.\nBusiness Intelligence refers to the use of company data to understand the business operation and facilitate decision making.\n\nIn traditional data warehousing, business data are gathered, stored and analyzed to develop business reporting.\nThis standard method has been somewhat automated and conveniently processed by computers for the best part of 2 decades as we have endeavoured to understand more about our businesses. Microsoft, Google and others provide great tools for these kinds of tasks.\n\n### Data Science\n\n“Data Science” refers to the tools and methods that are being used to analyze large amounts of data, to make sense of big data, and to find out what the data can tell us about how to do business better.\n\nBy querying millions of records, analysing terabytes or even zetta-bytes (1,120,000,000,000,000,000,000; a trillion million bytes) of information, businesses are able to predict prices, trends, and design future products that ar emore people oriented.\n\nIn the traditional business intelligence method, business users determine what questions to ask, such as monthly sales reports, customer surveys and product profitability analysis. **IT departments capture structured data from their storage system and analyze it to answer pre-determined questions.**\n\nWith the new Data Science approach, your business **delivers a platform to store, refune and analyze various data sources that enable creative discovery**. Business users then explore what questions can be asked, such as how can we maximise our asset utilisation? What is the best product strategy?\n\nRich data allows users to tackle questions that are impossible to answer by the traditional BI systems.\n\nThe Data Science method is indeed an attractive prospect, laying the groundwork for predictive tools in machine learning, the utilisation of neural networks to come to conclusions on your path of discovery; personal interests of mine at least.\nBut Business Intelligence is also necessary. A fixed suite of tools we can use to analyse progress in a structured, measurable manor.\n\nNow this article has outlined a clear understanding of the 2 approaches, ask yourself which one you are adopting the most in your business. Is there a healthy balance?\n\n*The future belongs to the companies and the people that can use data science to turn data into products.*",
      "json_metadata": "{\"tags\":[\"bigdata\",\"ai\",\"data\",\"science\",\"deeplearning\"],\"image\":[\"https://cdn.steemitimages.com/DQmXajkVEtNw443tSqb1q7jTANzrFw9bMUr1WXydjckte98/bigData.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "bigdata",
      "permlink": "business-intelligence-vs-data-science",
      "title": "Business Intelligence Vs Data Science"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-22T16:13:45",
  "trx_id": "a753c74de5fd077661b128cf3122e12dbad0539f",
  "trx_in_block": 15,
  "virtual_op": 0
}
2018/06/21 16:36:24
authorrossbulat
permlinkceiling-analysis-in-deep-learning-and-software-development
votervixmemon
weight10000 (100.00%)
Transaction InfoBlock #23521028/Trx ad255ffe066845faa6df181168c2aa4f9962a202
View Raw JSON Data
{
  "block": 23521028,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "ceiling-analysis-in-deep-learning-and-software-development",
      "voter": "vixmemon",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-21T16:36:24",
  "trx_id": "ad255ffe066845faa6df181168c2aa4f9962a202",
  "trx_in_block": 44,
  "virtual_op": 0
}
2018/06/21 03:46:57
authorrossbulat
body@@ -2632,10 +2632,10 @@ he E -M V +M (Et
json metadata{"tags":["blockchain","ai","robotics","deeplearning","ethereum"],"image":["https://cdn.steemitimages.com/DQmPcHsL377KUGbDDs5HaQ7bUDxBif7tuq5JAj4n8g2jAiR/dae.jpg"],"links":["https://arduino.cc","https://create.arduino.cc/projecthub"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkblockchain
permlinkhow-a-decentralised-automated-economy-works
titleHow a Decentralised Automated Economy Works
Transaction InfoBlock #23505639/Trx 1281e6ca1745c8b9bb4ad8face348090499f9440
View Raw JSON Data
{
  "block": 23505639,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "@@ -2632,10 +2632,10 @@\n he E\n-M\n V\n+M\n  (Et\n",
      "json_metadata": "{\"tags\":[\"blockchain\",\"ai\",\"robotics\",\"deeplearning\",\"ethereum\"],\"image\":[\"https://cdn.steemitimages.com/DQmPcHsL377KUGbDDs5HaQ7bUDxBif7tuq5JAj4n8g2jAiR/dae.jpg\"],\"links\":[\"https://arduino.cc\",\"https://create.arduino.cc/projecthub\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "blockchain",
      "permlink": "how-a-decentralised-automated-economy-works",
      "title": "How a Decentralised Automated Economy Works"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-21T03:46:57",
  "trx_id": "1281e6ca1745c8b9bb4ad8face348090499f9440",
  "trx_in_block": 16,
  "virtual_op": 0
}
2018/06/21 02:34:42
authorrossbulat
permlinkhow-a-decentralised-automated-economy-works
voterrossbulat
weight10000 (100.00%)
Transaction InfoBlock #23504194/Trx c9979e4c01b93bb7fa5390e0e6d85f9af1d7b550
View Raw JSON Data
{
  "block": 23504194,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "how-a-decentralised-automated-economy-works",
      "voter": "rossbulat",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-21T02:34:42",
  "trx_id": "c9979e4c01b93bb7fa5390e0e6d85f9af1d7b550",
  "trx_in_block": 18,
  "virtual_op": 0
}
2018/06/21 02:33:54
authorrossbulat
body![dae.jpg](https://cdn.steemitimages.com/DQmPcHsL377KUGbDDs5HaQ7bUDxBif7tuq5JAj4n8g2jAiR/dae.jpg) I have coined the acronym DAE — Decentralised Automated Ecomomy — in this article to describe a system that adopts blockchain and smart contract technology, along with automation and AI capable of true non-human work. Let me explain the idea further, then dive into an example of a robotic system that collects water for a local economy in a decentralised manor, whereby no one would own the robot, and Cryptocurrency would be the means of payment for the robot to continue its work — a decentralised pay as you go model if you like. ### Electronics for everyone With the rise of the <a href="https://arduino.cc" target="_blank">Arduino</a> platform and its economy of low cost electronics, anyone can now endevour into creating automated solutions for every day tasks at low barrier to entry. The quality of these electronics is high and reliable; prototypes can be just as reliable as a mass produced product. If you or your team can fulfil your market’s demands, you could indeed sell your Arduino derived units to your intended audience. The Raspberry Pi ecosystem, open source AI software and 3D printing have been catalysts to the rapidly growing community around AI software and development. Why? Because anyone with an internet connection can purchase these cheap electronics and study the software. Anyone can become an AI developer. Indeed, AI and robotic automation is nothing new to large corporations. In eCommerce for example, Amazon’s or Alibiba’s fulfilment warehouses are operated by rovers that autonomously deliver products to the packer. Just like runways are automatically assigned to aircraft, shelves are picked up and assigned to an allotted space, and then taken to the human packer when an order is due. This is great, but Amazon’s fulfilment fees are not cheap (relatively speaking). One would argue that a high level of automation could lower costings and consequently lower end-user fulfilment fees. We have not seen this; but it no longer matters — we will be seeing these kinds of systems come into the home, office or warehouse to anyone who desires such a system in the near future. Automated rovers are commonly used as a means of studying robotics. Equipped with object detection sensors and a pathfinding algorithm, rovers can get from point A to B without a single neural network. ### The blockchain element At JKRB we believe that the blockchain will play a huge role in a world where machines will carry out labour intensive tasks. Let’s take a smart contract capable blockchain, the EMV (Ethereum’s blockchain, the Ethereum Virtual Machine), and create a smart contract capable of managing payments to a physical machine, prompting it to continue its work Imagine a scenario where we can send Cryptocurrency to our autonomous rover. In turn, the rover will carry out its task that we have programmed it to do. The amount of work the rover undertakes is dependent on the amount of Cryptocurrency we pay the rover. Our rover is assigned to drive to a nearby water reserve, collect some water, and then drive it back to a nearby town. Amongst the poorest communities on the planet, the task of collecting water not only is time consuming, it drains considerable energy from those undertaking the task. ### Locking humans out of the machine To make the rover truly decentralised, we need to lock ourselves out of the system. Change the root password to a programattic random string, make our private key inaccessible and non-readable, etc. Removing the possibility of a human fiddling with the internal software is a necessity. The smart contract handles the rovers economy, and our automation software handles its job. Now, some interesting economics surface from this model: * Our Cryptocurrency value is not fixed. In a poorer community, 0.0000001 of our token could pay for 10 hours of rover labour, for example, ensuring any community can fund the system. * It is in the interst of the entire community for the rover to run smoothly. Therefore it is unlikely the rover will be tampered with or intentionally damaged. It is also incentivising for the community to study various maintenance techniques to keep the rover running optimally. * Power management can be operated automatically. When the rover battery is low, it could drive to a charging station, powered by renewable energy. * When the rover needs maintenance, the additional value created by the community within the time & energy saved from the long walk to collect water would be more than enough to pay maintenance costs. * Non-profits or community groups could donate to the rover at any time, as it would have a network card installed allowing it access to the blockchain. This is only one rover performing one task. If we multiply our tasks and time savings, such an approach can dramatically improve a community’s standard of living. DAEs could be a great priviledge for a society. Do you like the idea of autonomous systems? Visit the <a href="https://create.arduino.cc/projecthub" target="_blank">Arduino Project Hub</a> to get some inspiration. Try creating a system for yourself around your home, whether it may be mowing lawn, vacuuming, watering plants, or washing windows. As these jobs compound free time — how will you utilise it?
json metadata{"tags":["blockchain","ai","robotics","deeplearning","ethereum"],"image":["https://cdn.steemitimages.com/DQmPcHsL377KUGbDDs5HaQ7bUDxBif7tuq5JAj4n8g2jAiR/dae.jpg"],"links":["https://arduino.cc","https://create.arduino.cc/projecthub"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkblockchain
permlinkhow-a-decentralised-automated-economy-works
titleHow a Decentralised Automated Economy Works
Transaction InfoBlock #23504178/Trx b9f165ba46588da7977f6acb240195ad88da4146
View Raw JSON Data
{
  "block": 23504178,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "![dae.jpg](https://cdn.steemitimages.com/DQmPcHsL377KUGbDDs5HaQ7bUDxBif7tuq5JAj4n8g2jAiR/dae.jpg)\n\nI have coined the acronym DAE — Decentralised Automated Ecomomy — in this article to describe a system that adopts blockchain and smart contract technology, along with automation and AI capable of true non-human work.\n\nLet me explain the idea further, then dive into an example of a robotic system that collects water for a local economy in a decentralised manor, whereby no one would own the robot, and Cryptocurrency would be the means of payment for the robot to continue its work — a decentralised pay as you go model if you like.\n\n### Electronics for everyone\n\nWith the rise of the <a href=\"https://arduino.cc\" target=\"_blank\">Arduino</a> platform and its economy of low cost electronics, anyone can now endevour into creating automated solutions for every day tasks at low barrier to entry.\n\nThe quality of these electronics is high and reliable; prototypes can be just as reliable as a mass produced product. If you or your team can fulfil your market’s demands, you could indeed sell your Arduino derived units to your intended audience.\n\nThe Raspberry Pi ecosystem, open source AI software and 3D printing have been catalysts to the rapidly growing community around AI software and development.\n\nWhy? Because anyone with an internet connection can purchase these cheap electronics and study the software. Anyone can become an AI developer.\n\nIndeed, AI and robotic automation is nothing new to large corporations. In eCommerce for example, Amazon’s or Alibiba’s fulfilment warehouses are operated by rovers that autonomously deliver products to the packer. Just like runways are automatically assigned to aircraft, shelves are picked up and assigned to an allotted space, and then taken to the human packer when an order is due.\n\nThis is great, but Amazon’s fulfilment fees are not cheap (relatively speaking). One would argue that a high level of automation could lower costings and consequently lower end-user fulfilment fees. We have not seen this; but it no longer matters — we will be seeing these kinds of systems come into the home, office or warehouse to anyone who desires such a system in the near future.\n\nAutomated rovers are commonly used as a means of studying robotics. Equipped with object detection sensors and a pathfinding algorithm, rovers can get from point A to B without a single neural network.\n\n### The blockchain element\n\nAt JKRB we believe that the blockchain will play a huge role in a world where machines will carry out labour intensive tasks.\n\nLet’s take a smart contract capable blockchain, the EMV (Ethereum’s blockchain, the Ethereum Virtual Machine), and create a smart contract capable of managing payments to a physical machine, prompting it to continue its work\n\nImagine a scenario where we can send Cryptocurrency to our autonomous rover. In turn, the rover will carry out its task that we have programmed it to do.\n\nThe amount of work the rover undertakes is dependent on the amount of Cryptocurrency we pay the rover.\n\nOur rover is assigned to drive to a nearby water reserve, collect some water, and then drive it back to a nearby town.\nAmongst the poorest communities on the planet, the task of collecting water not only is time consuming, it drains considerable energy from those undertaking the task.\n\n### Locking humans out of the machine\n\nTo make the rover truly decentralised, we need to lock ourselves out of the system. Change the root password to a programattic random string, make our private key inaccessible and non-readable, etc. Removing the possibility of a human fiddling with the internal software is a necessity.\n\nThe smart contract handles the rovers economy, and our automation software handles its job.\n\nNow, some interesting economics surface from this model:\n\n* Our Cryptocurrency value is not fixed. In a poorer community, 0.0000001 of our token could pay for 10 hours of rover labour, for example, ensuring any community can fund the system.\n\n* It is in the interst of the entire community for the rover to run smoothly. Therefore it is unlikely the rover will be tampered with or intentionally damaged. It is also incentivising for the community to study various maintenance techniques to keep the rover running optimally.\n\n* Power management can be operated automatically. When the rover battery is low, it could drive to a charging station, powered by renewable energy.\n\n* When the rover needs maintenance, the additional value created by the community within the time & energy saved from the long walk to collect water would be more than enough to pay maintenance costs.\n\n* Non-profits or community groups could donate to the rover at any time, as it would have a network card installed allowing it access to the blockchain.\n\nThis is only one rover performing one task. If we multiply our tasks and time savings, such an approach can dramatically improve a community’s standard of living.\n\nDAEs could be a great priviledge for a society.\n\nDo you like the idea of autonomous systems? Visit the <a href=\"https://create.arduino.cc/projecthub\" target=\"_blank\">Arduino Project Hub</a> to get some inspiration.\n\nTry creating a system for yourself around your home, whether it may be mowing lawn, vacuuming, watering plants, or washing windows.\n\nAs these jobs compound free time — how will you utilise it?",
      "json_metadata": "{\"tags\":[\"blockchain\",\"ai\",\"robotics\",\"deeplearning\",\"ethereum\"],\"image\":[\"https://cdn.steemitimages.com/DQmPcHsL377KUGbDDs5HaQ7bUDxBif7tuq5JAj4n8g2jAiR/dae.jpg\"],\"links\":[\"https://arduino.cc\",\"https://create.arduino.cc/projecthub\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "blockchain",
      "permlink": "how-a-decentralised-automated-economy-works",
      "title": "How a Decentralised Automated Economy Works"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-21T02:33:54",
  "trx_id": "b9f165ba46588da7977f6acb240195ad88da4146",
  "trx_in_block": 18,
  "virtual_op": 0
}
2018/06/21 01:01:45
authorrossbulat
permlinkceiling-analysis-in-deep-learning-and-software-development
voterthetroublenotes
weight30 (0.30%)
Transaction InfoBlock #23502336/Trx efcd9788a1214621fe832ae356e907fc4af84125
View Raw JSON Data
{
  "block": 23502336,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "ceiling-analysis-in-deep-learning-and-software-development",
      "voter": "thetroublenotes",
      "weight": 30
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-21T01:01:45",
  "trx_id": "efcd9788a1214621fe832ae356e907fc4af84125",
  "trx_in_block": 5,
  "virtual_op": 0
}
2018/06/21 01:00:42
authorrossbulat
body@@ -1655,32 +1655,63 @@ tworks:%0A%0A* A CNN + (Convolutional Neural Network) that determines
json metadata{"tags":["deeplearning","ai","algorithms","robotics","developer"],"image":["https://cdn.steemitimages.com/DQmaceg2jj6beYn554x1SUGZfDcyUxU822281kUDjqEfjqJ/ceilingAnalysis.jpg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkdeeplearning
permlinkceiling-analysis-in-deep-learning-and-software-development
titleCeiling Analysis in Deep Learning and Software Development
Transaction InfoBlock #23502315/Trx b8ed7af860ce209f20afae72787e7c27afb32ffd
View Raw JSON Data
{
  "block": 23502315,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "@@ -1655,32 +1655,63 @@\n tworks:%0A%0A* A CNN\n+ (Convolutional Neural Network)\n  that determines\n",
      "json_metadata": "{\"tags\":[\"deeplearning\",\"ai\",\"algorithms\",\"robotics\",\"developer\"],\"image\":[\"https://cdn.steemitimages.com/DQmaceg2jj6beYn554x1SUGZfDcyUxU822281kUDjqEfjqJ/ceilingAnalysis.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "deeplearning",
      "permlink": "ceiling-analysis-in-deep-learning-and-software-development",
      "title": "Ceiling Analysis in Deep Learning and Software Development"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-21T01:00:42",
  "trx_id": "b8ed7af860ce209f20afae72787e7c27afb32ffd",
  "trx_in_block": 73,
  "virtual_op": 0
}
2018/06/20 03:54:36
authorrossbulat
permlinkceiling-analysis-in-deep-learning-and-software-development
votershaotinglin
weight10000 (100.00%)
Transaction InfoBlock #23477008/Trx 919475f50ee30fead1c1fc8a7267ebd886e5e331
View Raw JSON Data
{
  "block": 23477008,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "ceiling-analysis-in-deep-learning-and-software-development",
      "voter": "shaotinglin",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-20T03:54:36",
  "trx_id": "919475f50ee30fead1c1fc8a7267ebd886e5e331",
  "trx_in_block": 2,
  "virtual_op": 0
}
2018/06/20 03:50:12
authorrossbulat
permlinkceiling-analysis-in-deep-learning-and-software-development
voterrossbulat
weight10000 (100.00%)
Transaction InfoBlock #23476920/Trx 73b82284976c52c5377c21b7587048d70a2d645f
View Raw JSON Data
{
  "block": 23476920,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "ceiling-analysis-in-deep-learning-and-software-development",
      "voter": "rossbulat",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-20T03:50:12",
  "trx_id": "73b82284976c52c5377c21b7587048d70a2d645f",
  "trx_in_block": 3,
  "virtual_op": 0
}
2018/06/20 03:49:42
authorrossbulat
permlinkceiling-analysis-in-deep-learning-and-software-development
voterwaliladeluxe
weight10000 (100.00%)
Transaction InfoBlock #23476910/Trx 2bcaad5e14f57602bd38bec03a405ac1904b4609
View Raw JSON Data
{
  "block": 23476910,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "ceiling-analysis-in-deep-learning-and-software-development",
      "voter": "waliladeluxe",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-20T03:49:42",
  "trx_id": "2bcaad5e14f57602bd38bec03a405ac1904b4609",
  "trx_in_block": 23,
  "virtual_op": 0
}
2018/06/20 03:49:21
authorrossbulat
body![ceilingAnalysis.jpg](https://cdn.steemitimages.com/DQmaceg2jj6beYn554x1SUGZfDcyUxU822281kUDjqEfjqJ/ceilingAnalysis.jpg) If you are a software engineer you know that your time is valuable; you prioritise your tasks in the seemingly never-ending list of books to read, an optimisation to carry out, an iteration or a transition to complete. Ceiling Analysis is a way to systematically find the weakest component of your system, and therefore optimising that weakest component would best serve your time to bring the greatest improvement to the overall system. To perform ceiling analysis in the context of deep learning, I firstly need a system in place, and have my testset data run through my system providing a baseline accuracy to improve upon. *Ceiling analysis is the process of manually overriding each component in your system to provide 100% accurate predictions with that component. Thereafter, you can observe the overall improvement of your deep learning system component by component.* Let's firstly invent a scenario and then explain how to use ceiling analysis. ### The Scenario Lets say we have built a deep learning system that fetches Instagram images from my feed that aims to categorise the images into 3 groups: * Group 1: Image with 1 male face, and with no text in the image. * Group 2: Image with 1 female face, and with no text in the image. * Group 3: All other images. The pipeline would look something like this: Instagram API Request -> Image Storage -> **Text detection** -> **Face Detection** -> **Gender Detection** My pipeline is relatively linear, but my stack has a mixture of layers consiting of 3 neural networks: * A CNN that determines whether there is text in my image * A CNN that determines whether there is a face, and only 1 face, in my image * A CNN that determines whether that face is male or female I run my testset data through my system, 10,000 processed Instagram images, and get the following accuracy: **Baseline Accuracy: 68%** Improvements can be made; anything below a 95% accuracy is not considered useful in such a system, therefore ceiling analysis is in urgent need to determine what component would yield the fastest improvements. ### What to improve? In ceiling analysis, we *manually overwrite* a component to provide 100% accuracy. We do this chronologically until all our components are manually overridden, and observe the changes in accuracy, one component at a time. By the end of this process, my algorithms and overall system will be predicting 100% accuracy. The process looks like this: * Change your first component to provide 100% accurate results * Run your system and observe the accuracy % * Change the sequential component to provide 100% accurate results * Run your system and observe the accuracy % * *Repeat for your remaining components* My results would look something like this: _Baseline Accuracy: **68%** Perfect Text Detection: **69%** Perfect Face Detection: **78%** Perfect Gender Detection: 100%_ As we can see, perfect text detection only yielded a 1% improvement in our overall accuracy. This suggests that perhaps any time invested in improving our text recognition algorithm will likely not improve our overall system that much. Text recognition is not the issue here. Moving onto the face detection, again, looks quite strong, but could be optimised as there is a 9% difference given perfect face detection results. Working on this component may be a good bet to improve the overall accuracy. Before making the final call, let's observe the final component. It appears that gender detection is struggling the most, yielding a 22% improvement in accuracy with perfect results. Now, this is by far the weakest link in my overall system. ### Conclusion Ceiling analysis suggests that working on the gender detection component of my system will yield the best overall improvements. The data is clear, so I would now be confident to assign my team to work on gender detection. Ceiling analysis acts as a guarantee that you are focussing on the correct component of your system of which improvements are likely to yield substantial improvements in accuracy. As a project manager, you do not want to allocate resources and time to tasks that will not yield results; be 100% sure that what you assign your team to is worthwhile. Always refer to the data. Ignore your hunch or gut feeling. Ceiling analysis is not only limited to deep learning. As a web developer, it can also be used to analyse the speed for your content delivery for example. For a complex web application that delivers content from a range of sources, utilises complex queries and aggregation from your databases, performs requests to a number of external sources and locations etc, ceiling analysis is a useful tool to determine how to speed up your app. Is ceiling analysis in your software toolkit? Try to use this tool in other areas of your life - determine the best course of action before embarking on a task. You may save a lot of time.
json metadata{"tags":["deeplearning","ai","algorithms","robotics","developer"],"image":["https://cdn.steemitimages.com/DQmaceg2jj6beYn554x1SUGZfDcyUxU822281kUDjqEfjqJ/ceilingAnalysis.jpg"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkdeeplearning
permlinkceiling-analysis-in-deep-learning-and-software-development
titleCeiling Analysis in Deep Learning and Software Development
Transaction InfoBlock #23476903/Trx 59c0df0da6c3e278a84f1da085e060eff1501dda
View Raw JSON Data
{
  "block": 23476903,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "![ceilingAnalysis.jpg](https://cdn.steemitimages.com/DQmaceg2jj6beYn554x1SUGZfDcyUxU822281kUDjqEfjqJ/ceilingAnalysis.jpg)\n\nIf you are a software engineer you know that your time is valuable; you prioritise your tasks in the seemingly never-ending list of books to read, an optimisation to carry out, an iteration or a transition to complete.\n\nCeiling Analysis is a way to systematically find the weakest component of your system, and therefore optimising that weakest component would best serve your time to bring the greatest improvement to the overall system.\n\nTo perform ceiling analysis in the context of deep learning, I firstly need a system in place, and have my testset data run through my system providing a baseline accuracy to improve upon.\n\n*Ceiling analysis is the process of manually overriding each component in your system to provide 100% accurate predictions with that component. Thereafter, you can observe the overall improvement of your deep learning system component by component.*\n\nLet's firstly invent a scenario and then explain how to use ceiling analysis.\n\n### The Scenario\n\nLets say we have built a deep learning system that fetches Instagram images from my feed that aims to categorise the images into 3 groups:\n\n* Group 1: Image with 1 male face, and with no text in the image.\n* Group 2: Image with 1 female face, and with no text in the image.\n* Group 3: All other images.\n\nThe pipeline would look something like this:\n\nInstagram API Request -> Image Storage -> **Text detection** -> **Face Detection** -> **Gender Detection**\n\nMy pipeline is relatively linear, but my stack has a mixture of layers consiting of 3 neural networks:\n\n* A CNN that determines whether there is text in my image\n* A CNN that determines whether there is a face, and only 1 face, in my image\n* A CNN that determines whether that face is male or female\n\nI run my testset data through my system, 10,000 processed Instagram images, and get the following accuracy:\n\n**Baseline Accuracy: 68%**\n\nImprovements can be made; anything below a 95% accuracy is not considered useful in such a system, therefore ceiling analysis is in urgent need to determine what component would yield the fastest improvements.\n\n### What to improve?\n\nIn ceiling analysis, we *manually overwrite* a component to provide 100% accuracy. We do this chronologically until all our components are manually overridden, and observe the changes in accuracy, one component at a time. By the end of this process, my algorithms and overall system will be predicting 100% accuracy.\n\nThe process looks like this:\n\n* Change your first component to provide 100% accurate results\n* Run your system and observe the accuracy %\n* Change the sequential component to provide 100% accurate results\n* Run your system and observe the accuracy %\n* *Repeat for your remaining components*\n\nMy results would look something like this:\n\n_Baseline Accuracy: **68%**\nPerfect Text Detection: **69%**\nPerfect Face Detection: **78%**\nPerfect Gender Detection: 100%_\n\nAs we can see, perfect text detection only yielded a 1% improvement in our overall accuracy. This suggests that perhaps any time invested in improving our text recognition algorithm will likely not improve our overall system that much.\n\nText recognition is not the issue here.\n\nMoving onto the face detection, again, looks quite strong, but could be optimised as there is a 9% difference given perfect face detection results. Working on this component may be a good bet to improve the overall accuracy. Before making the final call, let's observe the final component.\n\nIt appears that gender detection is struggling the most, yielding a 22% improvement in accuracy with perfect results. Now, this is by far the weakest link in my overall system.\n\n### Conclusion\n\nCeiling analysis suggests that working on the gender detection component of my system will yield the best overall improvements. The data is clear, so I would now be confident to assign my team to work on gender detection.\n\nCeiling analysis acts as a guarantee that you are focussing on the correct component of your system of which improvements are likely to yield substantial improvements in accuracy.\n\nAs a project manager, you do not want to allocate resources and time to tasks that will not yield results; be 100% sure that what you assign your team to is worthwhile.\n\nAlways refer to the data. Ignore your hunch or gut feeling.\n\nCeiling analysis is not only limited to deep learning. As a web developer, it can also be used to analyse the speed for your content delivery for example.\n\nFor a complex web application that delivers content from a range of sources, utilises complex queries and aggregation from your databases, performs requests to a number of external sources and locations etc, ceiling analysis is a useful tool to determine how to speed up your app.\n\nIs ceiling analysis in your software toolkit?\n\nTry to use this tool in other areas of your life - determine the best course of action before embarking on a task.\nYou may save a lot of time.",
      "json_metadata": "{\"tags\":[\"deeplearning\",\"ai\",\"algorithms\",\"robotics\",\"developer\"],\"image\":[\"https://cdn.steemitimages.com/DQmaceg2jj6beYn554x1SUGZfDcyUxU822281kUDjqEfjqJ/ceilingAnalysis.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "deeplearning",
      "permlink": "ceiling-analysis-in-deep-learning-and-software-development",
      "title": "Ceiling Analysis in Deep Learning and Software Development"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-20T03:49:21",
  "trx_id": "59c0df0da6c3e278a84f1da085e060eff1501dda",
  "trx_in_block": 9,
  "virtual_op": 0
}
2018/06/18 16:08:45
authorunixfriend
bodyFor Debian and Ubuntu there is a quite powerful repository for PHP and many extensions - including the MongoDB driver: https://deb.sury.org/ For Debian check out the `README.txt` on: https://packages.sury.org/php/ For Ubuntu there is a Repo on Launchpad: https://launchpad.net/~ondrej/+archive/ubuntu/php/
json metadata{"tags":["macos"],"links":["https://deb.sury.org/","https://packages.sury.org/php/","https://launchpad.net/~ondrej/+archive/ubuntu/php/"],"app":"steemit/0.1"}
parent authorrossbulat
parent permlinkmacos-install-mongodb-php-driver-and-mongodb-composer-extension
permlinkre-rossbulat-macos-install-mongodb-php-driver-and-mongodb-composer-extension-20180618t160845445z
title
Transaction InfoBlock #23434117/Trx 53cdcbf1e69dbb4830cc3b2e7e62a35262a4f418
View Raw JSON Data
{
  "block": 23434117,
  "op": [
    "comment",
    {
      "author": "unixfriend",
      "body": "For Debian and Ubuntu there is a quite powerful repository for PHP and many extensions - including the MongoDB driver: https://deb.sury.org/\n\nFor Debian check out the `README.txt` on: https://packages.sury.org/php/\n\nFor Ubuntu there is a Repo on Launchpad:\nhttps://launchpad.net/~ondrej/+archive/ubuntu/php/",
      "json_metadata": "{\"tags\":[\"macos\"],\"links\":[\"https://deb.sury.org/\",\"https://packages.sury.org/php/\",\"https://launchpad.net/~ondrej/+archive/ubuntu/php/\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "rossbulat",
      "parent_permlink": "macos-install-mongodb-php-driver-and-mongodb-composer-extension",
      "permlink": "re-rossbulat-macos-install-mongodb-php-driver-and-mongodb-composer-extension-20180618t160845445z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-18T16:08:45",
  "trx_id": "53cdcbf1e69dbb4830cc3b2e7e62a35262a4f418",
  "trx_in_block": 29,
  "virtual_op": 0
}
2018/06/14 06:07:36
authorrossbulat
body@@ -3487,16 +3487,17 @@ t, compe +t ition, p
json metadata{"tags":["bitcoin","blockchain","ethereum","cryptocurrency","development"],"image":["https://cdn.steemitimages.com/DQmPCSKvq6d5EQyomqgD38rchhss5mFAGL9U9dK6mMz9We8/cryptoFishing.jpg"],"links":["https://en.wikipedia.org/wiki/List_of_banking_crises"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkbitcoin
permlinkcryptocurrency-momentum-is-building-as-bank-fragility-increases
titleCryptocurrency Momentum is Building as Bank Fragility Increases
Transaction InfoBlock #23306920/Trx d2c92f4bfee9f1458477a0bd3225b4bfa0b4ff8f
View Raw JSON Data
{
  "block": 23306920,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "@@ -3487,16 +3487,17 @@\n t, compe\n+t\n ition, p\n",
      "json_metadata": "{\"tags\":[\"bitcoin\",\"blockchain\",\"ethereum\",\"cryptocurrency\",\"development\"],\"image\":[\"https://cdn.steemitimages.com/DQmPCSKvq6d5EQyomqgD38rchhss5mFAGL9U9dK6mMz9We8/cryptoFishing.jpg\"],\"links\":[\"https://en.wikipedia.org/wiki/List_of_banking_crises\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "bitcoin",
      "permlink": "cryptocurrency-momentum-is-building-as-bank-fragility-increases",
      "title": "Cryptocurrency Momentum is Building as Bank Fragility Increases"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-14T06:07:36",
  "trx_id": "d2c92f4bfee9f1458477a0bd3225b4bfa0b4ff8f",
  "trx_in_block": 3,
  "virtual_op": 0
}
2018/06/14 05:35:36
idfollow
json["follow",{"follower":"rossbulat","following":"biblegateway","what":["ignore"]}]
required auths[]
required posting auths["rossbulat"]
Transaction InfoBlock #23306280/Trx 7a393e2f524a916570999cc99d3cd0bcc55019a2
View Raw JSON Data
{
  "block": 23306280,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"rossbulat\",\"following\":\"biblegateway\",\"what\":[\"ignore\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "rossbulat"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-14T05:35:36",
  "trx_id": "7a393e2f524a916570999cc99d3cd0bcc55019a2",
  "trx_in_block": 42,
  "virtual_op": 0
}
2018/06/14 05:32:36
authorrossbulat
permlinkcryptocurrency-momentum-is-building-as-bank-fragility-increases
votershaotinglin
weight10000 (100.00%)
Transaction InfoBlock #23306220/Trx d1e379dfede1fea77da377449bd2cc494c480a1b
View Raw JSON Data
{
  "block": 23306220,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "cryptocurrency-momentum-is-building-as-bank-fragility-increases",
      "voter": "shaotinglin",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-14T05:32:36",
  "trx_id": "d1e379dfede1fea77da377449bd2cc494c480a1b",
  "trx_in_block": 9,
  "virtual_op": 0
}
2018/06/14 05:30:39
authorrossbulat
permlinkcryptocurrency-momentum-is-building-as-bank-fragility-increases
voterhackerzizon
weight100 (1.00%)
Transaction InfoBlock #23306181/Trx cf2ccf33a8ec55754dda5e4b205421a81e531457
View Raw JSON Data
{
  "block": 23306181,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "cryptocurrency-momentum-is-building-as-bank-fragility-increases",
      "voter": "hackerzizon",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-14T05:30:39",
  "trx_id": "cf2ccf33a8ec55754dda5e4b205421a81e531457",
  "trx_in_block": 10,
  "virtual_op": 0
}
2018/06/14 05:30:18
authorrossbulat
permlinkcryptocurrency-momentum-is-building-as-bank-fragility-increases
voteredgarcarpt
weight10000 (100.00%)
Transaction InfoBlock #23306174/Trx 76474d43515c99a669b3658eb72153ff4f3552f1
View Raw JSON Data
{
  "block": 23306174,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "cryptocurrency-momentum-is-building-as-bank-fragility-increases",
      "voter": "edgarcarpt",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-14T05:30:18",
  "trx_id": "76474d43515c99a669b3658eb72153ff4f3552f1",
  "trx_in_block": 44,
  "virtual_op": 0
}
2018/06/14 05:30:18
authorrossbulat
permlinkcryptocurrency-momentum-is-building-as-bank-fragility-increases
voterrossbulat
weight10000 (100.00%)
Transaction InfoBlock #23306174/Trx 6b62f0df11c14c33cbb80ec80147241c5183dfd2
View Raw JSON Data
{
  "block": 23306174,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "cryptocurrency-momentum-is-building-as-bank-fragility-increases",
      "voter": "rossbulat",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-14T05:30:18",
  "trx_id": "6b62f0df11c14c33cbb80ec80147241c5183dfd2",
  "trx_in_block": 37,
  "virtual_op": 0
}
2018/06/14 05:30:12
authorbiblegateway
bodyGod bless you. https://steemit.com/@biblegateway
json metadata{"tags":["bitcoin"],"links":["https://steemit.com/@biblegateway"],"app":"steemit/0.1"}
parent authorrossbulat
parent permlinkcryptocurrency-momentum-is-building-as-bank-fragility-increases
permlinkre-rossbulat-cryptocurrency-momentum-is-building-as-bank-fragility-increases-20180614t053014972z
title
Transaction InfoBlock #23306172/Trx 1e4649792df2905c8a57ccea1c97200099c61677
View Raw JSON Data
{
  "block": 23306172,
  "op": [
    "comment",
    {
      "author": "biblegateway",
      "body": "God bless you. https://steemit.com/@biblegateway",
      "json_metadata": "{\"tags\":[\"bitcoin\"],\"links\":[\"https://steemit.com/@biblegateway\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "rossbulat",
      "parent_permlink": "cryptocurrency-momentum-is-building-as-bank-fragility-increases",
      "permlink": "re-rossbulat-cryptocurrency-momentum-is-building-as-bank-fragility-increases-20180614t053014972z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-14T05:30:12",
  "trx_id": "1e4649792df2905c8a57ccea1c97200099c61677",
  "trx_in_block": 14,
  "virtual_op": 0
}
2018/06/14 05:30:03
authorrossbulat
body![cryptoFishing.jpg](https://cdn.steemitimages.com/DQmPCSKvq6d5EQyomqgD38rchhss5mFAGL9U9dK6mMz9We8/cryptoFishing.jpg) Imagine the Cryptocurrency market is fishing for adoption. The adoption line has been trying its luck since the first pizza was bought using Bitcoin in 2008. At this time the lake was not too healthy; there were little fish and the stream was shallow due to the lack of rainful and weak current; but the potential of the lake was fully understood by those aware, potentials that could offer profound changes to society. **The Blockchain** was hooked to the line; the underlying technology that will attract breakthrough services and adoption. Of course, just as a thriving natural ecosystem providing an abundance of fish for a society has profound effects for the standard of living, so does a thriving Cryptocurrency market. By automating economic activity in a trustless manor (Blockchains work out who we should trust so we don’t have to), *removing banks and the human element* from payment processing thus *removing fraud and corruption*, and *freeing time and energy* for more pressing real world problems — are **critical changes** to society that if done right will obsolete fundamental economic systems we rely on today, and ultimately distribute power amongst more inhabitants on this planet. *There was never only one big lake existing on the planet that fed the entire population.* Lakes are **vastly distributed** across the world offering a vast number of fresh water sources, fish and vegetation. Only recent history has given rise to the central bank, and even centralised power authorities for that matter. *150 years ago your average farmer would be power independant, and power sufficient with their own windmills, trading in a localised economy.* So how has our crypto lake’s current been steadily growing strength and thus strengthening its ecosystem? - With releases of critical infrastructure such as trusted exchanges - Hardware wallets such as Trezor and Ledger - Market analysis tools allowing greater investor understanding - A growing crypto community spanning social platforms On top of this, the bait hooked to the fishing line is becoming ever so more attractive: - Blockchain software is rapidly gaining sophistication as the developer community are introduced to it, learn it, and then contribute in their own ways. - Every aspect of a blockchain is undergoing improvement, from methods of consensus to scalability. - Blockchain economies are being experimented with, some sacrificing true decentralisation for speed with a super-nodes, or different tiers of nodes thus having tiered permissions and responsibilites within the blockchain. - Consensus algorithms are becoming more sophisticated with an ever growing community willing to test drive and get invovled — a stark contrast to a secretive corporative system. The stream is undeniably gaining momentum and strength. Why? Because blockchain and Cryptocurrency solve fundamental problems in society. And there is (at least I believe there to be) real value in Cryptocurrency and blockchain. It is impossible to put a price on the security of your monetry value to never be taken away. Just look at the <a href="https://en.wikipedia.org/wiki/List_of_banking_crises" target="_blank">List of Banking Crises (Wikipedia)</a> to understand the sheer amount of collapses, rescue packages, and money lost due to a range of reasons — incompitance, lack of foresight, compeition, political conflicts, or simply a failed banking system at the fundamental level. For the past few decades we have had to choose our banks wisely and make changes should you see a risk of losing your assets. *The data is clear: There is a **100% probability** that there will more collapses in the future.* On top of this we suffer from inflation, a deliberate mechanism that decreases the value of our fiat holdings. If you hold $1000 in 2017, that same $1000 in 2018 will be valued significantly less due to inflation. Interest rates are now infinitesimally small or in the negative, so investing is the only way to make your money work for you, to maintain or grow the value. Blockchains do not collapse, and cannot be closed down by a central authority. **Banks know this, and must know better than anyone else the inevitability of another collapse. It will happen, and soon — that’s what the data says.** When this happens, will people of the Earth let another bailout take place with tax payer money? Will the people let the bank absorb their life savings? Or will they look for an alternative. Truly decentralised systems cannot be supressed. Given the choice between a decentralised, uncontrolled digital currency, or a central bank controlled digital currency, which one would you choose? Which one would you have more power by holding and using? Ultimately, which one would have more value? The first and only alternative to fiat currency available today is blockchain and Cryptocurrency. And the growth is not slowing down. Pulling a couple of announcements from major exchanges in only the last week gives us a sense of the growth pace: - Just this year Binance has grown from 2 million users to 9 million users (yes, even with the market dip and successive dips we have experienced) and at the time of this writing have just announced plans for a fiat to crypto trading pair, most likely EUR-BTC, operating from their Malta entity. - Coinbase is rolling out tool after tool for large institutions and investment firms and buying up smaller companies they see fit for their mission. Coinbase Pro, Coinbase Index Fund, support for ERC20 tokens, Coinbase Commerce and tax tools are being rolled out as adoption of the platform continues. #### Back to fishing Getting back to our fishing analogy, let’s ask the following: How long do you think it will take before the lake can fully sustain a society? Will the bait need to be continuously upgraded or will we reach a point of the technology being superior to the banking system, where it is no longer necessary to attract further adoption? The central bank rope-line is fraying, dissipating in strength. When will we see that line snap and witness the central banks being washed away? There will be considerable changes to the monetary landscape within the next 5 years.
json metadata{"tags":["bitcoin","blockchain","ethereum","cryptocurrency","development"],"image":["https://cdn.steemitimages.com/DQmPCSKvq6d5EQyomqgD38rchhss5mFAGL9U9dK6mMz9We8/cryptoFishing.jpg"],"links":["https://en.wikipedia.org/wiki/List_of_banking_crises"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkbitcoin
permlinkcryptocurrency-momentum-is-building-as-bank-fragility-increases
titleCryptocurrency Momentum is Building as Bank Fragility Increases
Transaction InfoBlock #23306169/Trx 59f6f17b6200b4cabd2d782eca604c0c85404e5f
View Raw JSON Data
{
  "block": 23306169,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "![cryptoFishing.jpg](https://cdn.steemitimages.com/DQmPCSKvq6d5EQyomqgD38rchhss5mFAGL9U9dK6mMz9We8/cryptoFishing.jpg)\n\nImagine the Cryptocurrency market is fishing for adoption.\n\nThe adoption line has been trying its luck since the first pizza was bought using Bitcoin in 2008. At this time the lake was not too healthy; there were little fish and the stream was shallow due to the lack of rainful and weak current; but the potential of the lake was fully understood by those aware, potentials that could offer profound changes to society.\n\n**The Blockchain** was hooked to the line; the underlying technology that will attract breakthrough services and adoption.\n\nOf course, just as a thriving natural ecosystem providing an abundance of fish for a society has profound effects for the standard of living, so does a thriving Cryptocurrency market.\n\nBy automating economic activity in a trustless manor (Blockchains work out who we should trust so we don’t have to), *removing banks and the human element* from payment processing thus *removing fraud and corruption*, and *freeing time and energy* for more pressing real world problems — are **critical changes** to society that if done right will obsolete fundamental economic systems we rely on today, and ultimately distribute power amongst more inhabitants on this planet.\n\n*There was never only one big lake existing on the planet that fed the entire population.*\n\nLakes are **vastly distributed** across the world offering a vast number of fresh water sources, fish and vegetation. Only recent history has given rise to the central bank, and even centralised power authorities for that matter.\n\n*150 years ago your average farmer would be power independant, and power sufficient with their own windmills, trading in a localised economy.*\n\nSo how has our crypto lake’s current been steadily growing strength and thus strengthening its ecosystem?\n\n- With releases of critical infrastructure such as trusted exchanges\n\n- Hardware wallets such as Trezor and Ledger\n\n- Market analysis tools allowing greater investor understanding\n\n- A growing crypto community spanning social platforms\n\nOn top of this, the bait hooked to the fishing line is becoming ever so more attractive:\n\n- Blockchain software is rapidly gaining sophistication as the developer community are introduced to it, learn it, and then contribute in their own ways.\n\n- Every aspect of a blockchain is undergoing improvement, from methods of consensus to scalability.\n\n- Blockchain economies are being experimented with, some sacrificing true decentralisation for speed with a super-nodes, or different tiers of nodes thus having tiered permissions and responsibilites within the blockchain.\n\n- Consensus algorithms are becoming more sophisticated with an ever growing community willing to test drive and get invovled — a stark contrast to a secretive corporative system.\n\nThe stream is undeniably gaining momentum and strength.\n\nWhy?\n\nBecause blockchain and Cryptocurrency solve fundamental problems in society. And there is (at least I believe there to be) real value in Cryptocurrency and blockchain. It is impossible to put a price on the security of your monetry value to never be taken away.\n\nJust look at the <a href=\"https://en.wikipedia.org/wiki/List_of_banking_crises\" target=\"_blank\">List of Banking Crises (Wikipedia)</a>  to understand the sheer amount of collapses, rescue packages, and money lost due to a range of reasons — incompitance, lack of foresight, compeition, political conflicts, or simply a failed banking system at the fundamental level.\n\nFor the past few decades we have had to choose our banks wisely and make changes should you see a risk of losing your assets.\n\n*The data is clear: There is a **100% probability** that there will more collapses in the future.*\n\nOn top of this we suffer from inflation, a deliberate mechanism that decreases the value of our fiat holdings. If you hold $1000 in 2017, that same $1000 in 2018 will be valued significantly less due to inflation. Interest rates are now infinitesimally small or in the negative, so investing is the only way to make your money work for you, to maintain or grow the value.\n\nBlockchains do not collapse, and cannot be closed down by a central authority.\n\n**Banks know this, and must know better than anyone else the inevitability of another collapse. It will happen, and soon — that’s what the data says.**\n\nWhen this happens, will people of the Earth let another bailout take place with tax payer money? Will the people let the bank absorb their life savings? Or will they look for an alternative.\n\nTruly decentralised systems cannot be supressed. Given the choice between a decentralised, uncontrolled digital currency, or a central bank controlled digital currency, which one would you choose? Which one would you have more power by holding and using? Ultimately, which one would have more value?\n\nThe first and only alternative to fiat currency available today is blockchain and Cryptocurrency.\n\nAnd the growth is not slowing down. Pulling a couple of announcements from major exchanges in only the last week gives us a sense of the growth pace:\n\n- Just this year Binance has grown from 2 million users to 9 million users (yes, even with the market dip and successive dips we have experienced) and at the time of this writing have just announced plans for a fiat to crypto trading pair, most likely EUR-BTC, operating from their Malta entity.\n\n- Coinbase is rolling out tool after tool for large institutions and investment firms and buying up smaller companies they see fit for their mission. Coinbase Pro, Coinbase Index Fund, support for ERC20 tokens, Coinbase Commerce and tax tools are being rolled out as adoption of the platform continues.\n\n#### Back to fishing\n\nGetting back to our fishing analogy, let’s ask the following:\n\nHow long do you think it will take before the lake can fully sustain a society?\n\nWill the bait need to be continuously upgraded or will we reach a point of the technology being superior to the banking system, where it is no longer necessary to attract further adoption?\n\nThe central bank rope-line is fraying, dissipating in strength. When will we see that line snap and witness the central banks being washed away?\n\nThere will be considerable changes to the monetary landscape within the next 5 years.",
      "json_metadata": "{\"tags\":[\"bitcoin\",\"blockchain\",\"ethereum\",\"cryptocurrency\",\"development\"],\"image\":[\"https://cdn.steemitimages.com/DQmPCSKvq6d5EQyomqgD38rchhss5mFAGL9U9dK6mMz9We8/cryptoFishing.jpg\"],\"links\":[\"https://en.wikipedia.org/wiki/List_of_banking_crises\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "bitcoin",
      "permlink": "cryptocurrency-momentum-is-building-as-bank-fragility-increases",
      "title": "Cryptocurrency Momentum is Building as Bank Fragility Increases"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-14T05:30:03",
  "trx_id": "59f6f17b6200b4cabd2d782eca604c0c85404e5f",
  "trx_in_block": 21,
  "virtual_op": 0
}
2018/06/12 03:53:45
authorrossbulat
body@@ -1996,18 +1996,16 @@ owing:%0A%0A -%60%60 %60sudo pe @@ -2023,18 +2023,16 @@ mongodb%60 -%60%60 %0A%0ALet th @@ -2338,16 +2338,17 @@ is:%0A%0A%60%60%60 +%0A Configur
json metadata{"tags":["macos","php","mongodb","web","development"],"image":["https://cdn.steemitimages.com/DQmWu55Pg8jWCbMKCX4rWCNskj7XFH8JeGJzpBQFYPyPESS/installMongoDBPHPmac.jpg"],"links":["https://docs.mongodb.com/php-library/current/tutorial/crud/#find-many-documents"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkmacos
permlinkmacos-install-mongodb-php-driver-and-mongodb-composer-extension
titleMacOS: Install MongoDB PHP Driver and mongodb Composer Extension
Transaction InfoBlock #23246656/Trx 5c4e358fcd26dccc590b8a842690fc59026de578
View Raw JSON Data
{
  "block": 23246656,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "@@ -1996,18 +1996,16 @@\n owing:%0A%0A\n-%60%60\n %60sudo pe\n@@ -2023,18 +2023,16 @@\n mongodb%60\n-%60%60\n %0A%0ALet th\n@@ -2338,16 +2338,17 @@\n is:%0A%0A%60%60%60\n+%0A\n Configur\n",
      "json_metadata": "{\"tags\":[\"macos\",\"php\",\"mongodb\",\"web\",\"development\"],\"image\":[\"https://cdn.steemitimages.com/DQmWu55Pg8jWCbMKCX4rWCNskj7XFH8JeGJzpBQFYPyPESS/installMongoDBPHPmac.jpg\"],\"links\":[\"https://docs.mongodb.com/php-library/current/tutorial/crud/#find-many-documents\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "macos",
      "permlink": "macos-install-mongodb-php-driver-and-mongodb-composer-extension",
      "title": "MacOS: Install MongoDB PHP Driver and mongodb Composer Extension"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-12T03:53:45",
  "trx_id": "5c4e358fcd26dccc590b8a842690fc59026de578",
  "trx_in_block": 16,
  "virtual_op": 0
}
2018/06/12 03:50:51
authorrossbulat
permlinkmacos-install-mongodb-php-driver-and-mongodb-composer-extension
votershaotinglin
weight10000 (100.00%)
Transaction InfoBlock #23246598/Trx 0b0ddf68622030b272cb927b857e7f037f691875
View Raw JSON Data
{
  "block": 23246598,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "macos-install-mongodb-php-driver-and-mongodb-composer-extension",
      "voter": "shaotinglin",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-12T03:50:51",
  "trx_id": "0b0ddf68622030b272cb927b857e7f037f691875",
  "trx_in_block": 2,
  "virtual_op": 0
}
2018/06/12 03:50:21
authorrossbulat
permlinkmacos-install-mongodb-php-driver-and-mongodb-composer-extension
voterrossbulat
weight10000 (100.00%)
Transaction InfoBlock #23246588/Trx a4211b2ee3f899e724ca75f5ed283c7c9f298f45
View Raw JSON Data
{
  "block": 23246588,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "macos-install-mongodb-php-driver-and-mongodb-composer-extension",
      "voter": "rossbulat",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-12T03:50:21",
  "trx_id": "a4211b2ee3f899e724ca75f5ed283c7c9f298f45",
  "trx_in_block": 22,
  "virtual_op": 0
}
2018/06/12 03:50:12
authorrossbulat
body![installMongoDBPHPmac.jpg](https://cdn.steemitimages.com/DQmWu55Pg8jWCbMKCX4rWCNskj7XFH8JeGJzpBQFYPyPESS/installMongoDBPHPmac.jpg) Sometimes a seemingly simple task of installing a package can oftentimes run into unexpected errors and roadblocks that leaves you head scratching, especially dealing with legacy codebases. Because of macOS’s security software, you may run into an error when installing the MongoDB PHP Driver via PECL. The simplest and recommended way of installing the driver is via PECL, so this needs to be readily available on your Mac. ### Disabling csrutils To perform our driver installation you may need to disable macOSs system integrity protection “csrutils” process. This process ensures that the /usr folder on your mac is not tampered with, disabling write access and therefore throwing an error when attempting to install new software. One such case of this happening is when installing the MongoDB PHP driver. To temporarily disable csrutils: * Reboot your Mac and hold `CMD + R` at reboot. This boots into recovery. * Select your language before opening the terminal in **Utilities**, **Terminal**. * submit the following commands: ``` csrutils disable reboot ``` <br /> From here your Mac will reboot with integrity protection disabled. ### Install PEAR / PECL on MacOS ``` curl -O http://pear.php.net/go-pear.phar sudo php -d detect_unicode=0 go-pear.phar ``` <br /> When prompted, enter `1`, `/usr/local/pear`,` 4`, and `/usr/local/bin` Verify pear is installed with pear version and we are good to go. ### Install MongoDB PHP Driver *Note: The MongoDB driver requires an openssl installation, however the required software is installed with your Mac provided you run the Xcode development tools. If on Linux however, make sure to install openssl development tools. On Red Hat, run `sudo yum install openssl openssl-devel`. On Ubuntu, run `sudo apt-get install openssl libssl-dev`.* Installing the driver now should go without issue. Run the following: ```sudo pecl install mongodb``` Let the installation process complete. At the end of installation you will be prompted to add the extension=mongodb.so in your php.ini file. ### Finding your php.ini file If you are unsure what .ini file you are using in your local web apps, firstly run php --ini. However, you may get something like this: ```Configuration File (php.ini) Path: /etc Loaded Configuration File: (none) Scan for additional .ini files in: (none) Additional .ini files parsed: (none) ``` <br /> If this is the case, create a `phpinfo();` page on one of your development sites and take note of the ini file location. Look out for Loaded Configuration File. Once this is determined, simply add the extension to the file. `sudo vi <path-to-your-php-ini-file>` ### Enable csrutils Now we are done with our installation, boot into recovery mode and enable crsutils again: ``` csrutils enable reboot ``` <br /> ### Installing MongoDB for PHP via composer Provided we have the driver installed, run the following composer command: `sudo php -c <path-to-your-php-ini-file> composer.phar require mongodb` Here we use the -c flag to provide composer with the php.ini file your local websites are using. Installation completed! From here you can communicate with MongoDB from within your PHP scripts. Refer to the PHP library to get familiar with the available operations, starting with the CRUD suite of functions at https://docs.mongodb.com/php-library/current/tutorial/crud/#find-many-documents.
json metadata{"tags":["macos","php","mongodb","web","development"],"image":["https://cdn.steemitimages.com/DQmWu55Pg8jWCbMKCX4rWCNskj7XFH8JeGJzpBQFYPyPESS/installMongoDBPHPmac.jpg"],"links":["https://docs.mongodb.com/php-library/current/tutorial/crud/#find-many-documents"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkmacos
permlinkmacos-install-mongodb-php-driver-and-mongodb-composer-extension
titleMacOS: Install MongoDB PHP Driver and mongodb Composer Extension
Transaction InfoBlock #23246585/Trx 24441421417643b7df8a88ae171f84664c290428
View Raw JSON Data
{
  "block": 23246585,
  "op": [
    "comment",
    {
      "author": "rossbulat",
      "body": "![installMongoDBPHPmac.jpg](https://cdn.steemitimages.com/DQmWu55Pg8jWCbMKCX4rWCNskj7XFH8JeGJzpBQFYPyPESS/installMongoDBPHPmac.jpg)\n\nSometimes a seemingly simple task of installing a package can oftentimes run into unexpected errors and roadblocks that leaves you head scratching, especially dealing with legacy codebases. Because of macOS’s security software, you may run into an error when installing the MongoDB PHP Driver via PECL.\n\nThe simplest and recommended way of installing the driver is via PECL, so this needs to be readily available on your Mac.\n\n### Disabling csrutils\n\nTo perform our driver installation you may need to disable macOSs system integrity protection “csrutils” process. This process ensures that the /usr folder on your mac is not tampered with, disabling write access and therefore throwing an error when attempting to install new software. One such case of this happening is when installing the MongoDB PHP driver.\n\nTo temporarily disable csrutils:\n\n* Reboot your Mac and hold `CMD + R` at reboot. This boots into recovery.\n* Select your language before opening the terminal in **Utilities**, **Terminal**.\n* submit the following commands:\n\n```\ncsrutils disable \nreboot\n```\n<br />\nFrom here your Mac will reboot with integrity protection disabled.\n\n### Install PEAR / PECL on MacOS\n\n```\ncurl -O http://pear.php.net/go-pear.phar\nsudo php -d detect_unicode=0 go-pear.phar\n```\n<br />\nWhen prompted, enter `1`, `/usr/local/pear`,` 4`, and `/usr/local/bin`\n\nVerify pear is installed with pear version and we are good to go.\n\n### Install MongoDB PHP Driver\n\n*Note: The MongoDB driver requires an openssl installation, however the required software is installed with your Mac provided you run the Xcode development tools. If on Linux however, make sure to install openssl development tools. On Red Hat, run `sudo yum install openssl openssl-devel`. On Ubuntu, run `sudo apt-get install openssl libssl-dev`.*\n\nInstalling the driver now should go without issue. Run the following:\n\n```sudo pecl install mongodb```\n\nLet the installation process complete. At the end of installation you will be prompted to add the extension=mongodb.so in your php.ini file.\n\n### Finding your php.ini file\n\nIf you are unsure what .ini file you are using in your local web apps, firstly run php --ini. However, you may get something like this:\n\n```Configuration File (php.ini) Path: /etc\nLoaded Configuration File:         (none)\nScan for additional .ini files in: (none)\nAdditional .ini files parsed:      (none)\n```\n<br />\nIf this is the case, create a `phpinfo();` page on one of your development sites and take note of the ini file location. Look out for Loaded Configuration File.\n\nOnce this is determined, simply add the extension to the file.\n\n`sudo vi <path-to-your-php-ini-file>`\n\n### Enable csrutils\nNow we are done with our installation, boot into recovery mode and enable crsutils again:\n\n```\ncsrutils enable\nreboot\n```\n<br />\n\n### Installing MongoDB for PHP via composer\nProvided we have the driver installed, run the following composer command:\n\n`sudo php -c <path-to-your-php-ini-file> composer.phar require mongodb`\n\nHere we use the -c flag to provide composer with the php.ini file your local websites are using.\n\nInstallation completed!\n\nFrom here you can communicate with MongoDB from within your PHP scripts.\n\nRefer to the PHP library to get familiar with the available operations, starting with the CRUD suite of functions at https://docs.mongodb.com/php-library/current/tutorial/crud/#find-many-documents.",
      "json_metadata": "{\"tags\":[\"macos\",\"php\",\"mongodb\",\"web\",\"development\"],\"image\":[\"https://cdn.steemitimages.com/DQmWu55Pg8jWCbMKCX4rWCNskj7XFH8JeGJzpBQFYPyPESS/installMongoDBPHPmac.jpg\"],\"links\":[\"https://docs.mongodb.com/php-library/current/tutorial/crud/#find-many-documents\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "macos",
      "permlink": "macos-install-mongodb-php-driver-and-mongodb-composer-extension",
      "title": "MacOS: Install MongoDB PHP Driver and mongodb Composer Extension"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-12T03:50:12",
  "trx_id": "24441421417643b7df8a88ae171f84664c290428",
  "trx_in_block": 10,
  "virtual_op": 0
}
2018/06/10 12:44:48
authorrossbulat
permlinksteemit-now-integrated-on-jkrb-website
voterrossbulat
weight10000 (100.00%)
Transaction InfoBlock #23200234/Trx 08657c2af1b6d549fda5d1848c7c3b8db3ffae22
View Raw JSON Data
{
  "block": 23200234,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "steemit-now-integrated-on-jkrb-website",
      "voter": "rossbulat",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-10T12:44:48",
  "trx_id": "08657c2af1b6d549fda5d1848c7c3b8db3ffae22",
  "trx_in_block": 16,
  "virtual_op": 0
}
2018/06/10 12:44:45
authorrossbulat
permlinkan-insight-into-ethereum-heading-into-2018
voterrossbulat
weight10000 (100.00%)
Transaction InfoBlock #23200233/Trx 7c3a3b7c29fe1827a69c740caa92b0f7f84b1089
View Raw JSON Data
{
  "block": 23200233,
  "op": [
    "vote",
    {
      "author": "rossbulat",
      "permlink": "an-insight-into-ethereum-heading-into-2018",
      "voter": "rossbulat",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-06-10T12:44:45",
  "trx_id": "7c3a3b7c29fe1827a69c740caa92b0f7f84b1089",
  "trx_in_block": 36,
  "virtual_op": 0
}

Account Metadata

POSTING JSON METADATA
profile{"profile_image":"https://jkrbinvestments.com/assets/images/other_images/rossBulat.jpg","name":"Ross Bulat","about":"Director @ JKRB Investments","location":"Hong Kong","website":"https://jkrbinvestments.com","cover_image":"https://jkrbinvestments.com/assets/images/other_images/steemit.jpg"}
JSON METADATA
profile{"profile_image":"https://jkrbinvestments.com/assets/images/other_images/rossBulat.jpg","name":"Ross Bulat","about":"Director @ JKRB Investments","location":"Hong Kong","website":"https://jkrbinvestments.com","cover_image":"https://jkrbinvestments.com/assets/images/other_images/steemit.jpg"}
{
  "posting_json_metadata": {
    "profile": {
      "profile_image": "https://jkrbinvestments.com/assets/images/other_images/rossBulat.jpg",
      "name": "Ross Bulat",
      "about": "Director @ JKRB Investments",
      "location": "Hong Kong",
      "website": "https://jkrbinvestments.com",
      "cover_image": "https://jkrbinvestments.com/assets/images/other_images/steemit.jpg"
    }
  },
  "json_metadata": {
    "profile": {
      "profile_image": "https://jkrbinvestments.com/assets/images/other_images/rossBulat.jpg",
      "name": "Ross Bulat",
      "about": "Director @ JKRB Investments",
      "location": "Hong Kong",
      "website": "https://jkrbinvestments.com",
      "cover_image": "https://jkrbinvestments.com/assets/images/other_images/steemit.jpg"
    }
  }
}

Auth Keys

Owner
Single Signature
Public Keys
STM6jiMFQwVw7qpZAmWJzqXZN4bM2BzMe4Son3nmQsQR3FuChr7ot1/1
Active
Single Signature
Public Keys
STM5tKJzSsPzv2C5RMRdVvg5NQN8cvt87fghkjtnXikvnLhwwWGo11/1
Posting
Single Signature
Public Keys
STM8HJdXBT91NZp7z9BcQVNDsKrKnnCuMvgS38ek53TBhPZ6wwtze1/1
Memo
STM72vtAgBjWAhavJhqAYar1FSvmx3kWuoKvqGhg5w1FKpBE9kgAL
{
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM6jiMFQwVw7qpZAmWJzqXZN4bM2BzMe4Son3nmQsQR3FuChr7ot",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM5tKJzSsPzv2C5RMRdVvg5NQN8cvt87fghkjtnXikvnLhwwWGo1",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting": {
    "account_auths": [],
    "key_auths": [
      [
        "STM8HJdXBT91NZp7z9BcQVNDsKrKnnCuMvgS38ek53TBhPZ6wwtze",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "memo": "STM72vtAgBjWAhavJhqAYar1FSvmx3kWuoKvqGhg5w1FKpBE9kgAL"
}

Witness Votes

0 / 30
No active witness votes.
[]