@njms
25Programming, web design and lots of blockchain enthusiasm. Maybe some photography
steemit.com/@njmsVOTING 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 DelegationsDeleg
+4.375SP
Detailed Balance
| STEEM | ||
| balance | 0.000STEEM | STEEM |
| market_balance | 0.000STEEM | STEEM |
| savings_balance | 0.000STEEM | STEEM |
| reward_steem_balance | 0.000STEEM | STEEM |
| STEEM POWER | ||
| Own SP | 0.631SP | SP |
| Delegated Out | 0.000SP | SP |
| Delegation In | 4.375SP | SP |
| Effective Power | 5.007SP | SP |
| Reward SP (pending) | 0.073SP | SP |
| SBD | ||
| sbd_balance | 0.002SBD | SBD |
| sbd_conversions | 0.000SBD | SBD |
| sbd_market_balance | 0.000SBD | SBD |
| savings_sbd_balance | 0.000SBD | SBD |
| reward_sbd_balance | 0.062SBD | SBD |
{
"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
| name | njms |
| id | 442397 |
| rank | 457,629 |
| reputation | 1031293427 |
| created | 2017-11-11T22:09:39 |
| recovery_account | steem |
| proxy | None |
| post_count | 8 |
| comment_count | 0 |
| lifetime_vote_count | 0 |
| witnesses_voted_for | 0 |
| last_post | 2018-01-06T15:11:48 |
| last_root_post | 2018-01-06T15:11:48 |
| last_vote_time | 2018-08-16T12:14:42 |
| proxied_vsf_votes | 0, 0, 0, 0 |
| can_vote | 1 |
| voting_power | 0 |
| delayed_votes | 0 |
| balance | 0.000 STEEM |
| savings_balance | 0.000 STEEM |
| sbd_balance | 0.002 SBD |
| savings_sbd_balance | 0.000 SBD |
| vesting_shares | 1027.184227 VESTS |
| delegated_vesting_shares | 0.000000 VESTS |
| received_vesting_shares | 7116.475579 VESTS |
| reward_vesting_balance | 149.887574 VESTS |
| vesting_balance | 0.000 STEEM |
| vesting_withdraw_rate | 0.000000 VESTS |
| next_vesting_withdrawal | 1969-12-31T23:59:59 |
| withdrawn | 0 |
| to_withdraw | 0 |
| withdraw_routes | 0 |
| savings_withdraw_requests | 0 |
| last_account_recovery | 1970-01-01T00:00:00 |
| reset_account | null |
| last_owner_update | 1970-01-01T00:00:00 |
| last_account_update | 2018-01-06T15:38:18 |
| mined | No |
| sbd_seconds | 0 |
| sbd_last_interest_payment | 1970-01-01T00:00:00 |
| savings_sbd_last_interest_payment | 1970-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
| Incoming | Outgoing |
|---|---|
Empty | Empty |
{
"incoming": [],
"outgoing": []
}From Date
To Date
2026/05/18 04:31:57
2026/05/18 04:31:57
| delegatee | njms |
| delegator | steem |
| vesting shares | 7116.475579 VESTS |
| Transaction Info | Block #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
}2026/05/12 21:11:30
2026/05/12 21:11:30
| delegatee | njms |
| delegator | steem |
| vesting shares | 4404.265174 VESTS |
| Transaction Info | Block #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
}2026/04/26 03:46:15
2026/04/26 03:46:15
| delegatee | njms |
| delegator | steem |
| vesting shares | 7128.991335 VESTS |
| Transaction Info | Block #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
}2026/01/23 19:17:42
2026/01/23 19:17:42
| delegatee | njms |
| delegator | steem |
| vesting shares | 4445.811993 VESTS |
| Transaction Info | Block #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
}2024/12/17 14:29:30
2024/12/17 14:29:30
| delegatee | njms |
| delegator | steem |
| vesting shares | 4610.031190 VESTS |
| Transaction Info | Block #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
}2023/11/14 06:10:42
2023/11/14 06:10:42
| delegatee | njms |
| delegator | steem |
| vesting shares | 4779.164722 VESTS |
| Transaction Info | Block #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
}2023/09/22 08:18:21
2023/09/22 08:18:21
| delegatee | njms |
| delegator | steem |
| vesting shares | 7716.073508 VESTS |
| Transaction Info | Block #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
}2022/11/03 16:02:45
2022/11/03 16:02:45
| delegatee | njms |
| delegator | steem |
| vesting shares | 7938.124946 VESTS |
| Transaction Info | Block #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
}2022/01/17 21:24:51
2022/01/17 21:24:51
| delegatee | njms |
| delegator | steem |
| vesting shares | 8158.232547 VESTS |
| Transaction Info | Block #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
}2021/06/14 04:40:15
2021/06/14 04:40:15
| delegatee | njms |
| delegator | steem |
| vesting shares | 8342.426835 VESTS |
| Transaction Info | Block #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
}2020/12/11 14:54:12
2020/12/11 14:54:12
| delegatee | njms |
| delegator | steem |
| vesting shares | 8529.848809 VESTS |
| Transaction Info | Block #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
}2020/12/06 08:30:30
2020/12/06 08:30:30
| delegatee | njms |
| delegator | steem |
| vesting shares | 1912.543513 VESTS |
| Transaction Info | Block #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
}2020/12/05 18:31:51
2020/12/05 18:31:51
| delegatee | njms |
| delegator | steem |
| vesting shares | 8536.056663 VESTS |
| Transaction Info | Block #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
}2020/11/02 23:26:21
2020/11/02 23:26:21
| delegatee | njms |
| delegator | steem |
| vesting shares | 1920.017158 VESTS |
| Transaction Info | Block #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
}2020/05/09 09:31:42
2020/05/09 09:31:42
| delegatee | njms |
| delegator | steem |
| vesting shares | 8738.862022 VESTS |
| Transaction Info | Block #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
}2020/05/08 13:42:03
2020/05/08 13:42:03
| delegatee | njms |
| delegator | steem |
| vesting shares | 1953.311140 VESTS |
| Transaction Info | Block #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
2019/11/11 23:14:45
| author | steemitboard |
| body | Congratulations @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 author | njms |
| parent permlink | a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48 |
| permlink | steemitboard-notify-njms-20191111t231444000z |
| title | |
| Transaction Info | Block #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
}2019/11/01 08:56:12
2019/11/01 08:56:12
| delegatee | njms |
| delegator | steem |
| vesting shares | 8845.261105 VESTS |
| Transaction Info | Block #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
}2018/11/26 18:51:00
2018/11/26 18:51:00
| delegatee | njms |
| delegator | steem |
| vesting shares | 9042.736482 VESTS |
| Transaction Info | Block #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
2018/11/11 22:26:30
| author | steemitboard |
| body | Congratulations @njms! You have received a personal award! [](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 author | njms |
| parent permlink | a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48 |
| permlink | steemitboard-notify-njms-20181111t222630000z |
| title | |
| Transaction Info | Block #27618129/Trx 0a96161d5cd69c041f16ca0519e8bbd814b3562c |
View Raw JSON Data
{
"block": 27618129,
"op": [
"comment",
{
"author": "steemitboard",
"body": "Congratulations @njms! You have received a personal award!\n\n[](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-photograph2018/08/16 12:14:42
njmsupvoted (100.00%) @fx002 / 5tgw5l-now-photograph
2018/08/16 12:14:42
| author | fx002 |
| permlink | 5tgw5l-now-photograph |
| voter | njms |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}2018/08/15 18:41:39
2018/08/15 18:41:39
| delegatee | njms |
| delegator | steem |
| vesting shares | 29349.910255 VESTS |
| Transaction Info | Block #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
}njmsupvoted (100.00%) @lowbudgetink / myspace-neverforget2018/08/15 14:50:36
njmsupvoted (100.00%) @lowbudgetink / myspace-neverforget
2018/08/15 14:50:36
| author | lowbudgetink |
| permlink | myspace-neverforget |
| voter | njms |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}2018/05/16 23:22:57
2018/05/16 23:22:57
| delegatee | njms |
| delegator | steem |
| vesting shares | 9146.977151 VESTS |
| Transaction Info | Block #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
}2018/04/21 20:49:33
2018/04/21 20:49:33
| delegatee | njms |
| delegator | steem |
| vesting shares | 29534.983721 VESTS |
| Transaction Info | Block #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-282018/01/13 14:57:18
njmsreceived 0.003 SP curation reward for @heelsonwheels / daily-dose---028-2018-01-06-14-57-28
2018/01/13 14:57:18
| comment author | heelsonwheels |
| comment permlink | daily-dose---028-2018-01-06-14-57-28 |
| curator | njms |
| reward | 4.095832 VESTS |
| Transaction Info | Block #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
}jeannedbupvoted (100.00%) @njms / a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-482018/01/06 16:19:57
jeannedbupvoted (100.00%) @njms / a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48
2018/01/06 16:19:57
| author | njms |
| permlink | a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48 |
| voter | jeannedb |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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 properties2018/01/06 15:38:18
njmsupdated their account properties
2018/01/06 15:38:18
| 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 |
| Transaction Info | Block #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
}njmsupvoted (100.00%) @heelsonwheels / daily-dose---028-2018-01-06-14-57-282018/01/06 15:36:36
njmsupvoted (100.00%) @heelsonwheels / daily-dose---028-2018-01-06-14-57-28
2018/01/06 15:36:36
| author | heelsonwheels |
| permlink | daily-dose---028-2018-01-06-14-57-28 |
| voter | njms |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}njmsupvoted (100.00%) @njms / a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-482018/01/06 15:32:06
njmsupvoted (100.00%) @njms / a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48
2018/01/06 15:32:06
| author | njms |
| permlink | a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48 |
| voter | njms |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}njmsupvoted (100.00%) @abdurahman / the-beauty-of-aceh-mountain-2018-01-06-15-11-492018/01/06 15:27:15
njmsupvoted (100.00%) @abdurahman / the-beauty-of-aceh-mountain-2018-01-06-15-11-49
2018/01/06 15:27:15
| author | abdurahman |
| permlink | the-beauty-of-aceh-mountain-2018-01-06-15-11-49 |
| voter | njms |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}njmsupdated options for a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-482018/01/06 15:11:48
njmsupdated options for a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48
2018/01/06 15:11:48
| 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 |
| Transaction Info | Block #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
}njmspublished a new post: a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-482018/01/06 15:11:48
njmspublished a new post: a-narrow-gravel-path-through-the-woods-2018-01-06-15-11-48
2018/01/06 15:11:48
| author | njms |
| body | http://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> Created with Steepshot [View in the web app](https://alpha.steepshot.io/)</center> <center>[](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 |
| Transaction Info | Block #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>\nCreated with Steepshot\n[View in the web app](https://alpha.steepshot.io/)</center>\n<center>[](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
}2017/12/12 22:21:24
2017/12/12 22:21:24
| delegatee | njms |
| delegator | steem |
| vesting shares | 29738.815773 VESTS |
| Transaction Info | Block #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
2017/11/27 21:36:33
| author | njms |
| permlink | introduce-yourself-njms-software-development-web-design-and-blockchain |
| voter | smartonelegal |
| weight | 100 (1.00%) |
| Transaction Info | Block #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
2017/11/27 21:36:33
| author | njms |
| permlink | introduce-yourself-njms-software-development-web-design-and-blockchain |
| voter | smartonelegal |
| weight | 100 (1.00%) |
| Transaction Info | Block #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-act2017/11/27 16:44:57
njmsreceived 0.001 SP curation reward for @sonny.dharmawan / the-cryptocurrency-tax-fairness-act
2017/11/27 16:44:57
| comment author | sonny.dharmawan |
| comment permlink | the-cryptocurrency-tax-fairness-act |
| curator | njms |
| reward | 2.052720 VESTS |
| Transaction Info | Block #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
2017/11/25 04:36:27
| author | njms |
| permlink | introduce-yourself-njms-software-development-web-design-and-blockchain |
| voter | mindsportsio |
| weight | 100 (1.00%) |
| Transaction Info | Block #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-work2017/11/23 21:23:33
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
| 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 |
| Transaction Info | Block #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
}evilest-fiendupvoted (100.00%) @njms / closures-in-programming-what-are-they-and-how-do-they-work2017/11/22 04:11:48
evilest-fiendupvoted (100.00%) @njms / closures-in-programming-what-are-they-and-how-do-they-work
2017/11/22 04:11:48
| author | njms |
| permlink | closures-in-programming-what-are-they-and-how-do-they-work |
| voter | evilest-fiend |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2017/11/22 04:11:33
| author | evilest-fiend |
| body | Oh! 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 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 | |
| Transaction Info | Block #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
}njmsreceived 0.027 SBD, 0.039 SP author reward for @njms / introduce-yourself-njms-software-development-web-design-and-blockchain2017/11/21 22:04:30
njmsreceived 0.027 SBD, 0.039 SP author reward for @njms / introduce-yourself-njms-software-development-web-design-and-blockchain
2017/11/21 22:04:30
| 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 |
| Transaction Info | Block #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
}njmsupvoted (100.00%) @steembay / announcement-steembay-is-working-now2017/11/21 16:45:06
njmsupvoted (100.00%) @steembay / announcement-steembay-is-working-now
2017/11/21 16:45:06
| author | steembay |
| permlink | announcement-steembay-is-working-now |
| voter | njms |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}njmsupvoted (100.00%) @sonny.dharmawan / the-cryptocurrency-tax-fairness-act2017/11/20 17:06:24
njmsupvoted (100.00%) @sonny.dharmawan / the-cryptocurrency-tax-fairness-act
2017/11/20 17:06:24
| author | sonny.dharmawan |
| permlink | the-cryptocurrency-tax-fairness-act |
| voter | njms |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2017/11/20 11:14:21
| author | modrzew |
| 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 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 | |
| Transaction Info | Block #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 properties2017/11/19 18:41:33
njmsupdated their account properties
2017/11/19 18:41:33
| 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 |
| Transaction Info | Block #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 properties2017/11/19 18:40:30
njmsupdated their account properties
2017/11/19 18:40:30
| 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 |
| Transaction Info | Block #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 properties2017/11/19 18:40:12
njmsupdated their account properties
2017/11/19 18:40:12
| 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 |
| Transaction Info | Block #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
}njmspublished a new post: modern-js-concepts-arrow-functions-the-new-and-improved-function-literals2017/11/19 17:47:03
njmspublished a new post: modern-js-concepts-arrow-functions-the-new-and-improved-function-literals
2017/11/19 17:47:03
| author | njms |
| body |  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 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 |
| Transaction Info | Block #17365043/Trx 79937a8608ac6cbd1ca620fd8f438bd34d92eeaa |
View Raw JSON Data
{
"block": 17365043,
"op": [
"comment",
{
"author": "njms",
"body": "\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
}njmsreceived 0.025 SBD, 0.035 SP author reward for @njms / re-eturnerx-ai-is-stupid-humans-judgment-matters-20171112t004719732z2017/11/19 00:47:18
njmsreceived 0.025 SBD, 0.035 SP author reward for @njms / re-eturnerx-ai-is-stupid-humans-judgment-matters-20171112t004719732z
2017/11/19 00:47:18
| 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 |
| Transaction Info | Block #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
}njmsfollowed @programming-bro2017/11/18 23:47:48
njmsfollowed @programming-bro
2017/11/18 23:47:48
| id | follow |
| json | ["follow",{"follower":"njms","following":"programming-bro","what":["blog"]}] |
| required auths | [] |
| required posting auths | ["njms"] |
| Transaction Info | Block #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
}njmsfollowed @steepshot2017/11/18 23:46:54
njmsfollowed @steepshot
2017/11/18 23:46:54
| id | follow |
| json | ["follow",{"follower":"njms","following":"steepshot","what":["blog"]}] |
| required auths | [] |
| required posting auths | ["njms"] |
| Transaction Info | Block #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
2017/11/17 21:18:51
| 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 | |
| Transaction Info | Block #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
2017/11/17 06:27:15
| 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 | |
| Transaction Info | Block #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
}programming-broupvoted (100.00%) @njms / closures-in-programming-what-are-they-and-how-do-they-work2017/11/17 06:26:48
programming-broupvoted (100.00%) @njms / closures-in-programming-what-are-they-and-how-do-they-work
2017/11/17 06:26:48
| author | njms |
| permlink | closures-in-programming-what-are-they-and-how-do-they-work |
| voter | programming-bro |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2017/11/17 04:29:45
| 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 | |
| Transaction Info | Block #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
}not-a-birdupvoted (100.00%) @njms / closures-in-programming-what-are-they-and-how-do-they-work2017/11/17 04:28:57
not-a-birdupvoted (100.00%) @njms / closures-in-programming-what-are-they-and-how-do-they-work
2017/11/17 04:28:57
| author | njms |
| permlink | closures-in-programming-what-are-they-and-how-do-they-work |
| voter | not-a-bird |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}amirhaevaupvoted (100.00%) @njms / closures-in-programming-what-are-they-and-how-do-they-work2017/11/17 00:10:09
amirhaevaupvoted (100.00%) @njms / closures-in-programming-what-are-they-and-how-do-they-work
2017/11/17 00:10:09
| author | njms |
| permlink | closures-in-programming-what-are-they-and-how-do-they-work |
| voter | amirhaeva |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}ankaoprexupvoted (100.00%) @njms / closures-in-programming-what-are-they-and-how-do-they-work2017/11/17 00:10:09
ankaoprexupvoted (100.00%) @njms / closures-in-programming-what-are-they-and-how-do-they-work
2017/11/17 00:10:09
| author | njms |
| permlink | closures-in-programming-what-are-they-and-how-do-they-work |
| voter | ankaoprex |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}razelenaupvoted (100.00%) @njms / closures-in-programming-what-are-they-and-how-do-they-work2017/11/17 00:10:09
razelenaupvoted (100.00%) @njms / closures-in-programming-what-are-they-and-how-do-they-work
2017/11/17 00:10:09
| author | njms |
| permlink | closures-in-programming-what-are-they-and-how-do-they-work |
| voter | razelena |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}on247upvoted (100.00%) @njms / closures-in-programming-what-are-they-and-how-do-they-work2017/11/17 00:03:36
on247upvoted (100.00%) @njms / closures-in-programming-what-are-they-and-how-do-they-work
2017/11/17 00:03:36
| author | njms |
| permlink | closures-in-programming-what-are-they-and-how-do-they-work |
| voter | on247 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}j0k3rgambitupvoted (100.00%) @njms / closures-in-programming-what-are-they-and-how-do-they-work2017/11/16 21:25:18
j0k3rgambitupvoted (100.00%) @njms / closures-in-programming-what-are-they-and-how-do-they-work
2017/11/16 21:25:18
| author | njms |
| permlink | closures-in-programming-what-are-they-and-how-do-they-work |
| voter | j0k3rgambit |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}njmspublished a new post: closures-in-programming-what-are-they-and-how-do-they-work2017/11/16 21:23:33
njmspublished a new post: closures-in-programming-what-are-they-and-how-do-they-work
2017/11/16 21:23:33
| author | njms |
| body |  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 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? |
| Transaction Info | Block #17283000/Trx 081642b26a081d40e5589d288ddacf4a67617ec6 |
View Raw JSON Data
{
"block": 17283000,
"op": [
"comment",
{
"author": "njms",
"body": "\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 / 5ragww2017/11/16 20:33:42
njmsupvoted (100.00%) @programming-bro / 5ragww
2017/11/16 20:33:42
| author | programming-bro |
| permlink | 5ragww |
| voter | njms |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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 properties2017/11/15 21:09:06
njmsupdated their account properties
2017/11/15 21:09:06
| 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 |
| Transaction Info | Block #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
2017/11/15 20:59:42
| 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 | |
| Transaction Info | Block #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
2017/11/15 01:07:03
| author | njms |
| permlink | introduce-yourself-njms-software-development-web-design-and-blockchain |
| voter | xtetrahedron |
| weight | 400 (4.00%) |
| Transaction Info | Block #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
}zootovupvoted (100.00%) @njms / introduce-yourself-njms-software-development-web-design-and-blockchain2017/11/15 00:49:48
zootovupvoted (100.00%) @njms / introduce-yourself-njms-software-development-web-design-and-blockchain
2017/11/15 00:49:48
| author | njms |
| permlink | introduce-yourself-njms-software-development-web-design-and-blockchain |
| voter | zootov |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}bortosinaupvoted (100.00%) @njms / introduce-yourself-njms-software-development-web-design-and-blockchain2017/11/15 00:49:45
bortosinaupvoted (100.00%) @njms / introduce-yourself-njms-software-development-web-design-and-blockchain
2017/11/15 00:49:45
| author | njms |
| permlink | introduce-yourself-njms-software-development-web-design-and-blockchain |
| voter | bortosina |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
2017/11/15 00:49:45
| author | njms |
| permlink | introduce-yourself-njms-software-development-web-design-and-blockchain |
| voter | lachunnick |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}annkryukupvoted (100.00%) @njms / introduce-yourself-njms-software-development-web-design-and-blockchain2017/11/15 00:49:42
annkryukupvoted (100.00%) @njms / introduce-yourself-njms-software-development-web-design-and-blockchain
2017/11/15 00:49:42
| author | njms |
| permlink | introduce-yourself-njms-software-development-web-design-and-blockchain |
| voter | annkryuk |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}matveevanupvoted (100.00%) @njms / introduce-yourself-njms-software-development-web-design-and-blockchain2017/11/15 00:49:42
matveevanupvoted (100.00%) @njms / introduce-yourself-njms-software-development-web-design-and-blockchain
2017/11/15 00:49:42
| author | njms |
| permlink | introduce-yourself-njms-software-development-web-design-and-blockchain |
| voter | matveevan |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}samakawaupvoted (100.00%) @njms / introduce-yourself-njms-software-development-web-design-and-blockchain2017/11/15 00:49:36
samakawaupvoted (100.00%) @njms / introduce-yourself-njms-software-development-web-design-and-blockchain
2017/11/15 00:49:36
| author | njms |
| permlink | introduce-yourself-njms-software-development-web-design-and-blockchain |
| voter | samakawa |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}odetovaupvoted (100.00%) @njms / introduce-yourself-njms-software-development-web-design-and-blockchain2017/11/15 00:49:36
odetovaupvoted (100.00%) @njms / introduce-yourself-njms-software-development-web-design-and-blockchain
2017/11/15 00:49:36
| author | njms |
| permlink | introduce-yourself-njms-software-development-web-design-and-blockchain |
| voter | odetova |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}liluliaupvoted (100.00%) @njms / introduce-yourself-njms-software-development-web-design-and-blockchain2017/11/15 00:49:36
liluliaupvoted (100.00%) @njms / introduce-yourself-njms-software-development-web-design-and-blockchain
2017/11/15 00:49:36
| author | njms |
| permlink | introduce-yourself-njms-software-development-web-design-and-blockchain |
| voter | lilulia |
| weight | 10000 (100.00%) |
| Transaction Info | Block #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
}Manabar
Voting Power100.00%
Downvote Power100.00%
Resource Credits100.00%
Reputation Progress12.04%
{
"voting_manabar": {
"current_mana": "8143659806",
"last_update_time": 1779078717
},
"downvote_manabar": {
"current_mana": 2035914951,
"last_update_time": 1779078717
},
"rc_account": {
"account": "njms",
"max_rc": "10164408779",
"max_rc_creation_adjustment": {
"amount": "2020748973",
"nai": "@@000000037",
"precision": 6
},
"rc_manabar": {
"current_mana": "10164408779",
"last_update_time": 1779078717
}
}
}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.
[]