commit ee738857a08607518c694057a983c7b61d84c54f
parent e889fee717468348f8921b3d1d667e565a8b44b8
Author: David Eisinger <[email protected]>
Date: Wed, 17 Apr 2024 16:45:24 -0400
stackstash link
Diffstat:
2 files changed, 600 insertions(+), 0 deletions(-)
diff --git a/content/journal/dispatch-15-may-2024/index.md b/content/journal/dispatch-15-may-2024/index.md
@@ -5,6 +5,10 @@ draft: false
tags:
- dispatch
references:
+- title: "StackStash: Taking Bookish Musings to the Next Level | Viget"
+ url: https://www.viget.com/articles/stackstash-taking-bookish-musings-to-the-next-level/
+ date: 2024-04-17T20:44:52Z
+ file: www-viget-com-szerfi.txt
- title: "The One Big Thing You Can Do for Your Kids - The Atlantic"
url: https://www.theatlantic.com/ideas/archive/2024/04/parenting-anxiety-happiness-children/677960/
date: 2024-04-17T20:38:00Z
diff --git a/static/archive/www-viget-com-szerfi.txt b/static/archive/www-viget-com-szerfi.txt
@@ -0,0 +1,596 @@
+[1] Skip to Main Content
+[2] Viget
+
+ • [3] Work
+ • [4] Services
+ • [5] Articles
+ • [6] Careers
+ • [7] Contact
+ • Open Menu
+
+Navigation
+
+[9] Viget Close
+
+ • Practice
+ • [11] Work
+ • [12] Services
+ • [13] Articles
+
+We’re a full-service digital agency that’s been helping clients make lasting
+change since 1999.
+
+[14] Contact Us
+
+People
+
+ • [15]Company
+ • [16]Careers
+ • [17]Code of Ethics
+ • [18]Diversity & Inclusion
+
+More
+
+ • [19]Pointless Corp.
+ • [20]Explorations
+ • [21]Code at Viget
+
+Featured
+
+[22]
+Read the Article: State of the (Labor) Union
+
+Newsletter
+
+State of the (Labor) Union
+
+[23]
+Read the Article: StackStash: Taking Bookish Musings to the Next Level
+
+Article
+
+StackStash: Taking Bookish Musings to the Next Level
+
+StackStash: Taking Bookish Musings to the Next Level
+
+[stackstash-icon-2]
+
+[24]Laura Sweltz, Director of UX Research and Strategic Initiatives,
+
+[25]Chris Manning, Development Director,
+
+[26]Claire Atwell Eisinger, Product Management Director,
+
+[27]Danny Brown, Senior Developer,
+
+[28]David Eisinger, Development Director,
+
+[29]Emily McDonald, Product Manager,
+
+[30]Jackson Fox, VP of UX & Design,
+
+[31]Max Myers, Platform Developer,
+
+[32]Nathan Schmidt, UI Developer, and
+
+[33]Nick Telsan, Developer
+
+Article Categories: [34] #News & Culture, [35] #Front-end Engineering, [36] #
+Back-end Engineering
+
+Posted on April 9, 2024
+
+ • [37]
+ Share
+ • [38]
+ Share
+ • [39]
+ Post
+
+Book musings from Viget's #books Slack channel, but make them more useful. That
+concept inspired our latest Pointless adventure.
+
+B o o k m u s i n g s f r o m V i g e t ' s # b o o k s S l a c k c h a n n e l
+, b u t m a k e t h e m m o r e u s e f u l . T h a t c o n c e p t i n s p i r
+e d o u r l a t e s t P o i n t l e s s a d v e n t u r e .
+
+We have many book lovers at Viget. Our #books Slack channel has a wealth of
+information about what books people have read and how they felt about them.
+While it’s great to have access to that data, Slack doesn’t provide the type of
+exploratory, visual browsing experience that would be most useful when trying
+to make decisions about what we might want to read next.
+
+We might wonder:
+
+ • Has anyone read Tana French’s The Likeness? How did they feel about it?
+ • Liz has shared books that I’ve enjoyed in the past. What other titles have
+ they enjoyed?
+ • What has everyone been reading lately?
+
+During our latest Pointless Palooza, a team of 10 folks at Viget built an app
+that would help us answer those types of questions in a more engaging way.
+Rather than digging through a bunch of disparate threads in Slack, we can now
+use the StackStash app to browse consolidated information. It’s easy to look at
+a book and see all of the people who have mentioned it (and how they felt about
+it) or look at a person and see all of the books they’ve mentioned (and how
+they felt about them).
+
+[Group-9_2024-04-08-184917_kfjg]
+
+Behind the Scenes
+
+When we build software for clients, their business needs typically drive
+decisions around technical architecture, which then informs who works on the
+project and their role. Pointless Palooza gives us an opportunity to try out
+new technologies the team is excited about, and flex outside our traditional
+roles. With a team of six (!) engineers slated to build StackStash together, we
+needed to decide how to build the application before we got started. This
+decision was guided by a few high-level goals:
+
+ • Get a working end-to-end version of StackStash live on the Internet on Day
+ 1
+ • Ensure everyone on the technical team could work on something that was
+ interesting to them
+ • Distribute the workload so that we wouldn’t step on each other’s toes
+
+Much like everything that happens in the software development lifecycle,
+arriving at our final tech plan was an iterative process. In the days leading
+up to kickoff, we worked collaboratively to settle on a fun mix of technologies
+that play to our strengths while also giving us the chance to try some new
+things:
+
+ • [40]Laravel for back-end data management, integrations with third-party
+ sources ([41]Open Library and [42]OpenAI) and the API layer
+ • [43]OpenAPI and [44]TypeSpec to define our API schema
+ • [45]Remix + [46]React as the view layer
+ • [47]PandaCSS to style the React components and views
+ • [48]Docker for local development and deployment
+
+[CleanShot-2024-04-08-at-14]
+
+What We Learned
+
+Bringing this concept to life was not only a fun experience but also provided
+the team with the chance to learn new skills and technologies. Here are some of
+the highlights that stood out to us:
+
+[49]Chris
+
+My favorite part of creating StackStash was getting a chance to work with
+Laravel, which was new to me on this project. I was surprised how easy it was
+to find most information I was looking for right in the main [50]Laravel
+documentation. Overall, it was a pleasant experience coming from other popular
+web frameworks like Rails and Django.
+
+Something I learned was a lot more about Slack API data. There were a lot of
+little lessons I learned along the way—how message data is generally
+structured, that [51]`ts` timestamps are kind of IDs, etc.—but the biggest
+surprise was that [52]the conversation history API we were using [53]didn’t
+include message replies. You can retrieve [54]replies via a similar endpoint,
+but as you might imagine, there are a lot more API requests to account for.
+
+[55]Claire
+
+My favorite part of creating StackStash was working with a big team of
+engineers to divide technical roles and responsibilities. Based on experience
+from past client projects, we leveraged the “pods” concept, assigning devs in
+teams of two to larger focus areas. I also enjoyed queuing up work for everyone
+in a shared gist of our data spec vs. breaking everything out into individual
+tickets. This was a huge time-saver on the PM side and helped everyone
+collaborate more easily.
+
+Something I learned was how to write Migrations, Factories, and Database
+Seeders in Laravel!
+
+[56]Danny
+
+My favorite part of creating StackStash was seeing similarities between Laravel
+and other web frameworks. Even though the syntax was pretty different, the
+general ideas for doing things was familiar enough that it was easy to pick up
+and understand.
+
+Something I learned was the interplay between Typespec, OpenAPI, and
+TypeScript. I enjoyed learning with those three tools and how they work
+together in such an enjoyable way.
+
+[57]David
+
+My favorite part of creating StackStash was getting to do some modern PHP. It
+was the first language I used for web development (in the late 90s 😯) but I
+haven’t done a great job keeping up on its progress over the last decade. The
+language, frameworks, and tooling have come a long way. Laravel’s slick, and
+having a language server to remind me the argument order to `implode` was
+pretty clutch.
+
+Something I learned was how to write defensive PHP code. I was working on a lot
+of the API integrations, and I took inspiration from Go to be careful and
+explicit around failure. Also, a LOT about [58]ISBNs.
+
+[59]Emily
+
+My favorite part of creating StackStash was designing new screens based on the
+visual language and feature definition that were already established.
+
+Something I learned was how to create animations in Figma!
+
+[60]Jackson
+
+My favorite part of creating StackStash was getting more comfortable using AI
+platforms like Google’s Gemini and Anthropic’s Claude for data processing. I
+finally had a good reason to explore tools like Google’s AI Studio to help
+prototype prompts that became important components in our data pipeline.
+
+Something I learned was that AI tools can do some amazing things — we pulled
+JSON data out of Slack and had Gemini (and later GPT-4) doing some very
+impressive data extraction and summarization — but they’re also infuriatingly
+mysterious at times. Gemini and GPT both excel at fuzzy tasks like
+summarization and sentiment analysis, but completely fell down on lookup tasks,
+like gathering ISBNs for books. We eventually switched to GPT-4 because we
+couldn’t get consistently valid JSON out of Gemini.
+
+[61]Laura
+
+My favorite part of creating StackStash was the opportunity to take bookish joy
+at Viget to the next level. I hope that StackStash will help my fellow book
+lovers find a great read the next time they’re on the hunt for a new book.
+
+Something I learned was how to feel more comfortable and confident when using
+Figma to create high-fidelity designs. As a researcher, I primarily leverage
+Figma when conducting testing with prototypes. Things like components,
+variants, and autolayout can feel intimidating to someone who doesn’t typically
+do in-the-weeds design work. This project gave me an excuse to spend dedicated
+time learning how to use Figma effectively for design production.
+
+[62]Max
+
+My favorite part of creating StackStash was seeing all the different pieces
+come together to create something meaningful. Everyone was working on their
+specific area and seeing it all intersect was really cool.
+
+Something I learned was OpenAPI and TypeSpec. It was a new experience for me to
+work with OpenAPI to develop a spec for our API and use that to test our API
+endpoints against. It really helped to make sure everyone was able to be on the
+same page with the data we expected in both the backend and frontend. I also
+got to dabble with TypeSpec to generate the OpenAPI spec which was also a
+learning experience for me. I enjoyed stepping out of PHP and into some new
+concepts.
+
+[63]Nathan
+
+My favorite part of creating StackStash was exploring all the different AI
+models that are out there and testing which one would work best for our
+project.
+
+Something I learned was… Laravel, AI, Remix, and Panda CSS. Worked with Laravel
+when it first came out (8+ years ago) so there was a lot of brushing up and
+relearning. Overall really like it and would love to use Laravel again in
+another project. We went with Gemini AI to start with as it had a really good
+free tier and it seemed to return what we needed in a JSON format pretty
+consistently. But as we got more into integrating it into our app data we
+noticed that Gemini did not return perfect JSON every time. So we decided to
+change over to OpenAI as we can set it to format the response into valid JSON.
+Also learned a lot about Remix and Panda CSS as it was my first time working in
+both. There was a learning curve but having worked with React it was pretty
+easy to pick up.
+
+[64]Nick
+
+My favorite part of creating StackStash was rapidly building a bunch of UI in a
+familiar, but not too familiar, framework.
+
+Something I learned was…. Laravel, Remix, more Docker magic, TypeSpec, and
+more. I spent some time working with animations, which is always both a treat
+and a slog. Getting everything set up and it mostly just working for everyone
+was also a nice learning experience.
+
+━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
+We learned quite a bit during Pointless Palooza — and had fun while doing so.
+In a short amount of time, our team successfully brought the concept of
+StackStash to life. We’re excited to see how the book lovers at Viget make use
+of the tool and to potentially evolve it over time.
+
+[65] Laura Sweltz
+
+[66]Laura is Viget's Director of UX Research and Strategic Initiatives. She
+works from our Durham, NC office, where she helps clients like Rotary
+International, AARP, and Time Life understand the needs and behaviors of their
+users.
+
+[67]More articles by Laura
+[68] Chris Manning
+
+[69]Chris is a developer who's passionate about web performance. He works in
+our Durham, NC, office for clients such as ESPN, Dick's Sporting Goods, and the
+Wildlife Conservation Society.
+
+[70]More articles by Chris
+[71] Claire Atwell Eisinger
+
+[72]Claire combines her natural people and planning proclivities to manage
+client projects in our Durham, NC, office. She works with clients including
+iContact, Research Affiliates, AECOM and The Atlantic Philanthropies.
+
+[73]More articles by Claire
+[74] Danny Brown
+
+[75]Danny is a senior developer in the Falls Church, VA, office. He loves
+learning new technology and finding the right tool for each job.
+
+[76]More articles by Danny
+[77] David Eisinger
+
+[78]David is Viget's managing development director. From our Durham, NC,
+office, he builds high-quality, forward-thinking software for PUMA, the World
+Wildlife Fund, NFLPA, and many others.
+
+[79]More articles by David
+[80] Emily McDonald
+
+[81]Emily is a Product Manager working out of the Falls Church, VA office.
+Drawing on her background in English literature, psychology, and consulting,
+Emily brings creativity and excruciating organization to her work at Viget.
+
+[82]More articles by Emily
+[83] Jackson Fox
+
+[84]Jackson is VP of UX & Design at Viget. He works from our Boulder, CO,
+office, where he helps startups and organizations turn ideas into usable,
+effective products.
+
+[85]More articles by Jackson
+[86] Max Myers
+
+[87]Max is a Platform Developer based in Michigan with extensive experience
+building robust e-commerce platforms and rebuilding vintage Kawasaki
+motorcycles.
+
+[88]More articles by Max
+[89] Nathan Schmidt
+
+[90]Nathan is an UI Developer in Colorado. He loves applying creative thinking
+to web development and bringing interactive components to life.
+
+[91]More articles by Nathan
+[92] Nick Telsan
+
+[93]Nick is a Developer, working in our Chattanooga, TN office. He has a
+passion for building things and is never one to shy away from learning new
+things.
+
+[94]More articles by Nick
+
+Related Articles
+
+ • [95]
+ Viget's Favorite Books of 2023
+
+ Article
+
+ Viget's Favorite Books of 2023
+
+ Laura Sweltz
+
+ • [96]
+ Bonding Over Books
+
+ Article
+
+ Bonding Over Books
+
+ Laura Sweltz
+
+ • [97]
+ Why and How to Start an Office Book Club
+
+ Article
+
+ Why and How to Start an Office Book Club
+
+ Laura Sweltz
+
+The Viget Newsletter
+
+Nobody likes popups, so we waited until now to recommend our newsletter,
+featuring thoughts, opinions, and tools for building a better digital world.
+[98]Read the current issue.
+
+[99]Subscribe Here (opens in new window)
+
+Site Footer
+
+Have an unsolvable problem or audacious idea?
+
+Let’s get to work
+
+[100] Contact Us [101] [email protected] [102] 703.891.0670
+
+ • Practice
+ • [103]Work
+ • [104]Services
+ • [105]Articles
+
+ • People
+ • [106]Company
+ • [107]Careers
+ • [108]Code of Ethics
+ • [109]Diversity & Inclusion
+
+ • More
+ • [110]Pointless Corp.
+ • [111]Explorations
+ • [112]Code at Viget
+
+Sign Up For Our Newsletter
+
+A curated periodical featuring thoughts, opinions, and tools for building a
+better digital world.
+
+[113] Check it out
+
+Social Links
+
+[114] Viget
+
+ • [115]
+ • [116]
+ • [117]
+ • [118]
+ • [119]
+ • [120]
+
+Office Locations
+
+ • [121]Washington DC Metro
+ • [122]Durham, NC
+ • [123]Boulder, CO
+ • [124]Chattanooga, TN
+
+© 1999 – 2024 Viget Labs, LLC. [125]Terms [126]Privacy [127]MRF
+
+ • [128]Home
+ • [129]Articles
+ • [130]StackStash: Taking Bookish Musings to the Next Level
+
+[131] Subscribe (opens in a new window)
+Share
+
+ • [133] Share this page
+ • [134] Share this page
+ • [135] Post this page
+
+
+References:
+
+[1] https://www.viget.com/articles/stackstash-taking-bookish-musings-to-the-next-level/#content
+[2] https://www.viget.com/
+[3] https://www.viget.com/work/
+[4] https://www.viget.com/services/
+[5] https://www.viget.com/articles/
+[6] https://www.viget.com/careers/
+[7] https://www.viget.com/contact/
+[9] https://www.viget.com/
+[11] https://www.viget.com/work/
+[12] https://www.viget.com/services/
+[13] https://www.viget.com/articles/
+[14] https://www.viget.com/contact/
+[15] https://www.viget.com/about/
+[16] https://www.viget.com/careers/
+[17] https://www.viget.com/code-of-ethics/
+[18] https://www.viget.com/diversity-equity-and-inclusion/
+[19] https://pointlesscorp.com/
+[20] https://explorations.viget.com/
+[21] https://code.viget.com/
+[22] https://www.viget.com/newsletter/state-of-the-labor-union/
+[23] https://www.viget.com/articles/stackstash-taking-bookish-musings-to-the-next-level/
+[24] https://www.viget.com/about/team/lsweltz/
+[25] https://www.viget.com/about/team/cmanning/
+[26] https://www.viget.com/about/team/catwell/
+[27] https://www.viget.com/about/team/dbrown/
+[28] https://www.viget.com/about/team/deisinger/
+[29] https://www.viget.com/about/team/emcdonald/
+[30] https://www.viget.com/about/team/jfox/
+[31] https://www.viget.com/about/team/mmyers/
+[32] https://www.viget.com/about/team/nschmidt/
+[33] https://www.viget.com/about/team/ntelsan/
+[34] https://www.viget.com/articles/category/news-culture/
+[35] https://www.viget.com/articles/category/front-end-engineering/
+[36] https://www.viget.com/articles/category/back-end-engineering/
+[37] https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.viget.com%2Farticles%2Fstackstash-taking-bookish-musings-to-the-next-level%2F
+[38] http://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.viget.com%2Farticles%2Fstackstash-taking-bookish-musings-to-the-next-level%2F
+[39] https://x.com/intent/tweet?text=Book%20musings%20from%20Viget%27s%20%23books%20Slack%20channel%2C%20but%20make%20them%20more%20useful.%20That%20concept%20inspired%20our%20latest%20Pointless%20adventure.%20https%3A%2F%2Fwww.viget.com%2Farticles%2Fstackstash-taking-bookish-musings-to-the-next-level%2F
+[40] https://laravel.com/
+[41] https://openlibrary.org/developers/api
+[42] https://openai.com/
+[43] https://www.openapis.org/
+[44] https://typespec.io/docs/getting-started/getting-started-http
+[45] https://remix.run/
+[46] https://react.dev/
+[47] https://panda-css.com/
+[48] https://www.docker.com/
+[49] https://www.viget.com/about/team/cmanning/
+[50] https://laravel.com/docs/11.x
+[51] https://api.slack.com/messaging/retrieving#:~:text=field.-,The,value%20is%20essentially%20the%20ID%20of%20the%20message,-%2C%20guaranteed%20unique%20within
+[52] https://api.slack.com/methods/conversations.history
+[53] https://www.bakejam.com/slacks-conversationshistory-api-ignores-replies/
+[54] https://api.slack.com/methods/conversations.replies
+[55] https://www.viget.com/about/team/catwell/
+[56] https://www.viget.com/about/team/dbrown/
+[57] https://www.viget.com/about/team/deisinger/
+[58] https://en.wikipedia.org/wiki/ISBN
+[59] https://www.viget.com/about/team/emcdonald/
+[60] https://www.viget.com/about/team/jfox/
+[61] https://www.viget.com/about/team/lsweltz/
+[62] https://www.viget.com/about/team/mmyers/
+[63] https://www.viget.com/about/team/nschmidt/
+[64] https://www.viget.com/about/team/ntelsan/
+[65] https://www.viget.com/about/team/lsweltz/
+[66] https://www.viget.com/about/team/lsweltz/
+[67] https://www.viget.com/about/team/lsweltz/
+[68] https://www.viget.com/about/team/cmanning/
+[69] https://www.viget.com/about/team/cmanning/
+[70] https://www.viget.com/about/team/cmanning/
+[71] https://www.viget.com/about/team/catwell/
+[72] https://www.viget.com/about/team/catwell/
+[73] https://www.viget.com/about/team/catwell/
+[74] https://www.viget.com/about/team/dbrown/
+[75] https://www.viget.com/about/team/dbrown/
+[76] https://www.viget.com/about/team/dbrown/
+[77] https://www.viget.com/about/team/deisinger/
+[78] https://www.viget.com/about/team/deisinger/
+[79] https://www.viget.com/about/team/deisinger/
+[80] https://www.viget.com/about/team/emcdonald/
+[81] https://www.viget.com/about/team/emcdonald/
+[82] https://www.viget.com/about/team/emcdonald/
+[83] https://www.viget.com/about/team/jfox/
+[84] https://www.viget.com/about/team/jfox/
+[85] https://www.viget.com/about/team/jfox/
+[86] https://www.viget.com/about/team/mmyers/
+[87] https://www.viget.com/about/team/mmyers/
+[88] https://www.viget.com/about/team/mmyers/
+[89] https://www.viget.com/about/team/nschmidt/
+[90] https://www.viget.com/about/team/nschmidt/
+[91] https://www.viget.com/about/team/nschmidt/
+[92] https://www.viget.com/about/team/ntelsan/
+[93] https://www.viget.com/about/team/ntelsan/
+[94] https://www.viget.com/about/team/ntelsan/
+[95] https://www.viget.com/articles/vigets-favorite-books-of-2023/
+[96] https://www.viget.com/articles/bonding-over-books/
+[97] https://www.viget.com/articles/why-and-how-to-start-an-office-book-club/
+[98] https://www.viget.com/newsletter
+[99] http://eepurl.com/gtHqsj
+[100] https://www.viget.com/contact/
+[101] mailto:[email protected]?subject=Hello%2C%20Viget%21
+[102] tel:7038910670
+[103] https://www.viget.com/work/
+[104] https://www.viget.com/services/
+[105] https://www.viget.com/articles/
+[106] https://www.viget.com/about/
+[107] https://www.viget.com/careers/
+[108] https://www.viget.com/code-of-ethics/
+[109] https://www.viget.com/diversity-equity-and-inclusion/
+[110] https://pointlesscorp.com/
+[111] https://explorations.viget.com/
+[112] https://code.viget.com/
+[113] https://www.viget.com/newsletter/
+[114] https://www.viget.com/
+[115] http://x.com/viget
+[116] https://github.com/vigetlabs
+[117] https://dribbble.com/viget
+[118] https://www.instagram.com/viget/
+[119] https://www.linkedin.com/company/viget-labs
+[120] https://vimeo.com/viget/collections
+[121] https://www.viget.com/dc-metro-hq/
+[122] https://www.viget.com/durham/
+[123] https://www.viget.com/boulder/
+[124] https://www.viget.com/chattanooga/
+[125] https://www.viget.com/terms-conditions/
+[126] https://www.viget.com/privacy-policy/
+[127] https://individual.carefirst.com/individuals-families/mandates-policies/machine-readable-file.page
+[128] https://www.viget.com/
+[129] https://www.viget.com/articles
+[130] https://www.viget.com/articles/stackstash-taking-bookish-musings-to-the-next-level/#hero
+[131] http://eepurl.com/gtHqsj
+[133] https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.viget.com%2Farticles%2Fstackstash-taking-bookish-musings-to-the-next-level%2F
+[134] http://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.viget.com%2Farticles%2Fstackstash-taking-bookish-musings-to-the-next-level%2F
+[135] https://x.com/intent/tweet?text=Book%20musings%20from%20Viget%27s%20%23books%20Slack%20channel%2C%20but%20make%20them%20more%20useful.%20That%20concept%20inspired%20our%20latest%20Pointless%20adventure.%20https%3A%2F%2Fwww.viget.com%2Farticles%2Fstackstash-taking-bookish-musings-to-the-next-level%2F