stackstash link

This commit is contained in:
David Eisinger
2024-04-17 16:45:24 -04:00
parent e889fee717
commit ee738857a0
2 changed files with 600 additions and 0 deletions

View File

@@ -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
Were a full-service digital agency thats 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 its great to have access to that data, Slack doesnt 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 Frenchs The Likeness? How did they feel about it? 
• Liz has shared books that Ive 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. Its 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 theyve 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 wouldnt step on each others 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]didnt
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
havent done a great job keeping up on its progress over the last decade. The
language, frameworks, and tooling have come a long way. Laravels 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 Googles Gemini and Anthropics Claude for data processing. I
finally had a good reason to explore tools like Googles 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 theyre 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
couldnt 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 theyre 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 doesnt 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. Were 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?
Lets get to work
[100] Contact Us [101] hello@viget.com [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:hello@viget.com?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