{"title":"Blacklight Inspection","page_title":"Michael Herman","uri_ins":"http://mherman.org/","uri_dest":"https://mherman.org/","uri_redirects":["http://mherman.org/"],"secure_connection":{},"host":"mherman.org","config":{"emulateDevice":{"name":"Pixel 4a (5G)","userAgent":"Mozilla/5.0 (Linux; Android 11; Pixel 4a (5G)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4812.0 Mobile Safari/537.36","viewport":{"width":353,"height":745,"deviceScaleFactor":3,"isMobile":true,"hasTouch":true,"isLandscape":false}},"cleareCache":true,"captureHar":true,"captureLinks":false,"enableAdBlock":false,"saveBrowserProfile":false,"numPages":2,"defaultTimeout":35000,"defaultWaitUntil":"networkidle2","headless":true,"headers":{},"extraChromiumArgs":["--disable-features=TrackingProtection3pcd","--website-analysis-scan=1ce7da66-8f6d-4bc4-a88b-2b6767642bea"],"extraPuppeteerOptions":{}},"browser":{"name":"Chromium","version":"Chrome/127.0.6533.88","user_agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/127.0.0.0 Safari/537.36","platform":{"name":"Linux","version":"6.6.87.1-microsoft-standard-WSL2"}},"script":{"host":"9a52e35ae0a2","version":{"npm":"3.11.0","commit":"dev"},"node_version":"v24.20.0"},"start_time":"2026-09-10T08:25:47.054Z","end_time":"2026-09-10T08:25:58.130Z","browsing_history":["https://mherman.org/","https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/"],"hosts":{"requests":{"first_party":["mherman.org"],"third_party":["cdn.carbonads.com","ajax.googleapis.com","www.google-analytics.com","fonts.googleapis.com","www.googletagmanager.com","srv.carbonads.net","fonts.gstatic.com","region1.google-analytics.com","insight.adsrvr.org","ad.doubleclick.net","sp.analytics.yahoo.com","secure.adnxs.com","segment.prod.bidr.io","cnv.event.prod.bidr.io","www.google.com","s7.addthis.com","michaelherman.disqus.com","disqus.com","c.disquscdn.com","referrer.disqus.com","a.disquscdn.com"]}},"reports":{"behaviour_event_listeners":{"MOUSE":{"https://c.disquscdn.com/embedv2/latest/embedv2.js":["scroll"],"https://c.disquscdn.com/next/embed/common.bundle.712217b7f5a618b8bc684129c2acd47a.js":["click"],"https://c.disquscdn.com/next/embed/lounge.bundle.7f21ab1c601ae726335d27912834559e.js":["click","scroll","mousemove"],"https://michaelherman.disqus.com/embed.js":["click","scroll","mousemove"],"https://mherman.org/assets/hello.js":["click"]},"KEYBOARD":{"https://c.disquscdn.com/next/embed/common.bundle.712217b7f5a618b8bc684129c2acd47a.js":["keypress"]}},"canvas_fingerprinters":{"data_url":{},"fingerprinters":[],"styles":{},"texts":{}},"canvas_font_fingerprinters":{"canvas_font":{},"text_measure":{}},"cookies":[{"name":"_ga","value":"GA1.2.1633153491.1789028755","domain":"mherman.org","path":"/","expires":"2027-10-15T08:25:54.556Z","size":30,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"js","third_party":false},{"name":"_gid","value":"GA1.2.1879199024.1789028755","domain":"mherman.org","path":"/","expires":"2026-09-11T08:25:54.000Z","size":31,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"js","third_party":false},{"name":"_gat","value":"1","domain":"mherman.org","path":"/","expires":"2026-09-10T08:26:54.000Z","size":5,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"js","third_party":false},{"name":"_ga_5MY0VKX3FE","value":"GS2.2.s1789028754$o1$g0$t1789028754$j60$l0$h0","domain":"mherman.org","path":"/","expires":"2027-10-15T08:25:54.686Z","size":59,"httpOnly":false,"secure":false,"session":false,"priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"js","third_party":false},{"name":"bitoIsSecure","value":"ok","domain":"bidr.io","path":"/","expires":"2027-10-10T04:25:54.752Z","size":14,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"unknown","third_party":true},{"name":"bito","value":"AABGCU7VRNMAAAAHZQl5-A","domain":"bidr.io","path":"/","expires":"2027-10-10T04:25:54.752Z","size":26,"httpOnly":false,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"unknown","third_party":true},{"name":"test_cookie","value":"CheckForPermission","domain":"doubleclick.net","path":"/","expires":"2026-09-10T08:40:54.810Z","size":29,"httpOnly":true,"secure":true,"session":false,"sameSite":"None","priority":"Medium","sameParty":false,"sourceScheme":"Secure","sourcePort":443,"type":"unknown","third_party":true}],"fb_pixel_events":[],"tiktok_pixel_events":[],"twitter_pixel_events":[],"google_analytics_events":[],"key_logging":{},"session_recorders":{},"third_party_trackers":[{"data":{"body":{},"filter":"||referrer.disqus.com^","listName":"easyprivacy.txt","query":{"abe":0,"dnt":0,"embed_hidden":0,"event":"init_embed","experiment":"videofloorexp","forum":"michaelherman","forum_id":2127410,"imp":"8cn1j606haccr","load_time":161,"max_enabled":true,"promoted_enabled":true,"referrer":"https://mherman.org/","service":"dynamic","theme":"next","thread":6880051812,"thread_slug":"node_with_docker_continuous_integration_and_delivery_60","tracking_enabled":0,"user_type":"anon","variant":"active"}},"stack":[{"fileName":"https://disqus.com/embed/comments/?base=default&f=michaelherman&t_i=https%3A%2F%2Fmherman.org%2Fblog%2Fnode-with-docker-continuous-integration-and-delivery%2F&t_u=https%3A%2F%2Fmherman.org%2Fblog%2Fnode-with-docker-continuous-integration-and-delivery%2F&t_d=Node%20with%20Docker%20-%20continuous%20integration%20and%20delivery&t_t=Node%20with%20Docker%20-%20continuous%20integration%20and%20delivery&s_o=default#version=2b53f7bc0e6db9df9d9b00a3aca1508b","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://referrer.disqus.com/juggler/event.gif?abe=0&embed_hidden=0&load_time=161&event=init_embed&thread=6880051812&forum=michaelherman&forum_id=2127410&imp=8cn1j606haccr&thread_slug=node_with_docker_continuous_integration_and_delivery_60&user_type=anon&theme=next&dnt=0&tracking_enabled=0&experiment=videofloorexp&variant=active&service=dynamic&promoted_enabled=true&max_enabled=true&referrer=https%3A%2F%2Fmherman.org%2F"},{"data":{"body":{},"filter":"||referrer.disqus.com^","listName":"easyprivacy.txt","query":{"event":"cmp.gpp.absent"}},"stack":[{"fileName":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://referrer.disqus.com/juggler/stat.gif?event=cmp.gpp.absent"},{"data":{"body":{},"filter":"||bidr.io^$third-party","listName":"easyprivacy.txt","query":{"_bee_ppp":1,"buzz_key":"dsp","segment_key":"dsp-19102"}},"stack":[{"fileName":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://segment.prod.bidr.io/associate-segment?buzz_key=dsp&segment_key=dsp-19102&_bee_ppp=1"},{"data":{"body":{},"filter":"||bidr.io^$third-party","listName":"easyprivacy.txt","query":{"_bee_ppp":1,"account_id":79,"buzz_key":"dsp","ord":"[CACHEBUSTER]","order":"[ORDER]","tag_id":3503,"value":""}},"stack":[{"fileName":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://cnv.event.prod.bidr.io/log/cnv?tag_id=3503&buzz_key=dsp&value=&account_id=79&order=%5BORDER%5D&ord=%5BCACHEBUSTER%5D&_bee_ppp=1"},{"data":{"body":{},"filter":"||adsrvr.org^$third-party","listName":"easyprivacy.txt","query":{"adv":"t3k9qrj","ct":"0:djrfa1z","fmt":3,"orderid":"","v":""}},"stack":[{"fileName":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://insight.adsrvr.org/track/pxl/?adv=t3k9qrj&ct=0:djrfa1z&fmt=3&orderid=&v="},{"data":{"body":{},"filter":".doubleclick.net/$image","listName":"easyprivacy.txt","query":{}},"stack":[{"fileName":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://ad.doubleclick.net/ddm/activity/src=15643656;type=sales;cat=408690;qty=1;cost=[Revenue];dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;npa=;gdpr=$;gdpr_consent=$;ord=[OrderID]?"},{"data":{"body":{},"filter":"||analytics.yahoo.com^","listName":"easyprivacy.txt","query":{".yp":10207075,"a":10000,"ea":"fire","ec":"[EVENT_CATEGORY]","el":"[EVENT_LABEL]","gv":"[ORDER_VALUE]","he":"","hph":"","orderId":"[ORDER_ID]"}},"stack":[{"fileName":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://sp.analytics.yahoo.com/spp.pl?a=10000&.yp=10207075&he=&hph=&gv=[ORDER_VALUE]&orderId=[ORDER_ID]&ec=[EVENT_CATEGORY]&ea=fire&el=[EVENT_LABEL]"},{"data":{"body":{},"filter":"||adnxs.com^","listName":"easylist.txt","query":{"add":37012073,"t":2}},"stack":[{"fileName":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://secure.adnxs.com/seg?add=37012073&t=2"},{"data":{"body":{},"filter":"||adnxs.com^","listName":"easylist.txt","query":{"id":1777282,"t":2}},"stack":[{"fileName":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://secure.adnxs.com/px?id=1777282&t=2"},{"data":{"body":{},"filter":"||bidr.io^$third-party","listName":"easyprivacy.txt","query":{"buzz_key":"dsp","segment_key":"dsp-19102"}},"stack":[{"fileName":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://segment.prod.bidr.io/associate-segment?buzz_key=dsp&segment_key=dsp-19102"},{"data":{"body":{},"filter":"||bidr.io^$third-party","listName":"easyprivacy.txt","query":{"account_id":79,"buzz_key":"dsp","ord":"[CACHEBUSTER]","order":"[ORDER]","tag_id":3503,"value":""}},"stack":[{"fileName":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://cnv.event.prod.bidr.io/log/cnv?tag_id=3503&buzz_key=dsp&value=&account_id=79&order=[ORDER]&ord=[CACHEBUSTER]"},{"data":{"body":{},"filter":"||google-analytics.com^$third-party","listName":"easyprivacy.txt","query":{"_ee":1,"_eu":"ABAI","_fv":1,"_p":1789028754586,"_s":1,"_ss":1,"are":1,"cid":1633153491.1789029,"dl":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","dma":1,"dma_cps":"a","dt":"Node with Docker - continuous integration and delivery","en":"page_view","frm":0,"gcd":"13l3l3l2l2l1","gtm":"45je6980v9111484946za20g","ngs":1,"npa":0,"pscdl":"","rcb":3,"sct":1,"seg":0,"sid":1789028754,"sr":"353x745","tag_exp":"115616985~115938466~115938468~118897920~118897930~120213116~120385422~120469145~120469153~121045161","tfd":356,"tid":"G-5MY0VKX3FE","uaa":"","uab":"","uafvl":"","uam":"","uamb":0,"uap":"","uapv":"","uaw":0,"ul":"en-us","v":2}},"stack":[{"fileName":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://region1.google-analytics.com/g/collect?v=2&tid=G-5MY0VKX3FE&gtm=45je6980v9111484946za20g&_p=1789028754586&gcd=13l3l3l2l2l1&npa=0&dma_cps=a&dma=1&_eu=ABAI&are=1&cid=1633153491.1789028755&frm=0&ngs=1&pscdl=&rcb=3&sr=353x745&uaa=&uab=&uafvl=&uam=&uamb=0&uap=&uapv=&uaw=0&ul=en-us&_s=1&tag_exp=115616985~115938466~115938468~118897920~118897930~120213116~120385422~120469145~120469153~121045161&dl=https%3A%2F%2Fmherman.org%2Fblog%2Fnode-with-docker-continuous-integration-and-delivery%2F&dt=Node%20with%20Docker%20-%20continuous%20integration%20and%20delivery&sid=1789028754&sct=1&seg=0&en=page_view&_fv=1&_ss=1&_ee=1&tfd=356"},{"data":{"body":{},"filter":"||googletagmanager.com^","listName":"easyprivacy.txt","query":{"_slc":1,"cx":"c","id":"G-5MY0VKX3FE"}},"stack":[{"fileName":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.googletagmanager.com/gtag/js?id=G-5MY0VKX3FE&cx=c&_slc=1"},{"data":{"body":{},"filter":"||google-analytics.com^$third-party","listName":"easyprivacy.txt","query":{"_gid":1879199024.1789029,"_r":1,"_s":1,"_slc":1,"_u":"IEBAAEABAAAAACAAI~","_v":"j102","a":1759288306,"cid":1633153491.1789029,"dl":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","dt":"Node with Docker - continuous integration and delivery","gjid":2135869841,"jid":1601071258,"sr":"353x745","t":"pageview","tid":"UA-37074204-1","ul":"en-us","v":1,"vp":"353x745","z":1623588411}},"stack":[{"fileName":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.google-analytics.com/j/collect?v=1&_v=j102&a=1759288306&t=pageview&_s=1&dl=https%3A%2F%2Fmherman.org%2Fblog%2Fnode-with-docker-continuous-integration-and-delivery%2F&ul=en-us&dt=Node%20with%20Docker%20-%20continuous%20integration%20and%20delivery&sr=353x745&vp=353x745&_u=IEBAAEABAAAAACAAI~&jid=1601071258&gjid=2135869841&cid=1633153491.1789028755&tid=UA-37074204-1&_gid=1879199024.1789028755&_r=1&_slc=1&z=1623588411"},{"data":{"body":{},"filter":"||google-analytics.com^$third-party","listName":"easyprivacy.txt","query":{}},"stack":[{"fileName":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.google-analytics.com/analytics.js"},{"data":{"body":{},"filter":"||addthis.com^$third-party","listName":"easyprivacy.txt","query":{}},"stack":[{"fileName":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://s7.addthis.com/js/300/addthis_widget.js"},{"data":{"body":{},"filter":"||carbonads.com^","listName":"easylist.txt","query":{"placement":"mhermanorg","serve":"CE7DT27Y"}},"stack":[{"fileName":"https://mherman.org/blog/node-with-docker-continuous-integration-and-delivery/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://cdn.carbonads.com/carbon.js?serve=CE7DT27Y&placement=mhermanorg"},{"data":{"body":{},"filter":"||referrer.disqus.com^","listName":"easyprivacy.txt","query":{"abe":0,"dnt":0,"embed_hidden":0,"event":"init_embed","experiment":"videofloorexp","forum":"michaelherman","forum_id":2127410,"imp":"8cn1juq2isbcpq","load_time":222,"max_enabled":true,"promoted_enabled":true,"referrer":"https://mherman.org/","service":"dynamic","theme":"next","thread":6880368811,"thread_slug":"designing_a_restful_api_with_node_and_postgres_20","tracking_enabled":0,"user_type":"anon","variant":"active"}},"stack":[{"fileName":"https://disqus.com/embed/comments/?base=default&f=michaelherman&t_i=https%3A%2F%2Fmherman.org%2Fblog%2Fdesigning-a-restful-api-with-node-and-postgres%2F&t_u=https%3A%2F%2Fmherman.org%2Fblog%2Fdesigning-a-restful-api-with-node-and-postgres%2F&t_d=Designing%20a%20RESTful%20API%20with%20Node%20and%20Postgres&t_t=Designing%20a%20RESTful%20API%20with%20Node%20and%20Postgres&s_o=default#version=2b53f7bc0e6db9df9d9b00a3aca1508b","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://referrer.disqus.com/juggler/event.gif?abe=0&embed_hidden=0&load_time=222&event=init_embed&thread=6880368811&forum=michaelherman&forum_id=2127410&imp=8cn1juq2isbcpq&thread_slug=designing_a_restful_api_with_node_and_postgres_20&user_type=anon&theme=next&dnt=0&tracking_enabled=0&experiment=videofloorexp&variant=active&service=dynamic&promoted_enabled=true&max_enabled=true&referrer=https%3A%2F%2Fmherman.org%2F"},{"data":{"body":{},"filter":"||referrer.disqus.com^","listName":"easyprivacy.txt","query":{"event":"cmp.gpp.absent"}},"stack":[{"fileName":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://referrer.disqus.com/juggler/stat.gif?event=cmp.gpp.absent"},{"data":{"body":{},"filter":"||google-analytics.com^$third-party","listName":"easyprivacy.txt","query":{"_ee":1,"_eu":"ABAI","_fv":1,"_p":1789028750233,"_s":1,"_ss":1,"are":1,"cid":1895631574.1789029,"dl":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","dma":1,"dma_cps":"a","dt":"Designing a RESTful API with Node and Postgres","en":"page_view","frm":0,"gcd":"13l3l3l2l2l1","gtm":"45je6980v9111484946za20g","ngs":1,"npa":0,"pscdl":"","rcb":19,"sct":1,"seg":0,"sid":1789028750,"sr":"353x745","tag_exp":"115938466~115938469~118897920~118897930~120213116~120385422~120469145~120469153","tfd":402,"tid":"G-5MY0VKX3FE","uaa":"","uab":"","uafvl":"","uam":"","uamb":0,"uap":"","uapv":"","uaw":0,"ul":"en-us","v":2}},"stack":[{"fileName":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://region1.google-analytics.com/g/collect?v=2&tid=G-5MY0VKX3FE&gtm=45je6980v9111484946za20g&_p=1789028750233&gcd=13l3l3l2l2l1&npa=0&dma_cps=a&dma=1&_eu=ABAI&are=1&cid=1895631574.1789028750&frm=0&ngs=1&pscdl=&rcb=19&sr=353x745&uaa=&uab=&uafvl=&uam=&uamb=0&uap=&uapv=&uaw=0&ul=en-us&_s=1&tag_exp=115938466~115938469~118897920~118897930~120213116~120385422~120469145~120469153&dl=https%3A%2F%2Fmherman.org%2Fblog%2Fdesigning-a-restful-api-with-node-and-postgres%2F&dt=Designing%20a%20RESTful%20API%20with%20Node%20and%20Postgres&sid=1789028750&sct=1&seg=0&en=page_view&_fv=1&_ss=1&_ee=1&tfd=402"},{"data":{"body":{},"filter":"||bidr.io^$third-party","listName":"easyprivacy.txt","query":{"_bee_ppp":1,"buzz_key":"dsp","segment_key":"dsp-19102"}},"stack":[{"fileName":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://segment.prod.bidr.io/associate-segment?buzz_key=dsp&segment_key=dsp-19102&_bee_ppp=1"},{"data":{"body":{},"filter":"||bidr.io^$third-party","listName":"easyprivacy.txt","query":{"_bee_ppp":1,"account_id":79,"buzz_key":"dsp","ord":"[CACHEBUSTER]","order":"[ORDER]","tag_id":3503,"value":""}},"stack":[{"fileName":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://cnv.event.prod.bidr.io/log/cnv?tag_id=3503&buzz_key=dsp&value=&account_id=79&order=%5BORDER%5D&ord=%5BCACHEBUSTER%5D&_bee_ppp=1"},{"data":{"body":{},"filter":"||adsrvr.org^$third-party","listName":"easyprivacy.txt","query":{"adv":"t3k9qrj","ct":"0:djrfa1z","fmt":3,"orderid":"","v":""}},"stack":[{"fileName":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://insight.adsrvr.org/track/pxl/?adv=t3k9qrj&ct=0:djrfa1z&fmt=3&orderid=&v="},{"data":{"body":{},"filter":".doubleclick.net/$image","listName":"easyprivacy.txt","query":{}},"stack":[{"fileName":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://ad.doubleclick.net/ddm/activity/src=15643656;type=sales;cat=408690;qty=1;cost=[Revenue];dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;npa=;gdpr=$;gdpr_consent=$;ord=[OrderID]?"},{"data":{"body":{},"filter":"||analytics.yahoo.com^","listName":"easyprivacy.txt","query":{".yp":10207075,"a":10000,"ea":"fire","ec":"[EVENT_CATEGORY]","el":"[EVENT_LABEL]","gv":"[ORDER_VALUE]","he":"","hph":"","orderId":"[ORDER_ID]"}},"stack":[{"fileName":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://sp.analytics.yahoo.com/spp.pl?a=10000&.yp=10207075&he=&hph=&gv=[ORDER_VALUE]&orderId=[ORDER_ID]&ec=[EVENT_CATEGORY]&ea=fire&el=[EVENT_LABEL]"},{"data":{"body":{},"filter":"||adnxs.com^","listName":"easylist.txt","query":{"add":37012073,"t":2}},"stack":[{"fileName":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://secure.adnxs.com/seg?add=37012073&t=2"},{"data":{"body":{},"filter":"||adnxs.com^","listName":"easylist.txt","query":{"id":1777282,"t":2}},"stack":[{"fileName":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://secure.adnxs.com/px?id=1777282&t=2"},{"data":{"body":{},"filter":"||bidr.io^$third-party","listName":"easyprivacy.txt","query":{"buzz_key":"dsp","segment_key":"dsp-19102"}},"stack":[{"fileName":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://segment.prod.bidr.io/associate-segment?buzz_key=dsp&segment_key=dsp-19102"},{"data":{"body":{},"filter":"||bidr.io^$third-party","listName":"easyprivacy.txt","query":{"account_id":79,"buzz_key":"dsp","ord":"[CACHEBUSTER]","order":"[ORDER]","tag_id":3503,"value":""}},"stack":[{"fileName":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://cnv.event.prod.bidr.io/log/cnv?tag_id=3503&buzz_key=dsp&value=&account_id=79&order=[ORDER]&ord=[CACHEBUSTER]"},{"data":{"body":{},"filter":"||googletagmanager.com^","listName":"easyprivacy.txt","query":{"_slc":1,"cx":"c","id":"G-5MY0VKX3FE"}},"stack":[{"fileName":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.googletagmanager.com/gtag/js?id=G-5MY0VKX3FE&cx=c&_slc=1"},{"data":{"body":{},"filter":"||google-analytics.com^$third-party","listName":"easyprivacy.txt","query":{"_gid":940024691.1789029,"_r":1,"_s":1,"_slc":1,"_u":"IEBAAEABAAAAACAAI~","_v":"j102","a":1898786931,"cid":1895631574.1789029,"dl":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","dt":"Designing a RESTful API with Node and Postgres","gjid":213607946,"jid":2023352447,"sr":"353x745","t":"pageview","tid":"UA-37074204-1","ul":"en-us","v":1,"vp":"353x745","z":438358821}},"stack":[{"fileName":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.google-analytics.com/j/collect?v=1&_v=j102&a=1898786931&t=pageview&_s=1&dl=https%3A%2F%2Fmherman.org%2Fblog%2Fdesigning-a-restful-api-with-node-and-postgres%2F&ul=en-us&dt=Designing%20a%20RESTful%20API%20with%20Node%20and%20Postgres&sr=353x745&vp=353x745&_u=IEBAAEABAAAAACAAI~&jid=2023352447&gjid=213607946&cid=1895631574.1789028750&tid=UA-37074204-1&_gid=940024691.1789028750&_r=1&_slc=1&z=438358821"},{"data":{"body":{},"filter":"||google-analytics.com^$third-party","listName":"easyprivacy.txt","query":{}},"stack":[{"fileName":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.google-analytics.com/analytics.js"},{"data":{"body":{},"filter":"||addthis.com^$third-party","listName":"easyprivacy.txt","query":{}},"stack":[{"fileName":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://s7.addthis.com/js/300/addthis_widget.js"},{"data":{"body":{},"filter":"||carbonads.com^","listName":"easylist.txt","query":{"placement":"mhermanorg","serve":"CE7DT27Y"}},"stack":[{"fileName":"https://mherman.org/blog/designing-a-restful-api-with-node-and-postgres/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://cdn.carbonads.com/carbon.js?serve=CE7DT27Y&placement=mhermanorg"},{"data":{"body":{},"filter":"||bidr.io^$third-party","listName":"easyprivacy.txt","query":{"_bee_ppp":1,"buzz_key":"dsp","segment_key":"dsp-19102"}},"stack":[{"fileName":"https://mherman.org/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://segment.prod.bidr.io/associate-segment?buzz_key=dsp&segment_key=dsp-19102&_bee_ppp=1"},{"data":{"body":{},"filter":"||bidr.io^$third-party","listName":"easyprivacy.txt","query":{"_bee_ppp":1,"account_id":79,"buzz_key":"dsp","ord":"[CACHEBUSTER]","order":"[ORDER]","tag_id":3503,"value":""}},"stack":[{"fileName":"https://mherman.org/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://cnv.event.prod.bidr.io/log/cnv?tag_id=3503&buzz_key=dsp&value=&account_id=79&order=%5BORDER%5D&ord=%5BCACHEBUSTER%5D&_bee_ppp=1"},{"data":{"body":{},"filter":"||bidr.io^$third-party","listName":"easyprivacy.txt","query":{"account_id":79,"buzz_key":"dsp","ord":"[CACHEBUSTER]","order":"[ORDER]","tag_id":3503,"value":""}},"stack":[{"fileName":"https://mherman.org/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://cnv.event.prod.bidr.io/log/cnv?tag_id=3503&buzz_key=dsp&value=&account_id=79&order=[ORDER]&ord=[CACHEBUSTER]"},{"data":{"body":{},"filter":"||bidr.io^$third-party","listName":"easyprivacy.txt","query":{"buzz_key":"dsp","segment_key":"dsp-19102"}},"stack":[{"fileName":"https://mherman.org/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://segment.prod.bidr.io/associate-segment?buzz_key=dsp&segment_key=dsp-19102"},{"data":{"body":{},"filter":"||adnxs.com^","listName":"easylist.txt","query":{"id":1777282,"t":2}},"stack":[{"fileName":"https://mherman.org/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://secure.adnxs.com/px?id=1777282&t=2"},{"data":{"body":{},"filter":"||adnxs.com^","listName":"easylist.txt","query":{"add":37012073,"t":2}},"stack":[{"fileName":"https://mherman.org/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://secure.adnxs.com/seg?add=37012073&t=2"},{"data":{"body":{},"filter":"||analytics.yahoo.com^","listName":"easyprivacy.txt","query":{".yp":10207075,"a":10000,"ea":"fire","ec":"[EVENT_CATEGORY]","el":"[EVENT_LABEL]","gv":"[ORDER_VALUE]","he":"","hph":"","orderId":"[ORDER_ID]"}},"stack":[{"fileName":"https://mherman.org/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://sp.analytics.yahoo.com/spp.pl?a=10000&.yp=10207075&he=&hph=&gv=[ORDER_VALUE]&orderId=[ORDER_ID]&ec=[EVENT_CATEGORY]&ea=fire&el=[EVENT_LABEL]"},{"data":{"body":{},"filter":".doubleclick.net/$image","listName":"easyprivacy.txt","query":{}},"stack":[{"fileName":"https://mherman.org/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://ad.doubleclick.net/ddm/activity/src=15643656;type=sales;cat=408690;qty=1;cost=[Revenue];dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;tfua=;npa=;gdpr=$;gdpr_consent=$;ord=[OrderID]?"},{"data":{"body":{},"filter":"||adsrvr.org^$third-party","listName":"easyprivacy.txt","query":{"adv":"t3k9qrj","ct":"0:djrfa1z","fmt":3,"orderid":"","v":""}},"stack":[{"fileName":"https://mherman.org/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://insight.adsrvr.org/track/pxl/?adv=t3k9qrj&ct=0:djrfa1z&fmt=3&orderid=&v="},{"data":{"body":{},"filter":"||google-analytics.com^$third-party","listName":"easyprivacy.txt","query":{"_ee":1,"_eu":"ABAI","_fv":1,"_p":1789028747834,"_s":1,"_ss":1,"are":1,"cid":1808764116.1789029,"dl":"https://mherman.org/","dma":1,"dma_cps":"a","dt":"Michael Herman","en":"page_view","frm":0,"gcd":"13l3l3l2l2l1","gtm":"45je6980v9111484946za20g","ngs":1,"npa":0,"pscdl":"","rcb":2,"sct":1,"seg":0,"sid":1789028748,"sr":"353x745","tag_exp":"115938465~115938468~118897920~118897930~120213116~120385422~120469145~120469153","tfd":781,"tid":"G-5MY0VKX3FE","uaa":"","uab":"","uafvl":"","uam":"","uamb":0,"uap":"","uapv":"","uaw":0,"ul":"en-us","v":2}},"stack":[{"fileName":"https://mherman.org/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://region1.google-analytics.com/g/collect?v=2&tid=G-5MY0VKX3FE&gtm=45je6980v9111484946za20g&_p=1789028747834&gcd=13l3l3l2l2l1&npa=0&dma_cps=a&dma=1&_eu=ABAI&are=1&cid=1808764116.1789028748&frm=0&ngs=1&pscdl=&rcb=2&sr=353x745&uaa=&uab=&uafvl=&uam=&uamb=0&uap=&uapv=&uaw=0&ul=en-us&_s=1&tag_exp=115938465~115938468~118897920~118897930~120213116~120385422~120469145~120469153&dl=https%3A%2F%2Fmherman.org%2F&dt=Michael%20Herman&sid=1789028748&sct=1&seg=0&en=page_view&_fv=1&_ss=1&_ee=1&tfd=781"},{"data":{"body":{},"filter":"||googletagmanager.com^","listName":"easyprivacy.txt","query":{"_slc":1,"cx":"c","id":"G-5MY0VKX3FE"}},"stack":[{"fileName":"https://mherman.org/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.googletagmanager.com/gtag/js?id=G-5MY0VKX3FE&cx=c&_slc=1"},{"data":{"body":{},"filter":"||google-analytics.com^$third-party","listName":"easyprivacy.txt","query":{"_gid":2127831182.1789029,"_r":1,"_s":1,"_slc":1,"_u":"IEBAAEABAAAAACAAI~","_v":"j102","a":141828923,"cid":1808764116.1789029,"dl":"https://mherman.org/","dt":"Michael Herman","gjid":1324263238,"jid":1707306035,"sr":"353x745","t":"pageview","tid":"UA-37074204-1","ul":"en-us","v":1,"vp":"353x745","z":565457739}},"stack":[{"fileName":"https://mherman.org/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.google-analytics.com/j/collect?v=1&_v=j102&a=141828923&t=pageview&_s=1&dl=https%3A%2F%2Fmherman.org%2F&ul=en-us&dt=Michael%20Herman&sr=353x745&vp=353x745&_u=IEBAAEABAAAAACAAI~&jid=1707306035&gjid=1324263238&cid=1808764116.1789028748&tid=UA-37074204-1&_gid=2127831182.1789028748&_r=1&_slc=1&z=565457739"},{"data":{"body":{},"filter":"||google-analytics.com^$third-party","listName":"easyprivacy.txt","query":{}},"stack":[{"fileName":"https://mherman.org/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://www.google-analytics.com/analytics.js"},{"data":{"body":{},"filter":"||carbonads.com^","listName":"easylist.txt","query":{"placement":"mhermanorg","serve":"CE7DT27Y"}},"stack":[{"fileName":"https://mherman.org/","source":"ThirdPartyTracker RequestHandler"}],"type":"TrackingRequest","url":"https://cdn.carbonads.com/carbon.js?serve=CE7DT27Y&placement=mhermanorg"}]}}