GET /api/paste/?format=api&offset=175
HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "count": 370,
    "next": "http://paste.winny.tech/api/paste/?format=api&limit=25&offset=200",
    "previous": "http://paste.winny.tech/api/paste/?format=api&limit=25&offset=150",
    "results": [
        {
            "id": 529,
            "title": "test url",
            "body": "url test",
            "timestamp": "2022-07-01T03:00:06.065254Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 298,
            "size": 16,
            "author": 560,
            "language": null
        },
        {
            "id": 532,
            "title": "dailybuild.org hit by 5000 requests",
            "body": "Summary:\n  Total:\t7.1816 secs\n  Slowest:\t0.5220 secs\n  Fastest:\t0.0396 secs\n  Average:\t0.0684 secs\n  Requests/sec:\t696.2190\n  \n\nResponse time histogram:\n  0.040 [1]\t|\n  0.088 [4587]\t|■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n  0.136 [343]\t|■■■\n  0.184 [13]\t|\n  0.233 [0]\t|\n  0.281 [0]\t|\n  0.329 [0]\t|\n  0.377 [2]\t|\n  0.426 [9]\t|\n  0.474 [39]\t|\n  0.522 [6]\t|\n\n\nLatency distribution:\n  10% in 0.0541 secs\n  25% in 0.0566 secs\n  50% in 0.0596 secs\n  75% in 0.0660 secs\n  90% in 0.0826 secs\n  95% in 0.1013 secs\n  99% in 0.4229 secs\n\nDetails (average, fastest, slowest):\n  DNS+dialup:\t0.0037 secs, 0.0396 secs, 0.5220 secs\n  DNS-lookup:\t0.0019 secs, 0.0000 secs, 0.1857 secs\n  req write:\t0.0000 secs, 0.0000 secs, 0.0008 secs\n  resp wait:\t0.0628 secs, 0.0385 secs, 0.5218 secs\n  resp read:\t0.0002 secs, 0.0001 secs, 0.0015 secs\n\nStatus code distribution:\n  [200]\t5000 responses\n\n\n\n",
            "timestamp": "2022-07-14T18:46:01.689160Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 243,
            "size": 997,
            "author": 573,
            "language": null
        },
        {
            "id": 534,
            "title": "even daddy mail server refuse connection",
            "body": "Informations de diagnostic pour les administrateurs :\n\nServeur de génération : MN2PR06MB6751.namprd06.prod.outlook.com\nServeur de réception : MN2PR06MB6751.namprd06.prod.outlook.com\n\nkenneth@jensen.cf\n7/26/2022 12:44:42 AM - Server at MN2PR06MB6751.namprd06.prod.outlook.com returned '550 5.4.316 Message expired, connection refused(Socket error code 10061)'\n7/26/2022 12:34:14 AM - Server at jensen.cf (2607:5300:205:200::1ba5) returned '450 4.4.316 Connection refused [Message=Socket error code 10061] [LastAttemptedServerName=jensen.cf] [LastAttemptedIP=2607:5300:205:200::1ba5:25] [BN8NAM12FT044.eop-nam12.prod.protection.outlook.com](Socket error code 10061)'",
            "timestamp": "2022-07-26T00:55:48.551985Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 238,
            "size": 707,
            "author": 584,
            "language": null
        },
        {
            "id": 539,
            "title": "sprite.rkt",
            "body": "#lang racket/gui\n\n(require (for-syntax racket/base syntax/parse))\n\n(define-match-expander obj\n  (λ (stx)\n    (syntax-parse stx\n      [(_ cls%:expr)\n       #'(obj cls% _)]\n      [(_ cls%:expr binding:id)\n       #'(? (λ (thing) (is-a? thing cls%)) binding)]\n      [(_ cls%:expr binding:id ([method:id value:expr] ...))\n       #'(and (obj cls% binding)\n              (app (λ (o) (send o method)) value) ...)]\n      [(_ cls%:expr ([method:id value:expr] ...))\n       #'(obj cls% _ ([method value] ...))])))\n\n\n(provide (all-defined-out))\n\n(define sprite%\n  (class object%\n    (super-new)\n    (init-field bitmap [event-callback void])\n    (define scenes empty)\n    (define/public (get-bitmap)\n      bitmap)\n    (define/public (set-bitmap new-bitmap)\n      (set! bitmap new-bitmap))\n    (define/public (get-width)\n      (send bitmap get-width))\n    (define/public (get-height)\n      (send bitmap get-height))\n    (define/public (on-event canvas instance evt)\n      (event-callback canvas instance evt))\n    (define/public (clone)\n      (define bm (make-object bitmap% (get-width) (get-height)))\n      (define dc (send bm make-dc))\n      (send dc draw-bitmap bitmap 0 0)\n      (new sprite%\n           [bitmap bm]\n           [event-callback event-callback]))))\n\n(struct SpriteInstance [identifier sprite x y z-order] #:transparent)\n\n(define scene%\n  (class object%\n    (super-new)\n    (define sprites (make-hasheq))\n    (define (max-z-order)\n      (for/fold ([acc 999])\n                ([sprite (in-hash-values sprites)])\n        (max acc (SpriteInstance-z-order sprite))))\n    (define (min-z-order)\n      (for/fold ([acc -999])\n                ([sprite (in-hash-values sprites)])\n        (min acc (SpriteInstance-z-order sprite))))\n    (define/public (add! sprite x y #:z-order [z-order #f])\n      (unless z-order\n        (set! z-order (add1 (max-z-order))))\n      (define identifier (gensym \"sprite-instance-\"))\n      (hash-set! sprites identifier\n                 (SpriteInstance identifier sprite x y z-order))\n      identifier)\n    (define/public (remove! identifier)\n      (hash-remove! sprites identifier))\n    (define/public (clear! identifier)\n      (set! sprites (make-hasheq)))\n    (define/public (get-sprites-in-drawing-order)\n      (sort (hash-values sprites) <\n            #:key SpriteInstance-z-order))\n    (define/public (to-front! identifier)\n      (hash-update! sprites identifier (λ (instance) (struct-copy SpriteInstance instance [z-order (add1 (max-z-order))]))))))\n\n(define canvas+scene%\n  (class canvas%\n    (super-new)\n    (init-field [scene (new scene%)])\n    (define/public (get-scene)\n      scene)\n    (define/override (on-paint)\n      (define dc (send this get-dc))\n      (send* dc\n        (clear)\n        (set-smoothing 'smoothed)\n        (set-scale 4 4))\n      (for ([instance (send scene get-sprites-in-drawing-order)])\n        (match-define\n          (struct* SpriteInstance ([sprite sprite] [x x] [y y]))\n          instance)\n        (send dc draw-bitmap (send sprite get-bitmap) x y)))\n    (define/override (on-event evt)\n      (match evt\n        [(obj mouse-event% ([get-x x] [get-y y]))\n         (define-values (scale-x scale-y) (send (send this get-dc) get-scale))\n         (for/first ([instance (reverse (send scene get-sprites-in-drawing-order))]\n                     #:when (match instance\n                              [(struct* SpriteInstance\n                                        ([x sx]\n                                         [y sy]\n                                         [sprite (obj sprite%\n                                                      ([get-width width]\n                                                       [get-height height]))]))\n                               (and (<= (* scale-x sx) x (* scale-x (+ sx width)))\n                                    (<= (* scale-y sy) y (* scale-y (+ sy height))))]\n                              [_ #f]))\n           (send (SpriteInstance-sprite instance) on-event\n                 this instance evt))]\n        [unhandled\n         (printf \"Unhandled event ~a\\n\" evt)]))))\n\n(define (main)\n  (define f (new frame% [label \"Scene demo\"]))\n  (define scene (new scene%))\n  (define circle-bitmap (let ([bm (make-object bitmap% 100 100)])\n                           (send* (send bm make-dc)\n                             (set-pen \"black\" 2 'solid)\n                             (set-brush \"white\" 'solid)\n                             (draw-rectangle 0 0 100 100))\n                           bm))\n  (define clicked-choices\n    (for/list ([color '(green yellow red blue pink purple teal)])\n      (let* ([bm (make-object bitmap% 100 100)])\n        (send* (send bm make-dc)\n          (set-pen \"black\" 2 'solid)\n          (set-brush (~a color) 'solid)\n          (draw-rectangle 0 0 100 100))\n        bm)))\n  (define clicked-timeouts (make-hasheq))\n  (define circle (new sprite%\n                      [bitmap circle-bitmap]\n                      [event-callback\n                       (λ (canvas instance evt)\n                         (match evt\n                           [(obj mouse-event% ([get-event-type 'left-down]))\n                            (match-define (struct* SpriteInstance ([sprite spr]\n                                                                   [identifier id]))\n                              instance)\n                            (send (send canvas get-scene) to-front! id)\n                            (match (hash-ref clicked-timeouts id #f)\n                              [#f (void)]\n                              [th (kill-thread th)\n                                  (hash-remove! clicked-timeouts id)])\n                            (printf \"Sprite click ~a - ~a\\n\" instance evt)\n\n                            (send spr set-bitmap (car (shuffle clicked-choices)))\n                            (send canvas on-paint)\n                            (hash-set! clicked-timeouts id (thread\n                                                            (thunk\n                                                             (sleep 2)\n                                                             (send spr set-bitmap circle-bitmap)\n                                                             (send canvas on-paint)\n                                                             (hash-remove! clicked-timeouts id))))]\n                           [_ (void)]))]))\n  (send* scene\n    (add! circle 0 0)\n    (add! (send circle clone) 20 20)\n    (add! (send circle clone) 50 50)\n    (add! (send circle clone) 200 200))\n  (define canvas (new canvas+scene% [parent f] [scene scene]))\n  (send f show #t))\n\n(module+ main\n  (main))\n",
            "timestamp": "2022-08-12T05:34:47.837339Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 278,
            "size": 6617,
            "author": 2,
            "language": 95
        },
        {
            "id": 541,
            "title": "second2050 screen scan flicker css",
            "body": "@font-face {\n  font-family: \"Delugia Mono Nerd Font\";\n  src: url(\"Assets/DelugiaMonoComplete.ttf\");\n  font-display: swap;\n}\n::-webkit-scrollbar-thumb {\n  width: 4px;\n  background-color: #000077;\n}\n/*PSEUDOS*/\n::-webkit-scrollbar-track {\n  -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);\n  box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);\n  background-color: #1d1d1d;\n}\n::-webkit-scrollbar {\n  width: 4px;\n  background-color: #1d1d1d;\n}\n* {\n  scrollbar-color: #000077 #1d1d1d;\n  scrollbar-width: thin;\n  box-sizing: border-box;\n}\nhtml,\nbody {\n  margin: 0;\n  padding: 0;\n  background: #1d1d1d;\n}\nbody {\n  position: absolute;\n  width: auto;\n  min-height: 100%;\n  min-width: 100%;\n}\npre {\n  font-family: \"Delugia Mono Nerd Font\", monospace;\n  /* font-size: 16px; */\n  font-size: 1em;\n  font-weight: normal;\n  color: #ffffff;\n  /* line-height: 16px; */\n  line-height: 1.125em;\n  margin: 0;\n  padding: 0;\n  /* margin-bottom: 16px; */\n  margin-bottom: auto;\n  margin-left: auto;\n  margin-right: auto;\n  /* min-width: 80ch; */\n  width: 100%;\n  max-width: 80ch;\n}\ntitles {\n  color: #00afff;\n}\ntitles2 {\n  color: #00ffaf;\n}\n.g {\n  color: #002777;\n}\n.lg {\n  color: #0066b6;\n}\n.w {\n  color: #00afff;\n}\n.by {\n  color: #1d1d1d;\n}\n\n::selection {\n  color: #000000;\n  background: #ffffff;\n}\n.g::selection,\n.by::selection {\n  color: #000000;\n}\n.lg::selection {\n  color: #000000;\n}\n.w::selection {\n  color: #000000;\n}\n\n.ascii-art{\n  text-decoration: none;\n}\n\n.ascii-art:hover{\n  text-decoration: none;\n  background-color: transparent;\n}\n\n.body {\n  padding: 16px 8px 16px 8px;\n  animation: textShadow 1.033s infinite;\n}\n/* .flicker {\n  pointer-events: none;\n  position: absolute;\n  width: auto;\n  min-width: 100%;\n  height: 100%;\n  z-index: 15;\n  background: rgba(9, 8, 8, 0.1);\n  animation: flicker 0.3301s infinite;\n} */\n.scanline {\n  position: absolute;\n  pointer-events: none;\n  top: 0%;\n  width: auto;\n  min-width: 100%;\n  height: 2px;\n  z-index: 10;\n  background: rgba(0, 0, 0, 0.3);\n  opacity: 0.75;\n  animation: scanline 7.77s linear infinite;\n}\n.scanlines {\n  position: absolute;\n  pointer-events: none;\n  width: auto;\n  min-width: 100%;\n  height: 100%;\n  z-index: 5;\n  background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.25) 50%),\n    linear-gradient(\n      90deg,\n      rgba(255, 0, 0, 0.06),\n      rgba(0, 255, 0, 0.02),\n      rgba(0, 0, 255, 0.06)\n    );\n  background-size: 100% 2px, 3px 100%;\n}\n/* Link Colors */\na {\n  color: #00afff;\n  background-color: transparent;\n  text-decoration: underline;\n}\n/* a:link {\n  \n}\na:visited {\n \n} */\na:hover {\n  color: black;\n  background-color: #00afff;\n}\na:active {\n  color: black;\n  background-color: white;\n}\n\n/* Hidden Links */\n.hidden {\n  color: white;\n  text-decoration: none;\n  background: transparent;\n}\n.hidden:hover {\n  color: white;\n  background-color: transparent;\n}\n\n@keyframes flicker {\n  0% {\n    opacity: 0.119;\n  }\n  5% {\n    opacity: 0.02841;\n  }\n  10% {\n    opacity: 0.35748;\n  }\n  15% {\n    opacity: 0.88852;\n  }\n  20% {\n    opacity: 0.9408;\n  }\n  25% {\n    opacity: 0.35088;\n  }\n  30% {\n    opacity: 0.22426;\n  }\n  35% {\n    opacity: 0.26418;\n  }\n  40% {\n    opacity: 0.09249;\n  }\n  45% {\n    opacity: 0.35312;\n  }\n  50% {\n    opacity: 0.89436;\n  }\n  55% {\n    opacity: 0.9574;\n  }\n  60% {\n    opacity: 0.19754;\n  }\n  65% {\n    opacity: 0.05086;\n  }\n  70% {\n    opacity: 0.12137;\n  }\n  75% {\n    opacity: 0.75791;\n  }\n  80% {\n    opacity: 0.89617;\n  }\n  85% {\n    opacity: 0.90183;\n  }\n  90% {\n    opacity: 0.20657;\n  }\n  95% {\n    opacity: 0.64125;\n  }\n  100% {\n    opacity: 0.78042;\n  }\n}\n/* ANIMATE UNIQUE SCANLINE */\n@keyframes scanline {\n  0% {\n    top: 99%;\n  }\n}\n@keyframes scanlines {\n  0% {\n    background-position: 0 50%;\n  }\n}\n@keyframes textShadow {\n  0% {\n    text-shadow: 0.4389924193300864px 0 1px rgba(0, 30, 255, 0.25),\n      -0.4389924193300864px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  5% {\n    text-shadow: 2.7928974010788217px 0 1px rgba(0, 30, 255, 0.25),\n      -2.7928974010788217px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  10% {\n    text-shadow: 0.02956275843481219px 0 1px rgba(0, 30, 255, 0.25),\n      -0.02956275843481219px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  15% {\n    text-shadow: 0.40218538552878136px 0 1px rgba(0, 30, 255, 0.25),\n      -0.40218538552878136px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  20% {\n    text-shadow: 3.4794037899852017px 0 1px rgba(0, 30, 255, 0.25),\n      -3.4794037899852017px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  25% {\n    text-shadow: 1.6125630401149584px 0 1px rgba(0, 30, 255, 0.25),\n      -1.6125630401149584px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  30% {\n    text-shadow: 0.7015590085143956px 0 1px rgba(0, 30, 255, 0.25),\n      -0.7015590085143956px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  35% {\n    text-shadow: 3.896914047650351px 0 1px rgba(0, 30, 255, 0.25),\n      -3.896914047650351px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  40% {\n    text-shadow: 3.870905614848819px 0 1px rgba(0, 30, 255, 0.25),\n      -3.870905614848819px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  45% {\n    text-shadow: 2.231056963361899px 0 1px rgba(0, 30, 255, 0.25),\n      -2.231056963361899px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  50% {\n    text-shadow: 0.08084290417898504px 0 1px rgba(0, 30, 255, 0.25),\n      -0.08084290417898504px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  55% {\n    text-shadow: 2.3758461067427543px 0 1px rgba(0, 30, 255, 0.25),\n      -2.3758461067427543px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  60% {\n    text-shadow: 2.202193051050636px 0 1px rgba(0, 30, 255, 0.25),\n      -2.202193051050636px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  65% {\n    text-shadow: 2.8638780614874975px 0 1px rgba(0, 30, 255, 0.25),\n      -2.8638780614874975px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  70% {\n    text-shadow: 0.48874025155497314px 0 1px rgba(0, 30, 255, 0.25),\n      -0.48874025155497314px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  75% {\n    text-shadow: 1.8948491305757957px 0 1px rgba(0, 30, 255, 0.25),\n      -1.8948491305757957px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  80% {\n    text-shadow: 0.0833037308038857px 0 1px rgba(0, 30, 255, 0.25),\n      -0.0833037308038857px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  85% {\n    text-shadow: 0.09769827255241735px 0 1px rgba(0, 30, 255, 0.25),\n      -0.09769827255241735px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  90% {\n    text-shadow: 3.443339761481782px 0 1px rgba(0, 30, 255, 0.25),\n      -3.443339761481782px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  95% {\n    text-shadow: 2.1841838852799786px 0 1px rgba(0, 30, 255, 0.25),\n      -2.1841838852799786px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n  100% {\n    text-shadow: 2.6208764473832513px 0 1px rgba(0, 30, 255, 0.25),\n      -2.6208764473832513px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n  }\n}\n@keyframes glitch-skew {\n  0% {\n    transform: skew(0deg, 0deg);\n  }\n  48% {\n    transform: skew(0deg, 0deg);\n    filter: blur(0);\n  }\n  50% {\n    transform: skew(-20deg, 0deg);\n    filter: blur(4px);\n  }\n  52% {\n    transform: skew(20deg, 0deg);\n  }\n  54% {\n    transform: skew(0deg, 0deg);\n    filter: blur(0);\n  }\n  100% {\n    transform: skew(0deg, 0deg);\n  }\n}\n\n/* Remove all animations and transitions for people that prefer not to see them; from Kellegram */\n@media (prefers-reduced-motion: reduce) {\n  html:focus-within {\n   scroll-behavior: auto;\n  }\n  *,\n  *::before,\n  *::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n    scroll-behavior: auto !important;\n  }\n}\n\n/* Light mode */\n@media (prefers-color-scheme: light) {\n  body { background: #ffffff; }\n  pre { color: #000000; }\n  a { color: #006fff; }\n  a:hover {\n    color: #ffffff;\n    background-color: #006fff;\n  }\n  a:active {\n    color: white;\n    background: black;\n  }\n  .hidden {\n    color: black;\n    text-decoration: none;\n    background: transparent;\n  }\n  .hidden:hover {\n    color: black;\n    background-color: transparent;\n  }\n  titles { color: #006fff; }\n  titles2 { color: #00af00;}\n  .scanline { background: rgba(0, 0, 0, 0.1); }\n  ::selection {\n    color: #ffffff;\n    background: #000000; }\n  .g::selection, .by::selection { color: #ffffff; }\n  .lg::selection { color: #ffffff; }\n  .w::selection { color: #ffffff; }\n  .scanlines {\n    position: absolute;\n    pointer-events: none;\n    width: auto;\n    min-width: 100%;\n    height: 100%;\n    z-index: 5;\n    background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.15) 50%),\n      linear-gradient(\n        90deg,\n        rgba(255, 0, 0, 0.06),\n        rgba(0, 255, 0, 0.02),\n        rgba(0, 0, 255, 0.06)\n      );\n    background-size: 100% 2px, 3px 100%;\n  }\n  @keyframes textShadow {\n    0% {\n      text-shadow: 0.4389924193300864px 0 1px rgba(0, 30, 255, 0.05),\n        -0.4389924193300864px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    5% {\n      text-shadow: 2.7928974010788217px 0 1px rgba(0, 30, 255, 0.05),\n        -2.7928974010788217px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    10% {\n      text-shadow: 0.02956275843481219px 0 1px rgba(0, 30, 255, 0.05),\n        -0.02956275843481219px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    15% {\n      text-shadow: 0.40218538552878136px 0 1px rgba(0, 30, 255, 0.05),\n        -0.40218538552878136px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    20% {\n      text-shadow: 3.4794037899852017px 0 1px rgba(0, 30, 255, 0.05),\n        -3.4794037899852017px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    25% {\n      text-shadow: 1.6125630401149584px 0 1px rgba(0, 30, 255, 0.05),\n        -1.6125630401149584px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    30% {\n      text-shadow: 0.7015590085143956px 0 1px rgba(0, 30, 255, 0.05),\n        -0.7015590085143956px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    35% {\n      text-shadow: 3.896914047650351px 0 1px rgba(0, 30, 255, 0.05),\n        -3.896914047650351px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    40% {\n      text-shadow: 3.870905614848819px 0 1px rgba(0, 30, 255, 0.05),\n        -3.870905614848819px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    45% {\n      text-shadow: 2.231056963361899px 0 1px rgba(0, 30, 255, 0.05),\n        -2.231056963361899px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    50% {\n      text-shadow: 0.08084290417898504px 0 1px rgba(0, 30, 255, 0.05),\n        -0.08084290417898504px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    55% {\n      text-shadow: 2.3758461067427543px 0 1px rgba(0, 30, 255, 0.05),\n        -2.3758461067427543px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    60% {\n      text-shadow: 2.202193051050636px 0 1px rgba(0, 30, 255, 0.05),\n        -2.202193051050636px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    65% {\n      text-shadow: 2.8638780614874975px 0 1px rgba(0, 30, 255, 0.05),\n        -2.8638780614874975px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    70% {\n      text-shadow: 0.48874025155497314px 0 1px rgba(0, 30, 255, 0.05),\n        -0.48874025155497314px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    75% {\n      text-shadow: 1.8948491305757957px 0 1px rgba(0, 30, 255, 0.05),\n        -1.8948491305757957px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    80% {\n      text-shadow: 0.0833037308038857px 0 1px rgba(0, 30, 255, 0.05),\n        -0.0833037308038857px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    85% {\n      text-shadow: 0.09769827255241735px 0 1px rgba(0, 30, 255, 0.05),\n        -0.09769827255241735px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    90% {\n      text-shadow: 3.443339761481782px 0 1px rgba(0, 30, 255, 0.05),\n        -3.443339761481782px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    95% {\n      text-shadow: 2.1841838852799786px 0 1px rgba(0, 30, 255, 0.05),\n        -2.1841838852799786px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n    100% {\n      text-shadow: 2.6208764473832513px 0 1px rgba(0, 30, 255, 0.05),\n        -2.6208764473832513px 0 1px rgba(255, 0, 80, 0.15), 0 0 0px;\n    }\n  }\n}\n\n",
            "timestamp": "2022-08-20T17:00:52.073499Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 223,
            "size": 12036,
            "author": 594,
            "language": 83
        },
        {
            "id": 544,
            "title": "non pollution",
            "body": "Hello Mr. socraticDev,\n\n \n\nHow are you ?\n\n \n\nFollowing the inspection of the river near your place, it seems that the rainbow present in the river is caused by the decomposition of organic/inorganic matter by ferruginous bacteria.\n\n \n\nHowever, to prevent any error on my part, sampling was done and retention measures were installed.\n\n \n\nUnfortunately, I did not find an informative article in French, but here are some informative articles on the subject:\n\n \n\nhttps://nwdistrict.ifas.ufl.edu/nat/2021/11/19/iron-oxidizing-bacteria-an-unusual-natural-phenomenon/\n\nhttps://www.bmcc.nsw.gov.au/media-centre/iron-bacteria-blooms-blue-mountains-given-wet-period\n\n \n\nWhen the analysis results are available to me, I will be able to better decide whether decontamination is necessary. If the source is likely natural, there is no environmental risk.\n\n \n\nCheers,\n\n________________________________________________\nAlexandre Caron\n\nEnvironment and health technician\nEnvironmental monitoring section\n\nEnvironmental Prevention and Control Division\n\nPrevention and environmental quality",
            "timestamp": "2022-09-02T02:43:29.485025Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 228,
            "size": 1087,
            "author": 606,
            "language": null
        },
        {
            "id": 545,
            "title": "eddycountydetention",
            "body": "http://www.eddycounty.org/DocumentCenter/View/2011/Detention_Phone_System?bidId=\n\nmen:\nALPHA: 'a{digits}'\nDOC (ex.: \nGAMMA: just 'GAMMA', no digit. (ex.: https://inmatelookup.co.eddy.nm.us/DetailPages/InmateDetails.aspx?ReferenceID=96368&InmateID=278423)\nKAPPA: just 'KAPPA, no digit (ex. with estimated time of release: https://inmatelookup.co.eddy.nm.us/DetailPages/InmateDetails.aspx?ReferenceID=103707&InmateID=278495)\n\n\nwomen\nOMEGA: either 'O{digits}' or 'OMEGA{digits}\n\nprevious location\nDelta, alpha\n\n2022-09-05\nbeta3\ndaddy: https://inmatelookup.co.eddy.nm.us/DetailPages/InmateDetails.aspx?ReferenceID=119451&InmateID=277944\nFUGITIVE FROM JUSTICE:https://inmatelookup.co.eddy.nm.us/DetailPages/InmateDetails.aspx?ReferenceID=93824&InmateID=278313\nreckless driving with estimated release time (https://inmatelookup.co.eddy.nm.us/DetailPages/InmateDetails.aspx?ReferenceID=104537&InmateID=277134)\nbattery on police office: https://inmatelookup.co.eddy.nm.us/DetailPages/InmateDetails.aspx?ReferenceID=120319&InmateID=276816",
            "timestamp": "2022-09-05T17:40:06.851854Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 232,
            "size": 1048,
            "author": 608,
            "language": null
        },
        {
            "id": 546,
            "title": "deploy aws s3 bucket and create some default folders in it",
            "body": "resource \"aws_s3_bucket\" \"input\" {\n  bucket = \"project-${var.envir}-fileinput\"\n\n  tags = {\n    Name        = \"Where we upload files\"\n    Environment = var.envir\n  }\n}\n\nresource \"aws_s3_object\" \"input_basic_folders\" {\n  for_each     = var.default_s3_directories\n  bucket       = aws_s3_bucket.input.id\n  key          = \"${each.value}/\"\n  content_type = \"application/x-directory\"\n}\n\nvariable \"envir\" {\n  type        = string\n  description = \"Environment's name - fed by tfvars\"\n  default     = \"dev\"\n}\n\nvariable \"default_s3_directories\" {\n  type        = set(string)\n  description = \"Names of directories we want in every bucket\"\n  default     = [\"ClientData\", \"Reports\", \"TempData\", \"Templates\"]\n}",
            "timestamp": "2022-09-07T19:35:20.058124Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 218,
            "size": 754,
            "author": 610,
            "language": 49
        },
        {
            "id": 580,
            "title": "daddy needs 10% of bail to get out",
            "body": "daddy bail = 2500\ndaddy needs = 250\n\ndaddy plan is either 1) other inmate is getting out soon and will pay 250$ on daddy's behalf (and daddy will refund him)\n2) daddy will wait our transfer and pay bail himself\n\n\n## how to ?\nhttps://www.accesscorrections.com/#/make-deposit/create-account\n\n1. Create an account\n2. find inmate by: \n  - state == new mexico\n  - agency == Eddy County Detention center, NM\n3. enter recipient ID: 200808\n   expect: Kenneth Jensin, born in 1999\n\n4. input the USA postal address linked to the credit card you will be using\n5. enter Email and password to create your account\n\n",
            "timestamp": "2022-09-11T18:54:07.963353Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 137,
            "size": 635,
            "author": 644,
            "language": 93
        },
        {
            "id": 581,
            "title": "daddy jail comic strip",
            "body": "https://ibb.co/kDsS11j",
            "timestamp": "2022-09-11T20:45:40.653945Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 261,
            "size": 44,
            "author": 606,
            "language": null
        },
        {
            "id": 584,
            "title": "namecheap.tf",
            "body": "terraform {\n  required_providers {\n    namecheap = {\n      source = \"namecheap/namecheap\"\n      version = \">= 2.0.0\"\n    }\n  }\n}\n\nresource \"namecheap_domain_records\" \"winny-tech\" {\n  domain = \"winny.tech\"\n  mode = \"MERGE\"\n\n  ################################################################\n  # GitLab Pages hosts\n  ################################################################\n  \n  record {\n    hostname = \"@\"\n    type = \"A\"\n    address = \"35.185.44.232\"\n  }\n\n  record {\n    address  = \"gitlab-pages-verification-code=0511ad5d79fcc350fbad6bcb1181eb1e\"\n    hostname = \"_gitlab-pages-verification-code\"\n    type     = \"TXT\"\n  }\n\n  record {\n    hostname = \"blog\"\n    type = \"A\"\n    address = \"35.185.44.232\"\n  }\n\n  record {\n    address  = \"gitlab-pages-verification-code=372701d125f81f213dff1c2cfa408de4\"\n    hostname = \"_gitlab-pages-verification-code.blog\"\n    type     = \"TXT\"\n  }\n\n  ################################################################\n\n  # for the vpn used to log into various home internet connections\n  record {\n    hostname = \"hermes\"\n    type = \"A\"\n    address = \"45.76.19.193\"\n  }\n\n  record {\n    hostname = \"ircbox\"\n    type = \"A\"\n    address = \"149.28.116.255\"\n  }\n\n  record {\n    hostname = \"nc\"\n    type = \"A\"\n    address = \"71.19.144.52\"\n  }\n\n  record {\n    hostname = \"nc\"\n    type = \"AAAA\"\n    address = \"2605:2700:0:2:a800:ff:fe45:8c7d\"\n  }\n\n  record {\n    hostname = \"silo\"\n    type = \"CNAME\"\n    address = \"home.winny.tech\"\n  }\n\n  record {\n    hostname = \"stargate\"\n    type = \"CNAME\"\n    address = \"home.winny.tech\"\n  }\n\n  record {\n    hostname = \"bebop\"\n    type = \"CNAME\"\n    address = \"home.winny.tech\"\n  }\n\n  record {\n    hostname = \"webmail\"\n    type = \"CNAME\"\n    address = \"shadow.mxrouting.net.\"\n  }\n\n  record {\n    hostname = \"mail\"\n    type = \"CNAME\"\n    address = \"shadow.mxrouting.net.\"\n  }\n\n  record {\n    address = \"shadow-relay.mxrouting.net.\"\n    hostname = \"@\"\n    mx_pref = 20\n    type = \"MX\"\n  }\n\n  record {\n    address = \"shadow.mxrouting.net.\"\n    hostname = \"@\"\n    mx_pref = 10\n    type = \"MX\"\n  }\n\n  record {\n    address  = \"v=DMARC1; p=none; rua=mailto:dmarc@winny.tech;\"\n    hostname = \"_dmarc\"\n    type     = \"TXT\"\n  }\n\n  record {\n    address  = \"v=spf1 include:mxlogin.com -all\"\n    hostname = \"@\"\n    type     = \"TXT\"\n  }\n\n  record {\n    address = \"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwp00X4+ik5J30gHtAfxfPvTZk9Jh8ZgfntG3Daz1CQb34elMXPitMzclikQS6brP92Y/dnlJPZoyLgp8BT4c+X5EnXdEaEN2o211OQnnj1uEQ3ZpSo8lKYHKZRHRd+MplcoIurBcq8sp0Jd/O/euq3wFyQQg8qNyRygCopmmtrUnVJUGK+UUcGRgVB88TBNvifQjbgzAlo7xLHvKCIYvX0TBUeVqIw/zjEui4pAQ1D2LpPx8neQm59mUrjU5VeAdW8KpeU/AxUvTMIDagM8lnzdVfSgaz8iu8KFcffV5c5Weq6QtHM5xrfZG2tzjMBFmWLYxyN8vPltra2brAprSpQIDAQAB\"\n    hostname = \"x._domainkey\"\n    type = \"TXT\"\n  }\n\n}\n",
            "timestamp": "2022-09-28T00:52:57.628993Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 115,
            "size": 2789,
            "author": 647,
            "language": 49
        },
        {
            "id": 586,
            "title": "dont threaten people 1",
            "body": "oct. 10 10:52:02 <dailykoder>\tsocraticDev, what's your end goal?\noct. 10 10:52:14 <socraticDev>\then goal\noct. 10 10:52:25 <dont_thread_on_me>\tim banned from you gae channel\noct. 10 10:52:29 <dont_thread_on_me>\tbut you keep highlighting me\noct. 10 10:52:31 <socraticDev>\tdont_thread_on_me, \noct. 10 10:52:38 <socraticDev>\tyou dont like being highlighted?\noct. 10 10:52:42 <dont_thread_on_me>\tok, maximillien\noct. 10 10:52:56 <socraticDev>\tit's a king's name\noct. 10 10:52:57 <dailykoder>\timagine getting a stroke\noct. 10 10:52:57 <dont_thread_on_me>\tyoure starting to push too many buttons\noct. 10 10:52:58 <dailykoder>\tcringe\noct. 10 10:53:01 <socraticDev>\tit means the Mightiest\noct. 10 10:53:09 <dont_thread_on_me>\tit means you'll get swatted\n\n",
            "timestamp": "2022-10-10T15:12:41.040987Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 219,
            "size": 768,
            "author": 659,
            "language": null
        },
        {
            "id": 587,
            "title": "dont threaten people 2",
            "body": "<kenster>\tdont_thread_on_me, send me socraticDev 's address\noct. 09 12:32:03 <kenster>\tneed to send him the cease and desist letter \noct. 09 12:32:12 <dont_thread_on_me>\tkenster: figure out how to get me a visa and i'll internship for 9 months, free of charge\noct. 09 12:32:31 <dont_thread_on_me>\tuh\noct. 09 12:32:47 <dont_thread_on_me>\ti almost had socraticCuck address\noct. 09 12:32:50 <dont_thread_on_me>\ti should check my old logs\noct. 09 12:33:40 <kenster>\tBIG IF TRUe\noct. 09 12:34:03 <dailykoder>\t.algebra kenster \noct. 09 12:34:04 <koderbot>\tkenster: https://files.catbox.moe/4cek9b.mp4\noct. 09 12:34:06 -drastikbot/#dailyprog-\tvideo/mp4, Size: 317.52 KB\noct. 09 12:34:45 <dailykoder>\t.kenstersong\noct. 09 12:34:46 <koderbot>\tdailykoder: https://tinyurl.com/kenstersong\noct. 09 12:34:47 -drastikbot/#dailyprog-\taudio/mpeg, Size: 160.41 KB\noct. 09 12:37:58 <dont_thread_on_me>\tkenster: he had posted a ton of pictures from his condo, with clear view of the park nearby\noct. 09 12:42:39 <--\tultraanon has quit (Ping timeout: 240 seconds)\noct. 09 12:43:07 <kenster>\tkek\noct. 09 12:43:59 <socraticDev>\ttekdude has succeeded to locate me\noct. 09 12:44:10 <Tekdude>\thuh\noct. 09 12:44:12 <kenster>\thello mr. trudeau I'd like to report child trafficking \noct. 09 12:44:17 <kenster>\t;)",
            "timestamp": "2022-10-10T15:14:32.654888Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 194,
            "size": 1306,
            "author": 659,
            "language": null
        },
        {
            "id": 588,
            "title": "mk-music-cd",
            "body": "#!/usr/bin/env racket\n#|\nTODO better error handling\nTODO clean up temp files\nTODO multi-cd albums\n|#\n#lang racket\n\n(require tool\n         basedir\n         dirname)\n\n(current-basedir-program-name \"mk-music-cd\")\n\n(define (main music-files)\n  (define out-dir (writable-runtime-dir))\n  (make-directory* out-dir)\n  (define tasks (for/list ([f music-files])\n                  (define dest (build-path out-dir (path-replace-extension (basename f) #\".wav\")))\n                  (place/context pch\n                    ($ `(ffmpeg -loglevel fatal -y \"-i\" ,f -ac 2 -ar 44100 ,dest) #:output #f)\n                    (place-channel-put pch dest))))\n  (define wavs (map place-channel-get tasks))\n\n  (info \"Done transcoding to .wav\")\n  (define normalized-wavs (for/list ([w wavs])\n                            (define dir (dirname w))\n                            (define base (basename w))\n                            (define normalized-dir (build-path dir \"normalized\"))\n                            (make-directory* normalized-dir)\n                            (build-path normalized-dir base)))\n  ;; XXX Use multiple processes ?\n  ($ `(ffmpeg-normalize \"-o\" ,@normalized-wavs \"-vn\" \"-ofmt\" wav -ar 44100 ,@wavs))\n  (info \"Normalized audio.\")\n\n  (info \"Burning disc...\")\n  ($ `(cdrecord -nofix -audio -pad ,@normalized-wavs))\n  (info \"Disc burned.\"))\n\n(module+ main\n  (tool-init! #:logging 'debug)\n  (command-line\n   #:args music-files\n   (main music-files)))\n",
            "timestamp": "2022-10-22T08:01:34.730250Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 186,
            "size": 1454,
            "author": 705,
            "language": 95
        },
        {
            "id": 589,
            "title": ".\\test.txt",
            "body": "hello from cli",
            "timestamp": "2022-10-22T17:03:49.827552Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 222,
            "size": 24,
            "author": 560,
            "language": null
        },
        {
            "id": 590,
            "title": "winny heroku alternatives",
            "body": "https://github.com/Engagespot/heroku-free-alternatives\n\n# Heroku Free Alternatives\nFree tier of Heroku Dynos, Postgres and Data for Redis will no longer be available after November 28, 2022. Let's find a list of services with a free plan that developers can use as an [alternative to Heroku](https://engagespot.co/blog/free-heroku-alternatives). Feel free to submit PRs and improve the list.\n\n## List of alternatives\n\n[render.com](https://render.com/) - One of the top Heroku alternatives with a free plan to get started.\n\n[fly.io](https://fly.io/) - Run your full stack apps (and databases!) all over the world. No ops required.\n\n[railway.app](https://railway.app/) - Railway is the cloud that takes the complexity out of shipping software.\n\n[cyclic.sh](https://www.cyclic.sh/) - Connect your GitHub repo. We will build, deploy and manage the hosting.\n\n[qoddi.com](https://qoddi.com/) - Qoddi is a fully managed App Hosting Platform running on a tier 1 network at 10% of the cost of similar solutions.\n\n[deta.sh](https://www.deta.sh/) - Build & deploy your ideas on the universe's most developer friendly cloud platform.\n\n[adaptable.io](https://adaptable.io/) - Just connect your GitHub repository and let Adaptable handle the rest.\n\n[alwaysdata.com](https://www.alwaysdata.com/en/) - All your services in one place.\n\n[withcoherence.com](https://www.withcoherence.com/) - Coherence automates DevOps for early stage teams laser focused on customer value.\n\n\n",
            "timestamp": "2022-10-22T18:58:02.740001Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 366,
            "size": 1482,
            "author": 715,
            "language": 93
        },
        {
            "id": 591,
            "title": "main.yml",
            "body": "- name: Install stuff\n  hosts: macstadiumv2\n  tasks:\n    - name: Install with brew\n      homebrew:\n        name: \n          - node\n          - homebrew/cask/flutter\n          - docker\n          - fastlane\n        state: present\n        path: /opt/homebrew/bin\n      ignore_errors: yes\n\n\n# i would like to have a config file (ex.: configs.yml) where the stuff installed is listed. how can i feed this variable to the play?\n\n# like this below\n---\nstuff_brew_installs:\n  - node\n  - homebrew/cask/flutter\n  - docker\n  - fastlane",
            "timestamp": "2022-10-26T21:23:47.260707Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 179,
            "size": 532,
            "author": 714,
            "language": 157
        },
        {
            "id": 592,
            "title": "data observability telemetry",
            "body": "https://opendatadiscovery.org/\n\nhttps://news.ycombinator.com/item?id=33297641\n\nhttps://share.confex.com/share/116/webprogram/Handout/Session8805/User%20Experience%20with%20DataMart%20on%20Linux%20for%20System%20z%20at%20FMS.pdf\n\n## how to improve a datamart?\n\nwhat is a datamart? \n\n>\"A data mart is a subject-oriented database that is often a partitioned segment of an enterprise data warehouse. The subset of data held in a data mart typically aligns with a particular business unit like sales, finance, or marketing. Data marts accelerate business processes by allowing access to relevant information in a data warehouse or operational data store within days, as opposed to months or longer. Because a data mart only contains the data applicable to a certain business area, it is a cost-effective way to gain actionable insights quickly.\"\n\n- data filtered by business units/areas\n\n### capture user activity in your hosted datamart",
            "timestamp": "2022-10-27T23:57:03.432395Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 274,
            "size": 960,
            "author": 715,
            "language": 93
        },
        {
            "id": 594,
            "title": "trump hugging american flag",
            "body": "https://ibb.co/K9c9hq1\n\nhttps://ibb.co/DzYv98W",
            "timestamp": "2022-10-30T01:27:14.619228Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 194,
            "size": 73,
            "author": 716,
            "language": null
        },
        {
            "id": 601,
            "title": "ListNode hell",
            "body": "class ListNode(self, val, list_node=None):\n    self.val = val\n    self.next = list_node",
            "timestamp": "2022-11-25T02:25:36.152307Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 171,
            "size": 100,
            "author": 731,
            "language": 471
        },
        {
            "id": 603,
            "title": "leetcode convert roman numeral to integer",
            "body": "# convert a roman numeral in integer \n# Input: s = \"MCMXCIV\"\n# Output: 1994\n# https://leetcode.com/problems/roman-to-integer/\n\n\nsubs = {\n    'I': ['V', 'X'],\n    'X': ['L', 'C'],\n    'C': ['D', 'M'],\n}\n\ndef val(c):\n    match c:\n        case 'I':\n            return 1\n        case 'V':\n            return 5\n        case 'X':\n            return 10\n        case 'L':\n            return 50\n        case 'C':\n            return 100\n        case 'D':\n            return 500\n        case 'M':\n            return 1000\n\n    return 0\n    \nclass Solution:\n    \n    def romanToInt(self, s: str) -> int:\n        r = list(s)\n        \n        curr_idx = 0\n        next_idx = 1\n        acc = 0\n        while len(r) > 0:\n            if r[curr_idx] in subs and (len(r) > 1):\n                if r[next_idx] in subs[r[curr_idx]]:\n                    acc = acc + val(r[next_idx]) - val(r[curr_idx])\n                    del r[curr_idx]\n                    del r[curr_idx]\n                    continue\n      \n            acc = acc + val(r[curr_idx])\n            del r[curr_idx]\n        \n        return acc",
            "timestamp": "2022-12-02T13:29:36.435951Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 165,
            "size": 1123,
            "author": 737,
            "language": 471
        },
        {
            "id": 604,
            "title": "longest common prefix leetcode",
            "body": "# Write a function to find the longest common prefix string amongst an array of strings.\n# If there is no common prefix, return an empty string \"\".\n# https://leetcode.com/problems/longest-common-prefix/\n\nclass Solution:\n    def longestCommonPrefix(self, strs: List[str]) -> str:\n        all = []\n        for s in strs:\n            for i in range(len(s)):\n                all.append(s[0:(len(s)-i)])\n                        \n        d = {}\n        for x in all:\n            if x in d:\n                d[x] = d[x] + 1\n            else:\n                d[x] = 1\n                \n        longest = \"\"\n        for key in d.keys():\n            if d[key] == len(strs):\n                longest = key if len(longest) < len(key) else longest\n                \n        return longest                \n                ",
            "timestamp": "2022-12-03T20:42:10.486021Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 174,
            "size": 834,
            "author": 715,
            "language": 471
        },
        {
            "id": 605,
            "title": "valid parenteses brackets leetcode",
            "body": "#https://leetcode.com/problems/valid-parentheses/\n\n\nclass Solution:\n    def isValid(self, s: str) -> bool:\n        stack = []\n        \n        d = {\n            \")\":\"(\",\n            \"}\":\"{\",\n            \"]\":\"[\",\n        }\n        \n        for c in s:\n            if c in d:\n                if stack and stack[-1] == d[c]:\n                    stack.pop()\n                else:\n                    return False\n            else:\n                stack.append(c)\n                \n        if stack:\n            return False\n        else:\n            return True",
            "timestamp": "2022-12-04T20:43:15.678526Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 174,
            "size": 590,
            "author": 715,
            "language": 471
        },
        {
            "id": 606,
            "title": "x",
            "body": "yeuezevevve",
            "timestamp": "2022-12-08T18:46:22.999065Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 121,
            "size": 12,
            "author": 742,
            "language": null
        },
        {
            "id": 607,
            "title": "so-long-and-thanks-for-all-the-standard-fish.md",
            "body": "\n# Table of Contents\n\n1.  [So Long and thanks for all the standard-fish](#orgad89805)\n    1.  [History](#orga6e1bd3)\n    2.  [Production Racket: What would have to change?](#org89c4741)\n        1.  [Cater towards CI/CD](#org42165d2)\n        2.  [Protect users from themselves](#orgc6a07bd)\n        3.  [How the heck do signature and units work](#org26890f2)\n        4.  [Consider the role of documentation](#org6dedd2c)\n        5.  [There needs to be transparency](#orgb5577d3)\n    3.  [What's next?](#org0a2e8d4)\n\n\n<a id=\"orgad89805\"></a>\n\n# TODO So Long and thanks for all the standard-fish\n\nHey everyone, I wanted to share with you a realization I had about my time with\nRacket - it's time to move on.\n\n\n<a id=\"orga6e1bd3\"></a>\n\n## History\n\nBack in 2015-2016 when attending community college, I had discovered Scheme via\nthe R5RS paper, and was impressed with the conciseness of the language.  After\ntrying out a few implementations, it occurred to me the majority of scheme\nimplementations are not beginner friendly, missing documentation, and hard to\nimagine how to use as a prospective user.  Then I discovered Racket.  It was\nlike some sort of drug - I couldn't get enough of it.  Racket does a lot of\nthings right.  Contracts or gradual typing means you usually have unambiguous\nruntime errors without any typing problems.  Pattern matching and for loops\nreduce code complexity significantly.  Most importantly, s-expression syntax is\ndead simple and consistent - as long as you can google the first form in each\nlist (pair of parenthesis), you can understand a Racket program.\n\nI toiled away for a couple years during university reading Racket\ndocumentation, using it for IEEE-CS (Computer Science Club) HackerRank\ncompetitions, even building a few tools I still use today.  Eventually I\nstarted contributing a patch here and there to Racket - mainly to fix weird\nstuff like build failures or documentation typos.  I also found opportunity to\nwrite a riposte-like clone in Racket for my capstone project and began\nuploading packages to pkgs.racket-lang.org.\n\nAnother couple years pass and finally I understand macros enough to use them on\nmy own.  These aren't easy to understand - the docs don't really help in this\nregard.  But I persisted.  Soon after I started writing languages in racket\nsuch as TinyBasic and subby (Subnautica item description language).\n\nWhile this was all going on, I also started a project to build out tutorials or\nhowtos for Racket.  You see Racket suffers from a bunch of smart people who\nthemselves are deeply in the clutches of \"The Curse of Knowledge\".<sup><a id=\"fnr.1\" class=\"footref\" href=\"#fn.1\" role=\"doc-backlink\">1</a></sup>  They don't\nquite understand what it takes for a beginner to pick up Racket, outside of a\npedagogical setting (classroom).  I even bought the `racket.wiki` domain with\nthe idea of calling it the Practical Racket Wiki - I wanted people to have\nresources to do stuff quickly in racket without toiling through a metric\ncrapton of documentation pages.  Sometimes a productive dev needs to focus on\nthe important stuff, not how to use every single API in a language\ncorrectly.<sup><a id=\"fnr.2\" class=\"footref\" href=\"#fn.2\" role=\"doc-backlink\">2</a></sup>\n\nThen I had a realization.  It's been 7 years since I first started using Racket\nand I'm still not being paid for research, writing software, nor making Racket\ncontent.  I'm not getting rewarded for the time investment.  I need to be\nrealistic - Racket in production is a pipe dream.\n\nThis is me stating: I've had enough - I might use Racket for toy parsers or\nother curiousities, but you'll never find me using Racket in a serious setting.\nIt's counterproductive and high risk.\n\n\n<a id=\"org89c4741\"></a>\n\n## Production Racket: What would have to change?\n\nRacket seems to work well for the research and pedagogical communities.  I\nunderstand their needs may be fairly different than a production-seeking user.\nThe leadership is set up to cater towards a different community than the one\nI was seeking to build.\n\n\n<a id=\"org42165d2\"></a>\n\n### Cater towards CI/CD\n\nRacket runs in docker, but there's more work to be done.  Racket does not have\na distinction between documentation dependencies and general dependencies.\nThis frequently causes Docker builds to take 10-20 minutes and use 2-5 times\nthe disk space.  This is caused by packages bundling documentation.  Want to\ndocument your package and don't know any better, bam, you've made a package\nthat will ruin some production users day.  And the Racket community describes\nthis as a \"human problem\".  The solution is to split out packages so\ndocumentation and library code are separated.  Alternately one may use binary\nbuilds (which are built for a few particular ISA/OS combinations and only for\nthe latest Racket release).  The usual root cause is a dependency pulling in\n`racket-doc` or `racket-index` when using a minimal racket distribution.  I\nremember running Racket on a Pentium 4, with the horror of watching `raco pkg\ninstall --auto some-random-lib` causing the laptop to spin for 10 hours, only\nto fail due to a build failure caused by Racket's poor support for Alpine\nlinux.\n\nI even voiced this and was flatly told contributions welcome.  Thanks, I will\ntotally invest a bunch of time guessing how the racket package server works\nbecause it has no development instructions nor is there any public\ndocumentation on how to automate deploys of this server process (such as an\nansible playbook or whatever).  So I'd pretty much be at the mercy of asking\nupstream a bunch of questions and they're too busy to care about these\n\"trivial\" problems.\n\n\n<a id=\"orgc6a07bd\"></a>\n\n### Protect users from themselves\n\nRacket has a blanket policy of never break APIs.  This sounds super cool in\ntheory.  Unfortunately I've seen how bad this can be in legacy APIs.  I worked\non OpenEdge Advanced Business Language codebases for about 8 months at one\njob.  Now that, is the epitomy of bad API design and legacy carry over.  I\nsee flashes of that in Racket.\n\nInstead of unifying a way to access and manipulate container types, we have\nAPIs for structs, hashes, sets, lists, vectors.  There are libraries to do\nthis, but nobody pushes them into the core language.  This leads to a ton of\nfrustration for beginners.  Please note there are excellent ways to unify these\nand you can see them on the racket documentation - but nobody is pushing this\nfrom a top-down perspective - so everyone is taught the least practical way to\nwrite racket code for containers.\n\nRacket currently doesn't respect Unix permission semantics out of the box.\nThis came as a shock because it seemed natural and inherit if you make a\nprogramming language for Unix, it works like it should.  This seems like a\nsmall issue, but what else am I going to discover the more I think about file\nAPIs?\n\nRecently I discovered Racket's web server has a way to lookup headers in a case\nsensitive fashion and a case insensitive fashion.  The former (case sensitive)\nis abjet to the RFC.  The Racket devs made this into a human problems by adding\na caveat to the documentation, leaving it at that.  It's a techincal problem,\njust unify the APIs and protect the user from themself.\n\nThere's also stale APIs I've never seen used anywhere, such as Racket's\n`generator` API.  In short it's a way to build iterable objects in Racket\nwithout using the standard scheme `stream` API.  This is a distraction to\nanyone reading the documentation, and may even mislead readers into believing\nthey should use it over stream or a Racket class.\n\nThere's countless other sharp edges in the APIs like this.  For the most part\nit's not so bad, however, it shows pattern of complancency of technical debt\nin API design.\n\n\n<a id=\"org26890f2\"></a>\n\n### How the heck do signature and units work\n\nIt's been 7 years and while I have played around with Racket's signature/units\nAPI which is used for dynamic code loading.  It's very confusing and hard to\nreason about.  It isn't understandable from the documentation alone.  This\nbites because you'll need this to implement robust code hotloading and plugin\nsupport in production.\n\nI can't imagine getting other devs to understand this at all.  Maybe complete\nrewrite is warranted?\n\n\n<a id=\"org6dedd2c\"></a>\n\n### Consider the role of documentation\n\nRacket is renowned for its thorough technical documenation.  If you need to\nlook up an API, it'll have documentation in most cases.  I get confused because\nthere isn't really a guide or tutorial for racket.  There's a super short and\nsweet one and there's a guide which reads more like golang's tour (which is\ncertaintly not a guide either).\n\nWorking off this framework for documentation, I wonder if maybe there's a\nmisunderstanding of what it means to write tutorials, howtos, or guides.  Using\nthat framework, I believe the vast majority of racket docs are truly reference\nmaterial, not actually tutorials, guides, or how-tos.\n\nI'd focus here, if there's truly a desire for adoption.\n\n\n<a id=\"orgb5577d3\"></a>\n\n### There needs to be transparency\n\nFor the most part, without exception, I don't understand the Racket decision\nmaking process.  There's not many policy documents nor a RFC process for Racket\nitself.  I don't feel like I have a vote in how Racket grows, maybe I would\nhave a say if I joined one of the aformentioned academic cliques.\n\nI don't feel incentivized to contribute upstream for the most part - they\naren't particularly easy to work with, and sometimes not the most personable -\nwe all have our days.  In other FOSS projects (VLC, FreeBSD, Homebrew, nixpkgs)\nI've been blessed with a sort of advocate who helps guide new contributors.\nPerhaps Racket could use some developer advocates - but that runs the risk of\ngiving beginners a voice, which I don't think the Racket people want.  They are\nused to the complancey of complete creative control.\n\nThe majority of official racket codebases don't even have a readme or guide on\nhow to contribute.  It's a hurdle to know how to get started, let alone put in\nenergy on a PR that might not be well recieved.\n\n\n<a id=\"org0a2e8d4\"></a>\n\n## What's next?\n\nI will mark most of the code I have in Racket as \"no maintenance intended\".\nHere's a badge!\n\nThe opportunity cost in my Racket time investment has been significant.  I've\nbeen operating off the presumption I could either create a SaaS product around\nRacket or find work doing Racket for somebody else.  Neither has come to\nfruition, so I'm shelving most of my Racket work starting now.  If you want to\ntake over maintainership and direction of any of my racket codebases, please\nreach out, I would be more than willing to transfer ownership.\n\nNow I am presently learning more about the Clojure ecosystem with the express\nidea of shipping stuff in Clojure.  Sure it doesn't have excellent error\nmessages nor a very good contribution process, however, it does have a\ncommunity of folks who have battle-tested this language and runtime in\nproduction.  To be fair I have a lot of time spread across many languages so\nit's not too important to pick up Clojure, however, I think it'd be a fun\ntechnology to use in employment.\n\nP.S. I am kind of broke working freelance.  If you want some devops work done,\nbackend work done, or R/D I'm your guy.\n\nIf you're interested in a blog post detailing some of my concerns with Racket\nin production and the attitude of the core team with this use case, please let\nme know on Twitter, Mastodon, or email.  Otherwise I'll quietly show myself the\ndoor and let the past be in the past.\n\n\n# Footnotes\n\n<sup><a id=\"fn.1\" href=\"#fnr.1\">1</a></sup> \n\n<sup><a id=\"fn.2\" href=\"#fnr.2\">2</a></sup> I also argue that if it is possible to misuse an API, it's shit and you\nshould fix it thanks.\n",
            "timestamp": "2022-12-09T05:22:40.087759Z",
            "expiry": null,
            "freeze_hits": false,
            "hits": 279,
            "size": 11786,
            "author": 2,
            "language": 93
        }
    ]
}