More from Josh Thompson
Introduction Here’s quotes from Spare the Child: The Religeous Roots of Punishment and the Psychological Impact of Physical Abuse, by Philip Greven. It was written in 1989, same year I was born, 35 years ago as of 2025. It’s sometimes nice to be able to share quotes with people. Photos of pages from books work only so well. Some books, many books, I’m able to read via my kindle paperwhite + the library. So it’s free to get on my kindle, and I can simply highlight text with my finger, save it as a highlight, and when I next sync books to it from the library, those quotes end up in my goodreads account, attached to the book. Sharabale, if I so choose. It’s how I get quotes like this. So paper books take a bit more work, but sometimes only a little extra effort. Until recently I didn’t know the above Goodreads/Amazon/Library book workflow and thought I had no way to get quotes off the kindle en-mass. I invite you to skim, see what lands with interestingness. From a section titled “Rationales”: page 68 … child is crying, not tears of anger but tears of a broken will. As long as he is stiff, grits his teeth, holds on to his own will, the spanking should continue, 43 But how long is long enough? When will the child’s will be truly broken? What sounds indicate to a parent “not tears of anger but tears of a broken will”? Hyles [the author of the above quote] does not say. What is remarkable, though, is the imagery of breaking wills, for that language links him with previous generations of twice-born Protestants who also sought to ensure that their children had no wills of their own. Often a distinction is made between a child’s will and his or her spirit. Roy Lessin, for example, declares: “A correctly administered spanking will break the rebellion and stubbornness in a child’s will but will not break his spirit.” James Dobson 1 a psychologist and the director of the multimillion-dollar organization in California called Focus on the Family, whose books on child-rearing (especially Dare to Discipline, which has sold over a million copies) have been enormously popular among evan-gelical Christians, explores the issue of children’s willfulness in The Strong-Willed Child: Birth Through Adolescence, thus joining a long line of corporal-punishment advocates obsessed with the wills of children. As a man who believes that “pain is a marvelous purifier,” Dobson has no hesitation in recommending that parents use “spankings” to control and to suppress their children’s willfulness and rebelliousness. The language of warfare is invoked at times in these treatises on will-breaking and punishment. Dobson, for example, uses the imagery of battles in his books such as Dare to Discipline, in which he notes: The child may be more strong-willed than the parent, and they both know it. If he can outlast a temporary onslaught, he has won a major battle, eliminating punishment as a tool in the parent[‘]s repertoire. Even though Mom spanks him, he wins the battle by defying her again. The solution to this situation is obvious: outlast him; win, even if it takes a repeated measure. Similarly, Fugate invokes the imagery of rebelliousness that arises from the willfulness of children: If the child’s rebellion has been the defiant resistance of his parents’ authority, he should be chastised until he chooses to give in. From a section titled “BREAKING WILLS” The focal point of evangelical and fundamentalist Protestant child-rearing always has been the emerging wills of children.* Breaking the child’s will has been the central task given parents by successive gen-erations of preachers, whose biblically based rationales for discipline have reflected the belief that self-will is evil and sinful. From the seventeenth century to the present, evangelical and fundamentalist Protestants have persistently advocated the crushing of the will even before a child can remember the painful encounters with punishment that are always nec-essary to accomplish such goals. The theme of breaking children’s wills was voiced even before the Pilgrims had taken firm root in America. John Robinson, who had been their minister in Holland but did not accompany them on their voyage to the New World, acknowledged in his essay of 1628 on the education of children that “It is much controverted, whether it be better, in the general, to bring up children under the severity of discipline, and the rod, or no. And the wisdom of the flesh out of love to its own,” he rec-ognized, “alleges many reasons to the contrary. But say men what they will, or can, the wisdom of God is best.” Citing Proverbs to confirm his point, Robinson noted that surely there is in all children, though not alike, a stubbornness, and stoutness of mind arising from natural pride, which must, in the first place, be broken and beaten down; that so the foundation of their education being laid in humility and tractableness, other virtues may, in their time, be built thereon. This fruit of natural corruption and root of actual rebellion both against God and man must be destroyed, and no manner of way nourished, except we will plant a nursery of contempt of all good persons and things, and of obstinacy therein. 37 Robinson’s language of breaking, beating, and destroying is no accident, as his advice concerning children’s willfulness makes clear: * In For Your Own Good, Alice Miller extensively quotes German and other European sources from the eighteenth century to the present concerning the breaking and controlling of children’s wills. The texts’ interchangeability with those from English and American sources is indicative of the omnipresence of such views throughout both Europe and America for many centuries. They are so much alike that any reader who compares the quotations in this book with those in Miller’s surely will be conscious, as never before, of the pervasiveness of what Miller labels “poisonous pedagogy.” […] [Philip Greven is quoting someone else:] The child can decide on his own when he wants the chastisement to cease. Whenever he is willing to submit to the parent’s will, he can profess his willingness to obey. He should be given the opportunity for an honorable, but unconditional, surrender. [emphasis added]. In his book God, the Rod, and Your Child’s Bod: The Art of Loving Correction for Christian Parents (1982), Larry Tomczak (a charismatic from a Polish Catholic background) describes a battle of wills with his eighteen-month-old son which took place in a parking lot. When his small son refused to hold his father’s hand, as he had previously been trained to do, Tomczak says that “He was defiantly challenging my authority.” He adds, “What followed in the parking lot was a series of repeated spankings (with explanation and abundant display of affection between each one), until he finally realized that Daddy always wins and wins decisively!” Apparently, only repeated acts of force could compel this small boy to submit to his father’s authority and comply with his will. But the issue of winning clearly was paramount. Win or lose: These are seemingly the only alternatives available to such parents. No choice is offered children except to surrender their wills to the wills and superior force of their parents. In the warfare between parents and children, the parents expect to win. If not, the war continues until such time as the children submit and obey. Only by giving in to the adults can children escape the pain and suffering brought about by the application of the rod or other implements in the name of Christian discipline. Whether thought of in terms of breaking wills or shaping them, the obsession with authority, control, and obedience remains paramount. Evangelical writers have been preoccupied for centuries with authority and obedience, and the image of authoritarian family government often shapes their arguments in favor of harsh discipline for children. Early in the nineteenth century, one anonymous evangelical advocate of the rod offered this advice: “To insure, as far as may be, the proper behavior of his children, let every parent make it his inflexible determination, that he will be obeyed-invariably obeyed.” He added, “The sum and sub-stance of good government is to be obeyed; not now and then, when the humor suits; but always, and invariably.” “The connexion between your command, and his obedience,” this writer noted, “should be the unfailing consequent of the other. “ Footnotes I cannot believe it. This person, James Dobson, decades after Spare the Child was written (1989, same year I was born) came back into the life of my family (and possibly your family) via my parent’s participation in his cult during my own childhood. I overheard TONS of ‘focus on the family’ programming as a kid. ↩
Introduction Often when I say “scooter”, especially in the united states, the person thinks of something different than what I mean. Here’s Denver’s Sportique Scooters, here’s one of their recent posts: So that is the kind of vehicle I’m talking about when I say “scooter”. I once had a vehicle just like that. I note that I wore a different helmet, vastly safer - I always ride with a full motorcycle helmet. Head injuries are no joke. It’s my primary vehicle, and my only vehicle. In America, nearly every situation is improved by having the option of riding one of those vehicles around. Collections of writings about scooters See, it’s not really about scooters, per se. It’s the verb of the thing. Scooters are different than cars, but the only reason it matters at all is because scooter-ing is vastly different than car-ing. And some of you might say “oh, I have a bicycle, and so…” Scootering is also different than bicycle-ing. 👉 https://josh.works/scootering
Last time, I did a minimum first pass on rendering a polyline on a map. It wasn’t just any polyline, though, it was a path of a walk I went on. (Technically, just a fragment of a path). this is a heavy draft, I’ve had issues getting this all working well in the past, still have to suss it today. the dictionary definition of a polyline is ‘some string that decodes into lat/long pairs that can be traced on a map’. I’m interested in the lines I’ve always looked at, which were made by Strava, from a device on my person, while I was walking, or biking, or riding my scooter. So it’s data, but it’s also extremely-specific-to-me location data, and it obviously has the capacity to be fascinating. My data is likely to be boring to you, though. What might not be boring would be your data. You could go on a walk right now, with the Strava app running on your phone, save the activity, and a moment later be looking at a map with that new activity data rendered upon it. Lets do just that. Like any good thing on the internet, there’s others who have done this thing in a concise and better-than-i-could way. These were my first sources and inspiration for this project: https://www.markhneedham.com/blog/2017/04/29/leaflet-strava-polylines-osm/ https://gist.github.com/mneedham/34b923beb7fd72f8fe6ee433c2b27d73 Today, I’m going to try to ‘quickly’ get a working auth ‘thing’ set up, close-enough to a copy/paste ruby script, so you can run a script or run some ruby commands in an IRB terminal, and get your data back from Strava, including any activity data polyline strava has. The goal being a polyline you can copy and paste, yourself, into a html document and get a cool map, showing off a walk or journey you went on yourself. It’s strongly based on Mark Needham’s stuff. First, download the Strava app (android/iphone whatever: https://www.strava.com/) Create an account, and then go on a ten minute walk while tracking that as an activity in the strava app. Finish the walk, end the activity. It’ll upload to Strava, and now we can use the Strava API to get that activity data back out and look at. You can keep working through this guide without activity on your Strava account, so maybe plan on taking a ten minute walk in the next hour or so. Set up a ‘strava application’ Strava has apps, and you can give those apps permissions at a per-app basis. You’ll set up an app that you’ll then give permission to know certain things about your data. So, to make the app account, and get your account id/ key, head to the developer settings. go to https://www.strava.com/settings/api and follow the prompts to get an API application set up. When you have your client_id and client_secret available, you’re ready to continue. We might use https://github.com/dblock/strava-ruby-client at some point. Authorize the app to access your strava data You’re going to need to generate a token (a refresh token and ) We’re going to do some creative things. Paste this into a pry session. do gem install 'strava-ruby-client' first. Then, fire up a pry session or irb session in your terminal. I recommend a text file where you can keep text for copy/paste accessibility. Copy the below text into your own blank file, update the client_id and client_secret variables (don’t commit any of this to github, you can make it an environment variable later. Or now.) require 'strava-ruby-client' client = Strava::OAuth::Client.new( client_id: "id", client_secret: "secret" ) redirect_url = client.authorize_url( redirect_uri: 'https://localhost:4000/oauth', approval_prompt: 'force', response_type: 'code', scope: 'activity:read_all', state: 'magic' ) this did not work: https://www.strava.com/oauth/authorize?approval_prompt=force&client_id=63764&redirect_uri=developers.strava.com&response_type=code&scope=activity%3Aread_all&state=magic this worked: https://www.strava.com/oauth/authorize?client_id=my_client_id&response_type=code&redirect_uri=http://localhost/exchange_token&approval_prompt=force&scope=activity:read_all Look in the URL for “code” variable, and carry it on to the next step, where we give Strava this code, it’s treated as a ‘refresh token’, and if we give strava a refresh token it’ll give us back a valid access token that can then be included in the request authorization of every subsequent API call, and we’ll get back data for the strava account identified by that access token. This is all ‘just’ ‘basic’ auth stuff, but it can get tricky sometimes. require "uri" require "net/http" url = URI("https://www.strava.com/oauth/token?client_id=YOURCLIENTID&client_secret=CLIENT_SECRET&refresh_token=REFRESH_TOKEN&grant_type=refresh_token") https = Net::HTTP.new(url.host, url.port) https.use_ssl = true request = Net::HTTP::Post.new(url) response = https.request(request) puts response.read_body # look at the response before continuing, save the `access_token` In following that link, and approving the app, you’ve given your own app access to your Strava account data. Finish the oauth “flow” to view your data. With that code, in Postman you can now make a request. To see if it works, you can also paste this into an IRB session: require "uri" require "net/http" url = URI("https://www.strava.com/api/v3/activities/") https = Net::HTTP.new(url.host, url.port) https.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = "Bearer ACCESS_TOKEN_FROM_PRIOR_STEP" response = https.request(request) puts response.read_body boom. Look at your activities! The polyline(s) might be visible now. If so, phenominal! Save them to a text file, or a CSV, manually or automatically. To get the detailed polyline, and not just the summary polyline, you need one more request: require "uri" require "net/http" url = URI("https://www.strava.com/api/v3/activities/YOUR_ACTIVITY_ID?include_all_efforts=true") https = Net::HTTP.new(url.host, url.port) https.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = "••••••" response = https.request(request) puts response.read_body Does that work? I hope it does for you. It worked for me.
This is a first pass at trying to do something interesting (repeatedly) with the same base primative, in this case, a “polyline”. Read the rest of this post, understand what we’re going for, then go to part 2: get your own polyline from strava. It’s not trivial to get, but its interesting data, and you’ll have an abundance of polylines, if you want them. The polyline in question I got from Strava, after recording a scooter ride: This post should be interesting to programmers and non-programmers alike. A polyline is a way of encoding a bunch of latitude/longitude pairs, so it can be drawn in detail on a map. Here’s what the polyline looks like, raw: oops, in a browser this string simply disappears off the side of the page. Here’s what it looks like in an editor: That string is suuuuper long. The only way to get it on your clipboard is to triple click it, highlight the whole thing, ctrl-c. You could then paste it into a polyline decoder. I googled my way to this one: https://www.daftlogic.com/projects-convert-encoded-polyline-to-latitude-longitude-list.htm, and see all 3321 lat long points. Here’s a snippet of what some of it might look like: update, using a different polyline than what I started this whole thing off with - it was maybe giving me issues. 39.72873,-105.00070 39.72877,-105.00071 39.72882,-105.00062 39.72894,-105.00062 39.72898,-105.00060 39.72904,-105.00051 39.72904,-105.00040 39.72908,-105.00035 39.72925,-105.00034 39.72929,-105.00030 39.72930,-105.00024 39.72932,-105.00038 39.72933,-105.00039 39.72951,-105.00032 39.72967,-105.00032 39.72971,-105.00027 39.72979,-105.00020 39.72992,-105.00015 39.72999,-105.00005 39.73016,-105.00005 39.73020,-105.00004 39.73031,-105.00007 39.73039,-105.00006 39.73043,-105.00002 39.73043,-104.99993 39.73040,-104.99989 39.73032,-104.99991 39.73033,-104.99996 39.73024,-105.00000 39.73018,-105.00000 39.73016,-104.99998 39.73023,-104.99993 39.73037,-104.99995 39.73037,-104.99992 39.73036,-104.99997 39.73033,-104.99999 39.73032,-105.00005 39.73030,-104.99999 39.73027,-105.00000 39.73029,-105.00001 39.73028,-105.00000 39.73029,-104.99998 39.73032,-104.99993 Those lat/long pairs are not super useful to look at, so to make a polyline ‘useful’/viewable, you need a map. (and html and javascript, including one very specific JS package, I suppose, and global supply chains of computing technology and the internet!) One can pop the polyline into Google’s polyline decoding utility to see it rendered. Here’s what the original polyline I was working with looks like: If you plot the polyline above (triple-click, ctrl-c, paste) you might see activity data from Denver, I went on a multi-hour walk with my kid through the local park and botanic gardens. More about those later. If you don’t see that data, maybe there’s some issues with the copying and pasting. Now, lets do something interactive, close to what google is doing there under the hood. I’ve used Leaflet before, and mapbox, a little, so I’m going to start with those. Lets render a bare map, but open it up to about where the polyline will go. I’m sorta writing this blog post top down. Lets add a map, and initialize it. Following the Leaflet quick start docs, and soon making use of a js/leaflet plugin that lets us decode polylines directly via L.Polyline.fromEncoded(polyline). I was stressing about how to add JS without something like NPM, but then realized I can source the file directly in the head of the document Open up a new file on some directory - maybe leaflet_practice.html We sourced there css, then JS, then added a div for a map, did a tiny bit of styling, and minimum JS. Telling the map to open on Denver’s approx lat/long. <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin=""/> <!-- Make sure you put this AFTER Leaflet's CSS --> <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script> <div id="map"></div> <style> #map { height: 180px; } </style> <script> var map = L.map('map').setView([39.742043, -104.991531], 13); L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19, attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>' }).addTo(map);) And here’s what that renders: <script type="text/javascript" src="https://rawgit.com/jieter/Leaflet.encoded/master/Polyline.encoded.js"></script> ^------- this line is a critical addition There we go! It worked! A basic map. Pinch and zoom and pan. Cool, huh? Lets add the polyline next. We’ll assign to to a variable, and ask Leaflet to decode it and add it to the map. edit, that was really hard, what you’re about to see is a much smaller version of what I’d planned to do. It’s just a tiny fraction of the whole polyline, arbitrarily cut off at one end. I’ll explain what I did below. bleh, I didn’t even get the polyline directly encoded/decoded, I had to do an interstitial bit where I was working directly with lat/long pairs, as retreived from the decoder. Dang. var map1 = L.map('map1').setView([39.742043, -104.991531], 13); L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19, attribution: '© OpenStreetMap' }).addTo(map1); var map2 = L.map('map2').setView([39.736532, -104.977459], 18); L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 23, attribution: '© OpenStreetMap' }).addTo(map2); var encodedPolyline = "u}pqFttt_S@NFNB?JA@@DIH@@CEEBAPAFBHK@@FEf@??FLEPA\\?LD@CECDI?BBEH?DHLCT@BLBtB?@FADDDMADC@BJEIBAEMA@AC?HKACDDAHQEMA{@?e@BCR@FBJ?DBJAHB`@AF@LAHE~@?FEJLVC\\?DNBA@BFBBAPMJAP@NCBE?CIO@Cn@Fl@Cj@BDEDBFALDN?^?HILCRHNAVD~@?XKz@k@HSBWHKVOD?b@VJBHA?KCQBi@n@Sp@e@`AMHIJDZB^?\\KPKVYLq@f@i@Nm@L}@Cg@Q_AMWDH?CUa@g@YCEBGJQ`@]Eu@AA?HAG?f@CFSZITDHXXJPN`@BBAU}@s@_A][EEBAA?OEA}@JQL@F?EMAKLKBEFPd@Ma@QBA?D@EHKBKJKDILEGHe@@WAAEA@BBCADD@ABCK@UCW@IRO\\GDGLABBF?TGD@TI^GX?@EDBJCNBFCLDHJLMBBBCL@NFDC@MH?JN@X@BD?NIJBh@SZ@HK@BVA@CDALDHHRAHBZBFEBYFO?MBSAECHDPANOIOC?CJIFDFB@DDEEA?DC?B@ALLKADACADC@AC@@GBAA?ECBARDPBKEHDA?IEA@@?C@F@AB?@FCKAF@D?C@@EC@A?BCC?E@P?CCB?GFAGB@CAA?BC?D??D@K?AAB@@AAC@@EDACD?CBBABCA@CADACB@CAC_@@UCKAABGAUAEICAEBa@FU@_@@ED?^BDA@IEQ?k@FCF?DBBGEOCWCAMAG]EAKBADGECECa@Bk@Dc@EaBDQE?CGD_@PIH@LHD?@BIFEEOAf@CDAAI@DBEF@IC?B?CFFDBBFF@LC@ICEQE?B?M@LCAD?EDAC@A@DA@FKACGCFBABCAEIHDB??DCABB@AEGDFEABFAC?CABECJHGBDXXPD`@L@HBDZ@NAJC@O?DOD@CM@BBABNAHEBI?GEKAM?QDDCL?RBJ?HIBKISR@CHBACBECDDG@BB?C@FCGKrC@\\?BCABB@\\?d@@@?C@H@AC?CF?\\GFK?G@EA?CG?gABQFCFCn@Ft@JDT?BFBKNBEGGE?EGAMD@EJQBBFIJGB?@FAFC@B@ABHQ@BMN?H?KCA@@@A@@ABAAHEA?@B@GDCI@?BAEABCA?CB?CBBHGCB?CCBFC?@E?@BC?BCD@CC?BAA@?E@?@AC@AF@??C@G@LEEWFD??FHALD@DGF]CMR@SCAABDADDC@AEED@ADABDCBEA?@?CDAEB?NCCBEABBBDPXJFFDGJ?RGBEB@\\R^LHJJ@d@Kb@E^MD?@@C@@IABDEDBj@?~@GNBJANDr@?TDXNNPPd@Fz@Gz@?f@BZAVBb@Cf@@HELG@?EDB@ADHBrBDz@KpA?~@Kv@a@|@_@Va@`@G?KES[KGKWGEa@CQEBDk@CYBKDc@XSAODUA]DSC[Bk@Ck@BUAUDIAAAUFQIYCIMK]MAODEDAGDBC?CIBUECE@DEACCFD@ACADE@AEFFGMFA?@IAI@AGBMCE@HBBKBG?DCDKLCG@@IBA@MZWA@?CGGCAAGKUAK@MCKIGM_@IA@KDEC?CHAAAD@BB?CA?B@CHJADBBCCC@CNGFBHJJMCC@DT?F?AF@FH?HGXBTFNKPFAAAG@CD?E@DH@@EAIDD?ACCFDDLGB?FELAAC?CMA?BJBMEKA?@A?DJHE?CCCFCAJED@ACA@@EHXFC?EEACKFQ?EEAM@AFC@L?LUHXD?ABCCCFAC@B@GKG?KOUAKKIq@RCD@DHB?@CBVUPo@D?A?BDNQCS@GDQHMCHDIJq@HMBMDI@KC??DBCH?EO?CBACKL_@HI?KCXICJMFS?GGCID@PPQA@GEE?HDHKHC^DBABGLENA@CFe@CMCk@CACD@BCAEIBMB@BGHCB@EM?KBI\\CNBPYEGGB?MCCCLG?@CCHG@EE@CFA?DSFAJBEEDBXCF?V??@E@MFCOi@?KDCB@?FIB?BB`@CN?ADDHY@a@AAADEBAD@HFEC?@CEA@EB@AG@BPEJ@CGOGQ\\AIDCA@EYBMFKH?E^BXAHAAGQFB@ACC?HHIDKC?@BDGB?@FGDE?CKCDAG?FHUYEIDBRHBDF?C?DAGBO?KD[KUEBIABDE@WAIBF?M?ADDv@D@FE?FHGJBBH?RDD@MGOGG?IB@C@@ABF@LHLJBFABKCIBJE@@BG@IJO@?BB?CDB\\DVCDCME?@L@FAB?IFL@J?NEL@X?CCPCAADKAEBWOIBO?a@OG?OQQGG@ML@LEJCZ@@AD@AGJI`@EFCABA@BCH?CMJOBENIp@CDAHEDAAIDMH@@I@?B@AJF@PEFQDC?@@D?WHYRo@R?DQDKRQJG?UFIAm@HOEACDBABE??FIE@AJABKOJGNKACFFdBADG@@BEAZAp@KdCCRG@?AB@CDHLA^Dv@Gd@BNEDUJUBQDID?Ae@C?IBECCC@FGPDTKBIKVy@?UFQF]GMKK[QMAOFYVE?OHO@ULSRGBSb@^r@RXJDXD^ALBhAEDWCI?SC?EBCJ?JDEE@B@BCACC??BDEB@C@FC@CM@GFAABBNKFK@@G?KBIL@@XMDIGH@@BA?OMGMFGFYh@CNAAAEADIDIGSA[HUCGEQ_@_@Y_@q@c@NEDUD]LI?MC}@@e@GUAGDEXUXg@Xa@NGFc@AOBY?k@Ig@Fq@A]DCDc@AY@GGQD_@@GLC@eA@OCqCG}@HO?ICc@DYGMBEEM?MLSE_@?SDm@EO?IDGEG?KFFl@?n@K@QC]@OAKFAFFh@I\\?HDBTCBCEAE@@F@B?Da@PJEKAACDAVWd@[??ALBFNIWHDA@FFA?GGABICC?@s@FSAj@@J@BFCEQCs@DLGH?GBF?C@F?EAB?C?BACAC@?CCBBDHBFAOABA?ACASDH?BBFA@CBBH?KGM@HAMABDF@ICB?EEDDC@?AFAGAB?AAC?D?AB@AO@JDcCP|BWF?DFCGAB@EDLEKFD?@IGF?ED?CAAFHAEA@ACCFECC@?CIDBEGGABBBJAH@@CSDREBMGJB@CAB@AAABBBCGABB??BCBUJFKB@C?CCTIYDEFFEZAICWJAKD@HEF@AB?EDDAHHKCGOJ?BHCENNM@EA?AAD?C@?C?D?E?B@AA??A?DH??BKC@C@DCE@D?EBBCCM@F?AAFBAA@?C@@BA?BCA?@??CA@@AA?@@?A?@@AA?@?CA@BGEI@ABR?KHB?ACF?CIFWIFADB?JEKHDDECDE@HIDFA?MABD?GNEDNQCC@@GDE?BAFA?BD?MBCBBAAAFKA@@FAA@C@BCBI@DEBAABB?@AAE?BC?@EB@GADD?@AA@BGSFRAA@A?H@AAECJEFFE@M?H@AAI@BDAG?@@AC?@CABB?A@?A@@EC??CC?F?CJB?CACB@?E?AGFECBEEHB@FABACJ@BCC@KKC@BGF@A@ACDFAF@DAI?@E@DGDA?@CBCAADBG?BAAAFEAF@AAEBB@?EC@P@BBI@EKBKC?AHBFCK?DBBHAGAADO@H??BD?C?@ADBCGD@YJXAIKBA?EGFBG?B@CA@AC?BC@CCDC?ADAEJB@ACC@B@CBN?EC?BGD?FBEI@B?@IM@G?NIH?DDIIHD?EAD?ICBIAHACDBBA?H@EBLAO?BAG?BCC@B@GED?ABFB?D@CEADEM?AABCDDKAL?CBBA@FEC?CI?B?A??EB@EALBABBC?BE@DAA?@@A@BAD?E@D?WDF?FE?BEAFBCABAA@ECDBCEEDB?ACD?ABDAIBD@AABAC?BAI@F?AGC??@DAC@DDA@BCCBE?AIH@@J@AADB@?KE?DFC?EEKCD?ADD@AA@AD?E@BAGCL?G?A@@ABBE?@EIAL@AB@BAG@@CAF@O?@@C?@@DA?CC@B?C?@A@?CB?EB?CAD?SAh@FK?MCMBF@?@B??EBCD?OABCNBKB?BH??CL@Q?@E@FC@HBI?AAE?HAAAGBFB?DB@GCBCEAH@G?B@CBDCA?BAAA??G@FA?CC@BAGAIBT@QBl@GKAO@B?A?F@UBD@BAI?FMCNBOEHDEKDJIMDFBWDTBDC@GAAB?ECF@EF@GCJBMCF@EAHACF@HCG?F@K?@DE?BMFDCAACUBRACBN@QDDACGBAI?H?C@B@?I[JH?A@NCKCS?P@VE@@@J[MJ?HFEDYAN?@E@@FCL?FCK?QBJ@O@b@@MIM@LDICJE@KA@@@AFG@DFE@@@E?AE@?CCBAI?FJF?E??ICEF?C??HCABC@F@CC??CE@FAAE?D@AC?@@F?G@@DC?AE@@?@@AGAH@A??C@?A?CBFEIB@?CED@AECHB?C?FCCAB?AB?CA?@@ADCARAG?BBIAD@A?DEIFFCG@BEB?E@?AEHDE?ECB?DBAG?DAA@B@@AEA?C@BEDD?@E?BBAAC?BC?AED@GDDE?BBC?BGCLGM@A?FACHEEBAE?D@A@D?A@?CD?M@F?A@HBCA@GCB?CC@D@C?@@A?@B?ADCICCDD@@CBHOAJAAAB?@EG@FNAA?EEAA@BCC?FACEB@E@BAAE?FCBJEC@B@SBLD?CEADDDCI?BA?CCA@??B@CB??BCB@AAAB@CAB?C@@CB@C@B?I?@?@BGAJIE?DEEAHFE@A?BCE@J?CAD?A?@AG?@@ECHDOB?BHDCA?G@?A@FAG@?@D@KJDEACBABC@@C?@BEAD@?@CABB@CK?HCKDB?A@BEB??@CABAAAEDHAGADA?CC@@@C?EB@?AABB@C@@C?BAAAJ@C?EADAEAA?F@EAD?IDDAEAD@A?@?@AE@BA?@C@B@ABEABCCADACBG?J?B?CA@?C?ACD@BAC@@ACA@BC?ECB@C@D@C@DAEAF?@@A@EA@CB@E?FAIDECE?ABCA@ANDBAEAD@CC@CC?D?E?EDNBC@@B?EEA?@B?G?DAADAA@CHA@@E?ABCABAA?DB?@CC@CBBE@D@CADAEA@EA?@@A@@HI@DIA??ED??BC@@CCABEACGDC?@A@BH@?DC@JBECDCGCBCG@IA@?C@@@BAACD?BCEABABBAHLB?GC@?FQCFA?ARFEBD?OAFACDCA@CG@F@C?CE@A?BD?C@AAH?@CK@D@FAACBA?CEBB@@AQADACDG?L?ACA?DBCFDBABJ?KEEEI@HADB@AACG@B?@@A?BAAANCB@E?AFE@B@E?JCCB@@CA@C@?A?BAAC@?I@?DI@BB@CCA@EEE@@?F@A?B@A?BDA?CA?@AK@B?DIE@BFB?EBBAC?D?BA?ACAB?C@D?@D?ICACBHDGDEAEGG?T@GI@?C@CAABF@DCE?D?A?@@C?D@BA@?A@C?@BE?BBA??@B@ACB@EA@AD@KAPBKE@??@C?DACCB@C??@DBEADDEA@BA@B?G?CCD?C@@CBAGCBAI@?BF@AC@@A@@AEAAEC?DBA??AA@D?BKOAPBM@LBC?D?K@L@C?@B@?CCJ?ICE@FAGAJ@O?@AC?BA@BF@M?AGCCD?OCA@DBNDEAAJ@A@BAEDBIGDA@@E?BDCEAD?AD?CA@ADFAGA?B@QMLFBBA@?AEBACHAG@@??B@C@@C@BB@CEB@EC?DABFEC?@@ACE?BACIAB??BAADCAC?BC@B@?@E@F?@@CEDAA@?CIAJ@A@E@J?K?D?C?PFMAFDJ@ECFA?AQMOH@?AE@BDAA?B@FCADB@C@A@?CBC@@GA@AABBCDDC@B?ACQ?H@?BC@E?PEAABAC?ABCCBECDHFMBBEK@C@@BPGD@Q@AF@@BCLSDAA?@@KBB?CD@AGBJAQ@DCRAI@CE@@GBD??EDAJDCFYCGCCBLCCC@BHAC@B?A@DECBB@CA@AAB@CA@B?AAABBA?@AA?@W@NCC?@?EFa@DFIAA`@??GPCEBBDCACBBAA?@?ACABB@?GCDB@C?@AF?M@BA@D?CC@HCCB@?AC@C?@BAI@DCMCE@BLB??FC@BCCQPGJ?EFMD@HFGCAF@MD?ABCH?S?@DDDBAG@@G@??EC@CAB??BFI@?EDE@@FFS@BCDG?CDCCJD?DCA@CCGBCDBCA?B@ELDCEHBGA?@D?EAEDBCAAC@?BEBMEREB@KDBCF?C@DCC?AE@DDGG?KFGALCB@AB?AB?G?F@ZGKAYHVGB?ODEAAJD@?FB@BCACEC@CABE?@CC?IMFVL??IE??@AA?@?EC?B??D?E?@@A?BCC@FBDAE?DB?GK@??@?AAA?B?C@?@NDCCFBEFEEGM??BD@A@E?FCMCE?J?@BBCI@HCD@I?ABD@?C?BCAF@M?ABBBFAAA@BBAC@?EBBCAIBBKDACA?@E?BBAEEDICNBO??CD?BBGBB@F@CCBCG?B?ADFFBCC@BI@@CCDDI@@ACAAGQFJADBDGB@ECC@PFGDIATCE@ICBCD@AAE?C@@@C?AAHAIILAJDQ@A?FBABQ@?DC?LA@KC@B?@?ACBAE?ABB@KBB?CAPAE?@AGAH@C@?DB?ACFAAEK?J@M?GBD?ADBAABHACEBAFDK@D@O@EC@AECHCJ@C?D?ACDAGFDB?ACCGB@@M?b@?I@DFD@?ED@CCH@Q@EA?A@@C@QESH?IJ?VEDIDCYBTGUJLADDCGBFA??DAEBECGCBHDJ@I?Gn@?YH?CEEBEA?ADAEFE@AAFEB?BFCFGHECEO@GNGCEGBC?FKJD@HDBV@HIKAOFIC?BHBBAI?DCACKGE@?@FBEFAKKMHAK?R?SCNB?BHNADB?BFFBD?c@GHEBEA@QAMBF?\\JAEG@@CH?BEMAHIEBCK?BD@GTBDGGJGGBBC@??EFHYAHAA@BBPD?EKE?@ACB@CBBCA?@??CAB@@@AEA@?AB?CBBAC@DEABBC@BAA??GDDAB@GC??@?CCDBEBB?DCI@B?CABAC@@A?@??AAB@C?D?E?B@CA@B@C??A?@BAA??DC@@CC?BE"; console.log("🙄") var decodedPolyline = L.Polyline.fromEncoded(encodedPolyline) line = L.polyline(decodedPolyline._latlngs , {color: 'red', weight: 2, opacity: .7, linejoin: 'round'}) line.addTo(map2) console.log('omg') map2.setView(decodedPolyline._latlngs[0]); Here’s what I did: var map2 = L.map('map2').setView([39.736532, -104.977459], 17); L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 23, attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>' }).addTo(map2); var encodedPolyline = JSON.stringify("u}pqFttt_S@NFNB?JA@@DIH@@CEEBAPAFBHK@@FEf@??FLEPA\?LD@CECDI?BBEH?DHLCT@BLBtB?@FADDDMADC@BJEIBAEMA@AC?HKACDDAHQEMA{@?e@BCR@FBJ?DBJAHB`@AF@LAHE~@?FEJLVC\?DNBA@BFBBAPMJAP@NCBE?CIO@Cn@Fl@Cj@BDEDBFALDN?^?HILCRHNAVD~@?XKz@k@HSBWHKVOD?b@VJBHA?KCQBi@n@Sp@e@`AMHIJDZB^?\KPKVYLq@f@i@Nm@L}@Cg@Q_AMWDH?CUa@g@YCEBGJQ`@]Eu@AA?HAG?f@CFSZITDHXXJPN`@BBAU}@s@_A][EEBAA?OEA}@JQL@F?EMAKLKBEFPd@Ma@QBA?D@EHKBKJKDILEGHe@@WAAEA@BBCADD@ABCK@UCW@IRO\GDGLABBF?TGD@TI^GX?@EDBJCNBFCLDHJLMBBBCL@NFDC@MH?JN@X@BD?NIJBh@SZ@HK@BVA@CDALDHHRAHBZBFEBYFO?MBSAECHDPANOIOC?CJIFDFB@DDEEA?DC?B@ALLKADACADC@AC@@GBAA?ECBARDPBKEHDA?IEA@@?C@F@AB?@FCKAF@D?C@@EC@A?BCC?E@P?CCB?GFAGB@CAA?BC?D??D@K?AAB@@AAC@@EDACD?CBBABCA@CADACB@CAC_@@UCKAABGAUAEICAEBa@FU@_@@ED?^BDA@IEQ?k@FCF?DBBGEOCWCAMAG]EAKBADGECECa@Bk@Dc@EaBDQE?CGD_@PIH@LHD?@BIFEEOAf@CDAAI@DBEF@IC?B?CFFDBBFF@LC@ICEQE?B?M@LCAD?EDAC@A@DA@FKACGCFBABCAEIHDB??DCABB@AEGDFEABFAC?CABECJHGBDXXPD`@L@HBDZ@NAJC@O?DOD@CM@BBABNAHEBI?GEKAM?QDDCL?RBJ?HIBKISR@CHBACBECDDG@BB?C@FCGKrC@\?BCABB@\?d@@@?C@H@AC?CF?\GFK?G@EA?CG?gABQFCFCn@Ft@JDT?BFBKNBEGGE?EGAMD@EJQBBFIJGB?@FAFC@B@ABHQ@BMN?H?KCA@@@A@@ABAAHEA?@B@GDCI@?BAEABCA?CB?CBBHGCB?CCBFC?@E?@BC?BCD@CC?BAA@?E@?@AC@AF@??C@G@LEEWFD??FHALD@DGF]CMR@SCAABDADDC@AEED@ADABDCBEA?@?CDAEB?NCCBEABBBDPXJFFDGJ?RGBEB@\R^LHJJ@d@Kb@E^MD?@@C@@IABDEDBj@?~@GNBJANDr@?TDXNNPPd@Fz@Gz@?f@BZAVBb@Cf@@HELG@?EDB@ADHBrBDz@KpA?~@Kv@a@|@_@Va@`@G?KES[KGKWGEa@CQEBDk@CYBKDc@XSAODUA]DSC[Bk@Ck@BUAUDIAAAUFQIYCIMK]MAODEDAGDBC?CIBUECE@DEACCFD@ACADE@AEFFGMFA?@IAI@AGBMCE@HBBKBG?DCDKLCG@@IBA@MZWA@?CGGCAAGKUAK@MCKIGM_@IA@KDEC?CHAAAD@BB?CA?B@CHJADBBCCC@CNGFBHJJMCC@DT?F?AF@FH?HGXBTFNKPFAAAG@CD?E@DH@@EAIDD?ACCFDDLGB?FELAAC?CMA?BJBMEKA?@A?DJHE?CCCFCAJED@ACA@@EHXFC?EEACKFQ?EEAM@AFC@L?LUHXD?ABCCCFAC@B@GKG?KOUAKKIq@RCD@DHB?@CBVUPo@D?A?BDNQCS@GDQHMCHDIJq@HMBMDI@KC??DBCH?EO?CBACKL_@HI?KCXICJMFS?GGCID@PPQA@GEE?HDHKHC^DBABGLENA@CFe@CMCk@CACD@BCAEIBMB@BGHCB@EM?KBI\CNBPYEGGB?MCCCLG?@CCHG@EE@CFA?DSFAJBEEDBXCF?V??@E@MFCOi@?KDCB@?FIB?BB`@CN?ADDHY@a@AAADEBAD@HFEC?@CEA@EB@AG@BPEJ@CGOGQ\AIDCA@EYBMFKH?E^BXAHAAGQFB@ACC?HHIDKC?@BDGB?@FGDE?CKCDAG?FHUYEIDBRHBDF?C?DAGBO?KD[KUEBIABDE@WAIBF?M?ADDv@D@FE?FHGJBBH?RDD@MGOGG?IB@C@@ABF@LHLJBFABKCIBJE@@BG@IJO@?BB?CDB\DVCDCME?@L@FAB?IFL@J?NEL@X?CCPCAADKAEBWOIBO?a@OG?OQQGG@ML@LEJCZ@@AD@AGJI`@EFCABA@BCH?CMJOBENIp@CDAHEDAAIDMH@@I@?B@AJF@PEFQDC?@@D?WHYRo@R?DQDKRQJG?UFIAm@HOEACDBABE??FIE@AJABKOJGNKACFFdBADG@@BEAZAp@KdCCRG@?AB@CDHLA^Dv@Gd@BNEDUJUBQDID?Ae@C?IBECCC@FGPDTKBIKVy@?UFQF]GMKK[QMAOFYVE?OHO@ULSRGBSb@^r@RXJDXD^ALBhAEDWCI?SC?EBCJ?JDEE@B@BCACC??BDEB@C@FC@CM@GFAABBNKFK@@G?KBIL@@XMDIGH@@BA?OMGMFGFYh@CNAAAEADIDIGSA[HUCGEQ_@_@Y_@q@c@NEDUD]LI?MC}@@e@GUAGDEXUXg@Xa@NGFc@AOBY?k@Ig@Fq@A]DCDc@AY@GGQD_@@GLC@eA@OCqCG}@HO?ICc@DYGMBEEM?MLSE_@?SDm@EO?IDGEG?KFFl@?n@K@QC]@OAKFAFFh@I\?HDBTCBCEAE@@F@B?Da@PJEKAACDAVWd@[??ALBFNIWHDA@FFA?GGABICC?@s@FSAj@@J@BFCEQCs@DLGH?GBF?C@F?EAB?C?BACAC@?CCBBDHBFAOABA?ACASDH?BBFA@CBBH?KGM@HAMABDF@ICB?EEDDC@?AFAGAB?AAC?D?AB@AO@JDcCP|BWF?DFCGAB@EDLEKFD?@IGF?ED?CAAFHAEA@ACCFECC@?CIDBEGGABBBJAH@@CSDREBMGJB@CAB@AAABBBCGABB??BCBUJFKB@C?CCTIYDEFFEZAICWJAKD@HEF@AB?EDDAHHKCGOJ?BHCENNM@EA?AAD?C@?C?D?E?B@AA??A?DH??BKC@C@DCE@D?EBBCCM@F?AAFBAA@?C@@BA?BCA?@??CA@@AA?@@?A?@@AA?@?CA@BGEI@ABR?KHB?ACF?CIFWIFADB?JEKHDDECDE@HIDFA?MABD?GNEDNQCC@@GDE?BAFA?BD?MBCBBAAAFKA@@FAA@C@BCBI@DEBAABB?@AAE?BC?@EB@GADD?@AA@BGSFRAA@A?H@AAECJEFFE@M?H@AAI@BDAG?@@AC?@CABB?A@?A@@EC??CC?F?CJB?CACB@?E?AGFECBEEHB@FABACJ@BCC@KKC@BGF@A@ACDFAF@DAI?@E@DGDA?@CBCAADBG?BAAAFEAF@AAEBB@?EC@P@BBI@EKBKC?AHBFCK?DBBHAGAADO@H??BD?C?@ADBCGD@YJXAIKBA?EGFBG?B@CA@AC?BC@CCDC?ADAEJB@ACC@B@CBN?EC?BGD?FBEI@B?@IM@G?NIH?DDIIHD?EAD?ICBIAHACDBBA?H@EBLAO?BAG?BCC@B@GED?ABFB?D@CEADEM?AABCDDKAL?CBBA@FEC?CI?B?A??EB@EALBABBC?BE@DAA?@@A@BAD?E@D?WDF?FE?BEAFBCABAA@ECDBCEEDB?ACD?ABDAIBD@AABAC?BAI@F?AGC??@DAC@DDA@BCCBE?AIH@@J@AADB@?KE?DFC?EEKCD?ADD@AA@AD?E@BAGCL?G?A@@ABBE?@EIAL@AB@BAG@@CAF@O?@@C?@@DA?CC@B?C?@A@?CB?EB?CAD?SAh@FK?MCMBF@?@B??EBCD?OABCNBKB?BH??CL@Q?@E@FC@HBI?AAE?HAAAGBFB?DB@GCBCEAH@G?B@CBDCA?BAAA??G@FA?CC@BAGAIBT@QBl@GKAO@B?A?F@UBD@BAI?FMCNBOEHDEKDJIMDFBWDTBDC@GAAB?ECF@EF@GCJBMCF@EAHACF@HCG?F@K?@DE?BMFDCAACUBRACBN@QDDACGBAI?H?C@B@?I[JH?A@NCKCS?P@VE@@@J[MJ?HFEDYAN?@E@@FCL?FCK?QBJ@O@b@@MIM@LDICJE@KA@@@AFG@DFE@@@E?AE@?CCBAI?FJF?E??ICEF?C??HCABC@F@CC??CE@FAAE?D@AC?@@F?G@@DC?AE@@?@@AGAH@A??C@?A?CBFEIB@?CED@AECHB?C?FCCAB?AB?CA?@@ADCARAG?BBIAD@A?DEIFFCG@BEB?E@?AEHDE?ECB?DBAG?DAA@B@@AEA?C@BEDD?@E?BBAAC?BC?AED@GDDE?BBC?BGCLGM@A?FACHEEBAE?D@A@D?A@?CD?M@F?A@HBCA@GCB?CC@D@C?@@A?@B?ADCICCDD@@CBHOAJAAAB?@EG@FNAA?EEAA@BCC?FACEB@E@BAAE?FCBJEC@B@SBLD?CEADDDCI?BA?CCA@??B@CB??BCB@AAAB@CAB?C@@CB@C@B?I?@?@BGAJIE?DEEAHFE@A?BCE@J?CAD?A?@AG?@@ECHDOB?BHDCA?G@?A@FAG@?@D@KJDEACBABC@@C?@BEAD@?@CABB@CK?HCKDB?A@BEB??@CABAAAEDHAGADA?CC@@@C?EB@?AABB@C@@C?BAAAJ@C?EADAEAA?F@EAD?IDDAEAD@A?@?@AE@BA?@C@B@ABEABCCADACBG?J?B?CA@?C?ACD@BAC@@ACA@BC?ECB@C@D@C@DAEAF?@@A@EA@CB@E?FAIDECE?ABCA@ANDBAEAD@CC@CC?D?E?EDNBC@@B?EEA?@B?G?DAADAA@CHA@@E?ABCABAA?DB?@CC@CBBE@D@CADAEA@EA?@@A@@HI@DIA??ED??BC@@CCABEACGDC?@A@BH@?DC@JBECDCGCBCG@IA@?C@@@BAACD?BCEABABBAHLB?GC@?FQCFA?ARFEBD?OAFACDCA@CG@F@C?CE@A?BD?C@AAH?@CK@D@FAACBA?CEBB@@AQADACDG?L?ACA?DBCFDBABJ?KEEEI@HADB@AACG@B?@@A?BAAANCB@E?AFE@B@E?JCCB@@CA@C@?A?BAAC@?I@?DI@BB@CCA@EEE@@?F@A?B@A?BDA?CA?@AK@B?DIE@BFB?EBBAC?D?BA?ACAB?C@D?@D?ICACBHDGDEAEGG?T@GI@?C@CAABF@DCE?D?A?@@C?D@BA@?A@C?@BE?BBA??@B@ACB@EA@AD@KAPBKE@??@C?DACCB@C??@DBEADDEA@BA@B?G?CCD?C@@CBAGCBAI@?BF@AC@@A@@AEAAEC?DBA??AA@D?BKOAPBM@LBC?D?K@L@C?@B@?CCJ?ICE@FAGAJ@O?@AC?BA@BF@M?AGCCD?OCA@DBNDEAAJ@A@BAEDBIGDA@@E?BDCEAD?AD?CA@ADFAGA?B@QMLFBBA@?AEBACHAG@@??B@C@@C@BB@CEB@EC?DABFEC?@@ACE?BACIAB??BAADCAC?BC@B@?@E@F?@@CEDAA@?CIAJ@A@E@J?K?D?C?PFMAFDJ@ECFA?AQMOH@?AE@BDAA?B@FCADB@C@A@?CBC@@GA@AABBCDDC@B?ACQ?H@?BC@E?PEAABAC?ABCCBECDHFMBBEK@C@@BPGD@Q@AF@@BCLSDAA?@@KBB?CD@AGBJAQ@DCRAI@CE@@GBD??EDAJDCFYCGCCBLCCC@BHAC@B?A@DECBB@CA@AAB@CA@B?AAABBA?@AA?@W@NCC?@?EFa@DFIAA`@??GPCEBBDCACBBAA?@?ACABB@?GCDB@C?@AF?M@BA@D?CC@HCCB@?AC@C?@BAI@DCMCE@BLB??FC@BCCQPGJ?EFMD@HFGCAF@MD?ABCH?S?@DDDBAG@@G@??EC@CAB??BFI@?EDE@@FFS@BCDG?CDCCJD?DCA@CCGBCDBCA?B@ELDCEHBGA?@D?EAEDBCAAC@?BEBMEREB@KDBCF?C@DCC?AE@DDGG?KFGALCB@AB?AB?G?F@ZGKAYHVGB?ODEAAJD@?FB@BCACEC@CABE?@CC?IMFVL??IE??@AA?@?EC?B??D?E?@@A?BCC@FBDAE?DB?GK@??@?AAA?B?C@?@NDCCFBEFEEGM??BD@A@E?FCMCE?J?@BBCI@HCD@I?ABD@?C?BCAF@M?ABBBFAAA@BBAC@?EBBCAIBBKDACA?@E?BBAEEDICNBO??CD?BBGBB@F@CCBCG?B?ADFFBCC@BI@@CCDDI@@ACAAGQFJADBDGB@ECC@PFGDIATCE@ICBCD@AAE?C@@@C?AAHAIILAJDQ@A?FBABQ@?DC?LA@KC@B?@?ACBAE?ABB@KBB?CAPAE?@AGAH@C@?DB?ACFAAEK?J@M?GBD?ADBAABHACEBAFDK@D@O@EC@AECHCJ@C?D?ACDAGFDB?ACCGB@@M?b@?I@DFD@?ED@CCH@Q@EA?A@@C@QESH?IJ?VEDIDCYBTGUJLADDCGBFA??DAEBECGCBHDJ@I?Gn@?YH?CEEBEA?ADAEFE@AAFEB?BFCFGHECEO@GNGCEGBC?FKJD@HDBV@HIKAOFIC?BHBBAI?DCACKGE@?@FBEFAKKMHAK?R?SCNB?BHNADB?BFFBD?c@GHEBEA@QAMBF?\JAEG@@CH?BEMAHIEBCK?BD@GTBDGGJGGBBC@??EFHYAHAA@BBPD?EKE?@ACB@CBBCA?@??CAB@@@AEA@?AB?CBBAC@DEABBC@BAA??GDDAB@GC??@?CCDBEBB?DCI@B?CABAC@@A?@??AAB@C?D?E?B@CA@B@C??A?@BAA??DC@@CC?BE"); console.log("🙄") var decodedPolyline = L.Polyline.fromEncoded(encodedPolyline) line = L.polyline(decodedPolyline._latlngs , {color: 'red', weight: 2, opacity: .7, linejoin: 'round'}) line.addTo(map2) console.log('omg') map2.setView(decodedPolyline._latlngs[0]); ~I’m still doing something funky to escape the escape characters in the polyline.~ Able to get around that with JSON.stringify() If you’d like to see the raw html that is being used to generate this exact page, it’s available in an extremely hacky way here Next time, might animate a marker moving along the line, something like https://github.com/openplans/Leaflet.AnimatedMarker?tab=readme-ov-file, or maybe make the line blink, or see if we can give a sense of which direction the movement was happening in. Useful additional resources Get the ‘decode raw polyline’ function in your page with this package Leaflet: Mapping Strava runs/polylines on Open Street Map ()
More in literature
Social networking is about reach. It started small: your friends first, then grew outwards towards acquaintances and your professional life. It grew out to people who might follow you because of some shared interest, and then to complete strangers. Social media likes to tell you it's about the content. People are "content creators" and not artists, filmmakers, comedians, or photographers. They may call themselves that, but if social media is their primary platform and the source of their audience, they too call it "creating content." All in service of the algorithmic machine that needs to be constantly fed by humans until the machine itself feeds itself in an ouroboros of bullshit. Bots and AI all the way down. Some people believe that social media offers some semblance of permanence. They become attached to their body of work, their content. Their profile — their persona — becomes their identity, and the place where they can make or remake themselves. When the machine changes the rules, or the policy favors the platform provider's business goals rather than your own, there is outrage. On the very platform itself, even. But you are a cog in the machine, under the guise of creating content, only to sell ads and reach in the Venn diagram of like-minded or interest-overlapping people. It's not about your friends, your followers, or who you follow. It's about who can see what, and what the people who make the platform deem to be the thing that makes them the most money. They reward and provide special access to those creators and influencers who are exemplary stars that everyone else should aspire to. The trap and the fallacy that people have fallen into is the idea that these platforms are the ONLY way to get further: to sell, to advertise, to be seen. You trade convenience and a "free" app for the ensnarement and caging of your creativity. Social networking and media should have always been temporal. These should be thoughts and creations you're okay with letting go of into the wind. Social platforms are a distribution channel at best, and a mechanism to garner some notice. Some apps have leaned into this: messages that disappear or vanish, time-boxed content, and auto-deletion. Not everything is worthy of archival. In many instances, you'd even cringe at something you wrote ten, or even a year ago. If you care about your creativity, and what you make and bring into the world, I'd suggest having your own website. A place you can shape and change as often, or as little as you like. That is something worth being and feeling precious about. Visit this post on the web or Reply via email
Farewell to The Story of the Stone and a valuable browse in Chinese literature. I’ll do it again someday. FICTION The Peony Pavilion (1598), Tang Xianzu – written up back here. The Story of the Stone, Vol. 5: The Dreamer Wakes (c. 1760), Cao Xueqin & Gao E – some notes here. The quotation in my title is from p. 94. Naomi (1924) & Quicksand (1930), Junichiro Tanizaki – and these are over here. Calamity Town (1942), Ellery Queen – A very lightly metafictional mystery. Not only does the detective share his name with the book’s actual “author,” itself a fiction, but he is a mystery writer who at times seems to be generating the crime within the novel so that he will have something interesting to write about. But not quite doing that, unfortunately. That novel would have been more interesting. The actual novel was fine. This is one of those mysteries where every instance of clumsy plotting is in fact a clue. A Question of Upbringing (1951), Anthony Powell – I think I will write something about this book once I have read another volume of the series. Damned If I Do (2004), Percival Everett – short stories. A perfect Everett title. It is all his characters need since it doesn’t matter what will happen if they don’t. They always do. On the Calculation of Volume I (2020), Solvej Balle – a Groundhog Day story told with more philosophy and less humor. A good fantasy on its own terms, but the puzzle is that the series has six more volumes, two of which have not been written yet. The whole thing will be at least 1,200 pages long, for all I know more. This first volume is reasonably complete, so I have no idea where the series might be going. POETRY NOT IN FRENCH OR PORTUGUESE Selected Poems (1968), Zbigniew Herbert TRAVEL, MUSIC HISTORY Tschiffelly's Ride (1933), Aimé Tschifelly – a Swiss English teacher rides a pair of Pampas horses from Buenos Aires to Washington, D. C., just for fun, and writes an equestrian classic. Lots of emphasis on the horses and horse-riding. My geographical knowledge of South and Central America has greatly improved. I have only been to one of the countries Tschifelly passes through. Peru gets the largest number of pages; Mexico second. Time's Echo: The Second World War, the Holocaust, and the Music of Remembrance (2023), Jeremy Eichler – Before I finished The Emigrants in 1996 I knew that Sebald was going to be an important writer. I knew that people were going to want to do what he was doing. That was the only time I have been right about that, really, and I did not predict how much Sebaldian visual and musical art would follow, nor that there could be Sebaldian music history, which is what classical music critic Jeremy Eichler has written. Lightly Sebaldian – he includes uncaptioned photos, yes, but always says, somewhere in the text, what they are. The book is about World War II memorial pieces, built around Schoenberg’s A Survivor in Warsaw (1947), Strauss’s Metamorphosen (1945), Britten’s War Requiem (1962) and several Shostakovich works. Highly recommended to anyone who likes this sort of thing. IN FRENCH AND PORTUGUESE Odes et Ballades (1828), Victor Hugo – young, young Hugo. I had read the first half several years ago; now I finished it up. He sounded like himself from the beginning, but he would not become the greatest French poet until, well, almost immediately after this book. Les songes en equilibre (1942) & Le tombeau des rois (1953) & Mystère de la parole (1960), Anne Hébert – Lovely dream and childhood poems from a Quebecois poet. I have not read Hébert in English, but I will bet there are some good translations. Her Catholic poems did not do much for me. If you have opinions about her fiction, please share them. Éthiopiques (1956), Léopold Sédar Senghor – One would not – I would not – guess that he would be President of Senegal four years later. I have visited his childhood home. Post-Scriptum (1960), Jorge de Sena Flores ao Telefone (1968) & Os Idólatras (1969), Maria Judite de Carvalho – I do not remember exactly how this book was recommended to me by a soon-to-be distinguished Portuguese author. “If you like sad stories about depressed people, these are good.” Carvalho has a place in Portuguese literature and feminism perhaps a little like Edna O’Brien in Ireland or Grace Paley in the United States, sharply ironic domestic stories, although without O’Brien’s sexual explicitness or Paley’s humor. Culture hero Margaret Jull Costa is bringing Carvalho into English and is presumably working right now on these books, recently published in Portuguese in Volume 3 of Carvalho’s collected works. Of course with that recommendation I had to buy a copy.
“I have got to make everything that has happened to me good for me,” Oscar Wilde wrote from prison. “There is not a single degradation of the body which I must not try and make into a spiritualising of the soul.” The cruel kindness of life is that our sturdiest fulcrum of transformation is the devastation of our hopes and wishes — the losses, the heartbreaks, the diagnoses that shatter the template of the self, leaving us to reconstitute a new way of being from the rubble. In those moments, brutal and inevitable, we come to realize that no prayer… read article