Ecoer Logo

@njms

25

Programming, web design and lots of blockchain enthusiasm. Maybe some photography

steemit.com/@njms
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS12.04%
Net Worth
0.067USD
STEEM
0.000STEEM
SBD
0.064SBD
Effective Power
5.007SP
├── Own SP
0.631SP
└── Incoming Deleg
+4.375SP

Detailed Balance

STEEM
balance
0.000STEEM
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.000STEEM
STEEM POWER
Own SP
0.631SP
Delegated Out
0.000SP
Delegation In
4.375SP
Effective Power
5.007SP
Reward SP (pending)
0.073SP
SBD
sbd_balance
0.002SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
0.062SBD
{
  "balance": "0.000 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.000 STEEM",
  "vesting_shares": "1027.184227 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "7116.475579 VESTS",
  "sbd_balance": "0.002 SBD",
  "savings_sbd_balance": "0.000 SBD",
  "reward_sbd_balance": "0.062 SBD",
  "conversions": []
}

Account Info

namenjms
id442397
rank457,629
reputation1031293427
created2017-11-11T22:09:39
recovery_accountsteem
proxyNone
post_count8
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2018-01-06T15:11:48
last_root_post2018-01-06T15:11:48
last_vote_time2018-08-16T12:14:42
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power0
delayed_votes0
balance0.000 STEEM
savings_balance0.000 STEEM
sbd_balance0.002 SBD
savings_sbd_balance0.000 SBD
vesting_shares1027.184227 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares7116.475579 VESTS
reward_vesting_balance149.887574 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_update1970-01-01T00:00:00
last_account_update2018-01-06T15:38:18
minedNo
sbd_seconds0
sbd_last_interest_payment1970-01-01T00:00:00
savings_sbd_last_interest_payment1970-01-01T00:00:00
{
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM644tkSMXfinzxLdDpkazESP12KQfFPz8c2AWL16bW2sTsjLDne",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "balance": "0.000 STEEM",
  "can_vote": true,
  "comment_count": 0,
  "created": "2017-11-11T22:09:39",
  "curation_rewards": 3,
  "delegated_vesting_shares": "0.000000 VESTS",
  "downvote_manabar": {
    "current_mana": 2035914951,
    "last_update_time": 1779078717
  },
  "guest_bloggers": [],
  "id": 442397,
  "json_metadata": "{\"profile\":{\"cover_image\":\"https://scontent-ort2-1.cdninstagram.com/t51.2885-15/e35/22637770_284659912025608_3896894990973927424_n.jpg\",\"profile_image\":\"https://img.esteem.ws/5wx9nwd6ny.jpg\",\"about\":\"Programming, web design and lots of blockchain enthusiasm. Maybe some photography\"}}",
  "last_account_recovery": "1970-01-01T00:00:00",
  "last_account_update": "2018-01-06T15:38:18",
  "last_owner_update": "1970-01-01T00:00:00",
  "last_post": "2018-01-06T15:11:48",
  "last_root_post": "2018-01-06T15:11:48",
  "last_vote_time": "2018-08-16T12:14:42",
  "lifetime_vote_count": 0,
  "market_history": [],
  "memo_key": "STM5XTdJp2CkmDv3VRk8uiPxDPygFHjv2r2ey8AP34Zgg1Qg7HASU",
  "mined": false,
  "name": "njms",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "other_history": [],
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM8MPX5CzVrYAEr5zaS5PwRqjmDdfm9C8XsXyPPiausRmzGooJJu",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "pending_claimed_accounts": 0,
  "post_bandwidth": 0,
  "post_count": 8,
  "post_history": [],
  "posting": {
    "account_auths": [],
    "key_auths": [
      [
        "STM4wzWuopFLpAkvbzmAmwVwFPGw2uxL2SeS92nkhFtapYUMHZW6x",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting_json_metadata": "{\"profile\":{\"cover_image\":\"https://scontent-ort2-1.cdninstagram.com/t51.2885-15/e35/22637770_284659912025608_3896894990973927424_n.jpg\",\"profile_image\":\"https://img.esteem.ws/5wx9nwd6ny.jpg\",\"about\":\"Programming, web design and lots of blockchain enthusiasm. Maybe some photography\"}}",
  "posting_rewards": 139,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "proxy": "",
  "received_vesting_shares": "7116.475579 VESTS",
  "recovery_account": "steem",
  "reputation": 1031293427,
  "reset_account": "null",
  "reward_sbd_balance": "0.062 SBD",
  "reward_steem_balance": "0.000 STEEM",
  "reward_vesting_balance": "149.887574 VESTS",
  "reward_vesting_steem": "0.073 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.002 SBD",
  "sbd_last_interest_payment": "1970-01-01T00:00:00",
  "sbd_seconds": "0",
  "sbd_seconds_last_update": "2017-11-14T22:08:45",
  "tags_usage": [],
  "to_withdraw": 0,
  "transfer_history": [],
  "vesting_balance": "0.000 STEEM",
  "vesting_shares": "1027.184227 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "vote_history": [],
  "voting_manabar": {
    "current_mana": "8143659806",
    "last_update_time": 1779078717
  },
  "voting_power": 0,
  "withdraw_routes": 0,
  "withdrawn": 0,
  "witness_votes": [],
  "witnesses_voted_for": 0,
  "rank": 457629
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
steemdelegated 4.375 SP to @njms
2026/05/18 04:31:57
delegateenjms
delegatorsteem
vesting shares7116.475579 VESTS
Transaction InfoBlock #106148559/Trx b8e95bdea04e990684e583c092ef87e6005a8246
View Raw JSON Data
{
  "block": 106148559,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "7116.475579 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-05-18T04:31:57",
  "trx_id": "b8e95bdea04e990684e583c092ef87e6005a8246",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 2.708 SP to @njms
2026/05/12 21:11:30
delegateenjms
delegatorsteem
vesting shares4404.265174 VESTS
Transaction InfoBlock #105996485/Trx 285aa79e6d6114ec2f361c74c96a61e1c5ae3f17
View Raw JSON Data
{
  "block": 105996485,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "4404.265174 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-05-12T21:11:30",
  "trx_id": "285aa79e6d6114ec2f361c74c96a61e1c5ae3f17",
  "trx_in_block": 1,
  "virtual_op": 0
}
steemdelegated 4.383 SP to @njms
2026/04/26 03:46:15
delegateenjms
delegatorsteem
vesting shares7128.991335 VESTS
Transaction InfoBlock #105516091/Trx d81b4e360f03dbe5f2656c93f050e2526da330cb
View Raw JSON Data
{
  "block": 105516091,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "7128.991335 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-04-26T03:46:15",
  "trx_id": "d81b4e360f03dbe5f2656c93f050e2526da330cb",
  "trx_in_block": 3,
  "virtual_op": 0
}
steemdelegated 2.733 SP to @njms
2026/01/23 19:17:42
delegateenjms
delegatorsteem
vesting shares4445.811993 VESTS
Transaction InfoBlock #102865580/Trx baa3d0546455692731dc36a6b504e4e7d5eac22f
View Raw JSON Data
{
  "block": 102865580,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "4445.811993 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-01-23T19:17:42",
  "trx_id": "baa3d0546455692731dc36a6b504e4e7d5eac22f",
  "trx_in_block": 2,
  "virtual_op": 0
}
steemdelegated 2.834 SP to @njms
2024/12/17 14:29:30
delegateenjms
delegatorsteem
vesting shares4610.031190 VESTS
Transaction InfoBlock #91311831/Trx 0e2199b9f477a715d7f959aa3f65ab6967dcbaf3
View Raw JSON Data
{
  "block": 91311831,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "4610.031190 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2024-12-17T14:29:30",
  "trx_id": "0e2199b9f477a715d7f959aa3f65ab6967dcbaf3",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 2.938 SP to @njms
2023/11/14 06:10:42
delegateenjms
delegatorsteem
vesting shares4779.164722 VESTS
Transaction InfoBlock #79865989/Trx b48493dac7be0bdfd37a006e1ea6aaac9bdea7b8
View Raw JSON Data
{
  "block": 79865989,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "4779.164722 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-11-14T06:10:42",
  "trx_id": "b48493dac7be0bdfd37a006e1ea6aaac9bdea7b8",
  "trx_in_block": 6,
  "virtual_op": 0
}
steemdelegated 4.744 SP to @njms
2023/09/22 08:18:21
delegateenjms
delegatorsteem
vesting shares7716.073508 VESTS
Transaction InfoBlock #78360372/Trx 9161ea5d7c4321566f0540c2fbb75a3bf700a9ee
View Raw JSON Data
{
  "block": 78360372,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "7716.073508 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-09-22T08:18:21",
  "trx_id": "9161ea5d7c4321566f0540c2fbb75a3bf700a9ee",
  "trx_in_block": 1,
  "virtual_op": 0
}
steemdelegated 4.880 SP to @njms
2022/11/03 16:02:45
delegateenjms
delegatorsteem
vesting shares7938.124946 VESTS
Transaction InfoBlock #69118447/Trx 685bebef73f774c07aa835b81e7f5b5e375d3c8e
View Raw JSON Data
{
  "block": 69118447,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "7938.124946 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-11-03T16:02:45",
  "trx_id": "685bebef73f774c07aa835b81e7f5b5e375d3c8e",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 5.016 SP to @njms
2022/01/17 21:24:51
delegateenjms
delegatorsteem
vesting shares8158.232547 VESTS
Transaction InfoBlock #60821897/Trx 017978e2052c7ee5403b6c04b108ed93ac404af8
View Raw JSON Data
{
  "block": 60821897,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "8158.232547 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-01-17T21:24:51",
  "trx_id": "017978e2052c7ee5403b6c04b108ed93ac404af8",
  "trx_in_block": 8,
  "virtual_op": 0
}
steemdelegated 5.129 SP to @njms
2021/06/14 04:40:15
delegateenjms
delegatorsteem
vesting shares8342.426835 VESTS
Transaction InfoBlock #54612318/Trx 4d0393b48022fa665ac00c96f0a6375894c1f620
View Raw JSON Data
{
  "block": 54612318,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "8342.426835 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-06-14T04:40:15",
  "trx_id": "4d0393b48022fa665ac00c96f0a6375894c1f620",
  "trx_in_block": 4,
  "virtual_op": 0
}
steemdelegated 5.244 SP to @njms
2020/12/11 14:54:12
delegateenjms
delegatorsteem
vesting shares8529.848809 VESTS
Transaction InfoBlock #49359632/Trx b95da0b19a80d4da89d34ba79ff4554f1c769fc1
View Raw JSON Data
{
  "block": 49359632,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "8529.848809 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-11T14:54:12",
  "trx_id": "b95da0b19a80d4da89d34ba79ff4554f1c769fc1",
  "trx_in_block": 1,
  "virtual_op": 0
}
steemdelegated 1.176 SP to @njms
2020/12/06 08:30:30
delegateenjms
delegatorsteem
vesting shares1912.543513 VESTS
Transaction InfoBlock #49211173/Trx f9910d8f25cfe021112390469a0d050af563a7e9
View Raw JSON Data
{
  "block": 49211173,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "1912.543513 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-06T08:30:30",
  "trx_id": "f9910d8f25cfe021112390469a0d050af563a7e9",
  "trx_in_block": 2,
  "virtual_op": 0
}
steemdelegated 5.248 SP to @njms
2020/12/05 18:31:51
delegateenjms
delegatorsteem
vesting shares8536.056663 VESTS
Transaction InfoBlock #49194714/Trx e714241d74b79b271f2e924df11721b4a15b7617
View Raw JSON Data
{
  "block": 49194714,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "8536.056663 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-12-05T18:31:51",
  "trx_id": "e714241d74b79b271f2e924df11721b4a15b7617",
  "trx_in_block": 9,
  "virtual_op": 0
}
steemdelegated 1.180 SP to @njms
2020/11/02 23:26:21
delegateenjms
delegatorsteem
vesting shares1920.017158 VESTS
Transaction InfoBlock #48266987/Trx 94424ffabcf4e8c5c359ca382557ad2a32cde32c
View Raw JSON Data
{
  "block": 48266987,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "1920.017158 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-11-02T23:26:21",
  "trx_id": "94424ffabcf4e8c5c359ca382557ad2a32cde32c",
  "trx_in_block": 4,
  "virtual_op": 0
}
steemdelegated 5.373 SP to @njms
2020/05/09 09:31:42
delegateenjms
delegatorsteem
vesting shares8738.862022 VESTS
Transaction InfoBlock #43221472/Trx 42f521dcd37c47a0e651c578de88b2800129f987
View Raw JSON Data
{
  "block": 43221472,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "8738.862022 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-05-09T09:31:42",
  "trx_id": "42f521dcd37c47a0e651c578de88b2800129f987",
  "trx_in_block": 6,
  "virtual_op": 0
}
steemdelegated 1.201 SP to @njms
2020/05/08 13:42:03
delegateenjms
delegatorsteem
vesting shares1953.311140 VESTS
Transaction InfoBlock #43198241/Trx 1a73ef4444a1a07cda6da3dd13a5fe9bd120ac2b
View Raw JSON Data
{
  "block": 43198241,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "1953.311140 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2020-05-08T13:42:03",
  "trx_id": "1a73ef4444a1a07cda6da3dd13a5fe9bd120ac2b",
  "trx_in_block": 30,
  "virtual_op": 0
}
2019/11/11 23:14:45
authorsteemitboard
bodyCongratulations @njms! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@njms/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/@njms) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=njms)_</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/steemfest/@steemitboard/steemfest-meet-the-stemians-contest-the-mysterious-rule-revealed"><img src="https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmasWw4jQHwxng82DKxY6Q6tVg9mWcto4xcDURs8knFgCa/image.png"></a></td><td><a href="https://steemit.com/steemfest/@steemitboard/steemfest-meet-the-stemians-contest-the-mysterious-rule-revealed">SteemFest Meet The Stemians Contest - The mysterious rule revealed</a></td></tr></table> ###### [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 authornjms
parent permlinka-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48
permlinksteemitboard-notify-njms-20191111t231444000z
title
Transaction InfoBlock #38094108/Trx 3bf0a41b43f779cf4586aafaad34c5cd287c58eb
View Raw JSON Data
{
  "block": 38094108,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @njms! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@njms/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/@njms) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=njms)_</sub>\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/steemfest/@steemitboard/steemfest-meet-the-stemians-contest-the-mysterious-rule-revealed\"><img src=\"https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmasWw4jQHwxng82DKxY6Q6tVg9mWcto4xcDURs8knFgCa/image.png\"></a></td><td><a href=\"https://steemit.com/steemfest/@steemitboard/steemfest-meet-the-stemians-contest-the-mysterious-rule-revealed\">SteemFest Meet The Stemians Contest - The mysterious rule revealed</a></td></tr></table>\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": "njms",
      "parent_permlink": "a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48",
      "permlink": "steemitboard-notify-njms-20191111t231444000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-11-11T23:14:45",
  "trx_id": "3bf0a41b43f779cf4586aafaad34c5cd287c58eb",
  "trx_in_block": 10,
  "virtual_op": 0
}
steemdelegated 5.438 SP to @njms
2019/11/01 08:56:12
delegateenjms
delegatorsteem
vesting shares8845.261105 VESTS
Transaction InfoBlock #37789505/Trx c711e604138976f7295ece220a6418399afab3ae
View Raw JSON Data
{
  "block": 37789505,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "8845.261105 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2019-11-01T08:56:12",
  "trx_id": "c711e604138976f7295ece220a6418399afab3ae",
  "trx_in_block": 19,
  "virtual_op": 0
}
steemdelegated 5.559 SP to @njms
2018/11/26 18:51:00
delegateenjms
delegatorsteem
vesting shares9042.736482 VESTS
Transaction InfoBlock #28045561/Trx 04253ff30193fea48b01898229a2936504c7edca
View Raw JSON Data
{
  "block": 28045561,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "9042.736482 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-11-26T18:51:00",
  "trx_id": "04253ff30193fea48b01898229a2936504c7edca",
  "trx_in_block": 3,
  "virtual_op": 0
}
2018/11/11 22:26:30
authorsteemitboard
bodyCongratulations @njms! You have received a personal award! [![](https://steemitimages.com/70x70/http://steemitboard.com/@njms/birthday1.png)](http://steemitboard.com/@njms) 1 Year on Steemit <sub>_Click on the badge to view your Board of Honor._</sub> **Do not miss the last post from @steemitboard:** <table><tr><td><a href="https://steemit.com/steemfest/@steemitboard/steemfest3-and-steemitboard-meet-the-steemians-contest"><img src="https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmeLukvNFRsa7RURqsFpiLGEZZD49MiU52JtWmjS5S2wtW/image.png"></a></td><td><a href="https://steemit.com/steemfest/@steemitboard/steemfest3-and-steemitboard-meet-the-steemians-contest">SteemFest3 and SteemitBoard - Meet the Steemians Contest</a></td></tr></table> > 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 authornjms
parent permlinka-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48
permlinksteemitboard-notify-njms-20181111t222630000z
title
Transaction InfoBlock #27618129/Trx 0a96161d5cd69c041f16ca0519e8bbd814b3562c
View Raw JSON Data
{
  "block": 27618129,
  "op": [
    "comment",
    {
      "author": "steemitboard",
      "body": "Congratulations @njms! You have received a personal award!\n\n[![](https://steemitimages.com/70x70/http://steemitboard.com/@njms/birthday1.png)](http://steemitboard.com/@njms)  1 Year on Steemit\n<sub>_Click on the badge to view your Board of Honor._</sub>\n\n\n**Do not miss the last post from @steemitboard:**\n<table><tr><td><a href=\"https://steemit.com/steemfest/@steemitboard/steemfest3-and-steemitboard-meet-the-steemians-contest\"><img src=\"https://steemitimages.com/64x128/https://cdn.steemitimages.com/DQmeLukvNFRsa7RURqsFpiLGEZZD49MiU52JtWmjS5S2wtW/image.png\"></a></td><td><a href=\"https://steemit.com/steemfest/@steemitboard/steemfest3-and-steemitboard-meet-the-steemians-contest\">SteemFest3 and SteemitBoard - Meet the Steemians Contest</a></td></tr></table>\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": "njms",
      "parent_permlink": "a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48",
      "permlink": "steemitboard-notify-njms-20181111t222630000z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-11-11T22:26:30",
  "trx_id": "0a96161d5cd69c041f16ca0519e8bbd814b3562c",
  "trx_in_block": 3,
  "virtual_op": 0
}
njmsupvoted (100.00%) @fx002 / 5tgw5l-now-photograph
2018/08/16 12:14:42
authorfx002
permlink5tgw5l-now-photograph
voternjms
weight10000 (100.00%)
Transaction InfoBlock #25117597/Trx 9edebf66887c93781cc2e10420e9f23c6023b3f1
View Raw JSON Data
{
  "block": 25117597,
  "op": [
    "vote",
    {
      "author": "fx002",
      "permlink": "5tgw5l-now-photograph",
      "voter": "njms",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-08-16T12:14:42",
  "trx_id": "9edebf66887c93781cc2e10420e9f23c6023b3f1",
  "trx_in_block": 10,
  "virtual_op": 0
}
steemdelegated 18.044 SP to @njms
2018/08/15 18:41:39
delegateenjms
delegatorsteem
vesting shares29349.910255 VESTS
Transaction InfoBlock #25096538/Trx cddcb1835f964f29922e9df23a1c1779d3176dd5
View Raw JSON Data
{
  "block": 25096538,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "29349.910255 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-08-15T18:41:39",
  "trx_id": "cddcb1835f964f29922e9df23a1c1779d3176dd5",
  "trx_in_block": 11,
  "virtual_op": 0
}
2018/08/15 14:50:36
authorlowbudgetink
permlinkmyspace-neverforget
voternjms
weight10000 (100.00%)
Transaction InfoBlock #25091920/Trx f98d893622d78994c3860979e462f492d15edb6a
View Raw JSON Data
{
  "block": 25091920,
  "op": [
    "vote",
    {
      "author": "lowbudgetink",
      "permlink": "myspace-neverforget",
      "voter": "njms",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-08-15T14:50:36",
  "trx_id": "f98d893622d78994c3860979e462f492d15edb6a",
  "trx_in_block": 48,
  "virtual_op": 0
}
steemdelegated 5.623 SP to @njms
2018/05/16 23:22:57
delegateenjms
delegatorsteem
vesting shares9146.977151 VESTS
Transaction InfoBlock #22493560/Trx 7ea762dff81d8497618658a47c07401ef6676ccb
View Raw JSON Data
{
  "block": 22493560,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "9146.977151 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-05-16T23:22:57",
  "trx_id": "7ea762dff81d8497618658a47c07401ef6676ccb",
  "trx_in_block": 45,
  "virtual_op": 0
}
steemdelegated 18.158 SP to @njms
2018/04/21 20:49:33
delegateenjms
delegatorsteem
vesting shares29534.983721 VESTS
Transaction InfoBlock #21771279/Trx 6e5608b1eb25145ed5dd877d5472bd2cbbbd763f
View Raw JSON Data
{
  "block": 21771279,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "29534.983721 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-04-21T20:49:33",
  "trx_id": "6e5608b1eb25145ed5dd877d5472bd2cbbbd763f",
  "trx_in_block": 19,
  "virtual_op": 0
}
njmsreceived 0.003 SP curation reward for @heelsonwheels / daily-dose---028-2018-01-06-14-57-28
2018/01/13 14:57:18
comment authorheelsonwheels
comment permlinkdaily-dose---028-2018-01-06-14-57-28
curatornjms
reward4.095832 VESTS
Transaction InfoBlock #18944625/Virtual Operation #4
View Raw JSON Data
{
  "block": 18944625,
  "op": [
    "curation_reward",
    {
      "comment_author": "heelsonwheels",
      "comment_permlink": "daily-dose---028-2018-01-06-14-57-28",
      "curator": "njms",
      "reward": "4.095832 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-13T14:57:18",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 4
}
2018/01/06 16:19:57
authornjms
permlinka-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48
voterjeannedb
weight10000 (100.00%)
Transaction InfoBlock #18744906/Trx db3d0891965675c66fde4ebb890501c1af1e6424
View Raw JSON Data
{
  "block": 18744906,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48",
      "voter": "jeannedb",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-06T16:19:57",
  "trx_id": "db3d0891965675c66fde4ebb890501c1af1e6424",
  "trx_in_block": 16,
  "virtual_op": 0
}
njmsupdated their account properties
2018/01/06 15:38:18
accountnjms
json metadata{"profile":{"cover_image":"https://scontent-ort2-1.cdninstagram.com/t51.2885-15/e35/22637770_284659912025608_3896894990973927424_n.jpg","profile_image":"https://img.esteem.ws/5wx9nwd6ny.jpg","about":"Programming, web design and lots of blockchain enthusiasm. Maybe some photography"}}
memo keySTM5XTdJp2CkmDv3VRk8uiPxDPygFHjv2r2ey8AP34Zgg1Qg7HASU
Transaction InfoBlock #18744074/Trx 78701cbcf7d67fa300f29db93890e3a6a3cb9a6f
View Raw JSON Data
{
  "block": 18744074,
  "op": [
    "account_update",
    {
      "account": "njms",
      "json_metadata": "{\"profile\":{\"cover_image\":\"https://scontent-ort2-1.cdninstagram.com/t51.2885-15/e35/22637770_284659912025608_3896894990973927424_n.jpg\",\"profile_image\":\"https://img.esteem.ws/5wx9nwd6ny.jpg\",\"about\":\"Programming, web design and lots of blockchain enthusiasm. Maybe some photography\"}}",
      "memo_key": "STM5XTdJp2CkmDv3VRk8uiPxDPygFHjv2r2ey8AP34Zgg1Qg7HASU"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-06T15:38:18",
  "trx_id": "78701cbcf7d67fa300f29db93890e3a6a3cb9a6f",
  "trx_in_block": 40,
  "virtual_op": 0
}
2018/01/06 15:36:36
authorheelsonwheels
permlinkdaily-dose---028-2018-01-06-14-57-28
voternjms
weight10000 (100.00%)
Transaction InfoBlock #18744040/Trx d0f417b610911c93c5b6afc2d16ea6e90a86a488
View Raw JSON Data
{
  "block": 18744040,
  "op": [
    "vote",
    {
      "author": "heelsonwheels",
      "permlink": "daily-dose---028-2018-01-06-14-57-28",
      "voter": "njms",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-06T15:36:36",
  "trx_id": "d0f417b610911c93c5b6afc2d16ea6e90a86a488",
  "trx_in_block": 51,
  "virtual_op": 0
}
2018/01/06 15:32:06
authornjms
permlinka-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48
voternjms
weight10000 (100.00%)
Transaction InfoBlock #18743950/Trx 128cd6f0f5dbe5f23011e1401671d439e1d61a2f
View Raw JSON Data
{
  "block": 18743950,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48",
      "voter": "njms",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-06T15:32:06",
  "trx_id": "128cd6f0f5dbe5f23011e1401671d439e1d61a2f",
  "trx_in_block": 34,
  "virtual_op": 0
}
2018/01/06 15:27:15
authorabdurahman
permlinkthe-beauty-of-aceh-mountain-2018-01-06-15-11-49
voternjms
weight10000 (100.00%)
Transaction InfoBlock #18743853/Trx 560359a542ed51467dd13f78d25717d790a9397a
View Raw JSON Data
{
  "block": 18743853,
  "op": [
    "vote",
    {
      "author": "abdurahman",
      "permlink": "the-beauty-of-aceh-mountain-2018-01-06-15-11-49",
      "voter": "njms",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-06T15:27:15",
  "trx_id": "560359a542ed51467dd13f78d25717d790a9397a",
  "trx_in_block": 44,
  "virtual_op": 0
}
2018/01/06 15:11:48
allow curation rewardstrue
allow votestrue
authornjms
extensions[[0,{"beneficiaries":[{"account":"steepshot","weight":1000}]}]]
max accepted payout1000000.000 SBD
percent steem dollars10000
permlinka-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48
Transaction InfoBlock #18743544/Trx a70bb2afd9651e6d805bb61d1b8edccea9584496
View Raw JSON Data
{
  "block": 18743544,
  "op": [
    "comment_options",
    {
      "allow_curation_rewards": true,
      "allow_votes": true,
      "author": "njms",
      "extensions": [
        [
          0,
          {
            "beneficiaries": [
              {
                "account": "steepshot",
                "weight": 1000
              }
            ]
          }
        ]
      ],
      "max_accepted_payout": "1000000.000 SBD",
      "percent_steem_dollars": 10000,
      "permlink": "a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-06T15:11:48",
  "trx_id": "a70bb2afd9651e6d805bb61d1b8edccea9584496",
  "trx_in_block": 31,
  "virtual_op": 0
}
2018/01/06 15:11:48
authornjms
bodyhttp://steepshot.org/api/v1/image/5e3be2dc-c681-43a9-9925-feb0e174a08b.jpeg - -- - - --- -- - - -- - - ----- -- - - ---- - - - -- This path, often used by students in their daily commute, has always been shared by joggers and dog walkers alike. I was lucky to get this photo on a much quieter day as it neared sunset. -- - - - ---- - - -- ----- - - -- - - -- --- - - -- - <center>![144.png](https://steemitimages.com/DQmP3kkNnvkCzFgMeVrudA9NsXtC73bQKfATXiSrKQez7kP/144.png) Created with Steepshot [View in the web app](https://alpha.steepshot.io/)</center> <center>[![4.png](https://steemitimages.com/DQmbGvoNeeMz4kQ5eMwLsjNsgfRCFSyGRy1Wni9UcBBXUZu/4.png)](https://play.google.com/store/apps/details?id=com.droid.steepshot&rdid=com.droid.steepshot)</center>
json metadata{ "image_size": { "width": 1304, "height": 734 }, "tags": [ "photography", "nature", "life", "blackandwhite", "bw", "steepshot" ], "app": "steepshot/0.0.12-b", "ipfs_photo": "QmWMJitdJ9xF3N49eyG7PWRp1RYuBrpNHK3hcR5H9T3QJZ"}
parent author
parent permlinkphotography
permlinka-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48
titleA narrow gravel path through the woods
Transaction InfoBlock #18743544/Trx a70bb2afd9651e6d805bb61d1b8edccea9584496
View Raw JSON Data
{
  "block": 18743544,
  "op": [
    "comment",
    {
      "author": "njms",
      "body": "http://steepshot.org/api/v1/image/5e3be2dc-c681-43a9-9925-feb0e174a08b.jpeg\n\n-   --  -   - ---  -- - -  -- - -   -----   --  -  - ----  -    -   - --\n\nThis path, often used by students in their daily commute, has always been shared by joggers and dog walkers alike. I was lucky to get this photo on a much quieter day as it neared sunset.\n\n-- -   -    -  ---- -  -  --   -----   - - --  - - --  --- -   -  --   -\n\n<center>![144.png](https://steemitimages.com/DQmP3kkNnvkCzFgMeVrudA9NsXtC73bQKfATXiSrKQez7kP/144.png)\nCreated with Steepshot\n[View in the web app](https://alpha.steepshot.io/)</center>\n<center>[![4.png](https://steemitimages.com/DQmbGvoNeeMz4kQ5eMwLsjNsgfRCFSyGRy1Wni9UcBBXUZu/4.png)](https://play.google.com/store/apps/details?id=com.droid.steepshot&rdid=com.droid.steepshot)</center>",
      "json_metadata": "{  \"image_size\": {    \"width\": 1304,    \"height\": 734  },  \"tags\": [    \"photography\",    \"nature\",    \"life\",    \"blackandwhite\",    \"bw\",    \"steepshot\"  ],  \"app\": \"steepshot/0.0.12-b\",  \"ipfs_photo\": \"QmWMJitdJ9xF3N49eyG7PWRp1RYuBrpNHK3hcR5H9T3QJZ\"}",
      "parent_author": "",
      "parent_permlink": "photography",
      "permlink": "a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48",
      "title": "A narrow gravel path through the woods"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2018-01-06T15:11:48",
  "trx_id": "a70bb2afd9651e6d805bb61d1b8edccea9584496",
  "trx_in_block": 31,
  "virtual_op": 0
}
steemdelegated 18.283 SP to @njms
2017/12/12 22:21:24
delegateenjms
delegatorsteem
vesting shares29738.815773 VESTS
Transaction InfoBlock #18032611/Trx a649395b1cf568ef18d7382dd97cf6caebfa7d9c
View Raw JSON Data
{
  "block": 18032611,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "njms",
      "delegator": "steem",
      "vesting_shares": "29738.815773 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-12-12T22:21:24",
  "trx_id": "a649395b1cf568ef18d7382dd97cf6caebfa7d9c",
  "trx_in_block": 21,
  "virtual_op": 0
}
2017/11/27 21:36:33
authornjms
permlinkintroduce-yourself-njms-software-development-web-design-and-blockchain
votersmartonelegal
weight100 (1.00%)
Transaction InfoBlock #17599917/Trx 28476fb3c7aa20630aef43a10d5ab00509062728
View Raw JSON Data
{
  "block": 17599917,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "introduce-yourself-njms-software-development-web-design-and-blockchain",
      "voter": "smartonelegal",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-27T21:36:33",
  "trx_id": "28476fb3c7aa20630aef43a10d5ab00509062728",
  "trx_in_block": 14,
  "virtual_op": 0
}
2017/11/27 21:36:33
authornjms
permlinkintroduce-yourself-njms-software-development-web-design-and-blockchain
votersmartonelegal
weight100 (1.00%)
Transaction InfoBlock #17599917/Trx 28250493cc2fc38285b49072f7781b8f78678ba8
View Raw JSON Data
{
  "block": 17599917,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "introduce-yourself-njms-software-development-web-design-and-blockchain",
      "voter": "smartonelegal",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-27T21:36:33",
  "trx_id": "28250493cc2fc38285b49072f7781b8f78678ba8",
  "trx_in_block": 9,
  "virtual_op": 0
}
njmsreceived 0.001 SP curation reward for @sonny.dharmawan / the-cryptocurrency-tax-fairness-act
2017/11/27 16:44:57
comment authorsonny.dharmawan
comment permlinkthe-cryptocurrency-tax-fairness-act
curatornjms
reward2.052720 VESTS
Transaction InfoBlock #17594089/Virtual Operation #163
View Raw JSON Data
{
  "block": 17594089,
  "op": [
    "curation_reward",
    {
      "comment_author": "sonny.dharmawan",
      "comment_permlink": "the-cryptocurrency-tax-fairness-act",
      "curator": "njms",
      "reward": "2.052720 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-27T16:44:57",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 163
}
2017/11/25 04:36:27
authornjms
permlinkintroduce-yourself-njms-software-development-web-design-and-blockchain
votermindsportsio
weight100 (1.00%)
Transaction InfoBlock #17521950/Trx 04209c4fb916a5ec6f9e5d17cca6771e0e506786
View Raw JSON Data
{
  "block": 17521950,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "introduce-yourself-njms-software-development-web-design-and-blockchain",
      "voter": "mindsportsio",
      "weight": 100
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-25T04:36:27",
  "trx_id": "04209c4fb916a5ec6f9e5d17cca6771e0e506786",
  "trx_in_block": 13,
  "virtual_op": 0
}
njmsreceived 0.010 SBD, 0.014 SP author reward for @njms / closures-in-programming-what-are-they-and-how-do-they-work
2017/11/23 21:23:33
authornjms
permlinkclosures-in-programming-what-are-they-and-how-do-they-work
sbd payout0.010 SBD
steem payout0.000 STEEM
vesting payout22.584310 VESTS
Transaction InfoBlock #17484496/Virtual Operation #4
View Raw JSON Data
{
  "block": 17484496,
  "op": [
    "author_reward",
    {
      "author": "njms",
      "permlink": "closures-in-programming-what-are-they-and-how-do-they-work",
      "sbd_payout": "0.010 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "22.584310 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-23T21:23:33",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 4
}
2017/11/22 04:11:48
authornjms
permlinkclosures-in-programming-what-are-they-and-how-do-they-work
voterevilest-fiend
weight10000 (100.00%)
Transaction InfoBlock #17435107/Trx ed9a4634ed7aeea3b4c4fd257fb5216696c4fa25
View Raw JSON Data
{
  "block": 17435107,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "closures-in-programming-what-are-they-and-how-do-they-work",
      "voter": "evilest-fiend",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-22T04:11:48",
  "trx_id": "ed9a4634ed7aeea3b4c4fd257fb5216696c4fa25",
  "trx_in_block": 12,
  "virtual_op": 0
}
2017/11/22 04:11:33
authorevilest-fiend
bodyOh! That's what a closure is! I've been using them without knowing what they were called.
json metadata{"tags":["programming"],"app":"steemit/0.1"}
parent authornjms
parent permlinkclosures-in-programming-what-are-they-and-how-do-they-work
permlinkre-njms-closures-in-programming-what-are-they-and-how-do-they-work-20171122t041134685z
title
Transaction InfoBlock #17435102/Trx dd8863d193249e688131209425b9f34aeebaacae
View Raw JSON Data
{
  "block": 17435102,
  "op": [
    "comment",
    {
      "author": "evilest-fiend",
      "body": "Oh!  That's what a closure is!\n\nI've been using them without knowing what they were called.",
      "json_metadata": "{\"tags\":[\"programming\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "njms",
      "parent_permlink": "closures-in-programming-what-are-they-and-how-do-they-work",
      "permlink": "re-njms-closures-in-programming-what-are-they-and-how-do-they-work-20171122t041134685z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-22T04:11:33",
  "trx_id": "dd8863d193249e688131209425b9f34aeebaacae",
  "trx_in_block": 21,
  "virtual_op": 0
}
2017/11/21 22:04:30
authornjms
permlinkintroduce-yourself-njms-software-development-web-design-and-blockchain
sbd payout0.027 SBD
steem payout0.000 STEEM
vesting payout63.653106 VESTS
Transaction InfoBlock #17427761/Virtual Operation #4
View Raw JSON Data
{
  "block": 17427761,
  "op": [
    "author_reward",
    {
      "author": "njms",
      "permlink": "introduce-yourself-njms-software-development-web-design-and-blockchain",
      "sbd_payout": "0.027 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "63.653106 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-21T22:04:30",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 4
}
2017/11/21 16:45:06
authorsteembay
permlinkannouncement-steembay-is-working-now
voternjms
weight10000 (100.00%)
Transaction InfoBlock #17421375/Trx 33fbb4b3a342ecdcefe4162b3b4d948f295f88b2
View Raw JSON Data
{
  "block": 17421375,
  "op": [
    "vote",
    {
      "author": "steembay",
      "permlink": "announcement-steembay-is-working-now",
      "voter": "njms",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-21T16:45:06",
  "trx_id": "33fbb4b3a342ecdcefe4162b3b4d948f295f88b2",
  "trx_in_block": 10,
  "virtual_op": 0
}
2017/11/20 17:06:24
authorsonny.dharmawan
permlinkthe-cryptocurrency-tax-fairness-act
voternjms
weight10000 (100.00%)
Transaction InfoBlock #17393020/Trx a2fb81b25c13e6559f1149aeb34345029e8f7cb8
View Raw JSON Data
{
  "block": 17393020,
  "op": [
    "vote",
    {
      "author": "sonny.dharmawan",
      "permlink": "the-cryptocurrency-tax-fairness-act",
      "voter": "njms",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-20T17:06:24",
  "trx_id": "a2fb81b25c13e6559f1149aeb34345029e8f7cb8",
  "trx_in_block": 5,
  "virtual_op": 0
}
2017/11/20 11:14:21
authormodrzew
body> EMCAScript 6 is full of great features. What used to be ES6 was renamed to ES2015 over 2 years ago (to be able to properly version it), so you may want to use appropriate name. Otherwise quite nice read! 👍
json metadata{"tags":["javascript"],"app":"steemit/0.1"}
parent authornjms
parent permlinkmodern-js-concepts-arrow-functions-the-new-and-improved-function-literals
permlinkre-njms-modern-js-concepts-arrow-functions-the-new-and-improved-function-literals-20171120t111419901z
title
Transaction InfoBlock #17385984/Trx bdcd404c8961ace99c561f972f58b41df0a4bf87
View Raw JSON Data
{
  "block": 17385984,
  "op": [
    "comment",
    {
      "author": "modrzew",
      "body": "> EMCAScript 6 is full of great features.\n\nWhat used to be ES6 was renamed to ES2015 over 2 years ago (to be able to properly version it), so you may want to use appropriate name.\n\nOtherwise quite nice read! 👍",
      "json_metadata": "{\"tags\":[\"javascript\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "njms",
      "parent_permlink": "modern-js-concepts-arrow-functions-the-new-and-improved-function-literals",
      "permlink": "re-njms-modern-js-concepts-arrow-functions-the-new-and-improved-function-literals-20171120t111419901z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-20T11:14:21",
  "trx_id": "bdcd404c8961ace99c561f972f58b41df0a4bf87",
  "trx_in_block": 1,
  "virtual_op": 0
}
njmsupdated their account properties
2017/11/19 18:41:33
accountnjms
json metadata{"profile":{"cover_image":"https://scontent-ort2-1.cdninstagram.com/t51.2885-15/e35/22637770_284659912025608_3896894990973927424_n.jpg","profile_image":"https://img.esteem.ws/5wx9nwd6ny.jpg","about":"Programming, web design and lots of blockchain enthusiasm."}}
memo keySTM5XTdJp2CkmDv3VRk8uiPxDPygFHjv2r2ey8AP34Zgg1Qg7HASU
Transaction InfoBlock #17366133/Trx 1aeb7622c4634d73a595c6c1e3f1c44a86a0cf79
View Raw JSON Data
{
  "block": 17366133,
  "op": [
    "account_update",
    {
      "account": "njms",
      "json_metadata": "{\"profile\":{\"cover_image\":\"https://scontent-ort2-1.cdninstagram.com/t51.2885-15/e35/22637770_284659912025608_3896894990973927424_n.jpg\",\"profile_image\":\"https://img.esteem.ws/5wx9nwd6ny.jpg\",\"about\":\"Programming, web design and lots of blockchain enthusiasm.\"}}",
      "memo_key": "STM5XTdJp2CkmDv3VRk8uiPxDPygFHjv2r2ey8AP34Zgg1Qg7HASU"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-19T18:41:33",
  "trx_id": "1aeb7622c4634d73a595c6c1e3f1c44a86a0cf79",
  "trx_in_block": 0,
  "virtual_op": 0
}
njmsupdated their account properties
2017/11/19 18:40:30
accountnjms
json metadata{"profile":{"profile_image":"","about":"Programming, web design and lots of blockchain enthusiasm.","cover_image":"https://scontent-ort2-1.cdninstagram.com/t51.2885-15/e35/22637770_284659912025608_3896894990973927424_n.jpg"}}
memo keySTM5XTdJp2CkmDv3VRk8uiPxDPygFHjv2r2ey8AP34Zgg1Qg7HASU
Transaction InfoBlock #17366112/Trx d4d754cf3b106d0a7932c42fe669731744241e36
View Raw JSON Data
{
  "block": 17366112,
  "op": [
    "account_update",
    {
      "account": "njms",
      "json_metadata": "{\"profile\":{\"profile_image\":\"\",\"about\":\"Programming, web design and lots of blockchain enthusiasm.\",\"cover_image\":\"https://scontent-ort2-1.cdninstagram.com/t51.2885-15/e35/22637770_284659912025608_3896894990973927424_n.jpg\"}}",
      "memo_key": "STM5XTdJp2CkmDv3VRk8uiPxDPygFHjv2r2ey8AP34Zgg1Qg7HASU"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-19T18:40:30",
  "trx_id": "d4d754cf3b106d0a7932c42fe669731744241e36",
  "trx_in_block": 4,
  "virtual_op": 0
}
njmsupdated their account properties
2017/11/19 18:40:12
accountnjms
json metadata{"profile":{"cover_image":"https://scontent-ort2-1.cdninstagram.com/t51.2885-15/e35/22637770_284659912025608_3896894990973927424_n.jpg","profile_image":"https://img.esteem.ws/2truj2ygo2.jpg","about":"Programming, web design and lots of blockchain enthusiasm."}}
memo keySTM5XTdJp2CkmDv3VRk8uiPxDPygFHjv2r2ey8AP34Zgg1Qg7HASU
Transaction InfoBlock #17366106/Trx ce2cb73e5e7f135805dc476dd051c686311af619
View Raw JSON Data
{
  "block": 17366106,
  "op": [
    "account_update",
    {
      "account": "njms",
      "json_metadata": "{\"profile\":{\"cover_image\":\"https://scontent-ort2-1.cdninstagram.com/t51.2885-15/e35/22637770_284659912025608_3896894990973927424_n.jpg\",\"profile_image\":\"https://img.esteem.ws/2truj2ygo2.jpg\",\"about\":\"Programming, web design and lots of blockchain enthusiasm.\"}}",
      "memo_key": "STM5XTdJp2CkmDv3VRk8uiPxDPygFHjv2r2ey8AP34Zgg1Qg7HASU"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-19T18:40:12",
  "trx_id": "ce2cb73e5e7f135805dc476dd051c686311af619",
  "trx_in_block": 2,
  "virtual_op": 0
}
2017/11/19 17:47:03
authornjms
body![](https://i.imgur.com/cCEbXvW.png) In the past, we would see a lot of this: ```javascript someFunction(param, function() { // do something }); ``` Now, this gets a little bit cumbersome after a while. Not only are function expressions long, they include a kitchen sink of features that you probably won't need in all cases, like the `this` or a `new` constructor. Thankfully, in EMCAScript 6, we got this whole new and improved arrow function. Let's take a look. ## Syntax The declaration of an arrow function goes like this: ``` (param1, param2 ... paramN) => expression ``` Arrow functions may remind you of the lambda or anonymous function syntax used various other programming languages like Haskell: ```javascript someFunction(param, () => { // do something }); ``` As you can see, they're defined with the parameters wrapped in brackets, followed by an `=>` arrow and an expression. If your arrow function doesn't need any parameters, you can just use two empty brackets as I did above. Here's another example: ```javascript var array = [1, 2, 3, 4]; var increment = 2; var incremented = array.map(item => item + increment); // [3, 4, 5, 6] ``` When writing arrow functions like this (without using `{}` curly braces), you don't even need to use the `return` keyword, similar to how you would return a value in a language like Rust. It's implied that, since there's only one expression that needs to be evaluated, it should be returned. In that example, we didn't use brackets around the argument `param`. When you only have one parameter, brackets are optional. ## Advantages One of the things that makes arrow functions so useful is that they don't have their own `this` object. Consider the following: ```javascript var object = { values: [2, 4, 6, 8], multiplyBy: 7, multiply() { // ES6 also let's us write functions in objects like this return this.values.map(function (value) { return value * this.multiplyBy; }) } } ``` However, if we try to run this, we'll get an `Array [ NaN, NaN, NaN, NaN ]` value. Why, you ask? Try taking a closer look at that anonymous function. As I explained in [my article on closures](https://steemit.com/programming/@njms/closures-in-programming-what-are-they-and-how-do-they-work), Every nested function takes on the *lexical scope* of the function it's nested in. In other words, all values made available in the outer function exist in the inner function. For this reason, we might expect that the `this` object should be available as well. However, the anonymous function you're working in already has it's own `this` which takes superiority. Though we might have access to `multiplyBy` in the outer function, getting to it within the inner function is a bit more difficult. Before ES6, people often used this hack: ```javascript var self = this; return this.values.map(function (value) { return value * self.multiplyBy; }) ``` Sure, this works, but it's a bit of a compromise. Thankfully, arrow functions solve this issue beautifully. ```javascript var object = { values: [2, 4, 6, 8], multiplyBy: 7, multiply() { return this.values.map(value => value * this.multiplyBy); } } ``` Since arrow functions don't have `this`, no referencing is required to access the `multiplyBy` value. Perfect. ## Another (practical) use case Let's take a look at this function I wrote to simplify the process of querying an API with an AJAX call using jQuery: ```javascript function queryAPI(query, datatype, callback) { return $.ajax({ url: query, dataType: datatype, success: callback.success, error: callback.error }); } ``` The function takes three parameters: the complete URL, the data type and a success and error callback wrapped in an object. We can call this function like so: ```javascript queryAPI("https://api.example.com/some/query", "json", { success: function(data) { element.innerHTML = data; }, error: function(error) { element.innerHTML = error; } }) ``` Now that we know more about arrow functions, things would look a lot nicer written like this: ```javascript queryAPI("https://api.example.com/some/query", "json", { success: data => element.innerHTML = data, error: error => element.innerHTML = error }) ``` EMCAScript 6 is full of great features. Sure, many of them might not be supported natively in all browsers yet, but that doesn't mean it's too early to start! ## Further reading * [Arrow functions - JavaScript | MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions) * [ES6 In Depth: Arrow functions](https://hacks.mozilla.org/2015/06/es6-in-depth-arrow-functions/) * [Arrow function vs function declaration / expressions: Are they equivalent / exchangeable? - Stack Overflow](https://stackoverflow.com/questions/34361379/arrow-function-vs-function-declaration-expressions-are-they-equivalent-exch) *Agree or disagree? Think I missed or poorly explained something important? Questions, comments or concerns? Leave a comment down below!*
json metadata{"tags":["javascript","programming","development","coding"],"image":["https://i.imgur.com/cCEbXvW.png"],"links":["https://steemit.com/programming/@njms/closures-in-programming-what-are-they-and-how-do-they-work","https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions","https://hacks.mozilla.org/2015/06/es6-in-depth-arrow-functions/","https://stackoverflow.com/questions/34361379/arrow-function-vs-function-declaration-expressions-are-they-equivalent-exch"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkjavascript
permlinkmodern-js-concepts-arrow-functions-the-new-and-improved-function-literals
titleModern JS concepts: Arrow functions, the new and improved function literals
Transaction InfoBlock #17365043/Trx 79937a8608ac6cbd1ca620fd8f438bd34d92eeaa
View Raw JSON Data
{
  "block": 17365043,
  "op": [
    "comment",
    {
      "author": "njms",
      "body": "![](https://i.imgur.com/cCEbXvW.png)\n\nIn the past, we would see a lot of this:\n\n```javascript\nsomeFunction(param, function() {\n  // do something\n});\n```\nNow, this gets a little bit cumbersome after a while. Not only are function expressions long, they include a kitchen sink of features that you probably won't need in all cases, like the `this` or a `new` constructor.\n\nThankfully, in EMCAScript 6, we got this whole new and improved arrow function. Let's take a look.\n\n## Syntax\n\nThe declaration of an arrow function goes like this:\n\n```\n(param1, param2 ... paramN) => expression\n```\n\nArrow functions may remind you of the lambda or anonymous function syntax used various other programming languages like Haskell:\n\n```javascript\nsomeFunction(param, () => {\n  // do something\n});\n```\n\nAs you can see, they're defined with the parameters wrapped in brackets, followed by an `=>` arrow and an expression. If your arrow function doesn't need any parameters, you can just use two empty brackets as I did above. Here's another example:\n\n```javascript\nvar array = [1, 2, 3, 4];\nvar increment = 2;\n\nvar incremented = array.map(item => item + increment); // [3, 4, 5, 6]\n```\n\nWhen writing arrow functions like this (without using `{}` curly braces), you don't even need to use the `return` keyword, similar to how you would return a value in a language like Rust. It's implied that, since there's only one expression that needs to be evaluated, it should be returned.\n\nIn that example, we didn't use brackets around the argument `param`. When you only have one parameter, brackets are optional.\n\n## Advantages\n\nOne of the things that makes arrow functions so useful is that they don't have their own `this` object. Consider the following:\n\n```javascript\nvar object = {\n  values: [2, 4, 6, 8],\n  multiplyBy: 7,\n  multiply() { // ES6 also let's us write functions in objects like this\n    return this.values.map(function (value) {\n      return value * this.multiplyBy;\n    })\n  }\n}\n```\n\nHowever, if we try to run this, we'll get an `Array [ NaN, NaN, NaN, NaN ]` value. Why, you ask? Try taking a closer look at that anonymous function.\n\nAs I explained in [my article on closures](https://steemit.com/programming/@njms/closures-in-programming-what-are-they-and-how-do-they-work), Every nested function takes on the *lexical scope* of the function it's nested in. In other words, all values made available in the outer function exist in the inner function. For this reason, we might expect that the `this` object should be available as well. However, the anonymous function you're working in already has it's own `this` which takes superiority.\n\nThough we might have access to `multiplyBy` in the outer function, getting to it within the inner function is a bit more difficult. Before ES6, people often used this hack:\n\n```javascript\nvar self = this;\n\nreturn this.values.map(function (value) {\n  return value * self.multiplyBy;\n})\n```\n\nSure, this works, but it's a bit of a compromise. Thankfully, arrow functions solve this issue beautifully.\n\n```javascript\nvar object = {\n  values: [2, 4, 6, 8],\n  multiplyBy: 7,\n  multiply() {\n    return this.values.map(value => value * this.multiplyBy);\n  }\n}\n```\n\nSince arrow functions don't have `this`, no referencing is required to access the `multiplyBy` value.\n\nPerfect.\n\n## Another (practical) use case\n\nLet's take a look at this function I wrote to simplify the process of querying an API with an AJAX call using jQuery:\n\n```javascript\nfunction queryAPI(query, datatype, callback) {\n  return $.ajax({\n    url: query,\n    dataType: datatype,\n    success: callback.success,\n    error: callback.error\n  });\n}\n```\n\nThe function takes three parameters: the complete URL, the data type and a success and error callback wrapped in an object. We can call this function like so:\n\n```javascript\nqueryAPI(\"https://api.example.com/some/query\", \"json\", {\n  success: function(data) {\n    element.innerHTML = data;\n  },\n  error: function(error) {\n    element.innerHTML = error;\n  }\n})\n```\n\nNow that we know more about arrow functions, things would look a lot nicer written like this:\n\n```javascript\nqueryAPI(\"https://api.example.com/some/query\", \"json\", {\n  success: data => element.innerHTML = data,\n  error: error => element.innerHTML = error\n})\n```\n\nEMCAScript 6 is full of great features. Sure, many of them might not be supported natively in all browsers yet, but that doesn't mean it's too early to start!\n\n## Further reading\n * [Arrow functions - JavaScript | MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)\n * [ES6 In Depth: Arrow functions](https://hacks.mozilla.org/2015/06/es6-in-depth-arrow-functions/)\n * [Arrow function vs function declaration / expressions: Are they equivalent / exchangeable? - Stack Overflow](https://stackoverflow.com/questions/34361379/arrow-function-vs-function-declaration-expressions-are-they-equivalent-exch)\n\n *Agree or disagree? Think I missed or poorly explained something important? Questions, comments or concerns? Leave a comment down below!*",
      "json_metadata": "{\"tags\":[\"javascript\",\"programming\",\"development\",\"coding\"],\"image\":[\"https://i.imgur.com/cCEbXvW.png\"],\"links\":[\"https://steemit.com/programming/@njms/closures-in-programming-what-are-they-and-how-do-they-work\",\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions\",\"https://hacks.mozilla.org/2015/06/es6-in-depth-arrow-functions/\",\"https://stackoverflow.com/questions/34361379/arrow-function-vs-function-declaration-expressions-are-they-equivalent-exch\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "javascript",
      "permlink": "modern-js-concepts-arrow-functions-the-new-and-improved-function-literals",
      "title": "Modern JS concepts: Arrow functions, the new and improved function literals"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-19T17:47:03",
  "trx_id": "79937a8608ac6cbd1ca620fd8f438bd34d92eeaa",
  "trx_in_block": 4,
  "virtual_op": 0
}
2017/11/19 00:47:18
authornjms
permlinkre-eturnerx-ai-is-stupid-humans-judgment-matters-20171112t004719732z
sbd payout0.025 SBD
steem payout0.000 STEEM
vesting payout57.501606 VESTS
Transaction InfoBlock #17344664/Virtual Operation #6
View Raw JSON Data
{
  "block": 17344664,
  "op": [
    "author_reward",
    {
      "author": "njms",
      "permlink": "re-eturnerx-ai-is-stupid-humans-judgment-matters-20171112t004719732z",
      "sbd_payout": "0.025 SBD",
      "steem_payout": "0.000 STEEM",
      "vesting_payout": "57.501606 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-19T00:47:18",
  "trx_id": "0000000000000000000000000000000000000000",
  "trx_in_block": 4294967295,
  "virtual_op": 6
}
2017/11/18 23:47:48
idfollow
json["follow",{"follower":"njms","following":"programming-bro","what":["blog"]}]
required auths[]
required posting auths["njms"]
Transaction InfoBlock #17343475/Trx a5677622f503fe3474997cf616c7818b90eb753d
View Raw JSON Data
{
  "block": 17343475,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"njms\",\"following\":\"programming-bro\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "njms"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-18T23:47:48",
  "trx_id": "a5677622f503fe3474997cf616c7818b90eb753d",
  "trx_in_block": 27,
  "virtual_op": 0
}
2017/11/18 23:46:54
idfollow
json["follow",{"follower":"njms","following":"steepshot","what":["blog"]}]
required auths[]
required posting auths["njms"]
Transaction InfoBlock #17343457/Trx 5e20c4579c7ecf11555b0bfe5aede17ad5044b38
View Raw JSON Data
{
  "block": 17343457,
  "op": [
    "custom_json",
    {
      "id": "follow",
      "json": "[\"follow\",{\"follower\":\"njms\",\"following\":\"steepshot\",\"what\":[\"blog\"]}]",
      "required_auths": [],
      "required_posting_auths": [
        "njms"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-18T23:46:54",
  "trx_id": "5e20c4579c7ecf11555b0bfe5aede17ad5044b38",
  "trx_in_block": 18,
  "virtual_op": 0
}
2017/11/17 21:18:51
authornjms
bodyI'm happy you found it useful!
json metadata{"tags":["programming"],"app":"steemit/0.1"}
parent authornot-a-bird
parent permlinkre-njms-closures-in-programming-what-are-they-and-how-do-they-work-20171117t042947212z
permlinkre-not-a-bird-re-njms-closures-in-programming-what-are-they-and-how-do-they-work-20171117t211852942z
title
Transaction InfoBlock #17311699/Trx c85e62e9e7b4d1ea6ce2ff8ab06fce34b9521920
View Raw JSON Data
{
  "block": 17311699,
  "op": [
    "comment",
    {
      "author": "njms",
      "body": "I'm happy you found it useful!",
      "json_metadata": "{\"tags\":[\"programming\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "not-a-bird",
      "parent_permlink": "re-njms-closures-in-programming-what-are-they-and-how-do-they-work-20171117t042947212z",
      "permlink": "re-not-a-bird-re-njms-closures-in-programming-what-are-they-and-how-do-they-work-20171117t211852942z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-17T21:18:51",
  "trx_id": "c85e62e9e7b4d1ea6ce2ff8ab06fce34b9521920",
  "trx_in_block": 9,
  "virtual_op": 0
}
2017/11/17 06:27:15
authorprogramming-bro
bodycool tut
json metadata{"tags":["programming"],"app":"steemit/0.1"}
parent authornjms
parent permlinkclosures-in-programming-what-are-they-and-how-do-they-work
permlinkre-njms-closures-in-programming-what-are-they-and-how-do-they-work-20171117t072706687z
title
Transaction InfoBlock #17293869/Trx 43c7272d7a29cf3e34a0fd5872274303fb9869d6
View Raw JSON Data
{
  "block": 17293869,
  "op": [
    "comment",
    {
      "author": "programming-bro",
      "body": "cool tut",
      "json_metadata": "{\"tags\":[\"programming\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "njms",
      "parent_permlink": "closures-in-programming-what-are-they-and-how-do-they-work",
      "permlink": "re-njms-closures-in-programming-what-are-they-and-how-do-they-work-20171117t072706687z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-17T06:27:15",
  "trx_id": "43c7272d7a29cf3e34a0fd5872274303fb9869d6",
  "trx_in_block": 8,
  "virtual_op": 0
}
2017/11/17 06:26:48
authornjms
permlinkclosures-in-programming-what-are-they-and-how-do-they-work
voterprogramming-bro
weight10000 (100.00%)
Transaction InfoBlock #17293860/Trx 3e488c1b44652de7616ae1d1dd79fdfdb3006794
View Raw JSON Data
{
  "block": 17293860,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "closures-in-programming-what-are-they-and-how-do-they-work",
      "voter": "programming-bro",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-17T06:26:48",
  "trx_id": "3e488c1b44652de7616ae1d1dd79fdfdb3006794",
  "trx_in_block": 21,
  "virtual_op": 0
}
2017/11/17 04:29:45
authornot-a-bird
bodyI think this is the clearest explanation of closures I've ever read. Thanks.
json metadata{"tags":["programming"],"app":"steemit/0.1"}
parent authornjms
parent permlinkclosures-in-programming-what-are-they-and-how-do-they-work
permlinkre-njms-closures-in-programming-what-are-they-and-how-do-they-work-20171117t042947212z
title
Transaction InfoBlock #17291524/Trx f6e9254daa4b3f4459077ddc9fe5f8138c8d004a
View Raw JSON Data
{
  "block": 17291524,
  "op": [
    "comment",
    {
      "author": "not-a-bird",
      "body": "I think this is the clearest explanation of closures I've ever read.  Thanks.",
      "json_metadata": "{\"tags\":[\"programming\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "njms",
      "parent_permlink": "closures-in-programming-what-are-they-and-how-do-they-work",
      "permlink": "re-njms-closures-in-programming-what-are-they-and-how-do-they-work-20171117t042947212z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-17T04:29:45",
  "trx_id": "f6e9254daa4b3f4459077ddc9fe5f8138c8d004a",
  "trx_in_block": 22,
  "virtual_op": 0
}
2017/11/17 04:28:57
authornjms
permlinkclosures-in-programming-what-are-they-and-how-do-they-work
voternot-a-bird
weight10000 (100.00%)
Transaction InfoBlock #17291508/Trx ee0309e89f678e313b86bed6bacd77d6721117a2
View Raw JSON Data
{
  "block": 17291508,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "closures-in-programming-what-are-they-and-how-do-they-work",
      "voter": "not-a-bird",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-17T04:28:57",
  "trx_id": "ee0309e89f678e313b86bed6bacd77d6721117a2",
  "trx_in_block": 20,
  "virtual_op": 0
}
2017/11/17 00:10:09
authornjms
permlinkclosures-in-programming-what-are-they-and-how-do-they-work
voteramirhaeva
weight10000 (100.00%)
Transaction InfoBlock #17286332/Trx b0704fdb16a00bddc639ddec06f7e41a0ce4d3a6
View Raw JSON Data
{
  "block": 17286332,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "closures-in-programming-what-are-they-and-how-do-they-work",
      "voter": "amirhaeva",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-17T00:10:09",
  "trx_id": "b0704fdb16a00bddc639ddec06f7e41a0ce4d3a6",
  "trx_in_block": 12,
  "virtual_op": 0
}
2017/11/17 00:10:09
authornjms
permlinkclosures-in-programming-what-are-they-and-how-do-they-work
voterankaoprex
weight10000 (100.00%)
Transaction InfoBlock #17286332/Trx 46bdbb11da9b6b11e6ad856402de65475198337e
View Raw JSON Data
{
  "block": 17286332,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "closures-in-programming-what-are-they-and-how-do-they-work",
      "voter": "ankaoprex",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-17T00:10:09",
  "trx_id": "46bdbb11da9b6b11e6ad856402de65475198337e",
  "trx_in_block": 7,
  "virtual_op": 0
}
2017/11/17 00:10:09
authornjms
permlinkclosures-in-programming-what-are-they-and-how-do-they-work
voterrazelena
weight10000 (100.00%)
Transaction InfoBlock #17286332/Trx 8647200e52557d248348597827d77ae6bae74d9e
View Raw JSON Data
{
  "block": 17286332,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "closures-in-programming-what-are-they-and-how-do-they-work",
      "voter": "razelena",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-17T00:10:09",
  "trx_id": "8647200e52557d248348597827d77ae6bae74d9e",
  "trx_in_block": 2,
  "virtual_op": 0
}
2017/11/17 00:03:36
authornjms
permlinkclosures-in-programming-what-are-they-and-how-do-they-work
voteron247
weight10000 (100.00%)
Transaction InfoBlock #17286201/Trx 3d058410c490948ca68e051cd00071629273f2a5
View Raw JSON Data
{
  "block": 17286201,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "closures-in-programming-what-are-they-and-how-do-they-work",
      "voter": "on247",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-17T00:03:36",
  "trx_id": "3d058410c490948ca68e051cd00071629273f2a5",
  "trx_in_block": 19,
  "virtual_op": 0
}
2017/11/16 21:25:18
authornjms
permlinkclosures-in-programming-what-are-they-and-how-do-they-work
voterj0k3rgambit
weight10000 (100.00%)
Transaction InfoBlock #17283035/Trx 9734a41be76dd2bc29eccd966bd431c15117ab87
View Raw JSON Data
{
  "block": 17283035,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "closures-in-programming-what-are-they-and-how-do-they-work",
      "voter": "j0k3rgambit",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-16T21:25:18",
  "trx_id": "9734a41be76dd2bc29eccd966bd431c15117ab87",
  "trx_in_block": 20,
  "virtual_op": 0
}
2017/11/16 21:23:33
authornjms
body![](https://steemitimages.com/DQmNweVRbuaSHsLBBQVkj4WSAMeB5f2bmku3aBhoyHkdeL8/image.png) Any avid programmer would likely have heard the term “closure” a handful of times, though many newcomers may struggle trying to understand how they work, or even what they are. Let's take a look at a definition [taken from Wikipedia](https://en.wikipedia.org/wiki/Closure_(computer_programming)): > In programming languages, closures (also lexical closures or function closures) are techniques for implementing lexically scoped name binding in languages with first-class functions. That’s, well, not very intuitive. To be fair, closures aren’t an incredibly intuitive thing when you define them like that. I’m certain, however, that though breaking this definition down things will become much clearer. Let’s take a look: ## Lexical scoping This can actually be broken down even further. First of all, “scoping”. Most programmers should be familiar with scoping. A block of code, usually wrapped in curly braces, is “scoped” in some sense. ``` # pseudocode variable num = 1 # x is in the global scope function add_one(x) { variable sum = x + num # sum is local to the "add_one" function return sum } print(num) # Prints the number 1 print(sum) # Prints a reference error ``` In that pseudocode example, we declare two variables: `num` and `sum`. The variable `num` is in the global scope, meaning that it can be retrieved anywhere, including from within the function `add_one`. The `sum` variable, however, is *not* global and can only be accessed from within the function. In this case, of course, the `sum` is being returned from the function so if we were to later assign the value returned by the function to a new variable binding we technically could access its contents. ``` # pseudocode print(sum) // ReferenceError: sum is not define print(add_one(3)); // 4 ``` That's enough about scoping. How about a *lexical* scoping? On its own, the word lexicon really has no significance to computer science. A lexicon is like a dictionary or a list of vocabulary. That's where you start to see the analogy. Now, the idea behind lexical scoping is that every inner scope has access to the values that exist in the outer scope. For an example, ``` # pseudocode function outer() { # Outer block of code variable a = "Hello, World!" function inner() { # Inner block of code variable b = a } } ``` Here, we have one function wrapped in another. In the outer block, we define a variable called `a` and assign it the value "Hello, World!". Thanks to lexical scoping, the interpreter or compiler allows us to assign the value of the variable `a` to our new variable `b`. To put it in the most simple form possible, **with lexical scoping, the inner function contains the scope of the outer function**. So, when you're nesting functions, the function on the inside has access to all the values defined on the outside. What must be the most common use case for nesting functions is returning them. We refer to functions that are treated like values as they are in functional languages as *first-class functions*. ## First-class functions Functional programmers will definitely know about the concept of first-class functions. To put it simply, a first-class function is one that is treated as a *first-class citizen*. If a language supports first-class functions, then they can be assigned to variables and passed to other functions. A function that accepts other functions as arguments is referred to as a high-order function. For a function to be considered high-order, it should meet at least one of these two requirements: * The function takes at least one other function as an argument. * The function returns another function defined from within the function. Here's an example: ``` #pseudocode function create_increaser(by) { function increaser(inc) { return inc + by } return increaser } variable increment_by_one = create_increaser(1) variable increment_by_two = create_increaser(2) increment_by_one(5) // 6 increment_by_two(5) // 7 ``` Here, a function called `create_increaser` takes one argument and returns another function. We can assign the returned function to a variable as demonstrated in the example. We can then pass a number to that function and have it incremented by however much we decided earlier. This is a pretty simple example, but it gets the point across. So now that we know what lexical scoping is and we understand first class functions, how does any of this relate to closures? ## Finally, closures. Let's revisit our last example. This time, using Javascript: ```javascript // javascript function create_increaser(by) { function increaser(inc) { return inc + by; } return increaser; } ``` By our understanding of memory management, once the interpreter reaches the end of the scope, in theory, all of the variable bindings should be picked up by the garbage collector. Try looking a little bit closer. At the start of this function, we get a number bound to this binding called `by` representing by how much the "increaser" should increment each number. As we understand scoping, this binding should be eliminated after the function has run. Yet lo and behold: ```javascript // javascript // The binding 'by' comes into scope and then falls out var increment_by_one = create_increaser(1); // We increment the number 2 by the value that shouldn't exist anymore console.log(increment_by_one(2)); ``` We can still use it. How do we still have access to this value if it shouldn't exist? This is because in Javascript, all function are closures: a sort of function that "captures" it's lexical scope. If you're using a language that supports closures, you have the power to hang on to scopes after the block has finished executing. In other words, using this pattern, we can still access values created in functions even after they've been run. ## A practical use case Alright, so that's all great, but are there any practical use cases for this concept? Here's an example I find particularly useful in Python ```python # python import os dir1 = "Document" sub_dir = "work" project_folder_one = "project1" project_folder_two = "project2" with open(os.path.join(dir1, sub_dir, project_folder_one, "file.txt"), "w") as f: f.write("Hello, World!") with open(os.path.join(dir1, sub_dir, project_folder_two, "file.txt"), "w") as f: f.write("Hello, World!") ``` So here, I have the path `Documents/work` broken down into variables before using it multiple times with `os.path.join`, a function used to join path components in an OS-independent way. When my project starts getting more complex and I need to use that path more often, things get out of hand. Of course, thanks to closures, I can do something like this: ```python # python def relative(origin): def joined (*to): path = origin for t in to: path = os.path.join(path, t) return path return joined from_work = relative(os.path.join("Documents", "work")) with open(from_work("project1", "file.txt"), "w") as f: f.write("Hello, World!") with open(from_work("project1", "build", "file.txt"), "w") as f: f.write("Hello, World!") ``` See? Much more efficient. Maybe this specific use case isn't extremely useful to everyone but I think it demonstrates how much of an impact closures can have on one's project. ## Further reading * [Closures - JavaScript | MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures) * [functional programming - What is a 'Closure'? - Stack Overflow](https://stackoverflow.com/questions/36636/what-is-a-closure) * [Lexical scoping on Wikipedia](https://en.wikipedia.org/wiki/Scope_(computer_science)#Lexical_scoping) *Agree or disagree? Think I missed or poorly explained something important? Questions, comments or concerns? Leave a comment down below!*
json metadata{"tags":["programming","javascript","python","development","technology"],"image":["https://steemitimages.com/DQmNweVRbuaSHsLBBQVkj4WSAMeB5f2bmku3aBhoyHkdeL8/image.png"],"links":["https://en.wikipedia.org/wiki/Closure_(computer_programming)","https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures","https://stackoverflow.com/questions/36636/what-is-a-closure","https://en.wikipedia.org/wiki/Scope_(computer_science)#Lexical_scoping"],"app":"steemit/0.1","format":"markdown"}
parent author
parent permlinkprogramming
permlinkclosures-in-programming-what-are-they-and-how-do-they-work
titleClosures in programming: What are they and how do they work?
Transaction InfoBlock #17283000/Trx 081642b26a081d40e5589d288ddacf4a67617ec6
View Raw JSON Data
{
  "block": 17283000,
  "op": [
    "comment",
    {
      "author": "njms",
      "body": "![](https://steemitimages.com/DQmNweVRbuaSHsLBBQVkj4WSAMeB5f2bmku3aBhoyHkdeL8/image.png)\n\nAny avid programmer would likely have heard the term “closure” a handful of times, though many newcomers may struggle trying to understand how they work, or even what they are. Let's take a look at a definition [taken from Wikipedia](https://en.wikipedia.org/wiki/Closure_(computer_programming)):\n\n> In programming languages, closures (also lexical closures or function closures) are techniques for implementing lexically scoped name binding in languages with first-class functions.\n\nThat’s, well, not very intuitive. To be fair, closures aren’t an incredibly intuitive thing when you define them like that. I’m certain, however, that though breaking this definition down things will become much clearer. Let’s take a look:\n\n## Lexical scoping\n\nThis can actually be broken down even further. First of all, “scoping”. Most programmers should be familiar with scoping. A block of code, usually wrapped in curly braces, is “scoped” in some sense.\n\n```\n# pseudocode\n\nvariable num = 1            # x is in the global scope\n\nfunction add_one(x) {\n  variable sum = x + num    # sum is local to the \"add_one\" function\n  return sum\n}\n\nprint(num)                  # Prints the number 1\nprint(sum)                  # Prints a reference error\n```\n\nIn that pseudocode example, we declare two variables: `num` and `sum`. The variable `num` is in the global scope, meaning that it can be retrieved anywhere, including from within the function `add_one`. The `sum` variable, however, is *not* global and can only be accessed from within the function.\n\nIn this case, of course, the `sum` is being returned from the function so if we were to later assign the value returned by the function to a new variable binding we technically could access its contents.\n\n```\n# pseudocode\n\nprint(sum)            // ReferenceError: sum is not define\nprint(add_one(3));    // 4\n```\n\nThat's enough about scoping. How about a *lexical* scoping? On its own, the word lexicon really has no significance to computer science. A lexicon is like a dictionary or a list of vocabulary. That's where you start to see the analogy.\n\nNow, the idea behind lexical scoping is that every inner scope has access to the values that exist in the outer scope. For an example,\n\n```\n# pseudocode\n\nfunction outer() {\n  # Outer block of code\n  variable a = \"Hello, World!\"\n\n  function inner() {\n    # Inner block of code\n    variable b = a\n  }\n}\n```\n\nHere, we have one function wrapped in another. In the outer block, we define a variable called `a` and assign it the value \"Hello, World!\". Thanks to lexical scoping, the interpreter or compiler allows us to assign the value of the variable `a` to our new variable `b`.\n\nTo put it in the most simple form possible, **with lexical scoping, the inner function contains the scope of the outer function**. So, when you're nesting functions, the function on the inside has access to all the values defined on the outside.\n\nWhat must be the most common use case for nesting functions is returning them. We refer to functions that are treated like values as they are in functional languages as *first-class functions*.\n\n## First-class functions\n\nFunctional programmers will definitely know about the concept of first-class functions. To put it simply, a first-class function is one that is treated as a *first-class citizen*. If a language supports first-class functions, then they can be assigned to variables and passed to other functions.\n\nA function that accepts other functions as arguments is referred to as a high-order function. For a function to be considered high-order, it should meet at least one of these two requirements:\n\n * The function takes at least one other function as an argument.\n * The function returns another function defined from within the function.\n\nHere's an example:\n\n```\n#pseudocode\n\nfunction create_increaser(by) {\n  function increaser(inc) {\n    return inc + by\n  }\n\n  return increaser\n}\n\nvariable increment_by_one = create_increaser(1)\nvariable increment_by_two = create_increaser(2)\n\nincrement_by_one(5) // 6\nincrement_by_two(5) // 7\n```\n\nHere, a function called `create_increaser` takes one argument and returns another function. We can assign the returned function to a variable as demonstrated in the example. We can then pass a number to that function and have it incremented by however much we decided earlier.\n\nThis is a pretty simple example, but it gets the point across.\n\nSo now that we know what lexical scoping is and we understand first class functions, how does any of this relate to closures?\n\n## Finally, closures.\n\nLet's revisit our last example. This time, using Javascript:\n\n```javascript\n// javascript\n\nfunction create_increaser(by) {\n  function increaser(inc) {\n    return inc + by;\n  }\n\n  return increaser;\n}\n```\n\nBy our understanding of memory management, once the interpreter reaches the end of the scope, in theory, all of the variable bindings should be picked up by the garbage collector. Try looking a little bit closer. At the start of this function, we get a number bound to this binding called `by` representing by how much the \"increaser\" should increment each number.\n\nAs we understand scoping, this binding should be eliminated after the function has run. Yet lo and behold:\n\n```javascript\n// javascript\n\n// The binding 'by' comes into scope and then falls out\nvar increment_by_one = create_increaser(1);\n\n\n// We increment the number 2 by the value that shouldn't exist anymore\nconsole.log(increment_by_one(2));\n```\n\nWe can still use it. How do we still have access to this value if it shouldn't exist?\n\nThis is because in Javascript, all function are closures: a sort of function that \"captures\" it's lexical scope. If you're using a language that supports closures, you have the power to hang on to scopes after the block has finished executing. In other words, using this pattern, we can still access values created in functions even after they've been run.\n\n## A practical use case\n\nAlright, so that's all great, but are there any practical use cases for this concept?\n\nHere's an example I find particularly useful in Python\n\n```python\n# python\n\nimport os\n\ndir1 = \"Document\"\nsub_dir = \"work\"\nproject_folder_one = \"project1\"\nproject_folder_two = \"project2\"\n\nwith open(os.path.join(dir1, sub_dir, project_folder_one, \"file.txt\"), \"w\") as f:\n  f.write(\"Hello, World!\")\n\nwith open(os.path.join(dir1, sub_dir, project_folder_two, \"file.txt\"), \"w\") as f:\n    f.write(\"Hello, World!\")\n```\n\nSo here, I have the path `Documents/work` broken down into variables before using it multiple times with `os.path.join`, a function used to join path components in an OS-independent way.\n\nWhen my project starts getting more complex and I need to use that path more often, things get out of hand. Of course, thanks to closures, I can do something like this:\n\n```python\n# python\n\ndef relative(origin):\n    def joined (*to):\n        path = origin\n        for t in to:\n            path = os.path.join(path, t)\n        return path\n\n    return joined\n\nfrom_work = relative(os.path.join(\"Documents\", \"work\"))\n\nwith open(from_work(\"project1\", \"file.txt\"), \"w\") as f:\n  f.write(\"Hello, World!\")\n\nwith open(from_work(\"project1\", \"build\", \"file.txt\"), \"w\") as f:\n    f.write(\"Hello, World!\")\n```\n\nSee? Much more efficient. Maybe this specific use case isn't extremely useful to everyone but I think it demonstrates how much of an impact closures can have on one's project.\n\n## Further reading\n\n * [Closures - JavaScript | MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures)\n * [functional programming - What is a 'Closure'? - Stack Overflow](https://stackoverflow.com/questions/36636/what-is-a-closure)\n * [Lexical scoping on Wikipedia](https://en.wikipedia.org/wiki/Scope_(computer_science)#Lexical_scoping)\n\n*Agree or disagree? Think I missed or poorly explained something important? Questions, comments or concerns? Leave a comment down below!*",
      "json_metadata": "{\"tags\":[\"programming\",\"javascript\",\"python\",\"development\",\"technology\"],\"image\":[\"https://steemitimages.com/DQmNweVRbuaSHsLBBQVkj4WSAMeB5f2bmku3aBhoyHkdeL8/image.png\"],\"links\":[\"https://en.wikipedia.org/wiki/Closure_(computer_programming)\",\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures\",\"https://stackoverflow.com/questions/36636/what-is-a-closure\",\"https://en.wikipedia.org/wiki/Scope_(computer_science)#Lexical_scoping\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "programming",
      "permlink": "closures-in-programming-what-are-they-and-how-do-they-work",
      "title": "Closures in programming: What are they and how do they work?"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-16T21:23:33",
  "trx_id": "081642b26a081d40e5589d288ddacf4a67617ec6",
  "trx_in_block": 10,
  "virtual_op": 0
}
njmsupvoted (100.00%) @programming-bro / 5ragww
2017/11/16 20:33:42
authorprogramming-bro
permlink5ragww
voternjms
weight10000 (100.00%)
Transaction InfoBlock #17282003/Trx 8e99389d15d5a22b1f719e557e0da1c190698e8c
View Raw JSON Data
{
  "block": 17282003,
  "op": [
    "vote",
    {
      "author": "programming-bro",
      "permlink": "5ragww",
      "voter": "njms",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-16T20:33:42",
  "trx_id": "8e99389d15d5a22b1f719e557e0da1c190698e8c",
  "trx_in_block": 28,
  "virtual_op": 0
}
njmsupdated their account properties
2017/11/15 21:09:06
accountnjms
json metadata{"profile":{"about":"Programming, web design and lots of blockchain enthusiasm.","cover_image":"https://scontent-ort2-1.cdninstagram.com/t51.2885-15/e35/22637770_284659912025608_3896894990973927424_n.jpg"}}
memo keySTM5XTdJp2CkmDv3VRk8uiPxDPygFHjv2r2ey8AP34Zgg1Qg7HASU
Transaction InfoBlock #17253914/Trx 5030816975f6978dc3beddf49508b54694b81ebd
View Raw JSON Data
{
  "block": 17253914,
  "op": [
    "account_update",
    {
      "account": "njms",
      "json_metadata": "{\"profile\":{\"about\":\"Programming, web design and lots of blockchain enthusiasm.\",\"cover_image\":\"https://scontent-ort2-1.cdninstagram.com/t51.2885-15/e35/22637770_284659912025608_3896894990973927424_n.jpg\"}}",
      "memo_key": "STM5XTdJp2CkmDv3VRk8uiPxDPygFHjv2r2ey8AP34Zgg1Qg7HASU"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-15T21:09:06",
  "trx_id": "5030816975f6978dc3beddf49508b54694b81ebd",
  "trx_in_block": 17,
  "virtual_op": 0
}
2017/11/15 20:59:42
authornjms
bodyHey, thanks for the warm welcome!
json metadata{"tags":["introduceyourself"],"app":"steemit/0.1"}
parent authordiezeldiddy
parent permlinkre-njms-introduce-yourself-njms-software-development-web-design-and-blockchain-20171114t234149954z
permlinkre-diezeldiddy-re-njms-introduce-yourself-njms-software-development-web-design-and-blockchain-20171115t205942925z
title
Transaction InfoBlock #17253726/Trx 7e7b5d16cdff58183f9a7414b668e90bc0200abc
View Raw JSON Data
{
  "block": 17253726,
  "op": [
    "comment",
    {
      "author": "njms",
      "body": "Hey, thanks for the warm welcome!",
      "json_metadata": "{\"tags\":[\"introduceyourself\"],\"app\":\"steemit/0.1\"}",
      "parent_author": "diezeldiddy",
      "parent_permlink": "re-njms-introduce-yourself-njms-software-development-web-design-and-blockchain-20171114t234149954z",
      "permlink": "re-diezeldiddy-re-njms-introduce-yourself-njms-software-development-web-design-and-blockchain-20171115t205942925z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-15T20:59:42",
  "trx_id": "7e7b5d16cdff58183f9a7414b668e90bc0200abc",
  "trx_in_block": 13,
  "virtual_op": 0
}
2017/11/15 01:07:03
authornjms
permlinkintroduce-yourself-njms-software-development-web-design-and-blockchain
voterxtetrahedron
weight400 (4.00%)
Transaction InfoBlock #17229878/Trx d140aaedc08a6bb11d23fbdfb1970959fd14ada1
View Raw JSON Data
{
  "block": 17229878,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "introduce-yourself-njms-software-development-web-design-and-blockchain",
      "voter": "xtetrahedron",
      "weight": 400
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-15T01:07:03",
  "trx_id": "d140aaedc08a6bb11d23fbdfb1970959fd14ada1",
  "trx_in_block": 18,
  "virtual_op": 0
}
2017/11/15 00:49:48
authornjms
permlinkintroduce-yourself-njms-software-development-web-design-and-blockchain
voterzootov
weight10000 (100.00%)
Transaction InfoBlock #17229533/Trx 34cd0452d09dd71cde6cf38bd6440e87e2549ddf
View Raw JSON Data
{
  "block": 17229533,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "introduce-yourself-njms-software-development-web-design-and-blockchain",
      "voter": "zootov",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-15T00:49:48",
  "trx_id": "34cd0452d09dd71cde6cf38bd6440e87e2549ddf",
  "trx_in_block": 6,
  "virtual_op": 0
}
2017/11/15 00:49:45
authornjms
permlinkintroduce-yourself-njms-software-development-web-design-and-blockchain
voterbortosina
weight10000 (100.00%)
Transaction InfoBlock #17229532/Trx 7857cdb1b48f1e68ec2f1dec91beb17bafb90522
View Raw JSON Data
{
  "block": 17229532,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "introduce-yourself-njms-software-development-web-design-and-blockchain",
      "voter": "bortosina",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-15T00:49:45",
  "trx_id": "7857cdb1b48f1e68ec2f1dec91beb17bafb90522",
  "trx_in_block": 6,
  "virtual_op": 0
}
2017/11/15 00:49:45
authornjms
permlinkintroduce-yourself-njms-software-development-web-design-and-blockchain
voterlachunnick
weight10000 (100.00%)
Transaction InfoBlock #17229532/Trx f04320dab0c12b80ab5095c7cdb0838ca6fd5589
View Raw JSON Data
{
  "block": 17229532,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "introduce-yourself-njms-software-development-web-design-and-blockchain",
      "voter": "lachunnick",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-15T00:49:45",
  "trx_id": "f04320dab0c12b80ab5095c7cdb0838ca6fd5589",
  "trx_in_block": 2,
  "virtual_op": 0
}
2017/11/15 00:49:42
authornjms
permlinkintroduce-yourself-njms-software-development-web-design-and-blockchain
voterannkryuk
weight10000 (100.00%)
Transaction InfoBlock #17229531/Trx 4d5ba18e620d0b8ecff4014f668d27e9c7d9d3dc
View Raw JSON Data
{
  "block": 17229531,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "introduce-yourself-njms-software-development-web-design-and-blockchain",
      "voter": "annkryuk",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-15T00:49:42",
  "trx_id": "4d5ba18e620d0b8ecff4014f668d27e9c7d9d3dc",
  "trx_in_block": 13,
  "virtual_op": 0
}
2017/11/15 00:49:42
authornjms
permlinkintroduce-yourself-njms-software-development-web-design-and-blockchain
votermatveevan
weight10000 (100.00%)
Transaction InfoBlock #17229531/Trx 55822e3b2112fdf6844829981382ee4a75b3aa4e
View Raw JSON Data
{
  "block": 17229531,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "introduce-yourself-njms-software-development-web-design-and-blockchain",
      "voter": "matveevan",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-15T00:49:42",
  "trx_id": "55822e3b2112fdf6844829981382ee4a75b3aa4e",
  "trx_in_block": 4,
  "virtual_op": 0
}
2017/11/15 00:49:36
authornjms
permlinkintroduce-yourself-njms-software-development-web-design-and-blockchain
votersamakawa
weight10000 (100.00%)
Transaction InfoBlock #17229529/Trx 58175592b2fa6ee2bad7a4c73268a8826af1b596
View Raw JSON Data
{
  "block": 17229529,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "introduce-yourself-njms-software-development-web-design-and-blockchain",
      "voter": "samakawa",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-15T00:49:36",
  "trx_id": "58175592b2fa6ee2bad7a4c73268a8826af1b596",
  "trx_in_block": 18,
  "virtual_op": 0
}
2017/11/15 00:49:36
authornjms
permlinkintroduce-yourself-njms-software-development-web-design-and-blockchain
voterodetova
weight10000 (100.00%)
Transaction InfoBlock #17229529/Trx 6540527cedceacec8362775b6577bc2654b0cc99
View Raw JSON Data
{
  "block": 17229529,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "introduce-yourself-njms-software-development-web-design-and-blockchain",
      "voter": "odetova",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-15T00:49:36",
  "trx_id": "6540527cedceacec8362775b6577bc2654b0cc99",
  "trx_in_block": 12,
  "virtual_op": 0
}
2017/11/15 00:49:36
authornjms
permlinkintroduce-yourself-njms-software-development-web-design-and-blockchain
voterlilulia
weight10000 (100.00%)
Transaction InfoBlock #17229529/Trx c9e21a6c2ec9c4990c99bffb4a623b9be9816e87
View Raw JSON Data
{
  "block": 17229529,
  "op": [
    "vote",
    {
      "author": "njms",
      "permlink": "introduce-yourself-njms-software-development-web-design-and-blockchain",
      "voter": "lilulia",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2017-11-15T00:49:36",
  "trx_id": "c9e21a6c2ec9c4990c99bffb4a623b9be9816e87",
  "trx_in_block": 4,
  "virtual_op": 0
}

Account Metadata

POSTING JSON METADATA
profile{"cover_image":"https://scontent-ort2-1.cdninstagram.com/t51.2885-15/e35/22637770_284659912025608_3896894990973927424_n.jpg","profile_image":"https://img.esteem.ws/5wx9nwd6ny.jpg","about":"Programming, web design and lots of blockchain enthusiasm. Maybe some photography"}
JSON METADATA
profile{"cover_image":"https://scontent-ort2-1.cdninstagram.com/t51.2885-15/e35/22637770_284659912025608_3896894990973927424_n.jpg","profile_image":"https://img.esteem.ws/5wx9nwd6ny.jpg","about":"Programming, web design and lots of blockchain enthusiasm. Maybe some photography"}
{
  "posting_json_metadata": {
    "profile": {
      "cover_image": "https://scontent-ort2-1.cdninstagram.com/t51.2885-15/e35/22637770_284659912025608_3896894990973927424_n.jpg",
      "profile_image": "https://img.esteem.ws/5wx9nwd6ny.jpg",
      "about": "Programming, web design and lots of blockchain enthusiasm. Maybe some photography"
    }
  },
  "json_metadata": {
    "profile": {
      "cover_image": "https://scontent-ort2-1.cdninstagram.com/t51.2885-15/e35/22637770_284659912025608_3896894990973927424_n.jpg",
      "profile_image": "https://img.esteem.ws/5wx9nwd6ny.jpg",
      "about": "Programming, web design and lots of blockchain enthusiasm. Maybe some photography"
    }
  }
}

Auth Keys

Owner
Single Signature
Public Keys
STM8MPX5CzVrYAEr5zaS5PwRqjmDdfm9C8XsXyPPiausRmzGooJJu1/1
Active
Single Signature
Public Keys
STM644tkSMXfinzxLdDpkazESP12KQfFPz8c2AWL16bW2sTsjLDne1/1
Posting
Single Signature
Public Keys
STM4wzWuopFLpAkvbzmAmwVwFPGw2uxL2SeS92nkhFtapYUMHZW6x1/1
Memo
STM5XTdJp2CkmDv3VRk8uiPxDPygFHjv2r2ey8AP34Zgg1Qg7HASU
{
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM8MPX5CzVrYAEr5zaS5PwRqjmDdfm9C8XsXyPPiausRmzGooJJu",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM644tkSMXfinzxLdDpkazESP12KQfFPz8c2AWL16bW2sTsjLDne",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting": {
    "account_auths": [],
    "key_auths": [
      [
        "STM4wzWuopFLpAkvbzmAmwVwFPGw2uxL2SeS92nkhFtapYUMHZW6x",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "memo": "STM5XTdJp2CkmDv3VRk8uiPxDPygFHjv2r2ey8AP34Zgg1Qg7HASU"
}

Witness Votes

0 / 30
No active witness votes.
[]