VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS0.00%
Net Worth
152.741USD
HIVE
2.489HIVE
HBD
34.873HBD
Own HP
292.118HP
Detailed Balance
| HIVE | ||
| balance | 2.489HIVE | HIVE |
| market_balance | 0.000HIVE | HIVE |
| savings_balance | 0.000HIVE | HIVE |
| reward_hive_balance | 0.000HIVE | HIVE |
| HIVE POWER | ||
| Own HP | 292.118HP | HP |
| Delegated Out | 0.000HP | HP |
| Delegation In | 0.000HP | HP |
| Effective Power | 292.118HP | HP |
| Reward HP (pending) | 0.117HP | HP |
| HBD | ||
| hbd_balance | 34.873HBD | HBD |
| hbd_conversions | 0.000HBD | HBD |
| hbd_market_balance | 0.000HBD | HBD |
| savings_hbd_balance | 0.000HBD | HBD |
| reward_hbd_balance | 0.025HBD | HBD |
{
"balance": "2.489 HIVE",
"savings_balance": "0.000 HIVE",
"reward_hive_balance": "0.000 HIVE",
"vesting_shares": "474212.632032 VESTS",
"delegated_vesting_shares": "0.000000 VESTS",
"received_vesting_shares": "0.000000 VESTS",
"hbd_balance": "34.873 HBD",
"savings_hbd_balance": "0.000 HBD",
"reward_hbd_balance": "0.025 HBD"
}Account Info
| name | xinta |
| id | 138586 |
| rank | 0 |
| reputation | 0 |
| created | 2017-03-16T09:04:33 |
| recovery_account | steem |
| proxy | None |
| invited_by | null |
| post_count | 271 |
| comment_count | 0 |
| lifetime_vote_count | 0 |
| witnesses_voted_for | 0 |
| last_post | 2019-05-20T18:25:39 |
| last_root_post | 2019-05-19T21:54:00 |
| last_vote_time | 2019-10-15T19:01:54 |
| proxied_vsf_votes | 0, 0, 0, 0 |
| can_vote | 1 |
| voting_power | 9,604 |
| delayed_votes | None |
| governance_vote_expiration_ts | 1969-12-31T23:59:59 |
| balance | 2.489 HIVE |
| savings_balance | 0.000 HIVE |
| hbd_balance | 34.873 HBD |
| savings_hbd_balance | 0.000 HBD |
| vesting_shares | 474212.632032 VESTS |
| delegated_vesting_shares | 0.000000 VESTS |
| received_vesting_shares | 0.000000 VESTS |
| reward_vesting_balance | 233.074979 VESTS |
| vesting_balance | 0.000 HIVE |
| 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 | 2019-05-11T08:36:09 |
| last_account_update | 2019-05-11T08:36:09 |
| mined | No |
| hbd_seconds | 23,004,051,435 |
| hbd_last_interest_payment | 2019-05-11T08:14:48 |
| savings_hbd_last_interest_payment | 1970-01-01T00:00:00 |
{
"active": {
"account_auths": [],
"key_auths": [
[
"STM8cFvB8TvMvnXNfAxX3EZnZGM1M2iWVpRU67TA1sQb855DbiBfj",
1
]
],
"weight_threshold": 1
},
"balance": "2.489 HIVE",
"can_vote": true,
"comment_count": 0,
"created": "2017-03-16T09:04:33",
"curation_rewards": 599,
"delayed_votes": [],
"delegated_vesting_shares": "0.000000 VESTS",
"downvote_manabar": {
"current_mana": 118553158008,
"last_update_time": 1571166114
},
"governance_vote_expiration_ts": "1969-12-31T23:59:59",
"guest_bloggers": [],
"hbd_balance": "34.873 HBD",
"hbd_last_interest_payment": "2019-05-11T08:14:48",
"hbd_seconds": "23004051435",
"hbd_seconds_last_update": "2019-05-18T23:34:03",
"id": 138586,
"json_metadata": "{\"profile\":{\"profile_image\":\"https://cdn.steemitimages.com/DQmfYmMpAQ4fJrarpChXrWMZ8aNkCSVZAG8Zv8SZNyRPZX3/rosa.png\",\"name\":\"Xinta\",\"about\":\"Living a live one step a time | Software Developer | Writer | Whatever\",\"location\":\"Italy\"}}",
"last_account_recovery": "1970-01-01T00:00:00",
"last_account_update": "2019-05-11T08:36:09",
"last_owner_update": "2019-05-11T08:36:09",
"last_post": "2019-05-20T18:25:39",
"last_root_post": "2019-05-19T21:54:00",
"last_vote_time": "2019-10-15T19:01:54",
"lifetime_vote_count": 0,
"market_history": [],
"memo_key": "STM6vPjoyZ1hj7UTtFJSe7WYp9YpkNw9ZtM8vLZSs7i61ayh6CnkS",
"mined": false,
"name": "xinta",
"next_vesting_withdrawal": "1969-12-31T23:59:59",
"open_recurrent_transfers": 0,
"other_history": [],
"owner": {
"account_auths": [],
"key_auths": [
[
"STM5k9rRVsDr4UGdP7wBvK2o65MDGvLgFsCsDmLP1zrZH8gruhM6Y",
1
]
],
"weight_threshold": 1
},
"pending_claimed_accounts": 0,
"pending_transfers": 0,
"post_bandwidth": 10000,
"post_count": 271,
"post_history": [],
"post_voting_power": "474212.632032 VESTS",
"posting": {
"account_auths": [],
"key_auths": [
[
"STM76KqtUaSRWjuivE9SFSN2TSeoXJ1q6VEiTnA4bU2i4jwemp6H1",
1
]
],
"weight_threshold": 1
},
"posting_json_metadata": "{\"profile\":{\"profile_image\":\"https://cdn.steemitimages.com/DQmfYmMpAQ4fJrarpChXrWMZ8aNkCSVZAG8Zv8SZNyRPZX3/rosa.png\",\"name\":\"Xinta\",\"about\":\"Living a live one step a time | Software Developer | Writer | Whatever\",\"location\":\"Italy\"}}",
"posting_rewards": 336412,
"previous_owner_update": "1970-01-01T00:00:00",
"proxied_vsf_votes": [
0,
0,
0,
0
],
"proxy": "",
"received_vesting_shares": "0.000000 VESTS",
"recovery_account": "steem",
"reputation": 0,
"reset_account": "null",
"reward_hbd_balance": "0.025 HBD",
"reward_hive_balance": "0.000 HIVE",
"reward_vesting_balance": "233.074979 VESTS",
"reward_vesting_hive": "0.117 HIVE",
"savings_balance": "0.000 HIVE",
"savings_hbd_balance": "0.000 HBD",
"savings_hbd_last_interest_payment": "1970-01-01T00:00:00",
"savings_hbd_seconds": "0",
"savings_hbd_seconds_last_update": "1970-01-01T00:00:00",
"savings_withdraw_requests": 0,
"tags_usage": [],
"to_withdraw": 0,
"transfer_history": [],
"vesting_balance": "0.000 HIVE",
"vesting_shares": "474212.632032 VESTS",
"vesting_withdraw_rate": "0.000000 VESTS",
"vote_history": [],
"voting_manabar": {
"current_mana": 455478993728,
"last_update_time": 1571166114
},
"voting_power": 9604,
"withdraw_routes": 0,
"withdrawn": 0,
"witness_votes": [],
"witnesses_voted_for": 0,
"rank": 0
}Withdraw Routes
| Incoming | Outgoing |
|---|---|
Empty | Empty |
{
"incoming": [],
"outgoing": []
}From Date
To Date
therealwolfsent 0.002 HIVE to @xinta- "Hey there xinta. I hope you don’t mind this short message, but I wanted to quickly share this update with you on my Hive-related work. For the past 7 years, I've been deeply committed to Hive, working..."2024/11/14 07:48:21
therealwolfsent 0.002 HIVE to @xinta- "Hey there xinta. I hope you don’t mind this short message, but I wanted to quickly share this update with you on my Hive-related work. For the past 7 years, I've been deeply committed to Hive, working..."
2024/11/14 07:48:21
| amount | 0.002 HIVE |
| from | therealwolf |
| memo | Hey there xinta. I hope you don’t mind this short message, but I wanted to quickly share this update with you on my Hive-related work. For the past 7 years, I've been deeply committed to Hive, working on projects like hive.io, vessel, dhive & more to strengthen our community, while providing reliable witness infrastructure to secure our blockchain. Recently, I've released an upgraded witness toolkit (peakd.com/@therealwolf/major-hive-witness-essentials-upgrade-v2) and celebrated 7+ years on Hive (peakd.com/@therealwolf/year-8). If you'd like to support my work, I'd be honored to have your witness vote. Thank you! PS: You can vote for me here: peakd.com/witnesses |
| to | xinta |
| Transaction Info | Block #90672483/Trx ddb30fb91df4c335188cb8fa52826399f42e31cb |
View Raw JSON Data
{
"block": 90672483,
"op": [
"transfer",
{
"amount": "0.002 HIVE",
"from": "therealwolf",
"memo": "Hey there xinta. I hope you don’t mind this short message, but I wanted to quickly share this update with you on my Hive-related work. For the past 7 years, I've been deeply committed to Hive, working on projects like hive.io, vessel, dhive & more to strengthen our community, while providing reliable witness infrastructure to secure our blockchain. Recently, I've released an upgraded witness toolkit (peakd.com/@therealwolf/major-hive-witness-essentials-upgrade-v2) and celebrated 7+ years on Hive (peakd.com/@therealwolf/year-8). If you'd like to support my work, I'd be honored to have your witness vote. Thank you! PS: You can vote for me here: peakd.com/witnesses",
"to": "xinta"
}
],
"op_in_trx": 8,
"timestamp": "2024-11-14T07:48:21",
"trx_id": "ddb30fb91df4c335188cb8fa52826399f42e31cb",
"trx_in_block": 13,
"virtual_op": false
}2023/11/30 21:29:15
2023/11/30 21:29:15
| amount | 0.002 HIVE |
| from | howo |
| memo | Hey @xinta I am launching a new solo witness and am looking for support. If you are unfamiliar with what I do, I wrote a post announcing my witness here: https://peakd.com/witness/@howo/annoucing-my-solo-witness. The tl;dr is that I've been on Hive for 6 years and for the past 4 I've been working as a core developer meaning I'm working directly on the blockchain code to add features. You might have interacted with some of them already like RC delegations, recurrent transfers or more recently I've been working on updating communities (new update soon !). If you want to support me, could you vote for me as a witness ? You can do it on this page https://peakd.com/me/witnesses. Thank you ! |
| to | xinta |
| Transaction Info | Block #80625158/Trx 4d8e168f5162aa4a124a1407c0700bd351484965 |
View Raw JSON Data
{
"block": 80625158,
"op": [
"transfer",
{
"amount": "0.002 HIVE",
"from": "howo",
"memo": "Hey @xinta I am launching a new solo witness and am looking for support. If you are unfamiliar with what I do, I wrote a post announcing my witness here: https://peakd.com/witness/@howo/annoucing-my-solo-witness. The tl;dr is that I've been on Hive for 6 years and for the past 4 I've been working as a core developer meaning I'm working directly on the blockchain code to add features. You might have interacted with some of them already like RC delegations, recurrent transfers or more recently I've been working on updating communities (new update soon !). If you want to support me, could you vote for me as a witness ? You can do it on this page https://peakd.com/me/witnesses. Thank you !",
"to": "xinta"
}
],
"op_in_trx": 0,
"timestamp": "2023-11-30T21:29:15",
"trx_id": "4d8e168f5162aa4a124a1407c0700bd351484965",
"trx_in_block": 26,
"virtual_op": false
}2023/04/22 16:12:24
2023/04/22 16:12:24
| amount | 0.001 HBD |
| from | howo |
| memo | Hi ! I've been a core developer on hive for three years now, working on features that are now powering the chain and improving user experience like RC delegations or recurrent transfers and currently wrapping up some features that will go live in hard fork 27. I'm also hosting the monthly core dev meeting. I would like to carry on working for hive for a fourth year. I am looking for support on my renewed proposal as the current one will expire soon. It's the same deal as the last one. Could you review it and maybe vote on it if it's worth your support ? https://peakd.com/me/proposals/261 Thanks a lot ! |
| to | xinta |
| Transaction Info | Block #74232959/Trx 28f027c37d0dc37f493975df5484a804caea435d |
View Raw JSON Data
{
"block": 74232959,
"op": [
"transfer",
{
"amount": "0.001 HBD",
"from": "howo",
"memo": "Hi ! I've been a core developer on hive for three years now, working on features that are now powering the chain and improving user experience like RC delegations or recurrent transfers and currently wrapping up some features that will go live in hard fork 27. I'm also hosting the monthly core dev meeting. I would like to carry on working for hive for a fourth year. I am looking for support on my renewed proposal as the current one will expire soon. It's the same deal as the last one. Could you review it and maybe vote on it if it's worth your support ? https://peakd.com/me/proposals/261 Thanks a lot !",
"to": "xinta"
}
],
"op_in_trx": 0,
"timestamp": "2023-04-22T16:12:24",
"trx_id": "28f027c37d0dc37f493975df5484a804caea435d",
"trx_in_block": 30,
"virtual_op": false
}2023/01/15 12:01:54
2023/01/15 12:01:54
| amount | 0.001 HIVE |
| from | earn.hive |
| memo | Did you know that you can get rewarded for your witness vote? Cast your witness vote on @earn.hive and start to receive HIVE tokens everyday. |
| to | xinta |
| Transaction Info | Block #71437840/Trx eef742da836d36b14025595b1645dae1849416e0 |
View Raw JSON Data
{
"block": 71437840,
"op": [
"transfer",
{
"amount": "0.001 HIVE",
"from": "earn.hive",
"memo": "Did you know that you can get rewarded for your witness vote? Cast your witness vote on @earn.hive and start to receive HIVE tokens everyday.",
"to": "xinta"
}
],
"op_in_trx": 0,
"timestamp": "2023-01-15T12:01:54",
"trx_id": "eef742da836d36b14025595b1645dae1849416e0",
"trx_in_block": 124,
"virtual_op": false
}2022/10/17 11:35:54
2022/10/17 11:35:54
| account | xinta |
| Transaction Info | Block #68848337/Virtual Operation 4294967295:5 |
View Raw JSON Data
{
"block": 68848337,
"op": [
"expired_account_notification",
{
"account": "xinta"
}
],
"op_in_trx": 5,
"timestamp": "2022-10-17T11:35:54",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}2022/04/09 02:01:42
2022/04/09 02:01:42
| amount | 0.001 HIVE |
| from | howo |
| memo | Hi, I have been working for the past two years as a core developer on hive. I worked on a lot of things last year some which went live in hard fork 25 already or will go live soon with hard fork 26. To name a few, RC delegations, recurrent transfers or communities V2. I would love to continue working on hive for a third year on the next hard fork, communities and everything else. I am looking for support on my renewed proposal as the current one will expire soon. Could you review it and maybe vote on it if it's worth your support ? https://peakd.com/me/proposals/214 Thanks a lot ! |
| to | xinta |
| Transaction Info | Block #63349007/Trx 4ffc41785a2e7f58cf6a0c455497aec228543dd3 |
View Raw JSON Data
{
"block": 63349007,
"op": [
"transfer",
{
"amount": "0.001 HIVE",
"from": "howo",
"memo": "Hi, I have been working for the past two years as a core developer on hive. I worked on a lot of things last year some which went live in hard fork 25 already or will go live soon with hard fork 26. To name a few, RC delegations, recurrent transfers or communities V2. I would love to continue working on hive for a third year on the next hard fork, communities and everything else. I am looking for support on my renewed proposal as the current one will expire soon. Could you review it and maybe vote on it if it's worth your support ? https://peakd.com/me/proposals/214 Thanks a lot !",
"to": "xinta"
}
],
"op_in_trx": 0,
"timestamp": "2022-04-09T02:01:42",
"trx_id": "4ffc41785a2e7f58cf6a0c455497aec228543dd3",
"trx_in_block": 36,
"virtual_op": false
}2020/03/16 09:38:12
2020/03/16 09:38:12
| author | steemitboard |
| body | Congratulations @xinta! You received a personal award! <table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@xinta/birthday3.png</td><td>Happy Steem Birthday! - You are on the Steem blockchain for 3 years!</td></tr></table> <sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@xinta) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=xinta)_</sub> ###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes! |
| json metadata | {"image":["https://steemitboard.com/img/notify.png"]} |
| parent author | xinta |
| parent permlink | verso-le-elezioni-europee-2019 |
| permlink | steemitboard-notify-xinta-20200316t093808000z |
| title | |
| Transaction Info | Block #41698516/Trx 55bc8bb0d489c652c390639b2a3386a897e62f91 |
View Raw JSON Data
{
"block": 41698516,
"op": [
"comment",
{
"author": "steemitboard",
"body": "Congratulations @xinta! You received a personal award!\n\n<table><tr><td>https://steemitimages.com/70x70/http://steemitboard.com/@xinta/birthday3.png</td><td>Happy Steem Birthday! - You are on the Steem blockchain for 3 years!</td></tr></table>\n\n<sub>_You can view [your badges on your Steem Board](https://steemitboard.com/@xinta) and compare to others on the [Steem Ranking](https://steemitboard.com/ranking/index.php?name=xinta)_</sub>\n\n\n###### [Vote for @Steemitboard as a witness](https://v2.steemconnect.com/sign/account-witness-vote?witness=steemitboard&approve=1) to get one more award and increased upvotes!",
"json_metadata": "{\"image\":[\"https://steemitboard.com/img/notify.png\"]}",
"parent_author": "xinta",
"parent_permlink": "verso-le-elezioni-europee-2019",
"permlink": "steemitboard-notify-xinta-20200316t093808000z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2020-03-16T09:38:12",
"trx_id": "55bc8bb0d489c652c390639b2a3386a897e62f91",
"trx_in_block": 4,
"virtual_op": false
}xintareceived 0.005 HP curation reward for @luigi-tecnologo / recensione-linux-ubuntu-1910-microfono-performance-e-zfs-3vtscz0p2019/10/22 18:15:48
xintareceived 0.005 HP curation reward for @luigi-tecnologo / recensione-linux-ubuntu-1910-microfono-performance-e-zfs-3vtscz0p
2019/10/22 18:15:48
| author | luigi-tecnologo |
| curator | xinta |
| payout must be claimed | true |
| permlink | recensione-linux-ubuntu-1910-microfono-performance-e-zfs-3vtscz0p |
| reward | 7.902690 VESTS |
| Transaction Info | Block #37513240/Virtual Operation 4294967295:11 |
View Raw JSON Data
{
"block": 37513240,
"op": [
"curation_reward",
{
"author": "luigi-tecnologo",
"curator": "xinta",
"payout_must_be_claimed": true,
"permlink": "recensione-linux-ubuntu-1910-microfono-performance-e-zfs-3vtscz0p",
"reward": "7.902690 VESTS"
}
],
"op_in_trx": 11,
"timestamp": "2019-10-22T18:15:48",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}xintareceived 0.005 HP curation reward for @spi-postit / postit-n-5432019/10/22 01:10:57
xintareceived 0.005 HP curation reward for @spi-postit / postit-n-543
2019/10/22 01:10:57
| author | spi-postit |
| curator | xinta |
| payout must be claimed | true |
| permlink | postit-n-543 |
| reward | 7.903027 VESTS |
| Transaction Info | Block #37492780/Virtual Operation 4294967295:101 |
View Raw JSON Data
{
"block": 37492780,
"op": [
"curation_reward",
{
"author": "spi-postit",
"curator": "xinta",
"payout_must_be_claimed": true,
"permlink": "postit-n-543",
"reward": "7.903027 VESTS"
}
],
"op_in_trx": 101,
"timestamp": "2019-10-22T01:10:57",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}xintaeffective vote applied for @spi-postit / postit-n-5432019/10/15 19:01:57
xintaeffective vote applied for @spi-postit / postit-n-543
2019/10/15 19:01:57
| author | spi-postit |
| pending payout | 10.415 HBD |
| permlink | postit-n-543 |
| rshares | 9245489668 |
| total vote weight | 5073004 |
| voter | xinta |
| weight | 1015 (10.15%) |
| Transaction Info | Block #37312955/Trx 94ef363935c72cd61265fd0975adbf02c2b80b2c |
View Raw JSON Data
{
"block": 37312955,
"op": [
"effective_comment_vote",
{
"author": "spi-postit",
"pending_payout": "10.415 HBD",
"permlink": "postit-n-543",
"rshares": 9245489668,
"total_vote_weight": 5073004,
"voter": "xinta",
"weight": 1015
}
],
"op_in_trx": 1,
"timestamp": "2019-10-15T19:01:57",
"trx_id": "94ef363935c72cd61265fd0975adbf02c2b80b2c",
"trx_in_block": 27,
"virtual_op": true
}xintaupvoted (100.00%) @spi-postit / postit-n-5432019/10/15 19:01:57
xintaupvoted (100.00%) @spi-postit / postit-n-543
2019/10/15 19:01:57
| author | spi-postit |
| permlink | postit-n-543 |
| voter | xinta |
| weight | 10000 (100.00%) |
| Transaction Info | Block #37312955/Trx 94ef363935c72cd61265fd0975adbf02c2b80b2c |
View Raw JSON Data
{
"block": 37312955,
"op": [
"vote",
{
"author": "spi-postit",
"permlink": "postit-n-543",
"voter": "xinta",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-10-15T19:01:57",
"trx_id": "94ef363935c72cd61265fd0975adbf02c2b80b2c",
"trx_in_block": 27,
"virtual_op": false
}xintaeffective vote applied for @luigi-tecnologo / recensione-linux-ubuntu-1910-microfono-performance-e-zfs-3vtscz0p2019/10/15 19:01:15
xintaeffective vote applied for @luigi-tecnologo / recensione-linux-ubuntu-1910-microfono-performance-e-zfs-3vtscz0p
2019/10/15 19:01:15
| author | luigi-tecnologo |
| pending payout | 0.030 HBD |
| permlink | recensione-linux-ubuntu-1910-microfono-performance-e-zfs-3vtscz0p |
| rshares | 9434252641 |
| total vote weight | 82525 |
| voter | xinta |
| weight | 4534 (45.34%) |
| Transaction Info | Block #37312941/Trx 123281096ff0e2128e8466b467a3dcc443414c8d |
View Raw JSON Data
{
"block": 37312941,
"op": [
"effective_comment_vote",
{
"author": "luigi-tecnologo",
"pending_payout": "0.030 HBD",
"permlink": "recensione-linux-ubuntu-1910-microfono-performance-e-zfs-3vtscz0p",
"rshares": 9434252641,
"total_vote_weight": 82525,
"voter": "xinta",
"weight": 4534
}
],
"op_in_trx": 1,
"timestamp": "2019-10-15T19:01:15",
"trx_id": "123281096ff0e2128e8466b467a3dcc443414c8d",
"trx_in_block": 20,
"virtual_op": true
}2019/10/15 19:01:15
2019/10/15 19:01:15
| author | luigi-tecnologo |
| permlink | recensione-linux-ubuntu-1910-microfono-performance-e-zfs-3vtscz0p |
| voter | xinta |
| weight | 10000 (100.00%) |
| Transaction Info | Block #37312941/Trx 123281096ff0e2128e8466b467a3dcc443414c8d |
View Raw JSON Data
{
"block": 37312941,
"op": [
"vote",
{
"author": "luigi-tecnologo",
"permlink": "recensione-linux-ubuntu-1910-microfono-performance-e-zfs-3vtscz0p",
"voter": "xinta",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-10-15T19:01:15",
"trx_id": "123281096ff0e2128e8466b467a3dcc443414c8d",
"trx_in_block": 20,
"virtual_op": false
}xintafollowed @contrabourdon2019/08/31 20:53:21
xintafollowed @contrabourdon
2019/08/31 20:53:21
| id | follow |
| json | ["follow",{"follower":"xinta","following":"contrabourdon","what":["blog"]}] |
| required auths | [] |
| required posting auths | ["xinta"] |
| Transaction Info | Block #36038529/Trx 8cfd13cd2b8afa8c9dbebfe7af31cf6d558ace32 |
View Raw JSON Data
{
"block": 36038529,
"op": [
"custom_json",
{
"id": "follow",
"json": "[\"follow\",{\"follower\":\"xinta\",\"following\":\"contrabourdon\",\"what\":[\"blog\"]}]",
"required_auths": [],
"required_posting_auths": [
"xinta"
]
}
],
"op_in_trx": 0,
"timestamp": "2019-08-31T20:53:21",
"trx_id": "8cfd13cd2b8afa8c9dbebfe7af31cf6d558ace32",
"trx_in_block": 18,
"virtual_op": false
}2019/08/31 20:52:15
2019/08/31 20:52:15
| author | contrabourdon |
| permlink | re-xinta-re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190522t001604777z |
| voter | xinta |
| weight | 10000 (100.00%) |
| Transaction Info | Block #36038507/Trx 6a0229854c1f139c42b9b067b74e7e8c06805963 |
View Raw JSON Data
{
"block": 36038507,
"op": [
"vote",
{
"author": "contrabourdon",
"permlink": "re-xinta-re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190522t001604777z",
"voter": "xinta",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-08-31T20:52:15",
"trx_id": "6a0229854c1f139c42b9b067b74e7e8c06805963",
"trx_in_block": 28,
"virtual_op": false
}2019/05/27 18:25:39
2019/05/27 18:25:39
| author | xinta |
| permlink | re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t182539272z |
| Transaction Info | Block #33281410/Virtual Operation 4294967295:2 |
View Raw JSON Data
{
"block": 33281410,
"op": [
"comment_payout_update",
{
"author": "xinta",
"permlink": "re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t182539272z"
}
],
"op_in_trx": 2,
"timestamp": "2019-05-27T18:25:39",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}xintareceived 0.012 HP curation reward for @rt-international / whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt2019/05/27 18:08:54
xintareceived 0.012 HP curation reward for @rt-international / whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt
2019/05/27 18:08:54
| author | rt-international |
| curator | xinta |
| payout must be claimed | true |
| permlink | whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt |
| reward | 19.931980 VESTS |
| Transaction Info | Block #33281075/Virtual Operation 4294967295:10 |
View Raw JSON Data
{
"block": 33281075,
"op": [
"curation_reward",
{
"author": "rt-international",
"curator": "xinta",
"payout_must_be_claimed": true,
"permlink": "whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt",
"reward": "19.931980 VESTS"
}
],
"op_in_trx": 10,
"timestamp": "2019-05-27T18:08:54",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}xintareceived 0.020 HP curation reward for @drewley / 3bcvbr-consolation-no-1-by-liszt2019/05/27 16:43:06
xintareceived 0.020 HP curation reward for @drewley / 3bcvbr-consolation-no-1-by-liszt
2019/05/27 16:43:06
| author | drewley |
| curator | xinta |
| payout must be claimed | true |
| permlink | 3bcvbr-consolation-no-1-by-liszt |
| reward | 31.891279 VESTS |
| Transaction Info | Block #33279362/Virtual Operation 4294967295:7 |
View Raw JSON Data
{
"block": 33279362,
"op": [
"curation_reward",
{
"author": "drewley",
"curator": "xinta",
"payout_must_be_claimed": true,
"permlink": "3bcvbr-consolation-no-1-by-liszt",
"reward": "31.891279 VESTS"
}
],
"op_in_trx": 7,
"timestamp": "2019-05-27T16:43:06",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}xintareceived 0.002 HP curation reward for @rt-international / democratorship-swedes-lambast-tv-channel-for-refusing-to-air-anti-eu-swexit-ad2019/05/27 16:33:18
xintareceived 0.002 HP curation reward for @rt-international / democratorship-swedes-lambast-tv-channel-for-refusing-to-air-anti-eu-swexit-ad
2019/05/27 16:33:18
| author | rt-international |
| curator | xinta |
| payout must be claimed | true |
| permlink | democratorship-swedes-lambast-tv-channel-for-refusing-to-air-anti-eu-swexit-ad |
| reward | 3.986411 VESTS |
| Transaction Info | Block #33279166/Virtual Operation 4294967295:13 |
View Raw JSON Data
{
"block": 33279166,
"op": [
"curation_reward",
{
"author": "rt-international",
"curator": "xinta",
"payout_must_be_claimed": true,
"permlink": "democratorship-swedes-lambast-tv-channel-for-refusing-to-air-anti-eu-swexit-ad",
"reward": "3.986411 VESTS"
}
],
"op_in_trx": 13,
"timestamp": "2019-05-27T16:33:18",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}xintaupdated payout for verso-le-elezioni-europee-20192019/05/26 21:54:00
xintaupdated payout for verso-le-elezioni-europee-2019
2019/05/26 21:54:00
| author | xinta |
| permlink | verso-le-elezioni-europee-2019 |
| Transaction Info | Block #33256797/Virtual Operation 4294967295:18 |
View Raw JSON Data
{
"block": 33256797,
"op": [
"comment_payout_update",
{
"author": "xinta",
"permlink": "verso-le-elezioni-europee-2019"
}
],
"op_in_trx": 18,
"timestamp": "2019-05-26T21:54:00",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}xintareceived 0.016 HP curation reward for @rt-international / iceland-could-be-punished-for-palestinian-flag-display-at-eurovision-say-israeli-hosts2019/05/26 19:50:39
xintareceived 0.016 HP curation reward for @rt-international / iceland-could-be-punished-for-palestinian-flag-display-at-eurovision-say-israeli-hosts
2019/05/26 19:50:39
| author | rt-international |
| curator | xinta |
| payout must be claimed | true |
| permlink | iceland-could-be-punished-for-palestinian-flag-display-at-eurovision-say-israeli-hosts |
| reward | 25.912973 VESTS |
| Transaction Info | Block #33254336/Virtual Operation 4294967295:11 |
View Raw JSON Data
{
"block": 33254336,
"op": [
"curation_reward",
{
"author": "rt-international",
"curator": "xinta",
"payout_must_be_claimed": true,
"permlink": "iceland-could-be-punished-for-palestinian-flag-display-at-eurovision-say-israeli-hosts",
"reward": "25.912973 VESTS"
}
],
"op_in_trx": 11,
"timestamp": "2019-05-26T19:50:39",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}xintareceived 0.001 HP curation reward for @daio / ntopaz--daio--1207078910--ntopaz-art-ocd-resteem-artzone-photography--2019-05-19-19-58-22--artwork--none2019/05/26 16:58:21
xintareceived 0.001 HP curation reward for @daio / ntopaz--daio--1207078910--ntopaz-art-ocd-resteem-artzone-photography--2019-05-19-19-58-22--artwork--none
2019/05/26 16:58:21
| author | daio |
| curator | xinta |
| payout must be claimed | true |
| permlink | ntopaz--daio--1207078910--ntopaz-art-ocd-resteem-artzone-photography--2019-05-19-19-58-22--artwork--none |
| reward | 1.993319 VESTS |
| Transaction Info | Block #33250891/Virtual Operation 4294967295:45 |
View Raw JSON Data
{
"block": 33250891,
"op": [
"curation_reward",
{
"author": "daio",
"curator": "xinta",
"payout_must_be_claimed": true,
"permlink": "ntopaz--daio--1207078910--ntopaz-art-ocd-resteem-artzone-photography--2019-05-19-19-58-22--artwork--none",
"reward": "1.993319 VESTS"
}
],
"op_in_trx": 45,
"timestamp": "2019-05-26T16:58:21",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}xintaupdated payout for learning-ada-7-generics-and-static-overloading2019/05/26 14:27:00
xintaupdated payout for learning-ada-7-generics-and-static-overloading
2019/05/26 14:27:00
| author | xinta |
| permlink | learning-ada-7-generics-and-static-overloading |
| Transaction Info | Block #33247868/Virtual Operation 4294967295:9 |
View Raw JSON Data
{
"block": 33247868,
"op": [
"comment_payout_update",
{
"author": "xinta",
"permlink": "learning-ada-7-generics-and-static-overloading"
}
],
"op_in_trx": 9,
"timestamp": "2019-05-26T14:27:00",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}xintareceived 0.066 HBD reward share for learning-ada-7-generics-and-static-overloading2019/05/26 14:27:00
xintareceived 0.066 HBD reward share for learning-ada-7-generics-and-static-overloading
2019/05/26 14:27:00
| author | xinta |
| author rewards | 132 |
| beneficiary payout value | 0.000 HBD |
| curator payout value | 0.015 HBD |
| payout | 0.066 HBD |
| permlink | learning-ada-7-generics-and-static-overloading |
| total payout value | 0.050 HBD |
| Transaction Info | Block #33247868/Virtual Operation 4294967295:8 |
View Raw JSON Data
{
"block": 33247868,
"op": [
"comment_reward",
{
"author": "xinta",
"author_rewards": 132,
"beneficiary_payout_value": "0.000 HBD",
"curator_payout_value": "0.015 HBD",
"payout": "0.066 HBD",
"permlink": "learning-ada-7-generics-and-static-overloading",
"total_payout_value": "0.050 HBD"
}
],
"op_in_trx": 8,
"timestamp": "2019-05-26T14:27:00",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}xintareceived 0.025 HBD, 0.081 HP author reward for @xinta / learning-ada-7-generics-and-static-overloading2019/05/26 14:27:00
xintareceived 0.025 HBD, 0.081 HP author reward for @xinta / learning-ada-7-generics-and-static-overloading
2019/05/26 14:27:00
| author | xinta |
| curators vesting payout | 79.733267 VESTS |
| hbd payout | 0.025 HBD |
| hive payout | 0.000 HIVE |
| payout must be claimed | true |
| permlink | learning-ada-7-generics-and-static-overloading |
| vesting payout | 131.559891 VESTS |
| Transaction Info | Block #33247868/Virtual Operation 4294967295:7 |
View Raw JSON Data
{
"block": 33247868,
"op": [
"author_reward",
{
"author": "xinta",
"curators_vesting_payout": "79.733267 VESTS",
"hbd_payout": "0.025 HBD",
"hive_payout": "0.000 HIVE",
"payout_must_be_claimed": true,
"permlink": "learning-ada-7-generics-and-static-overloading",
"vesting_payout": "131.559891 VESTS"
}
],
"op_in_trx": 7,
"timestamp": "2019-05-26T14:27:00",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}xintareceived 0.001 HP curation reward for @thiiird / generative-snare-patterns-in-pure-data-exuofqug2019/05/25 22:16:09
xintareceived 0.001 HP curation reward for @thiiird / generative-snare-patterns-in-pure-data-exuofqug
2019/05/25 22:16:09
| author | thiiird |
| curator | xinta |
| payout must be claimed | true |
| permlink | generative-snare-patterns-in-pure-data-exuofqug |
| reward | 1.993409 VESTS |
| Transaction Info | Block #33228468/Virtual Operation 4294967295:17 |
View Raw JSON Data
{
"block": 33228468,
"op": [
"curation_reward",
{
"author": "thiiird",
"curator": "xinta",
"payout_must_be_claimed": true,
"permlink": "generative-snare-patterns-in-pure-data-exuofqug",
"reward": "1.993409 VESTS"
}
],
"op_in_trx": 17,
"timestamp": "2019-05-25T22:16:09",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}2019/05/22 00:16:09
2019/05/22 00:16:09
| author | contrabourdon |
| body | @xinta Here's my rendition of this piece :) https://www.youtube.com/watch?v=l8ZUaPZ-DzU |
| json metadata | {"tags":["music"],"users":["xinta"],"image":["https://img.youtube.com/vi/l8ZUaPZ-DzU/0.jpg"],"links":["https://www.youtube.com/watch?v=l8ZUaPZ-DzU"],"app":"steemit/0.1"} |
| parent author | xinta |
| parent permlink | re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t182539272z |
| permlink | re-xinta-re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190522t001604777z |
| title | |
| Transaction Info | Block #33115753/Trx 239a82f6e473349a7dc696cb3a0c6b6abeb27839 |
View Raw JSON Data
{
"block": 33115753,
"op": [
"comment",
{
"author": "contrabourdon",
"body": "@xinta Here's my rendition of this piece :) https://www.youtube.com/watch?v=l8ZUaPZ-DzU",
"json_metadata": "{\"tags\":[\"music\"],\"users\":[\"xinta\"],\"image\":[\"https://img.youtube.com/vi/l8ZUaPZ-DzU/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=l8ZUaPZ-DzU\"],\"app\":\"steemit/0.1\"}",
"parent_author": "xinta",
"parent_permlink": "re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t182539272z",
"permlink": "re-xinta-re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190522t001604777z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2019-05-22T00:16:09",
"trx_id": "239a82f6e473349a7dc696cb3a0c6b6abeb27839",
"trx_in_block": 8,
"virtual_op": false
}xintaeffective vote applied for @daio / ntopaz--daio--1207078910--ntopaz-art-ocd-resteem-artzone-photography--2019-05-19-19-58-22--artwork--none2019/05/20 18:42:30
xintaeffective vote applied for @daio / ntopaz--daio--1207078910--ntopaz-art-ocd-resteem-artzone-photography--2019-05-19-19-58-22--artwork--none
2019/05/20 18:42:30
| author | daio |
| pending payout | 7.212 HBD |
| permlink | ntopaz--daio--1207078910--ntopaz-art-ocd-resteem-artzone-photography--2019-05-19-19-58-22--artwork--none |
| rshares | 8908007002 |
| total vote weight | 3753165 |
| voter | xinta |
| weight | 1062 (10.62%) |
| Transaction Info | Block #33080302/Trx d707e361262111c1ca00977aa3e730fa84883ba8 |
View Raw JSON Data
{
"block": 33080302,
"op": [
"effective_comment_vote",
{
"author": "daio",
"pending_payout": "7.212 HBD",
"permlink": "ntopaz--daio--1207078910--ntopaz-art-ocd-resteem-artzone-photography--2019-05-19-19-58-22--artwork--none",
"rshares": 8908007002,
"total_vote_weight": 3753165,
"voter": "xinta",
"weight": 1062
}
],
"op_in_trx": 1,
"timestamp": "2019-05-20T18:42:30",
"trx_id": "d707e361262111c1ca00977aa3e730fa84883ba8",
"trx_in_block": 37,
"virtual_op": true
}2019/05/20 18:42:30
2019/05/20 18:42:30
| author | daio |
| permlink | ntopaz--daio--1207078910--ntopaz-art-ocd-resteem-artzone-photography--2019-05-19-19-58-22--artwork--none |
| voter | xinta |
| weight | 10000 (100.00%) |
| Transaction Info | Block #33080302/Trx d707e361262111c1ca00977aa3e730fa84883ba8 |
View Raw JSON Data
{
"block": 33080302,
"op": [
"vote",
{
"author": "daio",
"permlink": "ntopaz--daio--1207078910--ntopaz-art-ocd-resteem-artzone-photography--2019-05-19-19-58-22--artwork--none",
"voter": "xinta",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-20T18:42:30",
"trx_id": "d707e361262111c1ca00977aa3e730fa84883ba8",
"trx_in_block": 37,
"virtual_op": false
}2019/05/20 18:26:12
2019/05/20 18:26:12
| author | xinta |
| body | @@ -1,8 +1,5 @@ -An o +O rgan @@ -3,18 +3,16 @@ gan and -a piano ar |
| json metadata | {"tags":["music"],"image":["https://img.youtube.com/vi/ho9rZjlsyYY/0.jpg"],"links":["https://www.youtube.com/watch?v=ho9rZjlsyYY"],"app":"steemit/0.1"} |
| parent author | adenijiadeshina |
| parent permlink | re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t173153745z |
| permlink | re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t182539272z |
| title | |
| Transaction Info | Block #33079976/Trx 7afb8d0ad2b26597e093005f9f83973bc8227805 |
View Raw JSON Data
{
"block": 33079976,
"op": [
"comment",
{
"author": "xinta",
"body": "@@ -1,8 +1,5 @@\n-An o\n+O\n rgan\n@@ -3,18 +3,16 @@\n gan and \n-a \n piano ar\n",
"json_metadata": "{\"tags\":[\"music\"],\"image\":[\"https://img.youtube.com/vi/ho9rZjlsyYY/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=ho9rZjlsyYY\"],\"app\":\"steemit/0.1\"}",
"parent_author": "adenijiadeshina",
"parent_permlink": "re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t173153745z",
"permlink": "re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t182539272z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2019-05-20T18:26:12",
"trx_id": "7afb8d0ad2b26597e093005f9f83973bc8227805",
"trx_in_block": 24,
"virtual_op": false
}2019/05/20 18:25:42
2019/05/20 18:25:42
| author | xinta |
| body | An organ and a piano are very different. In case you haven't ever heard a (pipe) organ, try listening to this famous piece: https://www.youtube.com/watch?v=ho9rZjlsyYY |
| json metadata | {"tags":["music"],"image":["https://img.youtube.com/vi/ho9rZjlsyYY/0.jpg"],"links":["https://www.youtube.com/watch?v=ho9rZjlsyYY"],"app":"steemit/0.1"} |
| parent author | adenijiadeshina |
| parent permlink | re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t173153745z |
| permlink | re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t182539272z |
| title | |
| Transaction Info | Block #33079966/Trx b3fece40a275b4e5ff81f89b6cca3cc1b7a67a49 |
View Raw JSON Data
{
"block": 33079966,
"op": [
"comment",
{
"author": "xinta",
"body": "An organ and a piano are very different. In case you haven't ever heard a (pipe) organ, try listening to this famous piece: https://www.youtube.com/watch?v=ho9rZjlsyYY",
"json_metadata": "{\"tags\":[\"music\"],\"image\":[\"https://img.youtube.com/vi/ho9rZjlsyYY/0.jpg\"],\"links\":[\"https://www.youtube.com/watch?v=ho9rZjlsyYY\"],\"app\":\"steemit/0.1\"}",
"parent_author": "adenijiadeshina",
"parent_permlink": "re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t173153745z",
"permlink": "re-adenijiadeshina-re-drewley-3bcvbr-consolation-no-1-by-liszt-20190520t182539272z",
"title": ""
}
],
"op_in_trx": 0,
"timestamp": "2019-05-20T18:25:42",
"trx_id": "b3fece40a275b4e5ff81f89b6cca3cc1b7a67a49",
"trx_in_block": 45,
"virtual_op": false
}xintaeffective vote applied for @drewley / 3bcvbr-consolation-no-1-by-liszt2019/05/20 18:23:42
xintaeffective vote applied for @drewley / 3bcvbr-consolation-no-1-by-liszt
2019/05/20 18:23:42
| author | drewley |
| pending payout | 0.057 HBD |
| permlink | 3bcvbr-consolation-no-1-by-liszt |
| rshares | 9065553637 |
| total vote weight | 340802 |
| voter | xinta |
| weight | 17291 |
| Transaction Info | Block #33079926/Trx 19c3786224faca5aa190bc132c841debcf461ac6 |
View Raw JSON Data
{
"block": 33079926,
"op": [
"effective_comment_vote",
{
"author": "drewley",
"pending_payout": "0.057 HBD",
"permlink": "3bcvbr-consolation-no-1-by-liszt",
"rshares": 9065553637,
"total_vote_weight": 340802,
"voter": "xinta",
"weight": 17291
}
],
"op_in_trx": 1,
"timestamp": "2019-05-20T18:23:42",
"trx_id": "19c3786224faca5aa190bc132c841debcf461ac6",
"trx_in_block": 31,
"virtual_op": true
}xintaupvoted (100.00%) @drewley / 3bcvbr-consolation-no-1-by-liszt2019/05/20 18:23:42
xintaupvoted (100.00%) @drewley / 3bcvbr-consolation-no-1-by-liszt
2019/05/20 18:23:42
| author | drewley |
| permlink | 3bcvbr-consolation-no-1-by-liszt |
| voter | xinta |
| weight | 10000 (100.00%) |
| Transaction Info | Block #33079926/Trx 19c3786224faca5aa190bc132c841debcf461ac6 |
View Raw JSON Data
{
"block": 33079926,
"op": [
"vote",
{
"author": "drewley",
"permlink": "3bcvbr-consolation-no-1-by-liszt",
"voter": "xinta",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-20T18:23:42",
"trx_id": "19c3786224faca5aa190bc132c841debcf461ac6",
"trx_in_block": 31,
"virtual_op": false
}xintacustom json: follow2019/05/20 18:20:00
xintacustom json: follow
2019/05/20 18:20:00
| id | follow |
| json | ["reblog",{"account":"xinta","author":"rt-international","permlink":"whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt"}] |
| required auths | [] |
| required posting auths | ["xinta"] |
| Transaction Info | Block #33079852/Trx 3641549318f26fb74f766d19eaf919666dff4b53 |
View Raw JSON Data
{
"block": 33079852,
"op": [
"custom_json",
{
"id": "follow",
"json": "[\"reblog\",{\"account\":\"xinta\",\"author\":\"rt-international\",\"permlink\":\"whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt\"}]",
"required_auths": [],
"required_posting_auths": [
"xinta"
]
}
],
"op_in_trx": 0,
"timestamp": "2019-05-20T18:20:00",
"trx_id": "3641549318f26fb74f766d19eaf919666dff4b53",
"trx_in_block": 40,
"virtual_op": false
}xintaeffective vote applied for @rt-international / whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt2019/05/20 18:19:54
xintaeffective vote applied for @rt-international / whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt
2019/05/20 18:19:54
| author | rt-international |
| pending payout | 0.007 HBD |
| permlink | whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt |
| rshares | 9246477611 |
| total vote weight | 124041 |
| voter | xinta |
| weight | 32710 |
| Transaction Info | Block #33079850/Trx b60d6356b624d82bb44e4867162344e8b34950b4 |
View Raw JSON Data
{
"block": 33079850,
"op": [
"effective_comment_vote",
{
"author": "rt-international",
"pending_payout": "0.007 HBD",
"permlink": "whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt",
"rshares": 9246477611,
"total_vote_weight": 124041,
"voter": "xinta",
"weight": 32710
}
],
"op_in_trx": 1,
"timestamp": "2019-05-20T18:19:54",
"trx_id": "b60d6356b624d82bb44e4867162344e8b34950b4",
"trx_in_block": 0,
"virtual_op": true
}2019/05/20 18:19:54
2019/05/20 18:19:54
| author | rt-international |
| permlink | whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt |
| voter | xinta |
| weight | 10000 (100.00%) |
| Transaction Info | Block #33079850/Trx b60d6356b624d82bb44e4867162344e8b34950b4 |
View Raw JSON Data
{
"block": 33079850,
"op": [
"vote",
{
"author": "rt-international",
"permlink": "whistleblower-raided-by-us-police-for-refusing-to-reveal-source-talks-to-rt",
"voter": "xinta",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-20T18:19:54",
"trx_id": "b60d6356b624d82bb44e4867162344e8b34950b4",
"trx_in_block": 0,
"virtual_op": false
}xintaeffective vote applied for @rt-international / democratorship-swedes-lambast-tv-channel-for-refusing-to-air-anti-eu-swexit-ad2019/05/20 18:18:27
xintaeffective vote applied for @rt-international / democratorship-swedes-lambast-tv-channel-for-refusing-to-air-anti-eu-swexit-ad
2019/05/20 18:18:27
| author | rt-international |
| pending payout | 0.176 HBD |
| permlink | democratorship-swedes-lambast-tv-channel-for-refusing-to-air-anti-eu-swexit-ad |
| rshares | 9434252641 |
| total vote weight | 586960 |
| voter | xinta |
| weight | 8997 (89.97%) |
| Transaction Info | Block #33079821/Trx 2d270949c4952a2f00bb7431206c23d5b3d76d94 |
View Raw JSON Data
{
"block": 33079821,
"op": [
"effective_comment_vote",
{
"author": "rt-international",
"pending_payout": "0.176 HBD",
"permlink": "democratorship-swedes-lambast-tv-channel-for-refusing-to-air-anti-eu-swexit-ad",
"rshares": 9434252641,
"total_vote_weight": 586960,
"voter": "xinta",
"weight": 8997
}
],
"op_in_trx": 1,
"timestamp": "2019-05-20T18:18:27",
"trx_id": "2d270949c4952a2f00bb7431206c23d5b3d76d94",
"trx_in_block": 8,
"virtual_op": true
}2019/05/20 18:18:27
2019/05/20 18:18:27
| author | rt-international |
| permlink | democratorship-swedes-lambast-tv-channel-for-refusing-to-air-anti-eu-swexit-ad |
| voter | xinta |
| weight | 10000 (100.00%) |
| Transaction Info | Block #33079821/Trx 2d270949c4952a2f00bb7431206c23d5b3d76d94 |
View Raw JSON Data
{
"block": 33079821,
"op": [
"vote",
{
"author": "rt-international",
"permlink": "democratorship-swedes-lambast-tv-channel-for-refusing-to-air-anti-eu-swexit-ad",
"voter": "xinta",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-20T18:18:27",
"trx_id": "2d270949c4952a2f00bb7431206c23d5b3d76d94",
"trx_in_block": 8,
"virtual_op": false
}zuericheffective vote applied for @xinta / learning-ada-7-generics-and-static-overloading2019/05/20 06:25:15
zuericheffective vote applied for @xinta / learning-ada-7-generics-and-static-overloading
2019/05/20 06:25:15
| author | xinta |
| pending payout | 0.061 HBD |
| permlink | learning-ada-7-generics-and-static-overloading |
| rshares | 113932330136 |
| total vote weight | 356696 |
| voter | zuerich |
| weight | 290664 |
| Transaction Info | Block #33065565/Trx 8eccee7026a9f9fdc5a18b5603d5a8e9db5274a2 |
View Raw JSON Data
{
"block": 33065565,
"op": [
"effective_comment_vote",
{
"author": "xinta",
"pending_payout": "0.061 HBD",
"permlink": "learning-ada-7-generics-and-static-overloading",
"rshares": 113932330136,
"total_vote_weight": 356696,
"voter": "zuerich",
"weight": 290664
}
],
"op_in_trx": 1,
"timestamp": "2019-05-20T06:25:15",
"trx_id": "8eccee7026a9f9fdc5a18b5603d5a8e9db5274a2",
"trx_in_block": 20,
"virtual_op": true
}zuerichupvoted (30.00%) @xinta / learning-ada-7-generics-and-static-overloading2019/05/20 06:25:15
zuerichupvoted (30.00%) @xinta / learning-ada-7-generics-and-static-overloading
2019/05/20 06:25:15
| author | xinta |
| permlink | learning-ada-7-generics-and-static-overloading |
| voter | zuerich |
| weight | 3000 (30.00%) |
| Transaction Info | Block #33065565/Trx 8eccee7026a9f9fdc5a18b5603d5a8e9db5274a2 |
View Raw JSON Data
{
"block": 33065565,
"op": [
"vote",
{
"author": "xinta",
"permlink": "learning-ada-7-generics-and-static-overloading",
"voter": "zuerich",
"weight": 3000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-20T06:25:15",
"trx_id": "8eccee7026a9f9fdc5a18b5603d5a8e9db5274a2",
"trx_in_block": 20,
"virtual_op": false
}anisa24effective vote applied for @xinta / verso-le-elezioni-europee-20192019/05/19 21:56:57
anisa24effective vote applied for @xinta / verso-le-elezioni-europee-2019
2019/05/19 21:56:57
| author | xinta |
| pending payout | 0.000 HBD |
| permlink | verso-le-elezioni-europee-2019 |
| rshares | 549380455 |
| total vote weight | 37051 |
| voter | anisa24 |
| weight | 1620 (16.20%) |
| Transaction Info | Block #33055408/Trx 6a1b02c001cb9e87e9be95ea24d974cf6bfa2bb6 |
View Raw JSON Data
{
"block": 33055408,
"op": [
"effective_comment_vote",
{
"author": "xinta",
"pending_payout": "0.000 HBD",
"permlink": "verso-le-elezioni-europee-2019",
"rshares": 549380455,
"total_vote_weight": 37051,
"voter": "anisa24",
"weight": 1620
}
],
"op_in_trx": 1,
"timestamp": "2019-05-19T21:56:57",
"trx_id": "6a1b02c001cb9e87e9be95ea24d974cf6bfa2bb6",
"trx_in_block": 43,
"virtual_op": true
}anisa24upvoted (100.00%) @xinta / verso-le-elezioni-europee-20192019/05/19 21:56:57
anisa24upvoted (100.00%) @xinta / verso-le-elezioni-europee-2019
2019/05/19 21:56:57
| author | xinta |
| permlink | verso-le-elezioni-europee-2019 |
| voter | anisa24 |
| weight | 10000 (100.00%) |
| Transaction Info | Block #33055408/Trx 6a1b02c001cb9e87e9be95ea24d974cf6bfa2bb6 |
View Raw JSON Data
{
"block": 33055408,
"op": [
"vote",
{
"author": "xinta",
"permlink": "verso-le-elezioni-europee-2019",
"voter": "anisa24",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-19T21:56:57",
"trx_id": "6a1b02c001cb9e87e9be95ea24d974cf6bfa2bb6",
"trx_in_block": 43,
"virtual_op": false
}microboteffective vote applied for @xinta / verso-le-elezioni-europee-20192019/05/19 21:55:39
microboteffective vote applied for @xinta / verso-le-elezioni-europee-2019
2019/05/19 21:55:39
| author | xinta |
| pending payout | 0.000 HBD |
| permlink | verso-le-elezioni-europee-2019 |
| rshares | 805074483 |
| total vote weight | 28668 |
| voter | microbot |
| weight | 3057 (30.57%) |
| Transaction Info | Block #33055382/Trx a679eddb3c523edb2590d812e1dbccdad191a2a4 |
View Raw JSON Data
{
"block": 33055382,
"op": [
"effective_comment_vote",
{
"author": "xinta",
"pending_payout": "0.000 HBD",
"permlink": "verso-le-elezioni-europee-2019",
"rshares": 805074483,
"total_vote_weight": 28668,
"voter": "microbot",
"weight": 3057
}
],
"op_in_trx": 1,
"timestamp": "2019-05-19T21:55:39",
"trx_id": "a679eddb3c523edb2590d812e1dbccdad191a2a4",
"trx_in_block": 18,
"virtual_op": true
}microbotupvoted (5.00%) @xinta / verso-le-elezioni-europee-20192019/05/19 21:55:39
microbotupvoted (5.00%) @xinta / verso-le-elezioni-europee-2019
2019/05/19 21:55:39
| author | xinta |
| permlink | verso-le-elezioni-europee-2019 |
| voter | microbot |
| weight | 500 (5.00%) |
| Transaction Info | Block #33055382/Trx a679eddb3c523edb2590d812e1dbccdad191a2a4 |
View Raw JSON Data
{
"block": 33055382,
"op": [
"vote",
{
"author": "xinta",
"permlink": "verso-le-elezioni-europee-2019",
"voter": "microbot",
"weight": 500
}
],
"op_in_trx": 0,
"timestamp": "2019-05-19T21:55:39",
"trx_id": "a679eddb3c523edb2590d812e1dbccdad191a2a4",
"trx_in_block": 18,
"virtual_op": false
}xintapublished a new post: verso-le-elezioni-europee-20192019/05/19 21:54:03
xintapublished a new post: verso-le-elezioni-europee-2019
2019/05/19 21:54:03
| author | xinta |
| body | Quasi dimenticavo: la prossima settimana, più precisamente il 26 maggio dalle 7 alle 23, si vota per il rinnovo del parlamento europeo. > Si vota per eleggere i deputati che andranno a comporre il Parlamento europeo per i prossimi cinque anni e rappresenteranno gli interessi dei cittadini dell'Unione europea. Così dicono: gli interessi dei cittadini dell'Unione europea… Ci concedono questo parlamento, che carini. > Il Parlamento europeo è l'unica istituzione europea i cui membri sono eletti direttamente dai cittadini […] Ci sono due possibili approcci al voto europeo: - Non votare - Votare Per le elezioni nazionali dico sempre che bisogna andare a votare. Sempre. Anche per scarabocchiare la scheda, ma bisogna andare a votare. Le democrazie europee sono il frutto di un percorso storico, sono imperfette ma sono un equilibrio sorto dalla contrapposizione di forze e circostanze storiche. Non sono **macchinazioni nate a tavolino**, come è il caso dell'UE. Quindi è perfettamente lecito respingere questo “stato” senza territorio, è lecito persino considerarlo alla stregua di una nazione straniera (senza territorio) che sta provando a conquistarci, cioè a un'entità ostile. Hanno persino messo la maschera della democrazia quando hanno provato a far votare la costituzione “europea”, che è stata sonoramente bastonata. Quindi hanno smesso di proporla ai cittadini e l'hanno incorporata nei trattati internazionali, la forma preferita usata per costruire l'UE. Una scelta “fortunata”, visto quant'è difficile per i processi democratici interferire con tali trattati internazionli… Questo punto di vista estremo, chiamiamolo così, giustifica la scelta del non voto, perché andando a votare si legittimerebbe l'esistenza di questo progetto **sovversivo** — sovversivo in quanto sta alterando l'ordine democratico degli stati membri, trasformando la natura delle loro costituzioni e sottraendo loro sovranità. Un punto di vista diverso è quello dice che sì, l'UE non è bella, ma un'UE diversa **partendo da quella che già c'è** è possibile. Questo punto di vista giustifica il voto, proprio perché ha senso andare a votare per far andare nel parlamento dell'UE persone che spingono per il cambiamento necessario. Poi c'è ancora un altro punto di vista che giustifica il voto: quello dell'“europeismo” convinto. Secondo me non possono esistere persone sane di mente che siano anche “europeiste” convinte, cioè che pensano che questa UE sia veramente l'unione europea (notate le minuscole!) a cui devono ambiri gli stati che sorgono sul continente europeo. Scrivo “europeo” tra virgolette per ricordare che l'Europa, il continente, e i suoi stati, non c'entrano: l'UE ha fagocitato l'aggettivo e diciamo “europeismo”, per esempio, ma leggiamo “promozione e supporto di **questa** UE”. Un sincero europeismo, cioè la “promozione e il supporto” degli stati che sono sul continente Europeo, non può che guardare con sospetto a quel carrozzone chiamato UE. Pensando alla geopolitica mi viene in mente quanto è vicina la Russia e quanto sarebbe importante per l'Europa intrattenere con essa più solide e stabili relazioni — tra l'altro sapevate che in realtà parte del territorio russo è effettivamente sul continente europeo, e che comunque, pur essendo questa parte più piccola rispetto a quella asiatica, essa è la più popolata e lì si concentrano la maggior parte delle attività economiche e politiche? Invece dobbiamo barcamenarci tra la necessità di avere relazioni decenti con i russi e la sudditanza agli “Alleati” americani che sono, anche dopo la fine della Guerra Fredda che in realtà non è mai finita ma si è solo assopita per potersi trasformare e modernizzare, i loro arcinemici e s'indispettiscono se gli stati europei sono troppo gentili con i russi. L'UE ha avallato pure le sanzioni contro la Russia, per motivi legati all'egemonia americana, non certo perché è nel migliore interesse europeo nel medio e lungo periodo. Per questo e altri motivi gli “europeisti“ convinti non possono che essere insani, per un motivo o per l'altro. Non vuol dire che sono cattivi: la maggior parte di loro forse si è solo fatta abbindolare dalla retorica pro-UE, così bella, così da cartone animato per bambini… Sono appunto bambini in corpi adulti… Poi ci sono gli “europeisti” convinti e che sono parte del problema; un esempio su tutti che mi viene in mente adesso è la Bonino. Ora, fatemi mettere da parte questa triste categoria e fatemi pensare un po' a quelli del voto per il cambiamento. Vogliono cambiare l'UE dall'interno… ma chi sono questi che sarebbero in grado di farlo? I movimenti euroscettici hanno perso la loro spinta iniziale. Indossano ancora i loro mantelli da supereroi, ma purtroppo sono stati già assorbiti, sono diventati ingranaggi. Penso alla Lega, che è sistemica da molto tempo ormai, e penso al Movimento Cinque Stelle, che ha perso il suo *movimentismo* entrando in parlamento e si è trasformato in una forza politica come altre, almeno sulla questione UE. (Secondo alcuni non è mai stata euroscettica; altrove, anche all'estero, continuano a dipingerli come euroscettica e antisistema; penso che sia una strategia mediatica, l'esatto obiettivo mi sfugge ma dal punto di vista dell'elettorato non è affatto una cosa positiva.) **Non c'è modo di vincere questa battaglia usando gli strumenti messi a disposizione dallo stesso potere che si vorrebbe combattere**. Il potere ha imparato da secoli ad assorbire e gestire il dissenso. Ha imparato che in realtà è necessario che esista un certo **dissenso endemico**. E ha imparato a manipolarlo per i suoi fini. Per esempio anche per mantenere quella parvenza di diversità senza la quale stenteremmo a credere di essere *liberi*. Fate caso però a quanto prepotentemente emerge il *problema* della libertà d'espressione quando un'*espressione* bollata come controversa raggiunge *troppe* persone *troppo* rapidamente, cioè quando non è sotto controllo. Ci stanno già preparando per stringere qualche vite e sigillare qualche porta: purtroppo vedo sempre più spesso, proprio tra le file di chi potrebbe diventare in futuro vittima, sostenitori della limitazione di diverse libertà sulla base del fatto che in questo modo ne risulterebbe una società migliore, più sana, più sicura. Quanti si accorgeranno di essere **liberi solo perché sono irrilevanti**? ## Vi ricordate le elezioni “europee” del 2014? Nel 2014 il PD prese un incredibile 40.81%. Un risultato eccezionale ottenuto anche grazie all'aiuto di Berlusconi, che in pratica fece campagna elettorale a loro favore (apparentemente per limitare l'ascesa del M5S e impedirne una vittoria che poteva essere problematica per gli equilibri europei). Anche a questo giro hanno provato a fare qualcosa di simile, ma ancora non hanno capito se gli conviene puntare i cannoni su Salvini o su Di Maio, cioè sulla Lega o sul M5S. Per questo stanno provando diverse strategie. Da una parte sottolineano costantemente le difficoltà di convivenza di queste due forze politiche nel governo. Questo è un punto morbido in cui è probabile l'affondo di una coltellata e perciò è diventata una costante. Da un'altra parte lanciano gli allarmi di razzismo, fascismo, crollo dei valori occidentali e altre cose del genere. Questo è per andare contro la Lega, più che altro. Contro il M5S il solito tema dell'incompetenza, che ci stanno trascinando nel baratro perché inetti, incapaci e con idee pericolose come il reddito di cittadinanza, buoni solo a dire no. Sono i classici sempreverdi, insieme a dire a ogni occasione che il M5S sta perdendo terreno. Lo sento dire almeno dal boom del 2013. Nel tentativo di compattare il centro destra e far tornare la Lega nel recinto dove giocherebbe a fare da spalla alla rinata Forza Italia, Berlusconi sfodera contro i Cinque Stelle una versione addolcita delle sue famose accuse di comunismo: presenta il M5S come forza di sinistra. E la Meloni gli fa eco. Tutto per allontanarla dalla Lega o, più esattamente, per allontanare la Lega dal M5S. Gli elettori sprovveduti intanto si confondono: per Berlusconi e Meloni il M5S è di sinistra, per la sinistra il M5S è fascista o comunque destrorso, per il M5S il M5S non è né destra né sinistra, come diceva anche Macron per il suo En Marche, peraltro senza beccarsi l'accusa di fascimo — perché *gli storici denoialtri* dicono che né destra né sinistra era uno slogan fascista, quindi chi lo dice deve essere fascista… Insomma, c'è un bel po' di confusione, come al solito. Allora chi votare? Nel dubbio, forse hanno ragione quelli che non andranno a votare. Se dovessi andare a votare, ho solo la certezza che non darò il voto al PD o qualunque forza politica che mostri o abbia mostrato entusiasmo per l'UE. La vedo dura.  |
| json metadata | {"tags":["ita","europarlamento","euroscetticismo","politica","europa"],"image":["https://cdn.steemitimages.com/DQma6UTFbydnwvtDyPzQQ4h5pu5KmzXwZPf8hVrisLYykgh/burning-UE.jpg"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | ita |
| permlink | verso-le-elezioni-europee-2019 |
| title | Verso le elezioni europee 2019 |
| Transaction Info | Block #33055350/Trx 5426711f3b6edca946e44b5e4e1c2959e3a67387 |
View Raw JSON Data
{
"block": 33055350,
"op": [
"comment",
{
"author": "xinta",
"body": "Quasi dimenticavo: la prossima settimana, più precisamente il 26 maggio dalle 7 alle 23, si vota per il rinnovo del parlamento europeo. \n\n> Si vota per eleggere i deputati che andranno a comporre il Parlamento europeo per i prossimi cinque anni e rappresenteranno gli interessi dei cittadini dell'Unione europea.\n\nCosì dicono: gli interessi dei cittadini dell'Unione europea… Ci concedono questo parlamento, che carini.\n\n> Il Parlamento europeo è l'unica istituzione europea i cui membri sono eletti direttamente dai cittadini […]\n\nCi sono due possibili approcci al voto europeo:\n\n- Non votare\n- Votare\n\nPer le elezioni nazionali dico sempre che bisogna andare a votare. Sempre. Anche per scarabocchiare la scheda, ma bisogna andare a votare.\n\nLe democrazie europee sono il frutto di un percorso storico, sono imperfette ma sono un equilibrio sorto dalla contrapposizione di forze e circostanze storiche. Non sono **macchinazioni nate a tavolino**, come è il caso dell'UE.\n\nQuindi è perfettamente lecito respingere questo “stato” senza territorio, è lecito persino considerarlo alla stregua di una nazione straniera (senza territorio) che sta provando a conquistarci, cioè a un'entità ostile.\n\nHanno persino messo la maschera della democrazia quando hanno provato a far votare la costituzione “europea”, che è stata sonoramente bastonata. Quindi hanno smesso di proporla ai cittadini e l'hanno incorporata nei trattati internazionali, la forma preferita usata per costruire l'UE. Una scelta “fortunata”, visto quant'è difficile per i processi democratici interferire con tali trattati internazionli…\n\nQuesto punto di vista estremo, chiamiamolo così, giustifica la scelta del non voto, perché andando a votare si legittimerebbe l'esistenza di questo progetto **sovversivo** — sovversivo in quanto sta alterando l'ordine democratico degli stati membri, trasformando la natura delle loro costituzioni e sottraendo loro sovranità.\n\nUn punto di vista diverso è quello dice che sì, l'UE non è bella, ma un'UE diversa **partendo da quella che già c'è** è possibile. Questo punto di vista giustifica il voto, proprio perché ha senso andare a votare per far andare nel parlamento dell'UE persone che spingono per il cambiamento necessario.\n\nPoi c'è ancora un altro punto di vista che giustifica il voto: quello dell'“europeismo” convinto.\n\nSecondo me non possono esistere persone sane di mente che siano anche “europeiste” convinte, cioè che pensano che questa UE sia veramente l'unione europea (notate le minuscole!) a cui devono ambiri gli stati che sorgono sul continente europeo.\n\nScrivo “europeo” tra virgolette per ricordare che l'Europa, il continente, e i suoi stati, non c'entrano: l'UE ha fagocitato l'aggettivo e diciamo “europeismo”, per esempio, ma leggiamo “promozione e supporto di **questa** UE”.\n\nUn sincero europeismo, cioè la “promozione e il supporto” degli stati che sono sul continente Europeo, non può che guardare con sospetto a quel carrozzone chiamato UE.\n\nPensando alla geopolitica mi viene in mente quanto è vicina la Russia e quanto sarebbe importante per l'Europa intrattenere con essa più solide e stabili relazioni — tra l'altro sapevate che in realtà parte del territorio russo è effettivamente sul continente europeo, e che comunque, pur essendo questa parte più piccola rispetto a quella asiatica, essa è la più popolata e lì si concentrano la maggior parte delle attività economiche e politiche?\n\nInvece dobbiamo barcamenarci tra la necessità di avere relazioni decenti con i russi e la sudditanza agli “Alleati” americani che sono, anche dopo la fine della Guerra Fredda che in realtà non è mai finita ma si è solo assopita per potersi trasformare e modernizzare, i loro arcinemici e s'indispettiscono se gli stati europei sono troppo gentili con i russi. L'UE ha avallato pure le sanzioni contro la Russia, per motivi legati all'egemonia americana, non certo perché è nel migliore interesse europeo nel medio e lungo periodo.\n\nPer questo e altri motivi gli “europeisti“ convinti non possono che essere insani, per un motivo o per l'altro. Non vuol dire che sono cattivi: la maggior parte di loro forse si è solo fatta abbindolare dalla retorica pro-UE, così bella, così da cartone animato per bambini… Sono appunto bambini in corpi adulti…\n\nPoi ci sono gli “europeisti” convinti e che sono parte del problema; un esempio su tutti che mi viene in mente adesso è la Bonino.\n\nOra, fatemi mettere da parte questa triste categoria e fatemi pensare un po' a quelli del voto per il cambiamento.\n\nVogliono cambiare l'UE dall'interno… ma chi sono questi che sarebbero in grado di farlo?\n\nI movimenti euroscettici hanno perso la loro spinta iniziale. Indossano ancora i loro mantelli da supereroi, ma purtroppo sono stati già assorbiti, sono diventati ingranaggi.\n\nPenso alla Lega, che è sistemica da molto tempo ormai, e penso al Movimento Cinque Stelle, che ha perso il suo *movimentismo* entrando in parlamento e si è trasformato in una forza politica come altre, almeno sulla questione UE. (Secondo alcuni non è mai stata euroscettica; altrove, anche all'estero, continuano a dipingerli come euroscettica e antisistema; penso che sia una strategia mediatica, l'esatto obiettivo mi sfugge ma dal punto di vista dell'elettorato non è affatto una cosa positiva.)\n\n**Non c'è modo di vincere questa battaglia usando gli strumenti messi a disposizione dallo stesso potere che si vorrebbe combattere**.\n\nIl potere ha imparato da secoli ad assorbire e gestire il dissenso. Ha imparato che in realtà è necessario che esista un certo **dissenso endemico**. E ha imparato a manipolarlo per i suoi fini. Per esempio anche per mantenere quella parvenza di diversità senza la quale stenteremmo a credere di essere *liberi*.\n\nFate caso però a quanto prepotentemente emerge il *problema* della libertà d'espressione quando un'*espressione* bollata come controversa raggiunge *troppe* persone *troppo* rapidamente, cioè quando non è sotto controllo. Ci stanno già preparando per stringere qualche vite e sigillare qualche porta: purtroppo vedo sempre più spesso, proprio tra le file di chi potrebbe diventare in futuro vittima, sostenitori della limitazione di diverse libertà sulla base del fatto che in questo modo ne risulterebbe una società migliore, più sana, più sicura. Quanti si accorgeranno di essere **liberi solo perché sono irrilevanti**?\n\n\n## Vi ricordate le elezioni “europee” del 2014?\n\nNel 2014 il PD prese un incredibile 40.81%. Un risultato eccezionale ottenuto anche grazie all'aiuto di Berlusconi, che in pratica fece campagna elettorale a loro favore (apparentemente per limitare l'ascesa del M5S e impedirne una vittoria che poteva essere problematica per gli equilibri europei).\n\nAnche a questo giro hanno provato a fare qualcosa di simile, ma ancora non hanno capito se gli conviene puntare i cannoni su Salvini o su Di Maio, cioè sulla Lega o sul M5S.\n\nPer questo stanno provando diverse strategie.\n\nDa una parte sottolineano costantemente le difficoltà di convivenza di queste due forze politiche nel governo. Questo è un punto morbido in cui è probabile l'affondo di una coltellata e perciò è diventata una costante.\n\nDa un'altra parte lanciano gli allarmi di razzismo, fascismo, crollo dei valori occidentali e altre cose del genere. Questo è per andare contro la Lega, più che altro.\n\nContro il M5S il solito tema dell'incompetenza, che ci stanno trascinando nel baratro perché inetti, incapaci e con idee pericolose come il reddito di cittadinanza, buoni solo a dire no. Sono i classici sempreverdi, insieme a dire a ogni occasione che il M5S sta perdendo terreno. Lo sento dire almeno dal boom del 2013.\n\nNel tentativo di compattare il centro destra e far tornare la Lega nel recinto dove giocherebbe a fare da spalla alla rinata Forza Italia, Berlusconi sfodera contro i Cinque Stelle una versione addolcita delle sue famose accuse di comunismo: presenta il M5S come forza di sinistra. E la Meloni gli fa eco. Tutto per allontanarla dalla Lega o, più esattamente, per allontanare la Lega dal M5S.\n\nGli elettori sprovveduti intanto si confondono: per Berlusconi e Meloni il M5S è di sinistra, per la sinistra il M5S è fascista o comunque destrorso, per il M5S il M5S non è né destra né sinistra, come diceva anche Macron per il suo En Marche, peraltro senza beccarsi l'accusa di fascimo — perché *gli storici denoialtri* dicono che né destra né sinistra era uno slogan fascista, quindi chi lo dice deve essere fascista…\n\nInsomma, c'è un bel po' di confusione, come al solito.\n\nAllora chi votare?\n\nNel dubbio, forse hanno ragione quelli che non andranno a votare.\n\nSe dovessi andare a votare, ho solo la certezza che non darò il voto al PD o qualunque forza politica che mostri o abbia mostrato entusiasmo per l'UE.\n\nLa vedo dura.\n\n\n",
"json_metadata": "{\"tags\":[\"ita\",\"europarlamento\",\"euroscetticismo\",\"politica\",\"europa\"],\"image\":[\"https://cdn.steemitimages.com/DQma6UTFbydnwvtDyPzQQ4h5pu5KmzXwZPf8hVrisLYykgh/burning-UE.jpg\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "ita",
"permlink": "verso-le-elezioni-europee-2019",
"title": "Verso le elezioni europee 2019"
}
],
"op_in_trx": 0,
"timestamp": "2019-05-19T21:54:03",
"trx_id": "5426711f3b6edca946e44b5e4e1c2959e3a67387",
"trx_in_block": 40,
"virtual_op": false
}2019/05/19 20:06:15
2019/05/19 20:06:15
| id | follow |
| json | ["follow",{"follower":"xinta","following":"belemo","what":["blog"]}] |
| required auths | [] |
| required posting auths | ["xinta"] |
| Transaction Info | Block #33053194/Trx 50f7ba0b7b5eadd4619ccfd649fd7905feabe1cf |
View Raw JSON Data
{
"block": 33053194,
"op": [
"custom_json",
{
"id": "follow",
"json": "[\"follow\",{\"follower\":\"xinta\",\"following\":\"belemo\",\"what\":[\"blog\"]}]",
"required_auths": [],
"required_posting_auths": [
"xinta"
]
}
],
"op_in_trx": 0,
"timestamp": "2019-05-19T20:06:15",
"trx_id": "50f7ba0b7b5eadd4619ccfd649fd7905feabe1cf",
"trx_in_block": 13,
"virtual_op": false
}2019/05/19 20:03:12
2019/05/19 20:03:12
| id | follow |
| json | ["follow",{"follower":"xinta","following":"omodei","what":["blog"]}] |
| required auths | [] |
| required posting auths | ["xinta"] |
| Transaction Info | Block #33053133/Trx 3d7b2bd2c09c9338c58b77c4c5b2c0cc42c9c398 |
View Raw JSON Data
{
"block": 33053133,
"op": [
"custom_json",
{
"id": "follow",
"json": "[\"follow\",{\"follower\":\"xinta\",\"following\":\"omodei\",\"what\":[\"blog\"]}]",
"required_auths": [],
"required_posting_auths": [
"xinta"
]
}
],
"op_in_trx": 0,
"timestamp": "2019-05-19T20:03:12",
"trx_id": "3d7b2bd2c09c9338c58b77c4c5b2c0cc42c9c398",
"trx_in_block": 3,
"virtual_op": false
}xintaeffective vote applied for @rt-international / iceland-could-be-punished-for-palestinian-flag-display-at-eurovision-say-israeli-hosts2019/05/19 20:00:33
xintaeffective vote applied for @rt-international / iceland-could-be-punished-for-palestinian-flag-display-at-eurovision-say-israeli-hosts
2019/05/19 20:00:33
| author | rt-international |
| pending payout | 0.015 HBD |
| permlink | iceland-could-be-punished-for-palestinian-flag-display-at-eurovision-say-israeli-hosts |
| rshares | 9434252641 |
| total vote weight | 181251 |
| voter | xinta |
| weight | 23632 |
| Transaction Info | Block #33053080/Trx de860347993878409899603e81247f96c99bf5a6 |
View Raw JSON Data
{
"block": 33053080,
"op": [
"effective_comment_vote",
{
"author": "rt-international",
"pending_payout": "0.015 HBD",
"permlink": "iceland-could-be-punished-for-palestinian-flag-display-at-eurovision-say-israeli-hosts",
"rshares": 9434252641,
"total_vote_weight": 181251,
"voter": "xinta",
"weight": 23632
}
],
"op_in_trx": 1,
"timestamp": "2019-05-19T20:00:33",
"trx_id": "de860347993878409899603e81247f96c99bf5a6",
"trx_in_block": 18,
"virtual_op": true
}2019/05/19 20:00:33
2019/05/19 20:00:33
| author | rt-international |
| permlink | iceland-could-be-punished-for-palestinian-flag-display-at-eurovision-say-israeli-hosts |
| voter | xinta |
| weight | 10000 (100.00%) |
| Transaction Info | Block #33053080/Trx de860347993878409899603e81247f96c99bf5a6 |
View Raw JSON Data
{
"block": 33053080,
"op": [
"vote",
{
"author": "rt-international",
"permlink": "iceland-could-be-punished-for-palestinian-flag-display-at-eurovision-say-israeli-hosts",
"voter": "xinta",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-19T20:00:33",
"trx_id": "de860347993878409899603e81247f96c99bf5a6",
"trx_in_block": 18,
"virtual_op": false
}pinoyeffective vote applied for @xinta / learning-ada-7-generics-and-static-overloading2019/05/19 15:18:39
pinoyeffective vote applied for @xinta / learning-ada-7-generics-and-static-overloading
2019/05/19 15:18:39
| author | xinta |
| pending payout | 0.002 HBD |
| permlink | learning-ada-7-generics-and-static-overloading |
| rshares | 83788030 |
| total vote weight | 66032 |
| voter | pinoy |
| weight | 639 (6.39%) |
| Transaction Info | Block #33047447/Trx edd912abb5d6fa1c72a73986bdcd21289f19d177 |
View Raw JSON Data
{
"block": 33047447,
"op": [
"effective_comment_vote",
{
"author": "xinta",
"pending_payout": "0.002 HBD",
"permlink": "learning-ada-7-generics-and-static-overloading",
"rshares": 83788030,
"total_vote_weight": 66032,
"voter": "pinoy",
"weight": 639
}
],
"op_in_trx": 1,
"timestamp": "2019-05-19T15:18:39",
"trx_id": "edd912abb5d6fa1c72a73986bdcd21289f19d177",
"trx_in_block": 9,
"virtual_op": true
}pinoyupvoted (10.00%) @xinta / learning-ada-7-generics-and-static-overloading2019/05/19 15:18:39
pinoyupvoted (10.00%) @xinta / learning-ada-7-generics-and-static-overloading
2019/05/19 15:18:39
| author | xinta |
| permlink | learning-ada-7-generics-and-static-overloading |
| voter | pinoy |
| weight | 1000 (10.00%) |
| Transaction Info | Block #33047447/Trx edd912abb5d6fa1c72a73986bdcd21289f19d177 |
View Raw JSON Data
{
"block": 33047447,
"op": [
"vote",
{
"author": "xinta",
"permlink": "learning-ada-7-generics-and-static-overloading",
"voter": "pinoy",
"weight": 1000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-19T15:18:39",
"trx_id": "edd912abb5d6fa1c72a73986bdcd21289f19d177",
"trx_in_block": 9,
"virtual_op": false
}yeheyeffective vote applied for @xinta / learning-ada-7-generics-and-static-overloading2019/05/19 15:03:27
yeheyeffective vote applied for @xinta / learning-ada-7-generics-and-static-overloading
2019/05/19 15:03:27
| author | xinta |
| pending payout | 0.002 HBD |
| permlink | learning-ada-7-generics-and-static-overloading |
| rshares | 3217676514 |
| total vote weight | 65393 |
| voter | yehey |
| weight | 32856 |
| Transaction Info | Block #33047143/Trx b3fd099abfcf29283e5dd430762a18a9da9f5a2f |
View Raw JSON Data
{
"block": 33047143,
"op": [
"effective_comment_vote",
{
"author": "xinta",
"pending_payout": "0.002 HBD",
"permlink": "learning-ada-7-generics-and-static-overloading",
"rshares": 3217676514,
"total_vote_weight": 65393,
"voter": "yehey",
"weight": 32856
}
],
"op_in_trx": 1,
"timestamp": "2019-05-19T15:03:27",
"trx_id": "b3fd099abfcf29283e5dd430762a18a9da9f5a2f",
"trx_in_block": 2,
"virtual_op": true
}yeheyupvoted (10.00%) @xinta / learning-ada-7-generics-and-static-overloading2019/05/19 15:03:27
yeheyupvoted (10.00%) @xinta / learning-ada-7-generics-and-static-overloading
2019/05/19 15:03:27
| author | xinta |
| permlink | learning-ada-7-generics-and-static-overloading |
| voter | yehey |
| weight | 1000 (10.00%) |
| Transaction Info | Block #33047143/Trx b3fd099abfcf29283e5dd430762a18a9da9f5a2f |
View Raw JSON Data
{
"block": 33047143,
"op": [
"vote",
{
"author": "xinta",
"permlink": "learning-ada-7-generics-and-static-overloading",
"voter": "yehey",
"weight": 1000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-19T15:03:27",
"trx_id": "b3fd099abfcf29283e5dd430762a18a9da9f5a2f",
"trx_in_block": 2,
"virtual_op": false
}xintaeffective vote applied for @thiiird / generative-snare-patterns-in-pure-data-exuofqug2019/05/19 15:02:18
xintaeffective vote applied for @thiiird / generative-snare-patterns-in-pure-data-exuofqug
2019/05/19 15:02:18
| author | thiiird |
| pending payout | 1.455 HBD |
| permlink | generative-snare-patterns-in-pure-data-exuofqug |
| rshares | 9434252641 |
| total vote weight | 1712881 |
| voter | xinta |
| weight | 2249 (22.49%) |
| Transaction Info | Block #33047120/Trx 402d8c2b247597c3acf4ecdb7b3cb6fb15579ed0 |
View Raw JSON Data
{
"block": 33047120,
"op": [
"effective_comment_vote",
{
"author": "thiiird",
"pending_payout": "1.455 HBD",
"permlink": "generative-snare-patterns-in-pure-data-exuofqug",
"rshares": 9434252641,
"total_vote_weight": 1712881,
"voter": "xinta",
"weight": 2249
}
],
"op_in_trx": 1,
"timestamp": "2019-05-19T15:02:18",
"trx_id": "402d8c2b247597c3acf4ecdb7b3cb6fb15579ed0",
"trx_in_block": 23,
"virtual_op": true
}xintaupvoted (100.00%) @thiiird / generative-snare-patterns-in-pure-data-exuofqug2019/05/19 15:02:18
xintaupvoted (100.00%) @thiiird / generative-snare-patterns-in-pure-data-exuofqug
2019/05/19 15:02:18
| author | thiiird |
| permlink | generative-snare-patterns-in-pure-data-exuofqug |
| voter | xinta |
| weight | 10000 (100.00%) |
| Transaction Info | Block #33047120/Trx 402d8c2b247597c3acf4ecdb7b3cb6fb15579ed0 |
View Raw JSON Data
{
"block": 33047120,
"op": [
"vote",
{
"author": "thiiird",
"permlink": "generative-snare-patterns-in-pure-data-exuofqug",
"voter": "xinta",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-19T15:02:18",
"trx_id": "402d8c2b247597c3acf4ecdb7b3cb6fb15579ed0",
"trx_in_block": 23,
"virtual_op": false
}2019/05/19 15:02:00
2019/05/19 15:02:00
| id | follow |
| json | ["follow",{"follower":"xinta","following":"thiiird","what":["blog"]}] |
| required auths | [] |
| required posting auths | ["xinta"] |
| Transaction Info | Block #33047114/Trx d98ff273d1bf33c8489a768f7293abbadd900f45 |
View Raw JSON Data
{
"block": 33047114,
"op": [
"custom_json",
{
"id": "follow",
"json": "[\"follow\",{\"follower\":\"xinta\",\"following\":\"thiiird\",\"what\":[\"blog\"]}]",
"required_auths": [],
"required_posting_auths": [
"xinta"
]
}
],
"op_in_trx": 0,
"timestamp": "2019-05-19T15:02:00",
"trx_id": "d98ff273d1bf33c8489a768f7293abbadd900f45",
"trx_in_block": 10,
"virtual_op": false
}steffenixeffective vote applied for @xinta / learning-ada-7-generics-and-static-overloading2019/05/19 14:42:06
steffenixeffective vote applied for @xinta / learning-ada-7-generics-and-static-overloading
2019/05/19 14:42:06
| author | xinta |
| pending payout | 0.000 HBD |
| permlink | learning-ada-7-generics-and-static-overloading |
| rshares | 675279885 |
| total vote weight | 32537 |
| voter | steffenix |
| weight | 12646 |
| Transaction Info | Block #33046716/Trx 8608743c6082be971e960578ce12d9ead4e0d5ed |
View Raw JSON Data
{
"block": 33046716,
"op": [
"effective_comment_vote",
{
"author": "xinta",
"pending_payout": "0.000 HBD",
"permlink": "learning-ada-7-generics-and-static-overloading",
"rshares": 675279885,
"total_vote_weight": 32537,
"voter": "steffenix",
"weight": 12646
}
],
"op_in_trx": 1,
"timestamp": "2019-05-19T14:42:06",
"trx_id": "8608743c6082be971e960578ce12d9ead4e0d5ed",
"trx_in_block": 22,
"virtual_op": true
}steffenixupvoted (100.00%) @xinta / learning-ada-7-generics-and-static-overloading2019/05/19 14:42:06
steffenixupvoted (100.00%) @xinta / learning-ada-7-generics-and-static-overloading
2019/05/19 14:42:06
| author | xinta |
| permlink | learning-ada-7-generics-and-static-overloading |
| voter | steffenix |
| weight | 10000 (100.00%) |
| Transaction Info | Block #33046716/Trx 8608743c6082be971e960578ce12d9ead4e0d5ed |
View Raw JSON Data
{
"block": 33046716,
"op": [
"vote",
{
"author": "xinta",
"permlink": "learning-ada-7-generics-and-static-overloading",
"voter": "steffenix",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-19T14:42:06",
"trx_id": "8608743c6082be971e960578ce12d9ead4e0d5ed",
"trx_in_block": 22,
"virtual_op": false
}gieriteffective vote applied for @xinta / learning-ada-7-generics-and-static-overloading2019/05/19 14:38:15
gieriteffective vote applied for @xinta / learning-ada-7-generics-and-static-overloading
2019/05/19 14:38:15
| author | xinta |
| pending payout | 0.000 HBD |
| permlink | learning-ada-7-generics-and-static-overloading |
| rshares | 383362865 |
| total vote weight | 19891 |
| voter | gierit |
| weight | 14851 |
| Transaction Info | Block #33046639/Trx ea87ef206412347c1b92aeac7d33a939d6933645 |
View Raw JSON Data
{
"block": 33046639,
"op": [
"effective_comment_vote",
{
"author": "xinta",
"pending_payout": "0.000 HBD",
"permlink": "learning-ada-7-generics-and-static-overloading",
"rshares": 383362865,
"total_vote_weight": 19891,
"voter": "gierit",
"weight": 14851
}
],
"op_in_trx": 1,
"timestamp": "2019-05-19T14:38:15",
"trx_id": "ea87ef206412347c1b92aeac7d33a939d6933645",
"trx_in_block": 4,
"virtual_op": true
}gieritupvoted (100.00%) @xinta / learning-ada-7-generics-and-static-overloading2019/05/19 14:38:15
gieritupvoted (100.00%) @xinta / learning-ada-7-generics-and-static-overloading
2019/05/19 14:38:15
| author | xinta |
| permlink | learning-ada-7-generics-and-static-overloading |
| voter | gierit |
| weight | 10000 (100.00%) |
| Transaction Info | Block #33046639/Trx ea87ef206412347c1b92aeac7d33a939d6933645 |
View Raw JSON Data
{
"block": 33046639,
"op": [
"vote",
{
"author": "xinta",
"permlink": "learning-ada-7-generics-and-static-overloading",
"voter": "gierit",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-19T14:38:15",
"trx_id": "ea87ef206412347c1b92aeac7d33a939d6933645",
"trx_in_block": 4,
"virtual_op": false
}xintapublished a new post: learning-ada-7-generics-and-static-overloading2019/05/19 14:27:03
xintapublished a new post: learning-ada-7-generics-and-static-overloading
2019/05/19 14:27:03
| author | xinta |
| body |  # Generics Ada has generics. I don't know about Ada of the ancient time, and I don't care — as programmer on the edge of exploration, I don't care about old revisions of a language, unless I have to maintain old code bases. (For example I've been stuck with C++03 and couldn't use C++17 features in my everyday job code.) Other languages has generics in these modern days: Java, C++ (templates), and several others. Syntax differences apart, what's peculiar in Ada is that Ada tends to need the programmer to be explicit in many thing: most of the time he has to express in plain sight what he wants to do and how. So, Ada generics must be instantiated explicitly and you need to assign a name to them. You can do generic packages as well as generic functions and procedures. Formal parameters for the generic are typed, of course, and can be specified so that the client (the programmer using the package, procedure or function) must use the proper type. ## Generic subprograms and packages Let's roll an example: ```ada generic type T is (<>); N : in T; with function "*" (A, B : T) return T is <>; function Multiplier (X : T) return T; ``` What does it mean? We are declaring a generic function `Multiplier`, which takes a single parameter of type `T` and return something of type `T` again. The type T is ```ada type T is (<>); ``` Which simply means that `T` can be any discrete type. Discrete types are integers, modular types, and enumeration. In our little exploration of [Ada's types](https://steemit.com/ada-lang/@xinta/learning-ada-3-exploring-types) I've mentioned modular types (let's call the Ada way into unsigned integers), but didn't show an actual examples, and enumerations too. Let's recall these last two. An example of modular type could be a byte. In Ada you can define the Byte type as follow: ```ada type Byte is mod 256; ``` In modular arithmetic, the last value plus one is the first value. It is like a clock. An enumeration is, well, an enumeration. We've seen the `Character` type. Its syntax is fairly simple: ```ada type Month is (January, February, March, ...); ``` Given a certain value of an enumeration, we go to the next as shown below: ```ada Enumeration_Type'Succ (Enum_Variable); ``` Using the attribute `Prec` we go to the previous value. Back to the generics. When we'll instantiate the generic function, will use one of these kind as argument, because it is how the generic function is declared. Next line of the generic specification is ```ada N : in T; ``` This generic parameter is called `N`, is of type `T`, and looks like `in` parameter — we also say that it is, in fact, an `in` parameter. The last line of the generic specification is ```ada with function "*" (A, B : T) return T is <>; ``` We can pass functions to a generic. In this case we call this function as the binary operator `*`: it takes two T in input and spits out another T. The final `is <>` is quite interesting. It means roughly this: if you don't specify the function when you instantiate the generic, then look for a default for `*` given in the scope of where the generic has been instantiated. The function's implementation will be: ```ada function Multiplier (X : T) return T is begin return N * X; end; ``` Now let's try to instantiate this function: ```ada function Double_It is new Multiplier (Integer, 2); ``` This is how we instantiate the generic `Multiplier`, so that `T` is an `Integer` and `N` is 2. We don't give a function `*` and the surrounding scope has already one (because in fact we can alraedy multiply two integers…) Therefore we can use the `Double_It` function like this: ```ada R : Integer := Double_It (10); ``` The variable `R` will hold 20. If we try to instantiate the function with an incompatible type, we obtain a compile time error. For example, if we write ```ada function Double_It is new Multiplier (Float, 2.0); ``` the compiler stops and says: *expect discrete type in instantiation of "T", instantiation abandoned.* Let's try with this instead: ```ada type Num is (Zero, One, Two, Three, Four, Five, Six); function Double_It is new Multiplier (Num, Two); ``` There isn't any problem with the type and the value Two, but unfortunately the surrounding scope doesn't have the function `*` for that type. We can write one, like this (it must be before the instantiation): ```ada function "*" (A, B : Num) return Num is begin if Num'Pos (A) * Num'Pos (B) <= Num'Pos (Six) then return Num'Val (Num'Pos (A) * Num'Pos (B)); else return Six; end if; end; ``` Given an enumeration type E, `E'Pos (NAME)` gives the number corrisponding to the “position” of the value NAME (for Num, `Zero` has position zero, for example), and `E'Val (N)` is the opposite: it gives the value at position N. We don't need to use the operator as the name of the function. The following works perfectly: ```ada function Star_Op (A, B : Integer) return Integer is begin return A * (B + 1); end Star_Op; function Strangeness is new Multiplier (Integer, 1, Star_Op); ``` It is a good idea to use meaningful names for the generic arguments, and use them when instantiating. This clarifies the use especially when the generic arguments are more than one or two. In the given example, names are too short, likely, to be qualified as acceptable. Anyway, our instantiation can be written like this: ```ada function Strangeness is new Multiplier (T => Integer, N => 6, "*" => Star_Op); ``` In the generic function specification we should have use something more like `Value_Type` instead of `T`, and `Multiplication_Factor` instead of `N`. The following table shows several kind of formal parameters for generics: type|explanation ---|--- `type T is private`|Any *copiable*, definite type, also it doesn't need an initial value; most of the time you want to use this `type T is (<>)`|Any discrete type: integer, modular, enumeration `type T is range <>`|Any signed integer `type T is mod <>`|Any modular type `type T is delta <>`|Any non-decimal fixed-point type `type T is delta <> digits <>`|Any decimal fixed-point type `type T is digits <>`|Any floating point type `type T (<>) is private`|Any *copiable* type, definite or indefinite `type T (<>) is limited private`|Any type, copiable or not, definite or indefinite `type T (<>) is tagged private`|Any copiable, non-abstract tagged type `type T (<>) is new Parent`|Any non-abstract type derived from Parent. `type T (<>) is new Parent with private`|Any non-abstract type derived from tagged type Parent `type T (<>) is tagged limited private`|Any non-abstract tagged type, copiable or not `type T (<>) is abstract tagged private`|Any copiable tagged type, abstract or non-abstract `type T (<>) is abstract tagged limited private`|Any tagged type, abstract or not, copiable or not `type T is array (I) of E`|Any array type with index type I and elements' type E.  About types, we have just scratched the surface with a [previous lesson](https://steemit.com/ada-lang/@xinta/learning-ada-3-exploring-types). These lessons aren't meant to cover every details — for those, you need a full-featured tutorial, or dig into the sites promoting Ada, where they also [list resources](https://www.adaic.org/learn/materials/) and you can also [download the standard](http://www.ada-auth.org/arm.html) — not an easy reading, but everything's there! Here a quick, not necessarily exact, tour to make sense of the table above. Think of `<>` (the diamond) as whatever. The keyword `limited` means a type can't be copied (you can't do `A := B`), but in the context of a generic it means it can or it can't. We've seen it in the [lesson on the OO](https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm). The `tagged` type in Ada are those type on which the object orientation is built on. See [the fifth lesson](https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm). In there I've also covered the `abstract` part. In the generic, it means the type can be abstract, not that it must be abstract. The rest is mostly syntax. For example `private` means just that the generic doesn't know other details about the type, just those expressed by the rest of the clause. In the [Ada 2012 Reference Manual](http://www.ada-europe.org/manuals/LRM-2012.pdf), chapter 12 (Generic Units), you can read other examples. We can learn also a little bit of nomenclature: things like our `N` are called **formal objects**; when we have a type, it's called **formal type** — it's easy; the functions, or procedures, are called **formal subprograms**. When we “create” a specific **instance** of a generic package or subprogram, that's called **instantiation**, as you have already deduced. The types or subprograms or object of a specific instantiation are called **the actuals**. Thus, in our `Double_It`, `Integer` and `2` are the actuals. ## Standard generic package A typical usage of generics is in the containers of the Ada standard library. In these cases we have a generic package. For example *Ada.Containers.Doubly_Linked_Lists*. And we instantiate it like this: ```ada package Ints is new Ada.Containers.Doubly_Linked_Lists (Integer); ``` Now we can have lists of integers: ```ada A_List : Ints.List; ``` Don't forget that `Ints` it's an instance of a (generic) package, so it is, indeed, a package, not a type. That's why we need to write `Ints.List`. Here it is [the specifications of the generic package for the doubly linked lists](https://www.adaic.org/resources/add_content/standards/12rm/html/RM-A-18-3.html). Writing a generic package isn't very much different than writing a generic subprogram. You start with `generic`, followed by your formal types and objects and subprograms, then you can write the package as usual. ```ada generic type Element_Type is private; package Elements_List is -- ... end; ``` This could be how a custom container package begins. Another usage is shown for the IO subprograms. We have `Ada.Text_IO`, but it's `Put` works just for Strings. What about integers? Here how it can be done in code: ```ada package Int_IO is new Ada.Text_IO.Integer_IO (Integer); use Int_IO; ``` Since that lines, the subprogram `Put` (and others) is **overloaded** so that it accept an Integer as input. It is a very common need, so there are already these package that you can `with` (and `use`) when you need to output integer or others as text: ```ada with Ada.Integer_Text_IO; -- integer types with Ada.Float_Text_IO; -- float types ``` If you don't use `use`, you have to write `Ada.Integer_Text_IO.Put`; so, likely you will `use` it somewhere. Both ```ada use Ada.Integer_Text_IO; use Ada.Float_Text_IO; ``` makes visible a subprogram called `Put` (among others). That is, now `Put` is overloaded so that it can accept strings, integers and floats. # Overloading subprograms Overloading is often presented altogether with object oriented paradigm, **but it is a separated concept**. Ada had subprogram overloading *before* it embraced the object oriented paradigm! Here I talk about *overloading outside the OO world*. This is something which is done **statically**, at compile time: there's no need for runtime support. Thus it is different from *dynamic dispatching*, which works only on the first argument (explicit or implicit), i.e. on the object, to select the correct method of the correct “level” of the hierarchy of classes, and it is done at runtime. This wil be shown better in future lessons. Basically we can talk of *overloading* of subprograms when the names of several subprograms are the same, but the types of their parameters are not. Languages like C++ and Java distinguish functions or methods only by their parameters. Ada does it considering also the return value! ```C++ int do_something(int i); int do_something(double i); ``` These two C++ functions are different, but have the same name `do_something`. They return an `int`, and you **can't** add the following: ```C++ double do_something(int i); ``` This conflicts with the previous declaration. Ada thinks differently and the following is good: ```ada function Do_Something (A : Integer) return Integer; function Do_Something (A : Integer) return Float; ``` Which one will be actually called depends on the context of the call. This ```ada A : Integer := Do_Something (10); ``` will call the first version; this ```ada F : Float := Do_Something (10); ``` will call the second version, because it's the one matching the type of the returned value. You must pay attention to subtypes, though. ```ada subtype Alfa_Type is Integer range -10 .. 100; subtype Beta_Type is Integer range -101 .. -11; function Do_Something (A : Alfa_Type) return Beta_Type is begin Put_Line ("Alfa_Type returns Beta_Type"); return (if A <= 0 then A - 11 else -A); end; ``` This gives **error** at compile time (**duplicate body**), because `Alfa_Type` and `Beta_Type` are, from the point of view of the type system, integers (i.e., they are of type `Integer`, even if range restricted), and we have already covered that case! If we create a brand new type, instead, the we can do it: ```ada type Alfa_Type is new Integer range -10 .. 100; type Beta_Type is new Integer range -101 .. -11; function Do_Something (A : Alfa_Type) return Beta_Type is begin Put_Line ("Alfa_Type returns Beta_Type"); return Beta_Type (if A <= 0 then A - 11 else -A); end; ``` I've changed `subtype ... Integer ...` in `type ... new Integer`, and then we need an explicit conversion in the return statement. Now we can play with overloading `Do_Something` with the combination of `Alfa_Type` and `Beta_Type` and anything else! Procedure can be overloaded as well, of course. ```ada type Salute_Type is (Hello, Bye); type Work_Type is (Light, Heavy, Routine); procedure Do_Action (A : Salute_Type); -- (A) procedure Do_Action (A : Work_Type); -- (B) -- ... implementation ... -- ... use example ... Do_Action (Hello); -- call (A) Do_Action (Heavy); -- call (B) ``` # Code As usual I am putting some test code [on github](https://github.com/xeenta/learning-ada). For this lesson, take a look at [007](https://github.com/xeenta/learning-ada/tree/master/src/007). - [dll.adb](https://github.com/xeenta/learning-ada/blob/master/src/007/dll.adb): example of use of the standard generic package `Doubly_Linked_Lists`. It also shows the syntax `for E of L` for iterating over the elements of a container, and alternate use of the *dot* syntax already described in [lesson 5](https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm) in *A matter of syntax*. - [generics.adb](https://github.com/xeenta/learning-ada/blob/master/src/007/generics.adb): playing with a generic function, overloading of instances of a generic function, instantiation of generic package, and you can learn also something about enumeration - [overlo.adb](https://github.com/xeenta/learning-ada/blob/master/src/007/overlo.adb): properly on overloading of subprograms **outside the OO world** (static overloading), addressing the quirk with subtypes, and showing that the overloading is done considering the return type too. # Previous lessons In order to make it easier to track back to older lessons, here a list of the current lessons you can read. - [Hello world, basic greeter package, citing contract based programming, aspects, SPARK…](https://steemit.com/ada-lang/@xinta/learning-ada-1-hello-world-basic-greeter-package-citing-contract-based-programming-aspects-spark) - [more on packages, naming conventions, and bits of types](https://steemit.com/ada-lang/@xinta/learning-ada-2-more-on-packages-naming-conventions-and-bits-of-types) - [exploring types](https://steemit.com/ada-lang/@xinta/learning-ada-3-exploring-types) - [predicates](https://steemit.com/ada-lang/@xinta/learning-ada-4-predicates) - [object oriented paradigm](https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm) - [tasking](https://steemit.com/programming/@xinta/learning-ada-6-tasking) # Useful links - [Ada Programming wikibook](https://en.wikibooks.org/wiki/Ada_Programming) - [Ada information clearing house](https://www.adaic.org/) - [Ada conformity assessment authority](http://www.ada-auth.org/) - [Ada Europe](http://www.ada-europe.org/) - [Adacore](https://www.adacore.com/) is a company promoting Ada. Check the [GNAT Community Edition](https://www.adacore.com/download) and their [learn Ada subdomain](https://learn.adacore.com/) |
| json metadata | {"tags":["ada-lang","programming","learning"],"image":["https://cdn.steemitimages.com/DQmRcXPVu9xhwNNPxFJfwtfvSSp38xQYnms5x2oekTYN4VF/007-title.png","https://cdn.steemitimages.com/DQmW6c3hTcvyn6tBVwWenVBh9rHu1nxNxtt94LJREG6z2LH/ada-formal-type-generics.png"],"links":["https://steemit.com/ada-lang/@xinta/learning-ada-3-exploring-types","https://www.adaic.org/learn/materials/","http://www.ada-auth.org/arm.html","https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm","http://www.ada-europe.org/manuals/LRM-2012.pdf","https://www.adaic.org/resources/add_content/standards/12rm/html/RM-A-18-3.html","https://github.com/xeenta/learning-ada","https://github.com/xeenta/learning-ada/tree/master/src/007","https://github.com/xeenta/learning-ada/blob/master/src/007/dll.adb","https://github.com/xeenta/learning-ada/blob/master/src/007/generics.adb","https://github.com/xeenta/learning-ada/blob/master/src/007/overlo.adb","https://steemit.com/ada-lang/@xinta/learning-ada-1-hello-world-basic-greeter-package-citing-contract-based-programming-aspects-spark","https://steemit.com/ada-lang/@xinta/learning-ada-2-more-on-packages-naming-conventions-and-bits-of-types","https://steemit.com/ada-lang/@xinta/learning-ada-4-predicates","https://steemit.com/programming/@xinta/learning-ada-6-tasking","https://en.wikibooks.org/wiki/Ada_Programming","https://www.adaic.org/","http://www.ada-auth.org/","http://www.ada-europe.org/","https://www.adacore.com/","https://www.adacore.com/download","https://learn.adacore.com/"],"app":"steemit/0.1","format":"markdown"} |
| parent author | |
| parent permlink | ada-lang |
| permlink | learning-ada-7-generics-and-static-overloading |
| title | Learning Ada 7: generics and (static) overloading |
| Transaction Info | Block #33046415/Trx 6441fbb4f1ff62fb2677ca95eb2475b2c8940b5a |
View Raw JSON Data
{
"block": 33046415,
"op": [
"comment",
{
"author": "xinta",
"body": "\n\n\n# Generics\n\nAda has generics. I don't know about Ada of the ancient time, and I don't care — as programmer on the edge of exploration, I don't care about old revisions of a language, unless I have to maintain old code bases. (For example I've been stuck with C++03 and couldn't use C++17 features in my everyday job code.)\n\nOther languages has generics in these modern days: Java, C++ (templates), and several others.\n\nSyntax differences apart, what's peculiar in Ada is that Ada tends to need the programmer to be explicit in many thing: most of the time he has to express in plain sight what he wants to do and how.\n\nSo, Ada generics must be instantiated explicitly and you need to assign a name to them.\n\nYou can do generic packages as well as generic functions and procedures.\n\nFormal parameters for the generic are typed, of course, and can be specified so that the client (the programmer using the package, procedure or function) must use the proper type.\n\n\n## Generic subprograms and packages\n\nLet's roll an example:\n\n```ada\n generic\n type T is (<>);\n N : in T;\n with function \"*\" (A, B : T) return T is <>;\n function Multiplier (X : T) return T;\n```\n\nWhat does it mean?\n\nWe are declaring a generic function `Multiplier`, which takes a single parameter of type `T` and return something of type `T` again.\n\nThe type T is\n\n```ada\ntype T is (<>);\n```\n\nWhich simply means that `T` can be any discrete type. Discrete types are integers, modular types, and enumeration. In our little exploration of [Ada's types](https://steemit.com/ada-lang/@xinta/learning-ada-3-exploring-types) I've mentioned modular types (let's call the Ada way into unsigned integers), but didn't show an actual examples, and enumerations too.\n\nLet's recall these last two.\n\nAn example of modular type could be a byte. In Ada you can define the Byte type as follow:\n\n```ada\ntype Byte is mod 256;\n```\n\nIn modular arithmetic, the last value plus one is the first value. It is like a clock.\n\nAn enumeration is, well, an enumeration. We've seen the `Character` type. Its syntax is fairly simple:\n\n```ada\ntype Month is (January, February, March, ...);\n```\n\nGiven a certain value of an enumeration, we go to the next as shown below:\n\n```ada\nEnumeration_Type'Succ (Enum_Variable);\n```\n\nUsing the attribute `Prec` we go to the previous value.\n\nBack to the generics.\n\nWhen we'll instantiate the generic function, will use one of these kind as argument, because it is how the generic function is declared.\n\nNext line of the generic specification is\n\n```ada\nN : in T;\n```\n\nThis generic parameter is called `N`, is of type `T`, and looks like `in` parameter — we also say that it is, in fact, an `in` parameter.\n\nThe last line of the generic specification is\n\n```ada\nwith function \"*\" (A, B : T) return T is <>;\n```\n\nWe can pass functions to a generic. In this case we call this function as the binary operator `*`: it takes two T in input and spits out another T. The final `is <>` is quite interesting. It means roughly this: if you don't specify the function when you instantiate the generic, then look for a default for `*` given in the scope of where the generic has been instantiated.\n\nThe function's implementation will be:\n\n```ada\n function Multiplier (X : T) return T is\n begin\n return N * X;\n end;\n```\n\nNow let's try to instantiate this function:\n\n```ada\n function Double_It is new Multiplier (Integer, 2);\n```\n\nThis is how we instantiate the generic `Multiplier`, so that `T` is an `Integer` and `N` is 2. We don't give a function `*` and the surrounding scope has already one (because in fact we can alraedy multiply two integers…)\n\nTherefore we can use the `Double_It` function like this:\n\n```ada\n R : Integer := Double_It (10);\n```\n\nThe variable `R` will hold 20.\n\nIf we try to instantiate the function with an incompatible type, we obtain a compile time error. For example, if we write\n\n```ada\nfunction Double_It is new Multiplier (Float, 2.0);\n```\n\nthe compiler stops and says: *expect discrete type in instantiation of \"T\", instantiation abandoned.*\n\nLet's try with this instead:\n\n```ada\n type Num is (Zero, One, Two, Three, Four, Five, Six);\n function Double_It is new Multiplier (Num, Two);\n```\n\nThere isn't any problem with the type and the value Two, but unfortunately the surrounding scope doesn't have the function `*` for that type.\n\nWe can write one, like this (it must be before the instantiation):\n\n```ada\n function \"*\" (A, B : Num) return Num is\n begin\n if Num'Pos (A) * Num'Pos (B) <= Num'Pos (Six) then\n return Num'Val (Num'Pos (A) * Num'Pos (B));\n else\n return Six;\n end if;\n end;\n```\n\nGiven an enumeration type E, `E'Pos (NAME)` gives the number corrisponding to the “position” of the value NAME (for Num, `Zero` has position zero, for example), and `E'Val (N)` is the opposite: it gives the value at position N.\n\nWe don't need to use the operator as the name of the function. The following works perfectly:\n\n```ada\n function Star_Op (A, B : Integer) return Integer is\n begin\n return A * (B + 1);\n end Star_Op;\n \n function Strangeness is new Multiplier (Integer, 1, Star_Op);\n```\n\nIt is a good idea to use meaningful names for the generic arguments, and use them when instantiating. This clarifies the use especially when the generic arguments are more than one or two.\n\nIn the given example, names are too short, likely, to be qualified as acceptable. Anyway, our instantiation can be written like this:\n\n```ada\n function Strangeness is new Multiplier (T => Integer, \n N => 6, \n \"*\" => Star_Op);\n```\n\nIn the generic function specification we should have use something more like `Value_Type` instead of `T`, and `Multiplication_Factor` instead of `N`.\n\nThe following table shows several kind of formal parameters for generics:\n\n\ntype|explanation\n---|---\n`type T is private`|Any *copiable*, definite type, also it doesn't need an initial value; most of the time you want to use this\n`type T is (<>)`|Any discrete type: integer, modular, enumeration\n`type T is range <>`|Any signed integer\n`type T is mod <>`|Any modular type\n`type T is delta <>`|Any non-decimal fixed-point type\n`type T is delta <> digits <>`|Any decimal fixed-point type\n`type T is digits <>`|Any floating point type\n`type T (<>) is private`|Any *copiable* type, definite or indefinite\n`type T (<>) is limited private`|Any type, copiable or not, definite or indefinite\n`type T (<>) is tagged private`|Any copiable, non-abstract tagged type\n`type T (<>) is new Parent`|Any non-abstract type derived from Parent.\n`type T (<>) is new Parent with private`|Any non-abstract type derived from tagged type Parent\n`type T (<>) is tagged limited private`|Any non-abstract tagged type, copiable or not\n`type T (<>) is abstract tagged private`|Any copiable tagged type, abstract or non-abstract\n`type T (<>) is abstract tagged limited private`|Any tagged type, abstract or not, copiable or not\n`type T is array (I) of E`|Any array type with index type I and elements' type E.\n\n\n\nAbout types, we have just scratched the surface with a [previous lesson](https://steemit.com/ada-lang/@xinta/learning-ada-3-exploring-types). These lessons aren't meant to cover every details — for those, you need a full-featured tutorial, or dig into the sites promoting Ada, where they also [list resources](https://www.adaic.org/learn/materials/) and you can also [download the standard](http://www.ada-auth.org/arm.html) — not an easy reading, but everything's there!\n\nHere a quick, not necessarily exact, tour to make sense of the table above.\n\nThink of `<>` (the diamond) as whatever.\n\nThe keyword `limited` means a type can't be copied (you can't do `A := B`), but in the context of a generic it means it can or it can't. We've seen it in the [lesson on the OO](https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm).\n\nThe `tagged` type in Ada are those type on which the object orientation is built on. See [the fifth lesson](https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm). In there I've also covered the `abstract` part. In the generic, it means the type can be abstract, not that it must be abstract.\n\nThe rest is mostly syntax. For example `private` means just that the generic doesn't know other details about the type, just those expressed by the rest of the clause.\n\nIn the [Ada 2012 Reference Manual](http://www.ada-europe.org/manuals/LRM-2012.pdf), chapter 12 (Generic Units), you can read other examples.\n\nWe can learn also a little bit of nomenclature: things like our `N` are called **formal objects**; when we have a type, it's called **formal type** — it's easy; the functions, or procedures, are called **formal subprograms**. When we “create” a specific **instance** of a generic package or subprogram, that's called **instantiation**, as you have already deduced.\n\nThe types or subprograms or object of a specific instantiation are called **the actuals**. Thus, in our `Double_It`, `Integer` and `2` are the actuals.\n\n## Standard generic package\n\nA typical usage of generics is in the containers of the Ada standard library. In these cases we have a generic package. For example *Ada.Containers.Doubly_Linked_Lists*. And we instantiate it like this:\n\n```ada\npackage Ints is new Ada.Containers.Doubly_Linked_Lists (Integer);\n```\n\nNow we can have lists of integers:\n\n```ada\nA_List : Ints.List;\n```\n\nDon't forget that `Ints` it's an instance of a (generic) package, so it is, indeed, a package, not a type. That's why we need to write `Ints.List`.\n\nHere it is [the specifications of the generic package for the doubly linked lists](https://www.adaic.org/resources/add_content/standards/12rm/html/RM-A-18-3.html).\n\nWriting a generic package isn't very much different than writing a generic subprogram. You start with `generic`, followed by your formal types and objects and subprograms, then you can write the package as usual.\n\n```ada\ngeneric\n type Element_Type is private;\npackage Elements_List is\n -- ...\nend;\n```\n\nThis could be how a custom container package begins.\n\nAnother usage is shown for the IO subprograms. We have `Ada.Text_IO`, but it's `Put` works just for Strings. What about integers?\n\nHere how it can be done in code:\n\n```ada\n package Int_IO is new Ada.Text_IO.Integer_IO (Integer);\n use Int_IO;\n```\n\nSince that lines, the subprogram `Put` (and others) is **overloaded** so that it accept an Integer as input.\n\nIt is a very common need, so there are already these package that you can `with` (and `use`) when you need to output integer or others as text:\n\n```ada\nwith Ada.Integer_Text_IO; -- integer types\nwith Ada.Float_Text_IO; -- float types\n```\n\nIf you don't use `use`, you have to write `Ada.Integer_Text_IO.Put`; so, likely you will `use` it somewhere. \n\nBoth\n\n```ada\nuse Ada.Integer_Text_IO;\nuse Ada.Float_Text_IO;\n```\n\nmakes visible a subprogram called `Put` (among others). That is, now `Put` is overloaded so that it can accept strings, integers and floats.\n\n\n# Overloading subprograms\n\nOverloading is often presented altogether with object oriented paradigm, **but it is a separated concept**. Ada had subprogram overloading *before* it embraced the object oriented paradigm!\n\nHere I talk about *overloading outside the OO world*. This is something which is done **statically**, at compile time: there's no need for runtime support. Thus it is different from *dynamic dispatching*, which works only on the first argument (explicit or implicit), i.e. on the object, to select the correct method of the correct “level” of the hierarchy of classes, and it is done at runtime. This wil be shown better in future lessons.\n\nBasically we can talk of *overloading* of subprograms when the names of several subprograms are the same, but the types of their parameters are not.\n\nLanguages like C++ and Java distinguish functions or methods only by their parameters. Ada does it considering also the return value!\n\n```C++\nint do_something(int i);\nint do_something(double i);\n```\n\nThese two C++ functions are different, but have the same name `do_something`. They return an `int`, and you **can't** add the following:\n\n```C++\ndouble do_something(int i);\n```\n\nThis conflicts with the previous declaration.\n\nAda thinks differently and the following is good:\n\n```ada\n function Do_Something (A : Integer) return Integer;\n function Do_Something (A : Integer) return Float;\n```\n\nWhich one will be actually called depends on the context of the call.\n\nThis\n\n```ada\nA : Integer := Do_Something (10);\n```\n\nwill call the first version; this\n\n```ada\nF : Float := Do_Something (10);\n```\n\nwill call the second version, because it's the one matching the type of the returned value.\n\nYou must pay attention to subtypes, though.\n\n```ada\n subtype Alfa_Type is Integer range -10 .. 100;\n subtype Beta_Type is Integer range -101 .. -11;\n \n function Do_Something (A : Alfa_Type) return Beta_Type is\n begin\n Put_Line (\"Alfa_Type returns Beta_Type\");\n return (if A <= 0 then A - 11 else -A);\n end;\n```\n\nThis gives **error** at compile time (**duplicate body**), because `Alfa_Type` and `Beta_Type` are, from the point of view of the type system, integers (i.e., they are of type `Integer`, even if range restricted), and we have already covered that case!\n\nIf we create a brand new type, instead, the we can do it:\n\n```ada\n type Alfa_Type is new Integer range -10 .. 100;\n type Beta_Type is new Integer range -101 .. -11;\n \n function Do_Something (A : Alfa_Type) return Beta_Type is\n begin\n Put_Line (\"Alfa_Type returns Beta_Type\");\n return Beta_Type (if A <= 0 then A - 11 else -A);\n end;\n```\n\nI've changed `subtype ... Integer ...` in `type ... new Integer`, and then we need an explicit conversion in the return statement. Now we can play with overloading `Do_Something` with the combination of `Alfa_Type` and `Beta_Type` and anything else!\n\nProcedure can be overloaded as well, of course.\n\n```ada\n type Salute_Type is (Hello, Bye);\n type Work_Type is (Light, Heavy, Routine);\n \n procedure Do_Action (A : Salute_Type); -- (A)\n procedure Do_Action (A : Work_Type); -- (B)\n \n -- ... implementation ...\n \n -- ... use example ...\n Do_Action (Hello); -- call (A)\n Do_Action (Heavy); -- call (B)\n```\n\n\n# Code\n\nAs usual I am putting some test code [on github](https://github.com/xeenta/learning-ada).\n\nFor this lesson, take a look at [007](https://github.com/xeenta/learning-ada/tree/master/src/007).\n\n- [dll.adb](https://github.com/xeenta/learning-ada/blob/master/src/007/dll.adb): example of use of the standard generic package `Doubly_Linked_Lists`. It also shows the syntax `for E of L` for iterating over the elements of a container, and alternate use of the *dot* syntax already described in [lesson 5](https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm) in *A matter of syntax*.\n- [generics.adb](https://github.com/xeenta/learning-ada/blob/master/src/007/generics.adb): playing with a generic function, overloading of instances of a generic function, instantiation of generic package, and you can learn also something about enumeration\n- [overlo.adb](https://github.com/xeenta/learning-ada/blob/master/src/007/overlo.adb): properly on overloading of subprograms **outside the OO world** (static overloading), addressing the quirk with subtypes, and showing that the overloading is done considering the return type too.\n\n\n# Previous lessons\n\nIn order to make it easier to track back to older lessons, here a list of the current lessons you can read.\n\n- [Hello world, basic greeter package, citing contract based programming, aspects, SPARK…](https://steemit.com/ada-lang/@xinta/learning-ada-1-hello-world-basic-greeter-package-citing-contract-based-programming-aspects-spark)\n- [more on packages, naming conventions, and bits of types](https://steemit.com/ada-lang/@xinta/learning-ada-2-more-on-packages-naming-conventions-and-bits-of-types)\n- [exploring types](https://steemit.com/ada-lang/@xinta/learning-ada-3-exploring-types)\n- [predicates](https://steemit.com/ada-lang/@xinta/learning-ada-4-predicates)\n- [object oriented paradigm](https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm)\n- [tasking](https://steemit.com/programming/@xinta/learning-ada-6-tasking)\n\n\n# Useful links\n\n- [Ada Programming wikibook](https://en.wikibooks.org/wiki/Ada_Programming)\n- [Ada information clearing house](https://www.adaic.org/)\n- [Ada conformity assessment authority](http://www.ada-auth.org/)\n- [Ada Europe](http://www.ada-europe.org/)\n- [Adacore](https://www.adacore.com/) is a company promoting Ada. Check the [GNAT Community Edition](https://www.adacore.com/download) and their [learn Ada subdomain](https://learn.adacore.com/)",
"json_metadata": "{\"tags\":[\"ada-lang\",\"programming\",\"learning\"],\"image\":[\"https://cdn.steemitimages.com/DQmRcXPVu9xhwNNPxFJfwtfvSSp38xQYnms5x2oekTYN4VF/007-title.png\",\"https://cdn.steemitimages.com/DQmW6c3hTcvyn6tBVwWenVBh9rHu1nxNxtt94LJREG6z2LH/ada-formal-type-generics.png\"],\"links\":[\"https://steemit.com/ada-lang/@xinta/learning-ada-3-exploring-types\",\"https://www.adaic.org/learn/materials/\",\"http://www.ada-auth.org/arm.html\",\"https://steemit.com/ada-lang/@xinta/learning-ada-5-object-oriented-paradigm\",\"http://www.ada-europe.org/manuals/LRM-2012.pdf\",\"https://www.adaic.org/resources/add_content/standards/12rm/html/RM-A-18-3.html\",\"https://github.com/xeenta/learning-ada\",\"https://github.com/xeenta/learning-ada/tree/master/src/007\",\"https://github.com/xeenta/learning-ada/blob/master/src/007/dll.adb\",\"https://github.com/xeenta/learning-ada/blob/master/src/007/generics.adb\",\"https://github.com/xeenta/learning-ada/blob/master/src/007/overlo.adb\",\"https://steemit.com/ada-lang/@xinta/learning-ada-1-hello-world-basic-greeter-package-citing-contract-based-programming-aspects-spark\",\"https://steemit.com/ada-lang/@xinta/learning-ada-2-more-on-packages-naming-conventions-and-bits-of-types\",\"https://steemit.com/ada-lang/@xinta/learning-ada-4-predicates\",\"https://steemit.com/programming/@xinta/learning-ada-6-tasking\",\"https://en.wikibooks.org/wiki/Ada_Programming\",\"https://www.adaic.org/\",\"http://www.ada-auth.org/\",\"http://www.ada-europe.org/\",\"https://www.adacore.com/\",\"https://www.adacore.com/download\",\"https://learn.adacore.com/\"],\"app\":\"steemit/0.1\",\"format\":\"markdown\"}",
"parent_author": "",
"parent_permlink": "ada-lang",
"permlink": "learning-ada-7-generics-and-static-overloading",
"title": "Learning Ada 7: generics and (static) overloading"
}
],
"op_in_trx": 0,
"timestamp": "2019-05-19T14:27:03",
"trx_id": "6441fbb4f1ff62fb2677ca95eb2475b2c8940b5a",
"trx_in_block": 3,
"virtual_op": false
}xintaclaimed reward balance: 0.015 HBD, 0.069 HP2019/05/18 23:34:06
xintaclaimed reward balance: 0.015 HBD, 0.069 HP
2019/05/18 23:34:06
| account | xinta |
| reward hbd | 0.015 HBD |
| reward hive | 0.000 HIVE |
| reward vests | 111.680521 VESTS |
| Transaction Info | Block #33028564/Trx 7fb29bd296d06db9fb0a72abc908ae2ebd9a4a42 |
View Raw JSON Data
{
"block": 33028564,
"op": [
"claim_reward_balance",
{
"account": "xinta",
"reward_hbd": "0.015 HBD",
"reward_hive": "0.000 HIVE",
"reward_vests": "111.680521 VESTS"
}
],
"op_in_trx": 0,
"timestamp": "2019-05-18T23:34:06",
"trx_id": "7fb29bd296d06db9fb0a72abc908ae2ebd9a4a42",
"trx_in_block": 12,
"virtual_op": false
}xintaupdated payout for learning-ada-6-tasking2019/05/18 09:33:18
xintaupdated payout for learning-ada-6-tasking
2019/05/18 09:33:18
| author | xinta |
| permlink | learning-ada-6-tasking |
| Transaction Info | Block #33011759/Virtual Operation 4294967295:5 |
View Raw JSON Data
{
"block": 33011759,
"op": [
"comment_payout_update",
{
"author": "xinta",
"permlink": "learning-ada-6-tasking"
}
],
"op_in_trx": 5,
"timestamp": "2019-05-18T09:33:18",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}xintareceived 0.042 HBD reward share for learning-ada-6-tasking2019/05/18 09:33:18
xintareceived 0.042 HBD reward share for learning-ada-6-tasking
2019/05/18 09:33:18
| author | xinta |
| author rewards | 89 |
| beneficiary payout value | 0.000 HBD |
| curator payout value | 0.009 HBD |
| payout | 0.042 HBD |
| permlink | learning-ada-6-tasking |
| total payout value | 0.031 HBD |
| Transaction Info | Block #33011759/Virtual Operation 4294967295:4 |
View Raw JSON Data
{
"block": 33011759,
"op": [
"comment_reward",
{
"author": "xinta",
"author_rewards": 89,
"beneficiary_payout_value": "0.000 HBD",
"curator_payout_value": "0.009 HBD",
"payout": "0.042 HBD",
"permlink": "learning-ada-6-tasking",
"total_payout_value": "0.031 HBD"
}
],
"op_in_trx": 4,
"timestamp": "2019-05-18T09:33:18",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}xintareceived 0.015 HBD, 0.055 HP author reward for @xinta / learning-ada-6-tasking2019/05/18 09:33:18
xintareceived 0.015 HBD, 0.055 HP author reward for @xinta / learning-ada-6-tasking
2019/05/18 09:33:18
| author | xinta |
| curators vesting payout | 53.845727 VESTS |
| hbd payout | 0.015 HBD |
| hive payout | 0.000 HIVE |
| payout must be claimed | true |
| permlink | learning-ada-6-tasking |
| vesting payout | 89.742878 VESTS |
| Transaction Info | Block #33011759/Virtual Operation 4294967295:3 |
View Raw JSON Data
{
"block": 33011759,
"op": [
"author_reward",
{
"author": "xinta",
"curators_vesting_payout": "53.845727 VESTS",
"hbd_payout": "0.015 HBD",
"hive_payout": "0.000 HIVE",
"payout_must_be_claimed": true,
"permlink": "learning-ada-6-tasking",
"vesting_payout": "89.742878 VESTS"
}
],
"op_in_trx": 3,
"timestamp": "2019-05-18T09:33:18",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}xintareceived 0.011 HP curation reward for @zakia / cathedral-of-milan-italy2019/05/18 08:46:03
xintareceived 0.011 HP curation reward for @zakia / cathedral-of-milan-italy
2019/05/18 08:46:03
| author | zakia |
| curator | xinta |
| payout must be claimed | true |
| permlink | cathedral-of-milan-italy |
| reward | 17.948610 VESTS |
| Transaction Info | Block #33010815/Virtual Operation 4294967295:7 |
View Raw JSON Data
{
"block": 33010815,
"op": [
"curation_reward",
{
"author": "zakia",
"curator": "xinta",
"payout_must_be_claimed": true,
"permlink": "cathedral-of-milan-italy",
"reward": "17.948610 VESTS"
}
],
"op_in_trx": 7,
"timestamp": "2019-05-18T08:46:03",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}xintareceived 0.002 HP curation reward for @drifter1 / electronic-circuit-simulation-static-analysis-implementation-part-1-python2019/05/16 10:03:18
xintareceived 0.002 HP curation reward for @drifter1 / electronic-circuit-simulation-static-analysis-implementation-part-1-python
2019/05/16 10:03:18
| author | drifter1 |
| curator | xinta |
| payout must be claimed | true |
| permlink | electronic-circuit-simulation-static-analysis-implementation-part-1-python |
| reward | 3.989033 VESTS |
| Transaction Info | Block #32954805/Virtual Operation 4294967295:90 |
View Raw JSON Data
{
"block": 32954805,
"op": [
"curation_reward",
{
"author": "drifter1",
"curator": "xinta",
"payout_must_be_claimed": true,
"permlink": "electronic-circuit-simulation-static-analysis-implementation-part-1-python",
"reward": "3.989033 VESTS"
}
],
"op_in_trx": 90,
"timestamp": "2019-05-16T10:03:18",
"trx_id": "0000000000000000000000000000000000000000",
"trx_in_block": 4294967295,
"virtual_op": true
}teameffective vote applied for @xinta / learning-ada-6-tasking2019/05/11 09:50:12
teameffective vote applied for @xinta / learning-ada-6-tasking
2019/05/11 09:50:12
| author | xinta |
| pending payout | 0.036 HBD |
| permlink | learning-ada-6-tasking |
| rshares | 80173477549 |
| total vote weight | 284647 |
| voter | team |
| weight | 265945 |
| Transaction Info | Block #32810617/Trx af4bda8b270afe2447dd90df307e6c51bdaf7b50 |
View Raw JSON Data
{
"block": 32810617,
"op": [
"effective_comment_vote",
{
"author": "xinta",
"pending_payout": "0.036 HBD",
"permlink": "learning-ada-6-tasking",
"rshares": 80173477549,
"total_vote_weight": 284647,
"voter": "team",
"weight": 265945
}
],
"op_in_trx": 1,
"timestamp": "2019-05-11T09:50:12",
"trx_id": "af4bda8b270afe2447dd90df307e6c51bdaf7b50",
"trx_in_block": 1,
"virtual_op": true
}teamupvoted (10.00%) @xinta / learning-ada-6-tasking2019/05/11 09:50:12
teamupvoted (10.00%) @xinta / learning-ada-6-tasking
2019/05/11 09:50:12
| author | xinta |
| permlink | learning-ada-6-tasking |
| voter | team |
| weight | 1000 (10.00%) |
| Transaction Info | Block #32810617/Trx af4bda8b270afe2447dd90df307e6c51bdaf7b50 |
View Raw JSON Data
{
"block": 32810617,
"op": [
"vote",
{
"author": "xinta",
"permlink": "learning-ada-6-tasking",
"voter": "team",
"weight": 1000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-11T09:50:12",
"trx_id": "af4bda8b270afe2447dd90df307e6c51bdaf7b50",
"trx_in_block": 1,
"virtual_op": false
}bukilandeffective vote applied for @xinta / learning-ada-6-tasking2019/05/11 09:40:36
bukilandeffective vote applied for @xinta / learning-ada-6-tasking
2019/05/11 09:40:36
| author | xinta |
| pending payout | 0.000 HBD |
| permlink | learning-ada-6-tasking |
| rshares | 344399752 |
| total vote weight | 18702 |
| voter | bukiland |
| weight | 9039 (90.39%) |
| Transaction Info | Block #32810425/Trx 6687122a86c2b447b6322826a0b57e95c637d814 |
View Raw JSON Data
{
"block": 32810425,
"op": [
"effective_comment_vote",
{
"author": "xinta",
"pending_payout": "0.000 HBD",
"permlink": "learning-ada-6-tasking",
"rshares": 344399752,
"total_vote_weight": 18702,
"voter": "bukiland",
"weight": 9039
}
],
"op_in_trx": 1,
"timestamp": "2019-05-11T09:40:36",
"trx_id": "6687122a86c2b447b6322826a0b57e95c637d814",
"trx_in_block": 12,
"virtual_op": true
}bukilandupvoted (1.00%) @xinta / learning-ada-6-tasking2019/05/11 09:40:36
bukilandupvoted (1.00%) @xinta / learning-ada-6-tasking
2019/05/11 09:40:36
| author | xinta |
| permlink | learning-ada-6-tasking |
| voter | bukiland |
| weight | 100 (1.00%) |
| Transaction Info | Block #32810425/Trx 6687122a86c2b447b6322826a0b57e95c637d814 |
View Raw JSON Data
{
"block": 32810425,
"op": [
"vote",
{
"author": "xinta",
"permlink": "learning-ada-6-tasking",
"voter": "bukiland",
"weight": 100
}
],
"op_in_trx": 0,
"timestamp": "2019-05-11T09:40:36",
"trx_id": "6687122a86c2b447b6322826a0b57e95c637d814",
"trx_in_block": 12,
"virtual_op": false
}2019/05/11 09:36:48
2019/05/11 09:36:48
| id | follow |
| json | ["follow",{"follower":"xinta","following":"liondani","what":["blog"]}] |
| required auths | [] |
| required posting auths | ["xinta"] |
| Transaction Info | Block #32810349/Trx 0ea40b059b6927ef9fe5d5ec9337726217f041f0 |
View Raw JSON Data
{
"block": 32810349,
"op": [
"custom_json",
{
"id": "follow",
"json": "[\"follow\",{\"follower\":\"xinta\",\"following\":\"liondani\",\"what\":[\"blog\"]}]",
"required_auths": [],
"required_posting_auths": [
"xinta"
]
}
],
"op_in_trx": 0,
"timestamp": "2019-05-11T09:36:48",
"trx_id": "0ea40b059b6927ef9fe5d5ec9337726217f041f0",
"trx_in_block": 13,
"virtual_op": false
}xintaupvoted (100.00%) @rt-international / welcome-to-rt2019/05/11 09:36:15
xintaupvoted (100.00%) @rt-international / welcome-to-rt
2019/05/11 09:36:15
| author | rt-international |
| permlink | welcome-to-rt |
| voter | xinta |
| weight | 10000 (100.00%) |
| Transaction Info | Block #32810338/Trx ee65dd61e57d93b81e484d4eb31f6aeb844af536 |
View Raw JSON Data
{
"block": 32810338,
"op": [
"vote",
{
"author": "rt-international",
"permlink": "welcome-to-rt",
"voter": "xinta",
"weight": 10000
}
],
"op_in_trx": 0,
"timestamp": "2019-05-11T09:36:15",
"trx_id": "ee65dd61e57d93b81e484d4eb31f6aeb844af536",
"trx_in_block": 15,
"virtual_op": false
}steeming-hoteffective vote applied for @xinta / learning-ada-6-tasking2019/05/11 09:35:18
steeming-hoteffective vote applied for @xinta / learning-ada-6-tasking
2019/05/11 09:35:18
| author | xinta |
| pending payout | 0.000 HBD |
| permlink | learning-ada-6-tasking |
| rshares | 0 |
| total vote weight | 0 |
| voter | steeming-hot |
| weight | 0 (0.00%) |
| Transaction Info | Block #32810319/Trx 531e64de1a01ee5784d2f2b2dcd57715f681e986 |
View Raw JSON Data
{
"block": 32810319,
"op": [
"effective_comment_vote",
{
"author": "xinta",
"pending_payout": "0.000 HBD",
"permlink": "learning-ada-6-tasking",
"rshares": 0,
"total_vote_weight": 0,
"voter": "steeming-hot",
"weight": 0
}
],
"op_in_trx": 1,
"timestamp": "2019-05-11T09:35:18",
"trx_id": "531e64de1a01ee5784d2f2b2dcd57715f681e986",
"trx_in_block": 7,
"virtual_op": true
}Manabar
Voting Power100.00%
Downvote Power100.00%
Resource Credits100.00%
Reputation Progress0.00%
{
"voting_manabar": {
"current_mana": 455478993728,
"last_update_time": 1571166114
},
"downvote_manabar": {
"current_mana": 118553158008,
"last_update_time": 1571166114
},
"rc_account": {
"account": "xinta",
"delegated_rc": 0,
"max_rc": 476233381005,
"max_rc_creation_adjustment": {
"amount": "2020748973",
"nai": "@@000000037",
"precision": 6
},
"rc_manabar": {
"current_mana": 476084326050,
"last_update_time": 1571166114
},
"received_delegated_rc": 0
}
}Account Metadata
| POSTING JSON METADATA | |
| profile | {"profile_image":"https://cdn.steemitimages.com/DQmfYmMpAQ4fJrarpChXrWMZ8aNkCSVZAG8Zv8SZNyRPZX3/rosa.png","name":"Xinta","about":"Living a live one step a time | Software Developer | Writer | Whatever","location":"Italy"} |
| JSON METADATA | |
| profile | {"profile_image":"https://cdn.steemitimages.com/DQmfYmMpAQ4fJrarpChXrWMZ8aNkCSVZAG8Zv8SZNyRPZX3/rosa.png","name":"Xinta","about":"Living a live one step a time | Software Developer | Writer | Whatever","location":"Italy"} |
{
"posting_json_metadata": {
"profile": {
"profile_image": "https://cdn.steemitimages.com/DQmfYmMpAQ4fJrarpChXrWMZ8aNkCSVZAG8Zv8SZNyRPZX3/rosa.png",
"name": "Xinta",
"about": "Living a live one step a time | Software Developer | Writer | Whatever",
"location": "Italy"
}
},
"json_metadata": {
"profile": {
"profile_image": "https://cdn.steemitimages.com/DQmfYmMpAQ4fJrarpChXrWMZ8aNkCSVZAG8Zv8SZNyRPZX3/rosa.png",
"name": "Xinta",
"about": "Living a live one step a time | Software Developer | Writer | Whatever",
"location": "Italy"
}
}
}Auth Keys
Owner
Single Signature
Public Keys
STM5k9rRVsDr4UGdP7wBvK2o65MDGvLgFsCsDmLP1zrZH8gruhM6Y1/1
Active
Single Signature
Public Keys
STM8cFvB8TvMvnXNfAxX3EZnZGM1M2iWVpRU67TA1sQb855DbiBfj1/1
Posting
Single Signature
Public Keys
STM76KqtUaSRWjuivE9SFSN2TSeoXJ1q6VEiTnA4bU2i4jwemp6H11/1
Memo
STM6vPjoyZ1hj7UTtFJSe7WYp9YpkNw9ZtM8vLZSs7i61ayh6CnkS
{
"owner": {
"account_auths": [],
"key_auths": [
[
"STM5k9rRVsDr4UGdP7wBvK2o65MDGvLgFsCsDmLP1zrZH8gruhM6Y",
1
]
],
"weight_threshold": 1
},
"active": {
"account_auths": [],
"key_auths": [
[
"STM8cFvB8TvMvnXNfAxX3EZnZGM1M2iWVpRU67TA1sQb855DbiBfj",
1
]
],
"weight_threshold": 1
},
"posting": {
"account_auths": [],
"key_auths": [
[
"STM76KqtUaSRWjuivE9SFSN2TSeoXJ1q6VEiTnA4bU2i4jwemp6H1",
1
]
],
"weight_threshold": 1
},
"memo": "STM6vPjoyZ1hj7UTtFJSe7WYp9YpkNw9ZtM8vLZSs7i61ayh6CnkS"
}Witness Votes
0 / 30
No active witness votes.
[]
