Meta tags:
description= blog from andrew evans;
author= andrew agius evans;
Headings (most frequently used words):
in, for, the, ruby, wrap, xlsx, security, up, notes, xml, where, to, find, soelim, binary, macos, aws, textract, results, dependabot, not, playing, nice, with, yarn, roo, parsing, invalid, value, integer, argumenterror, setting, egpu, preferences, epic, games, boopable, snoots, jenv, and, java, versioning, three, months, from, october, 2017, events, fukuoka, night, curses, terminal, apps, longer, story, investigating, raw, modifying, an, file, fun, profit, developing, fix, upstreaming, code, quality, scaling, teamwork, technical, challenge, deadlines, learning, initialize, main, render, loop, teardown,
Text of the page (most frequently used words):
the (346), and (182), for (79), that (70), this (62), you (53), was (45), java (44), with (43), from (41), like (36), get (36), code (36), end (35), ruby (34), but (33), error (33), roo (32), file (31), #curses (30), can (30), gems (28), have (27), not (27), lib (27), are (25), some (25), version (25), could (24), all (23), number (23), had (22), out (22), your (22), jenv (21), xml (21), when (20), users (20), make (20), versions (20), stats (19), block (19), they (19), how (18), into (18), just (18), window (17), there (17), security (17), command (17), app (16), will (16), class (16), time (16), should (16), cell (16), what (15), other (15), messages (15), excelx (15), pretty (14), one (14), def (14), new (14), see (14), about (14), our (14), each (13), has (13), add (13), also (13), set (13), type (13), more (13), fix (13), build (13), xlsx (13), agius (13), rbenv (13), lines (12), been (12), lot (12), using (12), where (12), since (12), need (12), stack (12), yarn (12), which (11), refresh (11), way (11), open (11), than (11), use (11), something (11), request (11), openjdk (11), method (10), program (10), data (10), any (10), now (10), line (10), good (10), didn (10), things (10), full (10), work (10), test (10), push (10), cask (10), install (10), value (10), nokogiri (10), terminal (9), table (9), text (9), down (9), string (9), last (9), top_sections (9), don (9), seemed (9), name (9), only (9), wanted (9), integer (9), sheet (9), empty_sheet (9), tree (9), dependabot (9), soelim (9), most (8), empty (8), them (8), header (8), case (8), example (8), their (8), games (8), jdk (8), local (8), got (8), bad (8), epic (8), check (8), nil (8), next (7), here (7), screen (7), handle (7), right (7), main (7), call (7), then (7), why (7), true (7), think (7), object (7), pos (7), guess (7), language (7), project (7), directory (7), system (7), game (7), figured (7), bounty (7), probably (7), company (7), real (7), running (7), want (7), might (7), sure (7), brew (7), repo (7), via (7), github (7), output (7), files (7), trying (7), spreadsheet (7), results (7), zip (7), unzip (7), development (6), having (6), exit (6), basically (6), used (6), tty (6), manager (6), tried (6), working (6), did (6), store (6), input (6), initialize (6), three (6), whole (6), half_width (6), site (6), found (6), kinda (6), library (6), take (6), find (6), would (6), getting (6), binary (6), enough (6), really (6), fixes (6), quickly (6), run (6), page (6), doesn (6), able (6), thought (6), mapbox (6), homebrew (6), ran (6), element (6), children (6), merged (6), trace (6), issue (6), package (6), textract (6), parent (6), simple (5), wrap (5), back (5), scroll (5), manually (5), addstr (5), two (5), require (5), through (5), bit (5), learning (5), matz (5), team (5), little (5), message (5), compile (5), server (5), cool (5), bug (5), bounties (5), easy (5), both (5), every (5), vulnerability (5), let (5), usually (5), particular (5), means (5), even (5), important (5), less (5), those (5), worth (5), made (5), numbers (5), adoptopenjdk (5), reddit (5), url (5), egpu (5), pull (5), invalid (5), dir_name (5), output_filename (5), sys (5), row (5), x86_64 (5), darwin (5), node_set (5), sheet_doc (5), recursive (5), dependency (5), rel (5), wrong (4), stuff (4), maybe (4), came (4), called (4), teardown (4), gem (4), rendering (4), buffer (4), array (4), such (4), well (4), render (4), keyboard (4), idea (4), still (4), while (4), isn (4), long (4), come (4), clear (4), sections (4), top (4), paint_messages (4), unless (4), half_height (4), web (4), overall (4), writing (4), after (4), based (4), help (4), its (4), own (4), before (4), often (4), needed (4), without (4), developers (4), much (4), python (4), rather (4), thing (4), interesting (4), because (4), google (4), similar (4), hackers (4), over (4), vulnerabilities (4), least (4), seeing (4), months (4), these (4), big (4), node (4), different (4), else (4), patch (4), either (4), once (4), per (4), though (4), weird (4), written (4), going (4), projects (4), read (4), off (4), change (4), slightly (4), config (4), machine (4), try (4), seem (4), usr (4), base (4), macbook (4), specified (4), curl (4), json (4), structure (4), problem (4), setting (4), instead (4), built (4), monkey (4), added (4), locally (4), expected (4), parse (4), above (4), kind (4), tag (4), self (4), cells (4), zipdir (4), argv (4), bin (4), worksheets (4), return (4), cast_float (4), 2023 (4), dep (4), vm2 (4), npm (4), vulnerable (4), ids (4), indent (4), blocks_map (4), common (4), hope (3), worked (3), mode (3), calls (3), windows (3), same (3), ascii (3), cursor (3), never (3), wrote (3), update (3), verse (3), show (3), methods (3), updates (3), alert (3), mostly (3), getch (3), myself (3), default (3), bunch (3), may (3), maxx (3), setpos (3), key (3), keys (3), being (3), 2017 (3), tools (3), errors (3), compatible (3), core (3), developer (3), improve (3), shiny (3), point (3), lightweight (3), architecture (3), runtime (3), whatever (3), went (3), fukuoka (3), max (3), high (3), process (3), old (3), features (3), support (3), feature (3), hackerone (3), companies (3), community (3), comes (3), email (3), inbox (3), manage (3), notes (3), events (3), look (3), script (3), start (3), legacy (3), throwing (3), level (3), engineering (3), patching (3), failed (3), people (3), technical (3), parsing (3), strings (3), who (3), know (3), front (3), better (3), aws (3), write (3), rails (3), everything (3), seems (3), engineer (3), installed (3), javavirtualmachines (3), home (3), shell (3), unrecognized (3), option (3), create (3), virtual (3), fatal (3), exception (3), occurred (3), wasn (3), java_home (3), init (3), plugin (3), 2019 (3), info (3), https (3), com (3), buildconfig (3), sample (3), bot (3), images (3), boopablesnoots (3), together (3), parser (3), blah (3), testing (3), pro (3), graphics (3), borderlands3 (3), helps (3), luck (3), condition (3), maintainers (3), rspec (3), production (3), float (3), inspect (3), couldn (3), reproduce (3), quick (3), nearly (3), valid (3), sheets (3), tags (3), zipped (3), print (3), include (3), sheet1 (3), spreadsheets (3), numeric (3), inside (3), were (3), cell_value (3), coordinate (3), 234 (3), updated (3), react (3), native (3), encountered (3), vulnpackage (3), visualize (3), walk (3), blk (3), relationships (3), ended (3), pages (3), openldap (3), clears (2), user (2), larger (2), gets (2), handle_keyboard_input (2), tables (2), paint (2), range (2), past (2), during (2), position (2), far (2), character (2), editor (2), tries (2), beyond (2), first (2), too (2), many (2), behavior (2), onto (2), interface (2), loop (2), needs (2), anything (2), panel (2), print_msg (2), yes (2), waiting (2), nodelay (2), keypad (2), tons (2), yourself (2), hard (2), ago (2), performance (2), accessible (2), cols (2), basic (2), strftime (2), resize (2), width (2), to_a (2), rows (2), hits (2), msg (2), echo (2), attr_reader (2), module (2), below (2), does (2), left (2), side (2), pane (2), post (2), traffic (2), shows (2), bottom (2), logs (2), took (2), documentation (2), tutorials (2), nice (2), apps (2), runs (2), newer (2), huge (2), aug (2), said (2), goal (2), personally (2), auto (2), complete (2), duck (2), trees (2), separate (2), sounds (2), frustrating (2), talked (2), checking (2), catch (2), fully (2), backwards (2), building (2), tooling (2), specifically (2), languages (2), move (2), avoid (2), single (2), arduinos (2), another (2), turns (2), night (2), talks (2), talk (2), note (2), 500 (2), paying (2), expect (2), risk (2), reduce (2), attack (2), surface (2), product (2), consider (2), keeping (2), aren (2), low (2), reason (2), hacking (2), slow (2), difficult (2), day (2), awesome (2), resources (2), operate (2), respond (2), reports (2), place (2), conference (2), hired (2), leave (2), around (2), neat (2), limited (2), job (2), until (2), ton (2), lower (2), unicode (2), pick (2), ops (2), jump (2), framework (2), knowledge (2), science (2), fixing (2), deep (2), feels (2), tests (2), compliance (2), systems (2), somebody (2), causing (2), deadlines (2), years (2), fun (2), challenges (2), animation (2), scale (2), dig (2), git (2), sometimes (2), very (2), someone (2), teamwork (2), chat (2), teams (2), crappy (2), review (2), internal (2), monitor (2), already (2), scaling (2), rest (2), scripts (2), deployed (2), understand (2), keep (2), list (2), coworkers (2), joined (2), intranet (2), doing (2), tool (2), apr (2), rant (2), anyway (2), sdk (2), android (2), contents (2), workspace (2), environment (2), 0_212 (2), b03 (2), mixed (2), please (2), homebrewers (2), prefer (2), uses (2), successfully (2), extend (2), remove (2), java8 (2), commands (2), creates (2), sadly (2), enable (2), zsh (2), libexec (2), export (2), multiple (2), looks (2), caskroom (2), kit (2), macos (2), compilebuildconfig (2), starting (2), samples (2), public (2), subdirectory (2), versioning (2), snoots (2), boop (2), download (2), sends (2), response (2), says (2), stdin (2), xargs (2), returned (2), field (2), previous (2), stdout (2), publicly (2), click (2), search (2), slideshow (2), arguments (2), finder (2), gpu (2), fixed (2), external (2), folder (2), menu (2), shared (2), puts (2), card (2), steps (2), debugging (2), feel (2), internet (2), others (2), boot (2), possible (2), approach (2), itself (2), done (2), format (2), values (2), source (2), style (2), exact (2), path (2), followed (2), investigation (2), excel (2), generate (2), closing (2), generated (2), irb (2), shutil (2), usage (2), len (2), raw_input (2), 2016 (2), given (2), dir (2), original (2), unzipping (2), knowing (2), reference (2), k58 (2), workbook (2), _rels (2), raw (2), each_row_streaming (2), looked (2), opened (2), clearly (2), initial (2), determine (2), console (2), longer (2), cast_int (2), create_numeric (2), upto (2), 235 (2), levels (2), cell_from_xml (2), 172 (2), argumenterror (2), opening (2), dependbot (2), available (2), removed (2), ready (2), lock (2), snyk (2), appcenter (2), sep (2), making (2), print_tree (2), chld (2), to_s (2), indent_txt (2), txt (2), document (2), geometry (2), block_id (2), bag (2), elements (2), client (2), located (2), pdfs (2), emails (2), groff (2), contains (2), attempts (2), man (2), gitlab (2), mastodon, helpful, model, head, laid, useful, resets, non, visual, wants, quit, ensure, handles, interrupt, signal, calculated, collection, prints, within, moves, boundaries, keeps, printed, variable, representing, scrolled, advance, characters, hide, columns, draw, provide, dealing, scrl, loops, takes, actions, checks, log, stat, tells, active, assignment, wouldn, scrolling, wonky, save, trouble, pad, initially, panes, proved, complication, actual, benefit, provided, boost, subwin, sets, listening, represent, stdscr, initialization, close_screen, update_stats, section, update_top_sections, slice, split, wrapping, count, translate, function, constants, entered, noecho, invisible, curs_set, init_screen, logwatch, logger, step, explain, cleared, arrow, vim, addict, hit, frequently, screenshot, stays, monitors, logfile, crack, small, somewhat, lacking, combining, adapter, standard, moved, ncurses, decade, grain, salt, progress, continues, solid, future, skeptical, ctags, inferencing, mentioned, saving, definitions, manual, tweaking, potentially, requiring, hints, strict, typing, boilerplate, rigamarole, bonus, inference, devs, evolve, breaking, changes, fundamental, shifts, focus, happiness, drastically, say, bored, counter, dead, meme, largely, quagmires, php, shooting, 3x3, nier, automata, spiffy, ps4, chef, replacement, distributed, mitamae, raspberry, iot, platforms, mruby, fast, embeddable, ultra, compiled, libraries, linked, interpreted, hadn, heard, seen, impressive, friday, prefecture, taking, interest, fostering, tech, startup, scene, japan, brought, evening, coinbase, cso, payout, proxy, marker, mature, afford, recently, raised, 000, natalie, silvanovich, zero, themes, management, general, plotting, roadmap, allocating, spend, cleaning, dependencies, date, hurting, anyone, burden, love, rid, lowering, surprised, reputation, jobs, addition, pursuing, treat, freelance, gig, pursue, quickest, profitable, skip, rep, imagine, energy, research, hey, willing, dedicate, managing, successful, triaged, paid, sitting, forever, frustrates, parties, discourages, greater, theoretically, ideally, disclosure, policy, lets, safely, report, software, give, warning, aways, week, vouch, thanks, invite, corner, oct, october, blast, forward, brings, hopeful, pulling, tricks, days, madness, world, deal, rate, cron, finds, notifies, conventions, functioning, computers, networks, peculiar, handling, tack, ehlo, http, requests, flood, recorded, network, occasionally, redis, caching, unhandled, edge, frontend, felt, urgency, outside, penetration, audits, legal, financial, behind, rce, nginx, scramble, identify, affected, starts, measurable, damage, malicious, purposes, lulz, live, consumer, facing, fake, ship, sprint, deadline, referred, folks, voyager, mission, comparison, operations, occasional, slowly, incrementally, urgent, dealt, 175, planetary, alignment, plenty, filling, forms, resetting, passwords, permissions, showing, password, managers, exactly, rocket, surgery, posture, satisfying, 100k, reads, min, faced, nothing, encode, makes, subsequently, automate, repos, entropy, challenge, empathy, patience, jerk, blocking, deploy, dumping, busy, communicate, experience, previously, specialist, anywhere, understanding, pushing, coding, iteration, cycle, wall, between, closely, pair, special, definitely, rarely, size, hbase, metrics, likely, handled, tweaks, overhauls, maintain, automations, 200, loc, lambda, spaghetti, rewrite, scratch, necessary, multi, year, monoliths, poodr, watch, searls, scales, plans, unexpected, turn, upside, refactoring, regularly, velocity, quality, differences, noticed, variety, backgrounds, dev, sysadmin, researcher, tend, angle, lead, corrected, pentester, scan, thousand, 404, hour, ddos, switch, primarily, engineers, secure, collaborators, consultants, evangelists, educators, industry, leaderers, thinkfluencers, roughly, ten, crud, form, always, mildly, paranoid, highly, interested, delighted, offered, 2018, intellij, studio, monstrous, knows, hell, goooooood, times, succeeded, retrospect, obvious, prefixes, realized, adoptopenjdk8, 212, farking, thank, finally, wtf, srsly, forgot, jeebus, suck, apparently, perfectly, cromulent, confusion, dozens, named, asking, funnily, except, oracle, torpedoed, embrace, extinguish, playbook, thus, licensing, issues, insanity, latter, actually, tap, java11, separately, quite, env, var, andrewevans, openjdk64, eval, release, sharing, 69cfe15208a647278a19ef0990eea691, net, fb4372174a714e6b8c52526dc134031e, 396, 4mb, 64b, blob, master, casks, artifacts, generic, artifact, mon, smh, normal, gradlew, gradle, daemon, subsequent, builds, faster, task, username, gen, src, cannot, access, final, modules, lang, appears, correct, classpath, current, filter, posted, recent, posts, putting, saves, filesystem, filename, contained, meta, following, parallel, pool, workers, etc, drills, returns, flag, removes, quoting, iterates, across, outputting, feed, forwards, body, www, threw, exposes, endpoint, browsers, sign, oauth, api, trivial, imgur, giphy, dingus, couple, preferably, image, nov, boopable, solved, passed, argument, additional, retained, unplugging, plugging, clobbered, few, mobile, honking, loud, industrial, strength, pipes, launch, benchmarks, markedly, improved, plugged, checkbox, explained, box, apple, article, select, disk, space, calculator, daisydisk, notice, plug, borderlands, smoothly, fps, medium, settings, benchmark, drops, 20fps, stutters, becomes, port, broken, heart, follow, 2020, preferences, learned, questions, comments, free, social, media, fallen, cliff, lately, best, programmers, loved, ghosted, reviewed, converted, diff, unit, cover, branch, essentially, cloned, suite, minitest, pile, naming, scheme, harness, upstreaming, specs, put, verified, verify, produced, modifications, factoring, easier, later, rescue, overworked, short, extremely, submitting, meeting, expectations, ancillary, considerations, forth, weeks, wait, directly, bundle, relevant, exported, along, reproducing, developing, revealed, reporting, kendo, angular, problems, blame, falls, horrible, reinventing, wheel, javascript, stab, generating, close, bingo, scientific, proof, make_archive, incorrect, elif, import, created, modified, purpose, stored, extension, specifying, prompt, gsheets, compress, objects, python2, edited, edits, desired, extracted, posting, goes, guide, zipping, modifying, profit, blow, gasket, googling, theory, n26, checked, instances, l58, specific, deduce, gone, stump, filesize, duping, sharedstrings, int, indicates, column, appear, ones, tabs, quote, scope, yup, super, readable, reverse, reading, restaurant, content_types, rels, snip, documents, indicated, conversion, mis, encoded, investigating, calling, osx, uploading, pose, huh, swallowing, somehow, pry, magic, global, lots, 0x00007f8982913580, 0x00007f8982913148, 0x00007f8982912ea0, bugsnag, truncated, downloaded, proper, saw, nomethoderror, story, drop, initializer, producing, error_values, frozen_string_literal, hasn, addressed, bummer, happens, contribute, implement, 224, extract_cells, 101, 114, create_cell_from_value, considered, unfixable, shaker, stubborn, simply, managed, situation, difference, immediately, affecting, lockfile, although, pinned, specification, saying, upgraded, eventually, mitigation, rare, allay, alerts, superagent, required, microsoft, attempt, mitigate, maintainer, decided, discontinue, sandbox, escape, track, cve, supply, chain, included, broad, upgrade, constraints, explanation, including, especially, playing, analysis, play, tested, deployment, integration, leiu, nicer, great, properties, visualization, clutter, overwrite, functionlaity, belongs, pola, violation, awesome_print, block_type, length, elsif, easily, extractors, parents, lived, gave, reasonable, fancier, functionality, fancy, sort, grep, child, uninspiring, functions, recurse, html, land, dom, result, however, blocks, identified, confidence, paginated, reconstruct, hierarchy, became, critical, information, word, medical, programmatic, receive, contain, medicine, encounter, bypass, compilation, digging, turned, simpler, barrier, stackoverflow, duckduckgo, heck, colleagues, finding, answer, slack, somewhere, searchable, downloads, older, configures, compiles, installs, sane, unfortunately, glue, associated, universal, missing, ldap, entering, man1, sed, ldversion, 127, sbin, slapadd, slapd, correctly, dec, ǝlqɐʇ, atevans,
Text of the page (random words):
rce projects most maintainers seem overworked short on time and extremely particular about the kind of code they want in their repo even submitting a full pull request meeting the maintainers expectations for code style testing documentation and all the other ancillary considerations it can take a lot of back and forth and usually weeks to get a pr merged i didn t think we should wait this long to get our process fixed so i went with monkey patching as a first approach i made the modifications you can see in the monkey patch above i figured we d probably want to check for this empty string no format condition for both float and integer values so it s probably worth factoring out into a separate method this would also make it easier to extend later with a rescue block if needed added the patch to our repo ran the specs to make sure it worked and put up a pull request on our app a fix is never really done until it s verified to be working on production so once i got code review merged deployed i re ran the file to verify it produced the expected results instead of an error good to go upstreaming since i had written an essentially empty xlsx file to test on locally i figured it would be easy to make a pr to roo itself i cloned their repo and their test suite was in rspec and minitest and mostly what i expected they had a whole pile of files with a particular naming scheme and an easy test harness to parse the file and check for expected results converted the monkey patch into a diff on the roo excelx cell number class added my empty file as a test case and added a unit test for the class to boot maybe i could have written more tests to cover every possible branch condition but i figured i d get the pr up and see what the maintainers thought about the approach sadly i can t end it with they loved my pr and merged it not sure why my pr got ghosted when others are getting reviewed and merged but at least we got it working for our app so ツ wrap up hope that helps somebody out there i learned a lot just debugging this one bad spreadsheet so i figured it was worth a write up if you have any questions or comments feel free to email me about it since social media has kinda fallen off a cliff lately best of luck internet programmers setting egpu preferences for epic games may 8 2020 you plug your shiny new egpu into your macbook pro and expect a game like borderlands 3 from the epic games store to run smoothly 30 fps at medium settings on your 4k monitor it s a good graphics card but when running the benchmark animation you re still seeing drops into 10 20fps range and it stutters and becomes a slideshow is it a crappy port is your graphics card broken no take heart and follow these steps use a disk space calculator like daisydisk and notice that there s a huge folder at users shared epic games borderlands3 where the epic games store puts all of its games open it in finder by running open users shared epic games borderlands3 on the terminal click or on the borderlands3 app in that folder and select get info from the menu if your egpu is plugged in you should see a checkbox that says prefer external gpu as explained in this apple support article check that box re launch the game via the epic store your benchmarks should be markedly improved for some reason the game was trying to run using the macbook pro s built in mobile gpu instead of the honking loud industrial strength graphics pipes of the egpu checking that setting fixed it there s a few things i don t know about this setting will it get clobbered if epic games store updates the game files is it retained after unplugging and re plugging the egpu is there any way to set it via command line instead of in finder can it be passed in as a command line argument via epic game store s per game additional command line arguments setting but at least this has solved my slideshow problem for now boopable snoots nov 11 2019 sometimes you re testing a chat bot dingus and you need a couple images so it can respond to bot boop i wanted more than 10 quickly preferably without having to click through google image search and manually download them giphy and imgur both require you to sign up and make an oauth app and blah blah blah before you can start using their api not worth it for a trivial one off turns out reddit exposes any endpoint in json as well as for web browsers and that s publicly accessible and reddit has a whole community called r boopablesnoots so i threw this command together curl https www reddit com r boopablesnoots json jq c data children data url xargs n 1 curl o what is this doing curl sends a get request to the specified url and forwards the response body to stdout take the output of the previous command on stdout and feed it into the next command as stdin jq c jq is a command line json parser and editor this command drills one level down the object structure returned by reddit and returns the data url field the c flag removes quoting from the output and the iterates across an array outputting one element per line xargs is a meta command it says run the following command for each line of input on stdin it can run in parallel or in a pool of workers etc curl o sends a get request to the specified url and saves the response to the filesystem using the filename contained in the url putting it all together get the 25 most recent posts off reddit s boopablesnoots community filter down to just the images that people posted download those images to the current directory this quickly got me some snoots for my bot to boop and i could move on with my work jenv and java versioning apr 26 2019 rant i tried to compile our mapbox java sdk on my macbook and ran into a versioning error make build config gradlew compilebuildconfig starting a gradle daemon subsequent builds will be faster task samples compilebuildconfig failed users username workspace mapbox java samples build gen buildconfig src main com mapbox sample buildconfig java 4 error cannot access object public final class buildconfig bad class file modules java base java lang object class class file has wrong version 56 0 should be 53 0 please remove or make sure it appears in the correct subdirectory of the classpath 1 error i had installed java via homebrew cask the normal way to install developer things on macos running brew cask install java gets the java command all set up for you but what version is that java v unrecognized option v error could not create the java virtual machine error a fatal exception has occurred program will exit c mon java really smh java version openjdk version 12 2019 03 19 openjdk runtime environment build 12 33 openjdk 64 bit server vm build 12 33 mixed mode sharing brew cask info java java 12 0 1 69cfe15208a647278a19ef0990eea691 https jdk java net usr local caskroom java 10 0 1 10 fb4372174a714e6b8c52526dc134031e 396 4mb usr local caskroom java 12 33 64b from https github com homebrew homebrew cask blob master casks java rb name openjdk java development kit artifacts jdk 12 0 1 jdk library java javavirtualmachines openjdk 12 0 1 jdk generic artifact which is cool 12 0 1 12 33 and 56 0 are basically the same number so i guess i need a lower version of java no idea what version of java will get me this 53 0 class file but let s try the last release multiple versions means you need a version manager and it looks like jenv is java s version manager manager brew install jenv eval jenv init zsh jenv enable plugin export jenv add usr libexec java_home jenv versions system set by users andrewevans jenv version 12 openjdk64 12 jenv can t build or install java openjdk versions for you so you have to do that separately via homebrew then add those versions via jenv add some system directory because java also the oh my zsh plugin doesn t seem to quite work as it doesn t set the java_home env var i had to manually add the jenv init and enable plugin to my shell init scripts anyway let s try java 11 as 11 is slightly less than 12 and 53 is slightly less than 56 brew tap homebrew cask versions brew cask install java11 jenv add library java javavirtualmachines openjdk 11 0 2 jdk contents home jenv local 11 0 jenv shell 11 0 had to add both of the latter jenv commands as i guess jenv local only creates the java version file and doesn t actually set java_home sadly 11 0 is not 53 0 so i still got basically the same error when i ran make build config after asking my coworkers android and our mapbox java repo uses jdk 8 you could install this via a cask called funnily enough java8 except oracle torpedoed it sounds like they successfully ran the embrace extend extinguish playbook on the open openjdk though i am not a java and thus do not fully understand the insanity of these versions and licensing issues tl dr homebrewers had to remove the java8 cask homebrewers seemed to prefer adoptopenjdk which is a perfectly cromulent name and doesn t at all add to the confusion of the dozens of things named java so let s get that installed brew cask install homebrew cask versions adoptopenjdk8 jenv add library java javavirtualmachines adoptopenjdk 8 jdk contents home cd workspace mapbox java jenv local 1 8 jenv shell 1 8 apparently jenv local wasn t enough jenv version 1 8 set by directory java version java v unrecognized option v error could not create the java virtual machine error a fatal exception has occurred program will exit right forgot about that jeebus java please suck less java version unrecognized option version error could not create the java virtual machine error a fatal exception has occurred program will exit wtf java srsly java version openjdk version 1 8 0_212 openjdk runtime environment adoptopenjdk build 1 8 0_212 b03 openjdk 64 bit server vm adoptopenjdk build 25 212 b03 mixed mode farking thank you finally make build config this seemed to be the right version and the make build config command succeeded this time jdk 8 and 1 8 0 and 53 0 are pretty similar numbers so in retrospect this should ve been obvious and adoptopenjdk has more prefixes before java so i probably should ve realized that was the real java anyway now i can compile the sdk without having to have installed intellij idea or android studio which both seemed kinda monstrous and who knows what the hell they d leave around my system goooooood times rant three months in security apr 18 2018 i joined mapbox roughly three months ago as a security engineer i d been a full stack engineer for a little over ten years and it was time for a change just made one crud form too many i guess i ve always been mildly paranoid and highly interested in security so i was delighted when i was offered the position it s been an interesting switch i was already doing a bunch of ops and internal tool engineering at hired and that work is similar to what our security team does we are primarily a support team we work to help the rest of the engineers keep everything secure by default we re collaborators and consultants evangelists and educators from the industry thought leaderers and thinkfluencers i read that seems to be how good security teams operate that said tons of things are just a little bit different my coworkers come from a variety of backgrounds full stack dev sysadmin security researcher and they tend to come at things from a slightly different angle than i do right when i joined we made an app for our intranet and i thought it s an intranet app no scaling needed my project lead corrected me though oh some pentester is going to scan this get a thousand 404 errors per hour and ddos it that kinda thing has been really neat i thought it d be good to list out some of the differences i ve noticed code quality i ve worked on a lot of multi year old rails monoliths you read stuff like poodr and watch talks by searls because it s important your code scales with the team features change plans change users do something unexpected and now your architecture needs to turn upside down it s worth refactoring regularly to keep velocity high in security sure it s still important the rest of the team can read and maintain your code but a lot of your work is one off scripts or simple automations whole projects might be less than 200 loc and deployed as a single aws lambda even if you write spaghetti code at that point it s simple enough to understand and rewrite from scratch if necessary fixes to larger legacy projects are usually tweaks rather than overhauls so there s not much need to consider the overall architecture there either scaling definitely less important than in full stack development internal tooling rarely has to scale beyond the size of the company so you re not going to need hbase you might need to monitor logs and metrics but those are likely going to be handled already teamwork teamwork is if anything more important in security than it was in full stack development previously i might have to chat with data science front end or a specialist for some features in security we need to be able to jump in anywhere and quickly get enough understanding to push out fixes even if we end up pushing all the coding to the developers having a long iteration cycle and throwing code over the wall between teams is crappy it s much better if we can work more closely pair program and code review to make sure a fix is complete rather than catch this special case you also need a lot of empathy and patience sometimes you end up being the jerk who s blocking code or a deploy often you are dumping work on busy people it can be very difficult to communicate with someone who doesn t have a lot of security experience about a vulnerability in a legacy project written in a language you don t know technical challenge i m used to technical challenges like how do we make the ui do this shiny animation or how do we scale this page to 100k reads min the technical challenges i ve faced so far have been nothing like that they ve been more like how do we encode a request to this server such that when it makes a request to that server it hits this weird parsing bug in node and subsequently how do we automate that test or how do we dig through all our git repos for high entropy strings it s not all fun and games though there s plenty of work in filling out compliance forms resetting passwords and permissions and showing people how why to use password managers while not exactly rocket surgery these are important things that improve the overall security posture of the company so it s satisfying that way deadlines most deadlines in consumer facing engineering are fake we want to ship this by the end of the sprint is not a real deadline i often referred folks to the voyager mission s use of a once per 175 years planetary alignment for comparison in operations you get some occasional the site is slow down but even then the goal was to slowly incrementally improve systems such that the urgent things can be failed over and dealt with in good time in security the urgency feels a bit more real worki...
|