www-viget-com-szerfi.txt (22521B)
1 [1] Skip to Main Content 2 [2] Viget 3 4 • [3] Work 5 • [4] Services 6 • [5] Articles 7 • [6] Careers 8 • [7] Contact 9 • Open Menu 10 11 Navigation 12 13 [9] Viget Close 14 15 • Practice 16 • [11] Work 17 • [12] Services 18 • [13] Articles 19 20 We’re a full-service digital agency that’s been helping clients make lasting 21 change since 1999. 22 23 [14] Contact Us 24 25 People 26 27 • [15]Company 28 • [16]Careers 29 • [17]Code of Ethics 30 • [18]Diversity & Inclusion 31 32 More 33 34 • [19]Pointless Corp. 35 • [20]Explorations 36 • [21]Code at Viget 37 38 Featured 39 40 [22] 41 Read the Article: State of the (Labor) Union 42 43 Newsletter 44 45 State of the (Labor) Union 46 47 [23] 48 Read the Article: StackStash: Taking Bookish Musings to the Next Level 49 50 Article 51 52 StackStash: Taking Bookish Musings to the Next Level 53 54 StackStash: Taking Bookish Musings to the Next Level 55 56 [stackstash-icon-2] 57 58 [24]Laura Sweltz, Director of UX Research and Strategic Initiatives, 59 60 [25]Chris Manning, Development Director, 61 62 [26]Claire Atwell Eisinger, Product Management Director, 63 64 [27]Danny Brown, Senior Developer, 65 66 [28]David Eisinger, Development Director, 67 68 [29]Emily McDonald, Product Manager, 69 70 [30]Jackson Fox, VP of UX & Design, 71 72 [31]Max Myers, Platform Developer, 73 74 [32]Nathan Schmidt, UI Developer, and 75 76 [33]Nick Telsan, Developer 77 78 Article Categories: [34] #News & Culture, [35] #Front-end Engineering, [36] # 79 Back-end Engineering 80 81 Posted on April 9, 2024 82 83 • [37] 84 Share 85 • [38] 86 Share 87 • [39] 88 Post 89 90 Book musings from Viget's #books Slack channel, but make them more useful. That 91 concept inspired our latest Pointless adventure. 92 93 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 94 , 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 95 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 . 96 97 We have many book lovers at Viget. Our #books Slack channel has a wealth of 98 information about what books people have read and how they felt about them. 99 While it’s great to have access to that data, Slack doesn’t provide the type of 100 exploratory, visual browsing experience that would be most useful when trying 101 to make decisions about what we might want to read next. 102 103 We might wonder: 104 105 • Has anyone read Tana French’s The Likeness? How did they feel about it? 106 • Liz has shared books that I’ve enjoyed in the past. What other titles have 107 they enjoyed? 108 • What has everyone been reading lately? 109 110 During our latest Pointless Palooza, a team of 10 folks at Viget built an app 111 that would help us answer those types of questions in a more engaging way. 112 Rather than digging through a bunch of disparate threads in Slack, we can now 113 use the StackStash app to browse consolidated information. It’s easy to look at 114 a book and see all of the people who have mentioned it (and how they felt about 115 it) or look at a person and see all of the books they’ve mentioned (and how 116 they felt about them). 117 118 [Group-9_2024-04-08-184917_kfjg] 119 120 Behind the Scenes 121 122 When we build software for clients, their business needs typically drive 123 decisions around technical architecture, which then informs who works on the 124 project and their role. Pointless Palooza gives us an opportunity to try out 125 new technologies the team is excited about, and flex outside our traditional 126 roles. With a team of six (!) engineers slated to build StackStash together, we 127 needed to decide how to build the application before we got started. This 128 decision was guided by a few high-level goals: 129 130 • Get a working end-to-end version of StackStash live on the Internet on Day 131 1 132 • Ensure everyone on the technical team could work on something that was 133 interesting to them 134 • Distribute the workload so that we wouldn’t step on each other’s toes 135 136 Much like everything that happens in the software development lifecycle, 137 arriving at our final tech plan was an iterative process. In the days leading 138 up to kickoff, we worked collaboratively to settle on a fun mix of technologies 139 that play to our strengths while also giving us the chance to try some new 140 things: 141 142 • [40]Laravel for back-end data management, integrations with third-party 143 sources ([41]Open Library and [42]OpenAI) and the API layer 144 • [43]OpenAPI and [44]TypeSpec to define our API schema 145 • [45]Remix + [46]React as the view layer 146 • [47]PandaCSS to style the React components and views 147 • [48]Docker for local development and deployment 148 149 [CleanShot-2024-04-08-at-14] 150 151 What We Learned 152 153 Bringing this concept to life was not only a fun experience but also provided 154 the team with the chance to learn new skills and technologies. Here are some of 155 the highlights that stood out to us: 156 157 [49]Chris 158 159 My favorite part of creating StackStash was getting a chance to work with 160 Laravel, which was new to me on this project. I was surprised how easy it was 161 to find most information I was looking for right in the main [50]Laravel 162 documentation. Overall, it was a pleasant experience coming from other popular 163 web frameworks like Rails and Django. 164 165 Something I learned was a lot more about Slack API data. There were a lot of 166 little lessons I learned along the way—how message data is generally 167 structured, that [51]`ts` timestamps are kind of IDs, etc.—but the biggest 168 surprise was that [52]the conversation history API we were using [53]didn’t 169 include message replies. You can retrieve [54]replies via a similar endpoint, 170 but as you might imagine, there are a lot more API requests to account for. 171 172 [55]Claire 173 174 My favorite part of creating StackStash was working with a big team of 175 engineers to divide technical roles and responsibilities. Based on experience 176 from past client projects, we leveraged the “pods” concept, assigning devs in 177 teams of two to larger focus areas. I also enjoyed queuing up work for everyone 178 in a shared gist of our data spec vs. breaking everything out into individual 179 tickets. This was a huge time-saver on the PM side and helped everyone 180 collaborate more easily. 181 182 Something I learned was how to write Migrations, Factories, and Database 183 Seeders in Laravel! 184 185 [56]Danny 186 187 My favorite part of creating StackStash was seeing similarities between Laravel 188 and other web frameworks. Even though the syntax was pretty different, the 189 general ideas for doing things was familiar enough that it was easy to pick up 190 and understand. 191 192 Something I learned was the interplay between Typespec, OpenAPI, and 193 TypeScript. I enjoyed learning with those three tools and how they work 194 together in such an enjoyable way. 195 196 [57]David 197 198 My favorite part of creating StackStash was getting to do some modern PHP. It 199 was the first language I used for web development (in the late 90s 😯) but I 200 haven’t done a great job keeping up on its progress over the last decade. The 201 language, frameworks, and tooling have come a long way. Laravel’s slick, and 202 having a language server to remind me the argument order to `implode` was 203 pretty clutch. 204 205 Something I learned was how to write defensive PHP code. I was working on a lot 206 of the API integrations, and I took inspiration from Go to be careful and 207 explicit around failure. Also, a LOT about [58]ISBNs. 208 209 [59]Emily 210 211 My favorite part of creating StackStash was designing new screens based on the 212 visual language and feature definition that were already established. 213 214 Something I learned was how to create animations in Figma! 215 216 [60]Jackson 217 218 My favorite part of creating StackStash was getting more comfortable using AI 219 platforms like Google’s Gemini and Anthropic’s Claude for data processing. I 220 finally had a good reason to explore tools like Google’s AI Studio to help 221 prototype prompts that became important components in our data pipeline. 222 223 Something I learned was that AI tools can do some amazing things — we pulled 224 JSON data out of Slack and had Gemini (and later GPT-4) doing some very 225 impressive data extraction and summarization — but they’re also infuriatingly 226 mysterious at times. Gemini and GPT both excel at fuzzy tasks like 227 summarization and sentiment analysis, but completely fell down on lookup tasks, 228 like gathering ISBNs for books. We eventually switched to GPT-4 because we 229 couldn’t get consistently valid JSON out of Gemini. 230 231 [61]Laura 232 233 My favorite part of creating StackStash was the opportunity to take bookish joy 234 at Viget to the next level. I hope that StackStash will help my fellow book 235 lovers find a great read the next time they’re on the hunt for a new book. 236 237 Something I learned was how to feel more comfortable and confident when using 238 Figma to create high-fidelity designs. As a researcher, I primarily leverage 239 Figma when conducting testing with prototypes. Things like components, 240 variants, and autolayout can feel intimidating to someone who doesn’t typically 241 do in-the-weeds design work. This project gave me an excuse to spend dedicated 242 time learning how to use Figma effectively for design production. 243 244 [62]Max 245 246 My favorite part of creating StackStash was seeing all the different pieces 247 come together to create something meaningful. Everyone was working on their 248 specific area and seeing it all intersect was really cool. 249 250 Something I learned was OpenAPI and TypeSpec. It was a new experience for me to 251 work with OpenAPI to develop a spec for our API and use that to test our API 252 endpoints against. It really helped to make sure everyone was able to be on the 253 same page with the data we expected in both the backend and frontend. I also 254 got to dabble with TypeSpec to generate the OpenAPI spec which was also a 255 learning experience for me. I enjoyed stepping out of PHP and into some new 256 concepts. 257 258 [63]Nathan 259 260 My favorite part of creating StackStash was exploring all the different AI 261 models that are out there and testing which one would work best for our 262 project. 263 264 Something I learned was… Laravel, AI, Remix, and Panda CSS. Worked with Laravel 265 when it first came out (8+ years ago) so there was a lot of brushing up and 266 relearning. Overall really like it and would love to use Laravel again in 267 another project. We went with Gemini AI to start with as it had a really good 268 free tier and it seemed to return what we needed in a JSON format pretty 269 consistently. But as we got more into integrating it into our app data we 270 noticed that Gemini did not return perfect JSON every time. So we decided to 271 change over to OpenAI as we can set it to format the response into valid JSON. 272 Also learned a lot about Remix and Panda CSS as it was my first time working in 273 both. There was a learning curve but having worked with React it was pretty 274 easy to pick up. 275 276 [64]Nick 277 278 My favorite part of creating StackStash was rapidly building a bunch of UI in a 279 familiar, but not too familiar, framework. 280 281 Something I learned was…. Laravel, Remix, more Docker magic, TypeSpec, and 282 more. I spent some time working with animations, which is always both a treat 283 and a slog. Getting everything set up and it mostly just working for everyone 284 was also a nice learning experience. 285 286 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 287 288 We learned quite a bit during Pointless Palooza — and had fun while doing so. 289 In a short amount of time, our team successfully brought the concept of 290 StackStash to life. We’re excited to see how the book lovers at Viget make use 291 of the tool and to potentially evolve it over time. 292 293 [65] Laura Sweltz 294 295 [66]Laura is Viget's Director of UX Research and Strategic Initiatives. She 296 works from our Durham, NC office, where she helps clients like Rotary 297 International, AARP, and Time Life understand the needs and behaviors of their 298 users. 299 300 [67]More articles by Laura 301 [68] Chris Manning 302 303 [69]Chris is a developer who's passionate about web performance. He works in 304 our Durham, NC, office for clients such as ESPN, Dick's Sporting Goods, and the 305 Wildlife Conservation Society. 306 307 [70]More articles by Chris 308 [71] Claire Atwell Eisinger 309 310 [72]Claire combines her natural people and planning proclivities to manage 311 client projects in our Durham, NC, office. She works with clients including 312 iContact, Research Affiliates, AECOM and The Atlantic Philanthropies. 313 314 [73]More articles by Claire 315 [74] Danny Brown 316 317 [75]Danny is a senior developer in the Falls Church, VA, office. He loves 318 learning new technology and finding the right tool for each job. 319 320 [76]More articles by Danny 321 [77] David Eisinger 322 323 [78]David is Viget's managing development director. From our Durham, NC, 324 office, he builds high-quality, forward-thinking software for PUMA, the World 325 Wildlife Fund, NFLPA, and many others. 326 327 [79]More articles by David 328 [80] Emily McDonald 329 330 [81]Emily is a Product Manager working out of the Falls Church, VA office. 331 Drawing on her background in English literature, psychology, and consulting, 332 Emily brings creativity and excruciating organization to her work at Viget. 333 334 [82]More articles by Emily 335 [83] Jackson Fox 336 337 [84]Jackson is VP of UX & Design at Viget. He works from our Boulder, CO, 338 office, where he helps startups and organizations turn ideas into usable, 339 effective products. 340 341 [85]More articles by Jackson 342 [86] Max Myers 343 344 [87]Max is a Platform Developer based in Michigan with extensive experience 345 building robust e-commerce platforms and rebuilding vintage Kawasaki 346 motorcycles. 347 348 [88]More articles by Max 349 [89] Nathan Schmidt 350 351 [90]Nathan is an UI Developer in Colorado. He loves applying creative thinking 352 to web development and bringing interactive components to life. 353 354 [91]More articles by Nathan 355 [92] Nick Telsan 356 357 [93]Nick is a Developer, working in our Chattanooga, TN office. He has a 358 passion for building things and is never one to shy away from learning new 359 things. 360 361 [94]More articles by Nick 362 363 Related Articles 364 365 • [95] 366 Viget's Favorite Books of 2023 367 368 Article 369 370 Viget's Favorite Books of 2023 371 372 Laura Sweltz 373 374 • [96] 375 Bonding Over Books 376 377 Article 378 379 Bonding Over Books 380 381 Laura Sweltz 382 383 • [97] 384 Why and How to Start an Office Book Club 385 386 Article 387 388 Why and How to Start an Office Book Club 389 390 Laura Sweltz 391 392 The Viget Newsletter 393 394 Nobody likes popups, so we waited until now to recommend our newsletter, 395 featuring thoughts, opinions, and tools for building a better digital world. 396 [98]Read the current issue. 397 398 [99]Subscribe Here (opens in new window) 399 400 Site Footer 401 402 Have an unsolvable problem or audacious idea? 403 404 Let’s get to work 405 406 [100] Contact Us [101] [email protected] [102] 703.891.0670 407 408 • Practice 409 • [103]Work 410 • [104]Services 411 • [105]Articles 412 413 • People 414 • [106]Company 415 • [107]Careers 416 • [108]Code of Ethics 417 • [109]Diversity & Inclusion 418 419 • More 420 • [110]Pointless Corp. 421 • [111]Explorations 422 • [112]Code at Viget 423 424 Sign Up For Our Newsletter 425 426 A curated periodical featuring thoughts, opinions, and tools for building a 427 better digital world. 428 429 [113] Check it out 430 431 Social Links 432 433 [114] Viget 434 435 • [115] 436 • [116] 437 • [117] 438 • [118] 439 • [119] 440 • [120] 441 442 Office Locations 443 444 • [121]Washington DC Metro 445 • [122]Durham, NC 446 • [123]Boulder, CO 447 • [124]Chattanooga, TN 448 449 © 1999 – 2024 Viget Labs, LLC. [125]Terms [126]Privacy [127]MRF 450 451 • [128]Home 452 • [129]Articles 453 • [130]StackStash: Taking Bookish Musings to the Next Level 454 455 [131] Subscribe (opens in a new window) 456 Share 457 458 • [133] Share this page 459 • [134] Share this page 460 • [135] Post this page 461 462 463 References: 464 465 [1] https://www.viget.com/articles/stackstash-taking-bookish-musings-to-the-next-level/#content 466 [2] https://www.viget.com/ 467 [3] https://www.viget.com/work/ 468 [4] https://www.viget.com/services/ 469 [5] https://www.viget.com/articles/ 470 [6] https://www.viget.com/careers/ 471 [7] https://www.viget.com/contact/ 472 [9] https://www.viget.com/ 473 [11] https://www.viget.com/work/ 474 [12] https://www.viget.com/services/ 475 [13] https://www.viget.com/articles/ 476 [14] https://www.viget.com/contact/ 477 [15] https://www.viget.com/about/ 478 [16] https://www.viget.com/careers/ 479 [17] https://www.viget.com/code-of-ethics/ 480 [18] https://www.viget.com/diversity-equity-and-inclusion/ 481 [19] https://pointlesscorp.com/ 482 [20] https://explorations.viget.com/ 483 [21] https://code.viget.com/ 484 [22] https://www.viget.com/newsletter/state-of-the-labor-union/ 485 [23] https://www.viget.com/articles/stackstash-taking-bookish-musings-to-the-next-level/ 486 [24] https://www.viget.com/about/team/lsweltz/ 487 [25] https://www.viget.com/about/team/cmanning/ 488 [26] https://www.viget.com/about/team/catwell/ 489 [27] https://www.viget.com/about/team/dbrown/ 490 [28] https://www.viget.com/about/team/deisinger/ 491 [29] https://www.viget.com/about/team/emcdonald/ 492 [30] https://www.viget.com/about/team/jfox/ 493 [31] https://www.viget.com/about/team/mmyers/ 494 [32] https://www.viget.com/about/team/nschmidt/ 495 [33] https://www.viget.com/about/team/ntelsan/ 496 [34] https://www.viget.com/articles/category/news-culture/ 497 [35] https://www.viget.com/articles/category/front-end-engineering/ 498 [36] https://www.viget.com/articles/category/back-end-engineering/ 499 [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 500 [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 501 [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 502 [40] https://laravel.com/ 503 [41] https://openlibrary.org/developers/api 504 [42] https://openai.com/ 505 [43] https://www.openapis.org/ 506 [44] https://typespec.io/docs/getting-started/getting-started-http 507 [45] https://remix.run/ 508 [46] https://react.dev/ 509 [47] https://panda-css.com/ 510 [48] https://www.docker.com/ 511 [49] https://www.viget.com/about/team/cmanning/ 512 [50] https://laravel.com/docs/11.x 513 [51] https://api.slack.com/messaging/retrieving#:~:text=field.-,The,value%20is%20essentially%20the%20ID%20of%20the%20message,-%2C%20guaranteed%20unique%20within 514 [52] https://api.slack.com/methods/conversations.history 515 [53] https://www.bakejam.com/slacks-conversationshistory-api-ignores-replies/ 516 [54] https://api.slack.com/methods/conversations.replies 517 [55] https://www.viget.com/about/team/catwell/ 518 [56] https://www.viget.com/about/team/dbrown/ 519 [57] https://www.viget.com/about/team/deisinger/ 520 [58] https://en.wikipedia.org/wiki/ISBN 521 [59] https://www.viget.com/about/team/emcdonald/ 522 [60] https://www.viget.com/about/team/jfox/ 523 [61] https://www.viget.com/about/team/lsweltz/ 524 [62] https://www.viget.com/about/team/mmyers/ 525 [63] https://www.viget.com/about/team/nschmidt/ 526 [64] https://www.viget.com/about/team/ntelsan/ 527 [65] https://www.viget.com/about/team/lsweltz/ 528 [66] https://www.viget.com/about/team/lsweltz/ 529 [67] https://www.viget.com/about/team/lsweltz/ 530 [68] https://www.viget.com/about/team/cmanning/ 531 [69] https://www.viget.com/about/team/cmanning/ 532 [70] https://www.viget.com/about/team/cmanning/ 533 [71] https://www.viget.com/about/team/catwell/ 534 [72] https://www.viget.com/about/team/catwell/ 535 [73] https://www.viget.com/about/team/catwell/ 536 [74] https://www.viget.com/about/team/dbrown/ 537 [75] https://www.viget.com/about/team/dbrown/ 538 [76] https://www.viget.com/about/team/dbrown/ 539 [77] https://www.viget.com/about/team/deisinger/ 540 [78] https://www.viget.com/about/team/deisinger/ 541 [79] https://www.viget.com/about/team/deisinger/ 542 [80] https://www.viget.com/about/team/emcdonald/ 543 [81] https://www.viget.com/about/team/emcdonald/ 544 [82] https://www.viget.com/about/team/emcdonald/ 545 [83] https://www.viget.com/about/team/jfox/ 546 [84] https://www.viget.com/about/team/jfox/ 547 [85] https://www.viget.com/about/team/jfox/ 548 [86] https://www.viget.com/about/team/mmyers/ 549 [87] https://www.viget.com/about/team/mmyers/ 550 [88] https://www.viget.com/about/team/mmyers/ 551 [89] https://www.viget.com/about/team/nschmidt/ 552 [90] https://www.viget.com/about/team/nschmidt/ 553 [91] https://www.viget.com/about/team/nschmidt/ 554 [92] https://www.viget.com/about/team/ntelsan/ 555 [93] https://www.viget.com/about/team/ntelsan/ 556 [94] https://www.viget.com/about/team/ntelsan/ 557 [95] https://www.viget.com/articles/vigets-favorite-books-of-2023/ 558 [96] https://www.viget.com/articles/bonding-over-books/ 559 [97] https://www.viget.com/articles/why-and-how-to-start-an-office-book-club/ 560 [98] https://www.viget.com/newsletter 561 [99] http://eepurl.com/gtHqsj 562 [100] https://www.viget.com/contact/ 563 [101] mailto:[email protected]?subject=Hello%2C%20Viget%21 564 [102] tel:7038910670 565 [103] https://www.viget.com/work/ 566 [104] https://www.viget.com/services/ 567 [105] https://www.viget.com/articles/ 568 [106] https://www.viget.com/about/ 569 [107] https://www.viget.com/careers/ 570 [108] https://www.viget.com/code-of-ethics/ 571 [109] https://www.viget.com/diversity-equity-and-inclusion/ 572 [110] https://pointlesscorp.com/ 573 [111] https://explorations.viget.com/ 574 [112] https://code.viget.com/ 575 [113] https://www.viget.com/newsletter/ 576 [114] https://www.viget.com/ 577 [115] http://x.com/viget 578 [116] https://github.com/vigetlabs 579 [117] https://dribbble.com/viget 580 [118] https://www.instagram.com/viget/ 581 [119] https://www.linkedin.com/company/viget-labs 582 [120] https://vimeo.com/viget/collections 583 [121] https://www.viget.com/dc-metro-hq/ 584 [122] https://www.viget.com/durham/ 585 [123] https://www.viget.com/boulder/ 586 [124] https://www.viget.com/chattanooga/ 587 [125] https://www.viget.com/terms-conditions/ 588 [126] https://www.viget.com/privacy-policy/ 589 [127] https://individual.carefirst.com/individuals-families/mandates-policies/machine-readable-file.page 590 [128] https://www.viget.com/ 591 [129] https://www.viget.com/articles 592 [130] https://www.viget.com/articles/stackstash-taking-bookish-musings-to-the-next-level/#hero 593 [131] http://eepurl.com/gtHqsj 594 [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 595 [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 596 [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