Marty McGuire
Eating before meeting at IndieWebCamp NYC Leaders meeting.
{
"type": "entry",
"published": "2018-09-27T11:09:00-04:00",
"url": "https://martymcgui.re/2018/09/27/110900/",
"content": {
"text": "Eating before meeting at IndieWebCamp NYC Leaders meeting.",
"html": "<p>Eating before meeting at IndieWebCamp NYC Leaders meeting.</p>"
},
"author": {
"type": "card",
"name": "Marty McGuire",
"url": false,
"photo": "https://aperture-proxy.p3k.io/8275f85e3a389bd0ae69f209683436fc53d8bad9/68747470733a2f2f6d617274796d636775692e72652f696d616765732f6c6f676f2e6a7067"
},
"post-type": "note",
"_id": "1088810",
"_source": "175",
"_is_read": true
}
{
"type": "entry",
"author": {
"name": "Peter Molnar",
"url": "https://petermolnar.net",
"photo": null
},
"url": "https://petermolnar.net/location-tracking-without-server/",
"published": "2018-09-27T11:05:00+01:00",
"content": {
"html": "<p>Nearly all self-hosted location tracking Android applications are based on server-client architecture: the one on the phone collects only a small points, if not only one, and sends it to a configured server. Traccar<a href=\"https://petermolnar.net/#fn1\">1</a>, Owntracks<a href=\"https://petermolnar.net/#fn2\">2</a>, etc.</p>\n<p>While this setup is useful, it doesn\u2019t fit in my static, unless it hurts<a href=\"https://petermolnar.net/#fn3\">3</a> approach, and it needs data connectivity, which can be tricky during abroad trips. The rare occasions in rural Scotland and Wales tought me data connectivity is not omnipresent at all.</p>\n<p>There used to be a magnificent little location tracker, which, besides the server-client approach, could store the location data in CSV and KML files locally: Backitude<a href=\"https://petermolnar.net/#fn4\">4</a>. The program is gone from Play store, I have no idea, why, but I have a copy of the last APK of it<a href=\"https://petermolnar.net/#fn5\">5</a>.</p>\n<p>My flow is the following:</p>\n<ul><li>Backitude saves the CSV files</li>\n<li>Syncthing<a href=\"https://petermolnar.net/#fn6\">6</a> syncs the phone and the laptop</li>\n<li>the laptop has a Python script that imports the CSV into SQLite to eliminate duplicates</li>\n<li>the same script queries against Bing to get altitude information for missing altitudes</li>\n<li>as a final step, the script exports daily GPX files</li>\n<li>on the laptop, GpsPrune helps me visualize and measure trips</li>\n</ul><h2>Backitude configuration</h2>\n<p>These are the modified setting properties:</p>\n<ul><li>Enable backitude: yes</li>\n<li>Settings\n<ul><li>Standard Mode Settings\n<ul><li>Time Interval Selection: 1 minute</li>\n<li>Location Polling Timeout: 5 minutes</li>\n<li>Display update message: no</li>\n</ul></li>\n<li>Wifi Mode Settings\n<ul><li>Wi-Fi Mode Enabled: yes</li>\n<li>Time Interval Options: 1 hour</li>\n<li>Location Polling Timeout: 5 minutes</li>\n</ul></li>\n<li>Update Settings\n<ul><li>Minimum Change in Distance: 10 meters</li>\n</ul></li>\n<li>Accuracy Settings\n<ul><li>Minimum GPS accuracy: 12 meters</li>\n<li>Minimum Wi-Fi accuracy: 20 meters</li>\n</ul></li>\n<li>Internal Memory Storage Options\n<ul><li>KML and CSV</li>\n</ul></li>\n<li>Display Failure Notifications: no</li>\n</ul></li>\n</ul><p>I have an exported preferences file available<a href=\"https://petermolnar.net/#fn7\">7</a>.</p>\n<h2>Syncthing</h2>\n<p>The syncthing configuration is optional; it could be simple done by manual transfers from the phone. It\u2019s also not the most simple thing to do, so I\u2019ll let the Syncting Documentation<a href=\"https://petermolnar.net/#fn8\">8</a> take care of describing the how-tos.</p>\n<h2>Python script</h2>\n<p>Before jumping to the script, there are 3 Python modules it needs:</p>\n<pre><code>pip3 install --user arrow gpxpy requests</code></pre>\n<p>And the script itself - please replace the <code>INBASE</code>, <code>OUTBASE</code>, and <code>BINGKEY</code> properties. To get a Bing key, visit Bing<a href=\"https://petermolnar.net/#fn9\">9</a>.</p>\n<pre><code>import os\nimport sqlite3\nimport csv\nimport glob\nimport arrow\nimport re\nimport gpxpy.gpx\nimport requests\n\nINBASE=\"/path/to/your/syncthing/gps/files\"\nOUTBASE=\"/path/for/sqlite/and/gpx/output\"\nBINGKEY=\"get a bing maps key and insert it here\"\n\ndef parse(row):\n DATE = re.compile(\n r'^(?P<year>[0-9]{4})-(?P<month>[0-9]{2})-(?P<day>[0-9]{2})T'\n r'(?P<time>[0-9]{2}:[0-9]{2}:[0-9]{2})\\.(?P<subsec>[0-9]{3})Z$'\n )\n\n lat = row[0]\n lon = row[1]\n acc = row[2]\n alt = row[3]\n match = DATE.match(row[4])\n # in theory, arrow should have been able to parse the date, but I couldn't get\n # it working\n epoch = arrow.get(\"%s-%s-%s %s %s\" % (\n match.group('year'),\n match.group('month'),\n match.group('day'),\n match.group('time'),\n match.group('subsec')\n ), 'YYYY-MM-DD hh:mm:ss SSS').timestamp\n return(epoch,lat,lon,alt,acc)\n\ndef exists(db, epoch, lat, lon):\n return db.execute('''\n SELECT\n *\n FROM\n data\n WHERE\n epoch = ?\n AND\n latitude = ?\n AND\n longitude = ?\n ''', (epoch, lat, lon)).fetchone()\n\ndef ins(db, epoch,lat,lon,alt,acc):\n if exists(db, epoch, lat, lon):\n return\n print('inserting data point with epoch %d' % (epoch))\n db.execute('''INSERT INTO data (epoch, latitude, longitude, altitude, accuracy) VALUES (?,?,?,?,?);''', (\n epoch,\n lat,\n lon,\n alt,\n acc\n ))\n\n\nif __name__ == '__main__':\n db = sqlite3.connect(os.path.join(OUTBASE, 'location-log.sqlite'))\n db.execute('PRAGMA auto_vacuum = INCREMENTAL;')\n db.execute('PRAGMA journal_mode = MEMORY;')\n db.execute('PRAGMA temp_store = MEMORY;')\n db.execute('PRAGMA locking_mode = NORMAL;')\n db.execute('PRAGMA synchronous = FULL;')\n db.execute('PRAGMA encoding = \"UTF-8\";')\n\n files = glob.glob(os.path.join(INBASE, '*.csv'))\n for logfile in files:\n with open(logfile) as csvfile:\n try:\n reader = csv.reader(csvfile)\n except Exception as e:\n print('failed to open CSV reader for file: %s; %s' % (logfile, e))\n continue\n # skip the first row, that's headers\n headers = next(reader, None)\n for row in reader:\n epoch,lat,lon,alt,acc = parse(row)\n ins(db,epoch,lat,lon,alt,acc)\n # there's no need to commit per line, per file should be safe enough\n db.commit()\n\n db.execute('PRAGMA auto_vacuum;')\n\n results = db.execute('''\n SELECT\n *\n FROM\n data\n ORDER BY epoch ASC''').fetchall()\n prevdate = None\n gpx = gpxpy.gpx.GPX()\n\n for epoch, lat, lon, alt, acc in results:\n # in case you know your altitude might actually be valid with negative\n # values you may want to remove the -10\n if alt == 'NULL' or alt < -10:\n url = \"http://dev.virtualearth.net/REST/v1/Elevation/List?points=%s,%s&key=%s\" % (\n lat,\n lon,\n BINGKEY\n )\n bing = requests.get(url).json()\n # gotta love enterprise API endpoints\n if not bing or \\\n 'resourceSets' not in bing or \\\n not len(bing['resourceSets']) or \\\n 'resources' not in bing['resourceSets'][0] or \\\n not len(bing['resourceSets'][0]) or \\\n 'elevations' not in bing['resourceSets'][0]['resources'][0] or \\\n not bing['resourceSets'][0]['resources'][0]['elevations']:\n alt = 0\n else:\n alt = float(bing['resourceSets'][0]['resources'][0]['elevations'][0])\n print('got altitude from bing: %s for %s,%s' % (alt,lat,lon))\n db.execute('''\n UPDATE\n data\n SET\n altitude = ?\n WHERE\n epoch = ?\n AND\n latitude = ?\n AND\n longitude = ?\n LIMIT 1\n ''',(alt, epoch, lat, lon))\n db.commit()\n del(bing)\n del(url)\n date = arrow.get(epoch).format('YYYY-MM-DD')\n if not prevdate or prevdate != date:\n # write previous out\n gpxfile = os.path.join(OUTBASE, \"%s.gpx\" % (date))\n with open(gpxfile, 'wt') as f:\n f.write(gpx.to_xml())\n print('created file: %s' % gpxfile)\n\n # create new\n gpx = gpxpy.gpx.GPX()\n prevdate = date\n\n # Create first track in our GPX:\n gpx_track = gpxpy.gpx.GPXTrack()\n gpx.tracks.append(gpx_track)\n\n # Create first segment in our GPX track:\n gpx_segment = gpxpy.gpx.GPXTrackSegment()\n gpx_track.segments.append(gpx_segment)\n\n # Create points:\n gpx_segment.points.append(\n gpxpy.gpx.GPXTrackPoint(\n lat,\n lon,\n elevation=alt,\n time=arrow.get(epoch).datetime\n )\n )\n\n db.close()\n</code></pre>\n<p>Once this is done, the <code>OUTBASE</code> directory will be populated by <code>.gpx</code> files, one per day.</p>\n<h2>GpsPrune</h2>\n<p>GpsPrune is a desktop, QT based GPX track visualizer. It needs data connectivity to have nice maps in the background, but it can do a lot of funky things, including editing GPX tracks.</p>\n<pre><code>sudo apt install gpsprune</code></pre>\n<p><strong>Keep it in mind that the export script overwrites the GPX files, so the data needs to be fixed in the SQLite database.</strong></p>\n<p>This is an example screenshot of GpsPrune, about our 2 day walk down from Mount Emei and it\u2019s endless stairs:</p>\n<a href=\"https://petermolnar.net/location-tracking-without-server/emei_b.png\"> <img src=\"https://aperture-proxy.p3k.io/e4a0b1456e343382f106c8f4e35f5895c110957e/68747470733a2f2f70657465726d6f6c6e61722e6e65742f6c6f636174696f6e2d747261636b696e672d776974686f75742d7365727665722f656d65692e706e67\" title=\"emei\" alt=\"\" /></a>\n\nemei\n<p>Happy tracking!</p>\n\n\n<ol><li><p><a href=\"https://www.traccar.org/\">https://www.traccar.org/</a><a href=\"https://petermolnar.net/#fnref1\">\u21a9</a></p></li>\n<li><p><a href=\"https://owntracks.org/\">https://owntracks.org/</a><a href=\"https://petermolnar.net/#fnref2\">\u21a9</a></p></li>\n<li><p><a href=\"https://indieweb.org/manual_until_it_hurts\">https://indieweb.org/manual_until_it_hurts</a><a href=\"https://petermolnar.net/#fnref3\">\u21a9</a></p></li>\n<li><p><a href=\"http://www.gpsies.com/backitude.do\">http://www.gpsies.com/backitude.do</a><a href=\"https://petermolnar.net/#fnref4\">\u21a9</a></p></li>\n<li><p><a href=\"https://petermolnar.net/gaugler.backitude.apk\">gaugler.backitude.apk</a><a href=\"https://petermolnar.net/#fnref5\">\u21a9</a></p></li>\n<li><p><a href=\"https://syncthing.net/\">https://syncthing.net/</a><a href=\"https://petermolnar.net/#fnref6\">\u21a9</a></p></li>\n<li><p><a href=\"https://petermolnar.net/backitude.prefs\">backitude.prefs</a><a href=\"https://petermolnar.net/#fnref7\">\u21a9</a></p></li>\n<li><p><a href=\"https://docs.syncthing.net/intro/getting-started.html\">https://docs.syncthing.net/intro/getting-started.html</a><a href=\"https://petermolnar.net/#fnref8\">\u21a9</a></p></li>\n<li><p><a href=\"https://msdn.microsoft.com/en-us/library/ff428642\">https://msdn.microsoft.com/en-us/library/ff428642</a><a href=\"https://petermolnar.net/#fnref9\">\u21a9</a></p></li>\n</ol>",
"text": "Nearly all self-hosted location tracking Android applications are based on server-client architecture: the one on the phone collects only a small points, if not only one, and sends it to a configured server. Traccar1, Owntracks2, etc.\nWhile this setup is useful, it doesn\u2019t fit in my static, unless it hurts3 approach, and it needs data connectivity, which can be tricky during abroad trips. The rare occasions in rural Scotland and Wales tought me data connectivity is not omnipresent at all.\nThere used to be a magnificent little location tracker, which, besides the server-client approach, could store the location data in CSV and KML files locally: Backitude4. The program is gone from Play store, I have no idea, why, but I have a copy of the last APK of it5.\nMy flow is the following:\nBackitude saves the CSV files\nSyncthing6 syncs the phone and the laptop\nthe laptop has a Python script that imports the CSV into SQLite to eliminate duplicates\nthe same script queries against Bing to get altitude information for missing altitudes\nas a final step, the script exports daily GPX files\non the laptop, GpsPrune helps me visualize and measure trips\nBackitude configuration\nThese are the modified setting properties:\nEnable backitude: yes\nSettings\nStandard Mode Settings\nTime Interval Selection: 1 minute\nLocation Polling Timeout: 5 minutes\nDisplay update message: no\n\nWifi Mode Settings\nWi-Fi Mode Enabled: yes\nTime Interval Options: 1 hour\nLocation Polling Timeout: 5 minutes\n\nUpdate Settings\nMinimum Change in Distance: 10 meters\n\nAccuracy Settings\nMinimum GPS accuracy: 12 meters\nMinimum Wi-Fi accuracy: 20 meters\n\nInternal Memory Storage Options\nKML and CSV\n\nDisplay Failure Notifications: no\n\nI have an exported preferences file available7.\nSyncthing\nThe syncthing configuration is optional; it could be simple done by manual transfers from the phone. It\u2019s also not the most simple thing to do, so I\u2019ll let the Syncting Documentation8 take care of describing the how-tos.\nPython script\nBefore jumping to the script, there are 3 Python modules it needs:\npip3 install --user arrow gpxpy requests\nAnd the script itself - please replace the INBASE, OUTBASE, and BINGKEY properties. To get a Bing key, visit Bing9.\nimport os\nimport sqlite3\nimport csv\nimport glob\nimport arrow\nimport re\nimport gpxpy.gpx\nimport requests\n\nINBASE=\"/path/to/your/syncthing/gps/files\"\nOUTBASE=\"/path/for/sqlite/and/gpx/output\"\nBINGKEY=\"get a bing maps key and insert it here\"\n\ndef parse(row):\n DATE = re.compile(\n r'^(?P<year>[0-9]{4})-(?P<month>[0-9]{2})-(?P<day>[0-9]{2})T'\n r'(?P<time>[0-9]{2}:[0-9]{2}:[0-9]{2})\\.(?P<subsec>[0-9]{3})Z$'\n )\n\n lat = row[0]\n lon = row[1]\n acc = row[2]\n alt = row[3]\n match = DATE.match(row[4])\n # in theory, arrow should have been able to parse the date, but I couldn't get\n # it working\n epoch = arrow.get(\"%s-%s-%s %s %s\" % (\n match.group('year'),\n match.group('month'),\n match.group('day'),\n match.group('time'),\n match.group('subsec')\n ), 'YYYY-MM-DD hh:mm:ss SSS').timestamp\n return(epoch,lat,lon,alt,acc)\n\ndef exists(db, epoch, lat, lon):\n return db.execute('''\n SELECT\n *\n FROM\n data\n WHERE\n epoch = ?\n AND\n latitude = ?\n AND\n longitude = ?\n ''', (epoch, lat, lon)).fetchone()\n\ndef ins(db, epoch,lat,lon,alt,acc):\n if exists(db, epoch, lat, lon):\n return\n print('inserting data point with epoch %d' % (epoch))\n db.execute('''INSERT INTO data (epoch, latitude, longitude, altitude, accuracy) VALUES (?,?,?,?,?);''', (\n epoch,\n lat,\n lon,\n alt,\n acc\n ))\n\n\nif __name__ == '__main__':\n db = sqlite3.connect(os.path.join(OUTBASE, 'location-log.sqlite'))\n db.execute('PRAGMA auto_vacuum = INCREMENTAL;')\n db.execute('PRAGMA journal_mode = MEMORY;')\n db.execute('PRAGMA temp_store = MEMORY;')\n db.execute('PRAGMA locking_mode = NORMAL;')\n db.execute('PRAGMA synchronous = FULL;')\n db.execute('PRAGMA encoding = \"UTF-8\";')\n\n files = glob.glob(os.path.join(INBASE, '*.csv'))\n for logfile in files:\n with open(logfile) as csvfile:\n try:\n reader = csv.reader(csvfile)\n except Exception as e:\n print('failed to open CSV reader for file: %s; %s' % (logfile, e))\n continue\n # skip the first row, that's headers\n headers = next(reader, None)\n for row in reader:\n epoch,lat,lon,alt,acc = parse(row)\n ins(db,epoch,lat,lon,alt,acc)\n # there's no need to commit per line, per file should be safe enough\n db.commit()\n\n db.execute('PRAGMA auto_vacuum;')\n\n results = db.execute('''\n SELECT\n *\n FROM\n data\n ORDER BY epoch ASC''').fetchall()\n prevdate = None\n gpx = gpxpy.gpx.GPX()\n\n for epoch, lat, lon, alt, acc in results:\n # in case you know your altitude might actually be valid with negative\n # values you may want to remove the -10\n if alt == 'NULL' or alt < -10:\n url = \"http://dev.virtualearth.net/REST/v1/Elevation/List?points=%s,%s&key=%s\" % (\n lat,\n lon,\n BINGKEY\n )\n bing = requests.get(url).json()\n # gotta love enterprise API endpoints\n if not bing or \\\n 'resourceSets' not in bing or \\\n not len(bing['resourceSets']) or \\\n 'resources' not in bing['resourceSets'][0] or \\\n not len(bing['resourceSets'][0]) or \\\n 'elevations' not in bing['resourceSets'][0]['resources'][0] or \\\n not bing['resourceSets'][0]['resources'][0]['elevations']:\n alt = 0\n else:\n alt = float(bing['resourceSets'][0]['resources'][0]['elevations'][0])\n print('got altitude from bing: %s for %s,%s' % (alt,lat,lon))\n db.execute('''\n UPDATE\n data\n SET\n altitude = ?\n WHERE\n epoch = ?\n AND\n latitude = ?\n AND\n longitude = ?\n LIMIT 1\n ''',(alt, epoch, lat, lon))\n db.commit()\n del(bing)\n del(url)\n date = arrow.get(epoch).format('YYYY-MM-DD')\n if not prevdate or prevdate != date:\n # write previous out\n gpxfile = os.path.join(OUTBASE, \"%s.gpx\" % (date))\n with open(gpxfile, 'wt') as f:\n f.write(gpx.to_xml())\n print('created file: %s' % gpxfile)\n\n # create new\n gpx = gpxpy.gpx.GPX()\n prevdate = date\n\n # Create first track in our GPX:\n gpx_track = gpxpy.gpx.GPXTrack()\n gpx.tracks.append(gpx_track)\n\n # Create first segment in our GPX track:\n gpx_segment = gpxpy.gpx.GPXTrackSegment()\n gpx_track.segments.append(gpx_segment)\n\n # Create points:\n gpx_segment.points.append(\n gpxpy.gpx.GPXTrackPoint(\n lat,\n lon,\n elevation=alt,\n time=arrow.get(epoch).datetime\n )\n )\n\n db.close()\n\nOnce this is done, the OUTBASE directory will be populated by .gpx files, one per day.\nGpsPrune\nGpsPrune is a desktop, QT based GPX track visualizer. It needs data connectivity to have nice maps in the background, but it can do a lot of funky things, including editing GPX tracks.\nsudo apt install gpsprune\nKeep it in mind that the export script overwrites the GPX files, so the data needs to be fixed in the SQLite database.\nThis is an example screenshot of GpsPrune, about our 2 day walk down from Mount Emei and it\u2019s endless stairs:\n \n\nemei\nHappy tracking!\n\n\nhttps://www.traccar.org/\u21a9\nhttps://owntracks.org/\u21a9\nhttps://indieweb.org/manual_until_it_hurts\u21a9\nhttp://www.gpsies.com/backitude.do\u21a9\ngaugler.backitude.apk\u21a9\nhttps://syncthing.net/\u21a9\nbackitude.prefs\u21a9\nhttps://docs.syncthing.net/intro/getting-started.html\u21a9\nhttps://msdn.microsoft.com/en-us/library/ff428642\u21a9"
},
"name": "GPS tracking without a server",
"post-type": "article",
"_id": "1087487",
"_source": "268",
"_is_read": true
}
I’ll see what I can do 😀. What time are you hosting it? I’m at GHC until the 28th.
indieweb
ghc
nyc
{
"type": "entry",
"published": "2018-09-26 17:16:48.780835",
"url": "https://kongaloosh.com/e/2018/9/26/ill-see-what-i-can-do",
"syndication": [
"https://kongaloosh.com/"
],
"in-reply-to": [
"http://jgregorymcverry.com/7416-2/"
],
"content": {
"text": "I\u2019ll see what I can do \ud83d\ude00. What time are you hosting it? I\u2019m at GHC until the 28th. \n \n \n \n \n \n \n indieweb\n \n ghc\n \n nyc",
"html": "<p class=\"e-content\"></p><p>I\u2019ll see what I can do \ud83d\ude00. What time are you hosting it? I\u2019m at GHC until the 28th. </p>\n \n \n \n \n <i></i>\n \n <a href=\"https://kongaloosh.com/t/indieweb\">indieweb</a>\n \n <a href=\"https://kongaloosh.com/t/ghc\">ghc</a>\n \n <a href=\"https://kongaloosh.com/t/nyc\">nyc</a>"
},
"author": {
"type": "card",
"name": "Alex Kearney",
"url": "http://kongaloosh.com",
"photo": null
},
"post-type": "reply",
"_id": "1085849",
"_source": "228",
"_is_read": true
}
I’d love to! When are you hosting it?
indieweb
{
"type": "entry",
"published": "2018-09-26 00:00:00",
"url": "https://kongaloosh.com/e/2018/9/26/id-love-to-when-are-you-hosting-it",
"syndication": [
"https://kongaloosh.com/"
],
"in-reply-to": [
"http://jgregorymcverry.com/7416-2/"
],
"content": {
"text": "I\u2019d love to! When are you hosting it?\n \n \n \n \n \n \n indieweb",
"html": "<p class=\"e-content\"></p><p>I\u2019d love to! When are you hosting it?</p>\n \n \n \n \n <i></i>\n \n <a href=\"https://kongaloosh.com/t/indieweb\">indieweb</a>"
},
"author": {
"type": "card",
"name": "Alex Kearney",
"url": "http://kongaloosh.com",
"photo": null
},
"post-type": "reply",
"_id": "1085850",
"_source": "228",
"_is_read": true
}
{
"type": "entry",
"published": "2018-09-26 18:51-0700",
"rsvp": "yes",
"url": "https://gregorlove.com/2018/09/i-attended-indieweb-pre-xoxo-meetup/",
"in-reply-to": [
"https://aaronparecki.com/2018/09/05/5/"
],
"content": {
"text": "I attended \u201cIndieWeb Pre-XOXO Meetup\u201d",
"html": "<p>I attended \u201c<a class=\"u-in-reply-to\" href=\"https://aaronparecki.com/2018/09/05/5/\">IndieWeb Pre-XOXO Meetup</a>\u201d</p>"
},
"author": {
"type": "card",
"name": "gRegor Morrill",
"url": "https://gregorlove.com/",
"photo": "https://aperture-proxy.p3k.io/929c8777d059069a2a16a064d96f4c29b65548f8/68747470733a2f2f677265676f726c6f76652e636f6d2f736974652f6173736574732f66696c65732f333437332f70726f66696c652d323031362d6d65642e6a7067"
},
"post-type": "rsvp",
"_id": "1085745",
"_source": "95",
"_is_read": true
}
🗽 NYC friends!
🕖 Join us for the @IndieWebCamp NYC pre-party at @DeadRabbitNYC tomorrow at 7pm!
🐇 We have a reserved room, so come on by, even if you're not planning to attend IndieWebCamp!
🍻 Drinks thanks to our sponsors!
https://aaronparecki.com/2018/09/27/1/
{
"type": "entry",
"published": "2018-09-26T11:56:13-04:00",
"url": "https://aaronparecki.com/2018/09/26/16/iwc-nyc",
"category": [
"indiewebcamp"
],
"content": {
"text": "\ud83d\uddfd NYC friends! \n\ud83d\udd56 Join us for the @IndieWebCamp NYC pre-party at @DeadRabbitNYC tomorrow at 7pm! \n\ud83d\udc07 We have a reserved room, so come on by, even if you're not planning to attend IndieWebCamp! \n\ud83c\udf7b Drinks thanks to our sponsors! \nhttps://aaronparecki.com/2018/09/27/1/",
"html": "<a href=\"https://aaronparecki.com/emoji/%F0%9F%97%BD\">\ud83d\uddfd</a> NYC friends! <br /><a href=\"https://aaronparecki.com/emoji/%F0%9F%95%96\">\ud83d\udd56</a> Join us for the <a href=\"https://indieweb.org/IndieWebCamps\">@IndieWebCamp</a> NYC pre-party at <a href=\"https://www.deadrabbitnyc.com/\">@DeadRabbitNYC</a> tomorrow at 7pm! <br /><a href=\"https://aaronparecki.com/emoji/%F0%9F%90%87\">\ud83d\udc07</a> We have a reserved room, so come on by, even if you're not planning to attend IndieWebCamp! <br /><a href=\"https://aaronparecki.com/emoji/%F0%9F%8D%BB\">\ud83c\udf7b</a> Drinks thanks to our sponsors! <br /><a href=\"https://aaronparecki.com/2018/09/27/1/\"><span>https://</span>aaronparecki.com/2018/09/27/1/</a>"
},
"author": {
"type": "card",
"name": "Aaron Parecki",
"url": "https://aaronparecki.com/",
"photo": "https://aperture-media.p3k.io/aaronparecki.com/2b8e1668dcd9cfa6a170b3724df740695f73a15c2a825962fd0a0967ec11ecdc.jpg"
},
"post-type": "note",
"_id": "1081689",
"_source": "16",
"_is_read": true
}
Welcome to the Microsub life!
I’ve gone crazy with channels but it makes choosing what I want to consume MUCH easier. On busy days I can just mark entire channels as read and ignore the posts if I feel like it but still check the channels that I know contain info or people important to me.
{
"type": "entry",
"published": "2018-09-26T05:56:47-04:00",
"summary": "Welcome to the Microsub life!\nI\u2019ve gone crazy with channels but it makes choosing what I want to consume MUCH easier. On busy days I can just mark entire channels as read and ignore the posts if I feel like it but still check the channels that I know contain info or people important to me.",
"url": "https://eddiehinkle.com/2018/09/26/11/reply/",
"in-reply-to": [
"https://www.arush.io/94181-2/"
],
"content": {
"text": "Welcome to the Microsub life!\n\nI\u2019ve gone crazy with channels but it makes choosing what I want to consume MUCH easier. On busy days I can just mark entire channels as read and ignore the posts if I feel like it but still check the channels that I know contain info or people important to me.",
"html": "<p>Welcome to the Microsub life!</p>\n\n<p>I\u2019ve gone crazy with channels but it makes choosing what I want to consume MUCH easier. On busy days I can just mark entire channels as read and ignore the posts if I feel like it but still check the channels that I know contain info or people important to me.</p>"
},
"author": {
"type": "card",
"name": "Eddie Hinkle",
"url": "https://eddiehinkle.com/",
"photo": "https://aperture-proxy.p3k.io/cc9591b69c2c835fa2c6e23745b224db4b4b431f/68747470733a2f2f656464696568696e6b6c652e636f6d2f696d616765732f70726f66696c652e6a7067"
},
"post-type": "reply",
"refs": {
"https://www.arush.io/94181-2/": {
"type": "entry",
"url": "https://www.arush.io/94181-2/",
"name": "https://www.arush.io/94181-2/",
"post-type": "article"
}
},
"_id": "1081172",
"_source": "226",
"_is_read": true
}
going to @IndieWebCamp NYC Pre-party this Thursday 2018-09-27 19:00-21:00 @DeadRabbitNYC (deadrabbitnyc.com), an amazing 1850s style bar (nyti.ms/WdOpgc).
NYC friends, come by, ask for #IndieWeb. We have a reserved room!
More info: https://indieweb.org/2018/NYC#Schedule
Thanks @jgmac1106 (jgregorymcverry.com) for the arrangements!
{
"type": "entry",
"published": "2018-09-25 17:17-0700",
"rsvp": "yes",
"url": "http://tantek.com/2018/268/t1/going-to-indiewebcamp-nyc-pre-party",
"category": [
"IndieWeb"
],
"in-reply-to": [
"https://aaronparecki.com/2018/09/27/1/"
],
"content": {
"text": "going to @IndieWebCamp NYC Pre-party this Thursday 2018-09-27 19:00-21:00 @DeadRabbitNYC (deadrabbitnyc.com), an amazing 1850s style bar (nyti.ms/WdOpgc).\n\nNYC friends, come by, ask for #IndieWeb. We have a reserved room!\n\nMore info: https://indieweb.org/2018/NYC#Schedule\n\nThanks @jgmac1106 (jgregorymcverry.com) for the arrangements!",
"html": "going to <a class=\"h-cassis-username\" href=\"https://twitter.com/IndieWebCamp\">@IndieWebCamp</a> NYC Pre-party this Thursday 2018-09-27 19:00-21:00 <a class=\"h-cassis-username\" href=\"https://twitter.com/DeadRabbitNYC\">@DeadRabbitNYC</a> (<a href=\"http://deadrabbitnyc.com\">deadrabbitnyc.com</a>), an amazing 1850s style bar (<a href=\"http://nyti.ms/WdOpgc\">nyti.ms/WdOpgc</a>).<br /><br />NYC friends, come by, ask for #<span class=\"p-category\">IndieWeb</span>. We have a reserved room!<br /><br />More info: <a href=\"https://indieweb.org/2018/NYC#Schedule\">https://indieweb.org/2018/NYC#Schedule</a><br /><br />Thanks <a class=\"h-cassis-username\" href=\"https://twitter.com/jgmac1106\">@jgmac1106</a> (<a href=\"http://jgregorymcverry.com\">jgregorymcverry.com</a>) for the arrangements!"
},
"author": {
"type": "card",
"name": "Tantek \u00c7elik",
"url": "http://tantek.com/",
"photo": "https://aperture-media.p3k.io/tantek.com/acfddd7d8b2c8cf8aa163651432cc1ec7eb8ec2f881942dca963d305eeaaa6b8.jpg"
},
"post-type": "rsvp",
"refs": {
"https://aaronparecki.com/2018/09/27/1/": {
"type": "entry",
"url": "https://aaronparecki.com/2018/09/27/1/",
"name": "aaronparecki.com\u2019s post",
"post-type": "article"
}
},
"_id": "1079146",
"_source": "1",
"_is_read": true
}
Currently microformats are used to add that richness to webmentions. However because webmention is markup agnostic people could start using other data to get the webmention richness. However there hasn’t been a proven better data format yet. 🤷♂️
{
"type": "entry",
"published": "2018-09-25T13:38:13-04:00",
"summary": "Currently microformats are used to add that richness to webmentions. However because webmention is markup agnostic people could start using other data to get the webmention richness. However there hasn\u2019t been a proven better data format yet. \ud83e\udd37\u200d\u2642\ufe0f",
"url": "https://eddiehinkle.com/2018/09/25/25/reply/",
"in-reply-to": [
"https://twitter.com/EddieHinkle/status/1044641518546550786"
],
"content": {
"text": "Currently microformats are used to add that richness to webmentions. However because webmention is markup agnostic people could start using other data to get the webmention richness. However there hasn\u2019t been a proven better data format yet. \ud83e\udd37\u200d\u2642\ufe0f",
"html": "<p>Currently microformats are used to add that richness to webmentions. However because webmention is markup agnostic people could start using other data to get the webmention richness. However there hasn\u2019t been a proven better data format yet. \ud83e\udd37\u200d\u2642\ufe0f</p>"
},
"author": {
"type": "card",
"name": "Eddie Hinkle",
"url": "https://eddiehinkle.com/",
"photo": "https://aperture-proxy.p3k.io/cc9591b69c2c835fa2c6e23745b224db4b4b431f/68747470733a2f2f656464696568696e6b6c652e636f6d2f696d616765732f70726f66696c652e6a7067"
},
"post-type": "reply",
"refs": {
"https://twitter.com/EddieHinkle/status/1044641518546550786": {
"type": "entry",
"url": "https://twitter.com/EddieHinkle/status/1044641518546550786",
"name": "https://twitter.com/EddieHinkle/status/1044641518546550786",
"post-type": "article"
}
},
"_id": "1076613",
"_source": "226",
"_is_read": true
}
Awesome! Webmentions was what originally attracted me to the IndieWeb. you are right, they don’t require microformats. For them to be their best (communicate post intent: like, reply, rsvp, mention) you need some type of data sitting on the src url
{
"type": "entry",
"published": "2018-09-25T13:35:16-04:00",
"summary": "Awesome! Webmentions was what originally attracted me to the IndieWeb. you are right, they don\u2019t require microformats. For them to be their best (communicate post intent: like, reply, rsvp, mention) you need some type of data sitting on the src url",
"url": "https://eddiehinkle.com/2018/09/25/24/reply/",
"in-reply-to": [
"https://twitter.com/tmcw/status/1044419700669575168"
],
"content": {
"text": "Awesome! Webmentions was what originally attracted me to the IndieWeb. you are right, they don\u2019t require microformats. For them to be their best (communicate post intent: like, reply, rsvp, mention) you need some type of data sitting on the src url",
"html": "<p>Awesome! Webmentions was what originally attracted me to the IndieWeb. you are right, they don\u2019t require microformats. For them to be their best (communicate post intent: like, reply, rsvp, mention) you need some type of data sitting on the src url</p>"
},
"author": {
"type": "card",
"name": "Eddie Hinkle",
"url": "https://eddiehinkle.com/",
"photo": "https://aperture-proxy.p3k.io/cc9591b69c2c835fa2c6e23745b224db4b4b431f/68747470733a2f2f656464696568696e6b6c652e636f6d2f696d616765732f70726f66696c652e6a7067"
},
"post-type": "reply",
"refs": {
"https://twitter.com/tmcw/status/1044419700669575168": {
"type": "entry",
"url": "https://twitter.com/tmcw/status/1044419700669575168",
"name": "https://twitter.com/tmcw/status/1044419700669575168",
"post-type": "article"
}
},
"_id": "1076614",
"_source": "226",
"_is_read": true
}
I actually don’t use the micro.blog apps aside from Wavelength. I do everything in my RSS reader and my website. So aside from microcasting, nothing would change if I was on Android. I reply through Webmentions from my site to Micro.blog.
{
"type": "entry",
"published": "2018-09-24T20:54:50-04:00",
"summary": "I actually don\u2019t use the micro.blog apps aside from Wavelength. I do everything in my RSS reader and my website. So aside from microcasting, nothing would change if I was on Android. I reply through Webmentions from my site to Micro.blog.",
"url": "https://eddiehinkle.com/2018/09/24/27/reply/",
"in-reply-to": [
"https://micro.blog/joshsharp/913954"
],
"content": {
"text": "I actually don\u2019t use the micro.blog apps aside from Wavelength. I do everything in my RSS reader and my website. So aside from microcasting, nothing would change if I was on Android. I reply through Webmentions from my site to Micro.blog.",
"html": "<p>I actually don\u2019t use the micro.blog apps aside from Wavelength. I do everything in my RSS reader and my website. So aside from microcasting, nothing would change if I was on Android. I reply through Webmentions from my site to Micro.blog.</p>"
},
"author": {
"type": "card",
"name": "Eddie Hinkle",
"url": "https://eddiehinkle.com/",
"photo": "https://aperture-proxy.p3k.io/cc9591b69c2c835fa2c6e23745b224db4b4b431f/68747470733a2f2f656464696568696e6b6c652e636f6d2f696d616765732f70726f66696c652e6a7067"
},
"post-type": "reply",
"refs": {
"https://micro.blog/joshsharp/913954": {
"type": "entry",
"url": "https://micro.blog/joshsharp/913954",
"name": "https://micro.blog/joshsharp/913954",
"post-type": "article"
}
},
"_id": "1072274",
"_source": "226",
"_is_read": true
}
@jgmac1106 @benwerd consider the glass half-full:
* Lots of @-mentions violate policy? Use domain-mentions!
A little work to get @mlb players domains; surely as celebs they have them.
If(when) they enable Webmentions, they decide instead of Twitter!
{
"type": "entry",
"published": "2018-09-24 18:17-0700",
"url": "http://tantek.com/2018/267/t3/use-domain-mentions-instead",
"in-reply-to": [
"http://jgregorymcverry.com/7359-2/"
],
"content": {
"text": "@jgmac1106 @benwerd consider the glass half-full:\n* Lots of @-mentions violate policy? Use domain-mentions!\nA little work to get @mlb players domains; surely as celebs they have them.\nIf(when) they enable Webmentions, they decide instead of Twitter!",
"html": "<a class=\"h-cassis-username\" href=\"https://twitter.com/jgmac1106\">@jgmac1106</a> <a class=\"h-cassis-username\" href=\"https://twitter.com/benwerd\">@benwerd</a> consider the glass half-full:<br />* Lots of @-mentions violate policy? Use domain-mentions!<br />A little work to get <a class=\"h-cassis-username\" href=\"https://twitter.com/mlb\">@mlb</a> players domains; surely as celebs they have them.<br />If(when) they enable Webmentions, they decide instead of Twitter!"
},
"author": {
"type": "card",
"name": "Tantek \u00c7elik",
"url": "http://tantek.com/",
"photo": "https://aperture-media.p3k.io/tantek.com/acfddd7d8b2c8cf8aa163651432cc1ec7eb8ec2f881942dca963d305eeaaa6b8.jpg"
},
"post-type": "reply",
"refs": {
"http://jgregorymcverry.com/7359-2/": {
"type": "entry",
"url": "http://jgregorymcverry.com/7359-2/",
"name": "jgregorymcverry.com\u2019s post",
"post-type": "article"
}
},
"_id": "1072260",
"_source": "1",
"_is_read": true
}
going to @IndieWebCamp New York City 2018-09-28…29!
Complimentary tickets sold out but organizers were able to release another small batch.
Grab one before they’re gone:
https://ti.to/indieweb/indiewebcamp-nyc
More info: https://indieweb.org/2018/NYC
{
"type": "entry",
"published": "2018-09-24 17:59-0700",
"rsvp": "yes",
"url": "http://tantek.com/2018/267/t2/going-to-indiewebcamp-new-york-city",
"in-reply-to": [
"http://quickthoughts.jgregorymcverry.com/2018/09/25/indiewebcamp-nyc"
],
"content": {
"text": "going to @IndieWebCamp New York City 2018-09-28\u202629! \n\nComplimentary tickets sold out but organizers were able to release another small batch. \nGrab one before they\u2019re gone: \nhttps://ti.to/indieweb/indiewebcamp-nyc\n\nMore info: https://indieweb.org/2018/NYC",
"html": "going to <a class=\"h-cassis-username\" href=\"https://twitter.com/IndieWebCamp\">@IndieWebCamp</a> New York City 2018-09-28\u202629! <br /><br />Complimentary tickets sold out but organizers were able to release another small batch. <br />Grab one before they\u2019re gone: <br /><a href=\"https://ti.to/indieweb/indiewebcamp-nyc\">https://ti.to/indieweb/indiewebcamp-nyc</a><br /><br />More info: <a href=\"https://indieweb.org/2018/NYC\">https://indieweb.org/2018/NYC</a>"
},
"author": {
"type": "card",
"name": "Tantek \u00c7elik",
"url": "http://tantek.com/",
"photo": "https://aperture-media.p3k.io/tantek.com/acfddd7d8b2c8cf8aa163651432cc1ec7eb8ec2f881942dca963d305eeaaa6b8.jpg"
},
"post-type": "rsvp",
"refs": {
"http://quickthoughts.jgregorymcverry.com/2018/09/25/indiewebcamp-nyc": {
"type": "entry",
"url": "http://quickthoughts.jgregorymcverry.com/2018/09/25/indiewebcamp-nyc",
"name": "quickthoughts.jgregorymcverry.com\u2019s post",
"post-type": "article"
}
},
"_id": "1072261",
"_source": "1",
"_is_read": true
}
There’s a great article about Webmentions on A List Apart, if you haven’t read it: https://alistapart.com/article/webmentions-enabling-better-communication-on-the-internet
{
"type": "entry",
"published": "2018-09-24T17:09:59-04:00",
"summary": "There\u2019s a great article about Webmentions on A List Apart, if you haven\u2019t read it: https://alistapart.com/article/webmentions-enabling-better-communication-on-the-internet",
"url": "https://eddiehinkle.com/2018/09/24/22/reply/",
"in-reply-to": [
"https://twitter.com/eddiehinkle/status/1044333000413122566?s=12"
],
"content": {
"text": "There\u2019s a great article about Webmentions on A List Apart, if you haven\u2019t read it: https://alistapart.com/article/webmentions-enabling-better-communication-on-the-internet",
"html": "<p>There\u2019s a great article about Webmentions on A List Apart, if you haven\u2019t read it: https://alistapart.com/article/webmentions-enabling-better-communication-on-the-internet</p>"
},
"author": {
"type": "card",
"name": "Eddie Hinkle",
"url": "https://eddiehinkle.com/",
"photo": "https://aperture-proxy.p3k.io/cc9591b69c2c835fa2c6e23745b224db4b4b431f/68747470733a2f2f656464696568696e6b6c652e636f6d2f696d616765732f70726f66696c652e6a7067"
},
"post-type": "reply",
"refs": {
"https://twitter.com/eddiehinkle/status/1044333000413122566?s=12": {
"type": "entry",
"url": "https://twitter.com/eddiehinkle/status/1044333000413122566?s=12",
"name": "https://twitter.com/eddiehinkle/status/1044333000413122566?s=12",
"post-type": "article"
}
},
"_id": "1071904",
"_source": "226",
"_is_read": true
}
Great question! There are definitely a bunch of specs, but many of them attempt to solve some issue among several implementations before they become a spec. As far as Microformats, the IndieWeb community uses it a lot because it enables one of the biggest features among IndieWeb enabled websites: Webmentions.
{
"type": "entry",
"published": "2018-09-24T17:09:19-04:00",
"summary": "Great question! There are definitely a bunch of specs, but many of them attempt to solve some issue among several implementations before they become a spec. As far as Microformats, the IndieWeb community uses it a lot because it enables one of the biggest features among IndieWeb enabled websites: Webmentions.",
"url": "https://eddiehinkle.com/2018/09/24/21/reply/",
"in-reply-to": [
"https://twitter.com/tmcw/status/1044329687609040896?s=12"
],
"content": {
"text": "Great question! There are definitely a bunch of specs, but many of them attempt to solve some issue among several implementations before they become a spec. As far as Microformats, the IndieWeb community uses it a lot because it enables one of the biggest features among IndieWeb enabled websites: Webmentions.",
"html": "<p>Great question! There are definitely a bunch of specs, but many of them attempt to solve some issue among several implementations before they become a spec. As far as Microformats, the IndieWeb community uses it a lot because it enables one of the biggest features among IndieWeb enabled websites: Webmentions.</p>"
},
"author": {
"type": "card",
"name": "Eddie Hinkle",
"url": "https://eddiehinkle.com/",
"photo": "https://aperture-proxy.p3k.io/cc9591b69c2c835fa2c6e23745b224db4b4b431f/68747470733a2f2f656464696568696e6b6c652e636f6d2f696d616765732f70726f66696c652e6a7067"
},
"post-type": "reply",
"refs": {
"https://twitter.com/tmcw/status/1044329687609040896?s=12": {
"type": "entry",
"url": "https://twitter.com/tmcw/status/1044329687609040896?s=12",
"name": "https://twitter.com/tmcw/status/1044329687609040896?s=12",
"post-type": "article"
}
},
"_id": "1071905",
"_source": "226",
"_is_read": true
}
@szarka There is no trade-off.
Why frame as “common platform” OR “federated community” when you can do BOTH?
Post on your Own Site, Syndicate Elsewhere: https://indieweb.org/POSSE
#ownyourdata, use #socialmedia to distribute & get feedback.
{
"type": "entry",
"published": "2018-09-24 11:31-0700",
"url": "http://tantek.com/2018/267/t1/no-trade-off-can-have-both-posse",
"category": [
"ownyourdata",
"socialmedia"
],
"in-reply-to": [
"https://twitter.com/szarka/status/1044244323494236160"
],
"content": {
"text": "@szarka There is no trade-off.\n\nWhy frame as \u201ccommon platform\u201d OR \u201cfederated community\u201d when you can do BOTH?\n\nPost on your Own Site, Syndicate Elsewhere: https://indieweb.org/POSSE\n\n#ownyourdata, use #socialmedia to distribute & get feedback.",
"html": "<a class=\"h-cassis-username\" href=\"https://twitter.com/szarka\">@szarka</a> There is no trade-off.<br /><br />Why frame as \u201ccommon platform\u201d OR \u201cfederated community\u201d when you can do BOTH?<br /><br />Post on your Own Site, Syndicate Elsewhere: <a href=\"https://indieweb.org/POSSE\">https://indieweb.org/POSSE</a><br /><br />#<span class=\"p-category\">ownyourdata</span>, use #<span class=\"p-category\">socialmedia</span> to distribute & get feedback."
},
"author": {
"type": "card",
"name": "Tantek \u00c7elik",
"url": "http://tantek.com/",
"photo": "https://aperture-media.p3k.io/tantek.com/acfddd7d8b2c8cf8aa163651432cc1ec7eb8ec2f881942dca963d305eeaaa6b8.jpg"
},
"post-type": "reply",
"refs": {
"https://twitter.com/szarka/status/1044244323494236160": {
"type": "entry",
"url": "https://twitter.com/szarka/status/1044244323494236160",
"name": "@szarka\u2019s tweet",
"post-type": "article"
}
},
"_id": "1069262",
"_source": "1",
"_is_read": true
}
{
"type": "entry",
"published": "2018-09-24T16:00:22+00:00",
"url": "https://www.marcus-povey.co.uk/2018/09/24/indiewebcamp-oxford/",
"name": "#Indiewebcamp Oxford",
"content": {
"text": "This weekend I attended the first Oxford Indieweb camp, kindly organised by Garrett.\nDay 1\nDue to an early start, and not enough coffee, I had left my phone at home, and so couldn\u2019t log into anything. Two factor auth on things is great, but I think I\u2019ve just spotted a flaw.\nAnyway.\nI didn\u2019t go with much of a plan, except to meet some techy folk. So that much I achieved.\nI had some thoughts about maybe looking into federalisation \u2013 cross user login, friend/follow etc. But I also sensed this was going to likely be more than was achievable in the time I had.\nDuring introductions, I mentioned to folk that I was a contributor to Known and gave the project a bit of a shill, since I figured it might be interesting to folk by way of giving them a head start on a few things. So, spent the day helping one of the attendees write their first plugin for it.\nAfter a day of discussion and coding, we retired to a local pub for some more relaxed conversation.\nDay 2\nRain stopped play, which was a shame. Many folk decided to stay home. Nevertheless, had a pleasant morning chat over coffee and bagel with Beverley, hiding from the rain.\nGreat weekend of techy fun, more again soon, please!\n\n\n\nThanks for visiting! If you found this article, or the tools I write, useful, please consider dropping a few bucks in the tip jar. If you really liked it, please consider becoming a patron.\n(Psst... I am also available to hire! Find out more...)\n\n\nFollow @mapkyca\n\n\n\n\nShare this:\nEmail\nLinkedIn\nTwitter\nGoogle\nFacebook\nReddit",
"html": "<p><img src=\"https://aperture-proxy.p3k.io/250a7be79c5f0b3b98ccf7add93383360850af22/68747470733a2f2f7777772e6d61726375732d706f7665792e636f2e756b2f77702d636f6e74656e742f696e64696577656263616d705f6c6f676f5f3136303070782e706e67\" width=\"250\" align=\"right\" alt=\"indiewebcamp_logo_1600px.png\" />\n This weekend I attended the first Oxford Indieweb camp, kindly organised by <a href=\"https://polytechnic.co.uk/blog/2018/09/indiewebcamp-oxford-day-1\">Garrett</a>.</p>\n<h2>Day 1</h2>\n<p>Due to an early start, and not enough coffee, I had left my phone at home, and so couldn\u2019t log into anything. Two factor auth on things is great, but I think I\u2019ve just spotted a flaw.</p>\n<p>Anyway.</p>\n<p>I didn\u2019t go with much of a plan, except to meet some techy folk. So that much I achieved.</p>\n<p>I had some thoughts about maybe looking into federalisation \u2013 cross user login, friend/follow etc. But I also sensed this was going to likely be more than was achievable in the time I had.</p>\n<p>During introductions, I mentioned to folk that I was a contributor to <a href=\"https://github.com/idno/Known\">Known</a> and gave the project a bit of a shill, since I figured it might be interesting to folk by way of giving them a head start on a few things. So, spent the day helping one of the attendees write their first plugin for it.</p>\n<p>After a day of discussion and coding, we retired to a local pub for some more relaxed conversation.</p>\n<h2>Day 2</h2>\n<p>Rain stopped play, which was a shame. Many folk decided to stay home. Nevertheless, had a pleasant morning chat over coffee and bagel with <a href=\"https://webdevbev.co.uk/index.html\">Beverley</a>, hiding from the rain.</p>\n<p>Great weekend of techy fun, more again soon, please!</p>\n\n\n\n<p>Thanks for visiting! If you found this article, or the tools I write, useful, please consider dropping a few bucks in the tip jar. If you really liked it, please consider <a href=\"https://www.patreon.com/bePatron?u=10816522\">becoming a patron</a>.</p>\n<strong><em>(Psst... I am also available to hire! <a href=\"http://www.marcus-povey.co.uk/hire/\">Find out more...</a>)</em></strong>\n\n\n<a href=\"https://twitter.com/mapkyca\">Follow @mapkyca</a>\n\n\n\n\n<h3>Share this:</h3>\n<ul><li><a href=\"https://www.marcus-povey.co.uk/2018/09/24/indiewebcamp-oxford/?share=email\" title=\"Click to email this to a friend\"><span>Email</span></a></li>\n<li><a href=\"https://www.marcus-povey.co.uk/2018/09/24/indiewebcamp-oxford/?share=linkedin\" title=\"Click to share on LinkedIn\"><span>LinkedIn</span></a></li>\n<li><a href=\"https://www.marcus-povey.co.uk/2018/09/24/indiewebcamp-oxford/?share=twitter\" title=\"Click to share on Twitter\"><span>Twitter</span></a></li>\n<li><a href=\"https://www.marcus-povey.co.uk/2018/09/24/indiewebcamp-oxford/?share=google-plus-1\" title=\"Click to share on Google+\"><span>Google</span></a></li>\n<li><a href=\"https://www.marcus-povey.co.uk/2018/09/24/indiewebcamp-oxford/?share=facebook\" title=\"Click to share on Facebook\"><span>Facebook</span></a></li>\n<li><a href=\"https://www.marcus-povey.co.uk/2018/09/24/indiewebcamp-oxford/?share=reddit\" title=\"Click to share on Reddit\"><span>Reddit</span></a></li>\n<li>\n</li></ul>"
},
"author": {
"type": "card",
"name": "Marcus Povey",
"url": "https://www.marcus-povey.co.uk/author/marcus/",
"photo": "https://aperture-proxy.p3k.io/d35cd4b5ac6bb3b9bc7fa52476bca70a55835047/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f32653063353132323539316638393261363864366138396632373230373765363f733d343026643d6d6f6e73746572696426723d67"
},
"post-type": "article",
"_id": "1067660",
"_source": "244",
"_is_read": true
}
As someone who is really into the IndieWeb movement and content ownership, I host my own website but my Microcast is hosted in Micro.blog. To me, I still feel safe with my Microcast being on Micro.blog because the entire platform is built on Jekyll. I can sync the content of my entire Microcast website to GitHub and walk away with all of my files and pages, put them on another server and point my domain name at it. With that, I could successfully leave Micro.blog with all of my content very easily compared to any other hosted service. For some people it is too hard or not worth self-Hosting, but data portability is key to content ownership and that’s what Micro.blog provides in my opinion.
{
"type": "entry",
"published": "2018-09-24T02:16:09-04:00",
"summary": "As someone who is really into the IndieWeb movement and content ownership, I host my own website but my Microcast is hosted in Micro.blog. To me, I still feel safe with my Microcast being on Micro.blog because the entire platform is built on Jekyll. I can sync the content of my entire Microcast website to GitHub and walk away with all of my files and pages, put them on another server and point my domain name at it. With that, I could successfully leave Micro.blog with all of my content very easily compared to any other hosted service. For some people it is too hard or not worth self-Hosting, but data portability is key to content ownership and that\u2019s what Micro.blog provides in my opinion.",
"url": "https://eddiehinkle.com/2018/09/24/7/reply/",
"in-reply-to": [
"https://micro.blog/belle/911922"
],
"content": {
"text": "As someone who is really into the IndieWeb movement and content ownership, I host my own website but my Microcast is hosted in Micro.blog. To me, I still feel safe with my Microcast being on Micro.blog because the entire platform is built on Jekyll. I can sync the content of my entire Microcast website to GitHub and walk away with all of my files and pages, put them on another server and point my domain name at it. With that, I could successfully leave Micro.blog with all of my content very easily compared to any other hosted service. For some people it is too hard or not worth self-Hosting, but data portability is key to content ownership and that\u2019s what Micro.blog provides in my opinion.",
"html": "<p>As someone who is really into the IndieWeb movement and content ownership, I host my own website but my Microcast is hosted in Micro.blog. To me, I still feel safe with my Microcast being on Micro.blog because the entire platform is built on Jekyll. I can sync the content of my entire Microcast website to GitHub and walk away with all of my files and pages, put them on another server and point my domain name at it. With that, I could successfully leave Micro.blog with all of my content very easily compared to any other hosted service. For some people it is too hard or not worth self-Hosting, but data portability is key to content ownership and that\u2019s what Micro.blog provides in my opinion.</p>"
},
"author": {
"type": "card",
"name": "Eddie Hinkle",
"url": "https://eddiehinkle.com/",
"photo": "https://aperture-proxy.p3k.io/cc9591b69c2c835fa2c6e23745b224db4b4b431f/68747470733a2f2f656464696568696e6b6c652e636f6d2f696d616765732f70726f66696c652e6a7067"
},
"post-type": "reply",
"refs": {
"https://micro.blog/belle/911922": {
"type": "entry",
"url": "https://micro.blog/belle/911922",
"name": "https://micro.blog/belle/911922",
"post-type": "article"
}
},
"_id": "1067341",
"_source": "226",
"_is_read": true
}
I can reply to you from my indieweb site; I can follow your h-feed in an indieweb reader, but as mastodon doesn't send or receive webmentions we have to federate by hand for now. If you link to this post, I can manually send a webmention to make your reply show up.
{
"type": "entry",
"published": "2018-09-23T22:42:17+0000",
"url": "http://known.kevinmarks.com/2018/i-can-reply-to-you-from-my",
"in-reply-to": [
"https://social.coop/@bhaugen/100777379879628085"
],
"content": {
"text": "I can reply to you from my indieweb site; I can follow your h-feed in an indieweb reader, but as mastodon doesn't send or receive webmentions we have to federate by hand for now. If you link to this post, I can manually send a webmention to make your reply show up."
},
"author": {
"type": "card",
"name": "Kevin Marks",
"url": "http://known.kevinmarks.com/profile/kevinmarks",
"photo": "https://aperture-proxy.p3k.io/ed7979fd10a648fc253eae0b54e66fb36e57d3d4/687474703a2f2f6b6e6f776e2e6b6576696e6d61726b732e636f6d2f66696c652f3932353536353636363931373362373836376162383339656536353536663965"
},
"post-type": "reply",
"_id": "1064319",
"_source": "205",
"_is_read": true
}
17:30: Optional writing hour and quiet socializing
18:30: IndieWeb demos and hack night!
Homebrew Website Club retro 1980s-style logo
Demos of personal website breakthroughs. Create or update your personal web site!
Join a community with like-minded interests. Bring friends that want a personal site, or are interested in a healthy, independent web!
Any questions? Ask in #indieweb Slack or IRC
More information: IndieWeb Wiki Event Page
RSVP: on the Facebook event or post an indie RSVP on your own site!
{
"type": "event",
"name": "Homebrew Website Club SF!",
"summary": "17:30: Optional writing hour and quiet socializing\n18:30: IndieWeb demos and hack night!\n\nHomebrew Website Club retro 1980s-style logo\nDemos of personal website breakthroughs. Create or update your personal web site!\nJoin a community with like-minded interests. Bring friends that want a personal site, or are interested in a healthy, independent web!\nAny questions? Ask in #indieweb Slack or IRC\nMore information: IndieWeb Wiki Event Page\nRSVP: on the Facebook event or post an indie RSVP on your own site!",
"published": "2018-09-21 16:59-0700",
"start": "2018-10-03 17:30-0700",
"end": "2018-10-03 19:30-0700",
"url": "http://tantek.com/2018/276/e1/homebrew-website-club-sf",
"location": [
"https://wiki.mozilla.org/SF"
],
"syndication": [
"https://www.facebook.com/events/696256410773385/"
],
"content": {
"text": "When: 2018-10-03 17:30\u202619:30\nWhere: Mozilla San Francisco\n\nHost: Tantek \u00c7elik\n\n\n\n17:30: Optional writing hour and quiet socializing\n\n18:30: IndieWeb demos and hack night!\n\n\n\n\nDemos of personal website breakthroughs. Create or update your personal web site!\n\n\nJoin a community with like-minded interests. Bring friends that want a personal site, or are interested in a healthy, independent web!\n\n\nAny questions? Ask in \n#indieweb Slack or IRC\n\n\nMore information: \nIndieWeb Wiki Event Page\n\n\nRSVP: on the Facebook event or post an indie RSVP on your own site!",
"html": "<p>\nWhen: <time class=\"dt-start\">2018-10-03 17:30</time>\u2026<time class=\"dt-end\">19:30</time><span>\nWhere: <a class=\"u-location h-card\" href=\"https://wiki.mozilla.org/SF\">Mozilla San Francisco</a>\n</span>\nHost: <a class=\"u-organizer h-card\" href=\"http://tantek.com/\">Tantek \u00c7elik</a>\n</p>\n\n<p>\n17:30: Optional writing hour and quiet socializing<br />\n18:30: IndieWeb demos and hack night!<br /></p>\n<p><img class=\"u-featured\" style=\"height:300px;\" src=\"https://aperture-media.p3k.io/indieweb.org/c24f7b1e711955ef818bde12e2a3e79708ecc9b106d95b460a9fefe93b0be723.jpg\" alt=\"Homebrew Website Club retro 1980s-style logo\" /></p>\n\n<p>\nDemos of personal website breakthroughs. Create or update your personal web site!\n</p>\n<p>\nJoin a community with like-minded interests. Bring friends that want a personal site, or are interested in a healthy, independent web!\n</p>\n<p>\nAny questions? Ask in \n<a href=\"https://indieweb.org/discuss\">#indieweb Slack or IRC</a>\n</p>\n<p>\nMore information: \n<a class=\"u-url\" href=\"https://indieweb.org/events/2018-10-03-homebrew-website-club\">IndieWeb Wiki Event Page</a>\n</p>\n<p>\nRSVP: <a class=\"u-syndication\" href=\"https://www.facebook.com/events/696256410773385/\">on the Facebook event</a> or post an <a href=\"https://indieweb.org/rsvp\">indie RSVP</a> on your own site!\n</p>"
},
"post-type": "event",
"refs": {
"https://wiki.mozilla.org/SF": {
"type": "card",
"name": "Mozilla San Francisco",
"url": "https://wiki.mozilla.org/SF",
"photo": null
}
},
"_id": "1054114",
"_source": "1",
"_is_read": true
}