Artwork

محتوای ارائه شده توسط Christoph Neumann and Nate Jones, Christoph Neumann, and Nate Jones. تمام محتوای پادکست شامل قسمت‌ها، گرافیک‌ها و توضیحات پادکست مستقیماً توسط Christoph Neumann and Nate Jones, Christoph Neumann, and Nate Jones یا شریک پلتفرم پادکست آن‌ها آپلود و ارائه می‌شوند. اگر فکر می‌کنید شخصی بدون اجازه شما از اثر دارای حق نسخه‌برداری شما استفاده می‌کند، می‌توانید روندی که در اینجا شرح داده شده است را دنبال کنید.https://fa.player.fm/legal
Player FM - برنامه پادکست
با برنامه Player FM !

Episode 006: All Wrapped Up in Twitter

25:03
 
اشتراک گذاری
 

Manage episode 222839732 series 2463849
محتوای ارائه شده توسط Christoph Neumann and Nate Jones, Christoph Neumann, and Nate Jones. تمام محتوای پادکست شامل قسمت‌ها، گرافیک‌ها و توضیحات پادکست مستقیماً توسط Christoph Neumann and Nate Jones, Christoph Neumann, and Nate Jones یا شریک پلتفرم پادکست آن‌ها آپلود و ارائه می‌شوند. اگر فکر می‌کنید شخصی بدون اجازه شما از اثر دارای حق نسخه‌برداری شما استفاده می‌کند، می‌توانید روندی که در اینجا شرح داده شده است را دنبال کنید.https://fa.player.fm/legal

Christoph tries to get a handle on his #clojure tweet-stream habit.

  • NOT tic-tac-toe
  • Follow #clojure tweet stream and see it print out in the terminal
  • "We like reinventing things."
  • "The terminal is the best UI out there."
  • Does Twitter have an API?
  • Websocket? Nope! Requires a big "E" plan: "enterprise".
  • PubSub? Nope! Not from Twitter.
  • Alas, we must poll the /search/tweets.json endpoint
  • Problem: we're going to keep getting results we've already seen
  • Avoid duplicates? Let's use core cache.
  • Once again, we use loop and recur for our main loop
  • Time for an API wrapper, but what does the wrapper do?
  • HTTP POST form-encoded parameters
  • Ack! 401 Access Denied
  • "An important step in any API exploration is your first 401 response."
  • "OAuth?" "Oh....auth..."
  • Meet OAuth, the API bouncer.
  • Make an auth function to call the OAuth endpoint and get an auth token
  • Have auth return a "handle" with the auth token. Other wrapper functions will need handle.
  • Need to keep handle around. Put that in the app state too.
  • Let the exceptions fly!
  • "Exceptions are an exceptionally accepted way of handling exceptional circumstances."
  • "I caught what you meant."
  • Make a fetch function that does the I/O work.
  • Create a search function that takes handle and query
  • Look for pure logic and move it into its own function, then it's easy to test.
  • Transform args to search into a "request description" and have fetch operate on that.
  • "Twitch, I mean Twitter. You know, that Internet thing that starts with t-w-i-t."
  • Different layers of the wrapper:
    • Top-level functions used by the application. Sole job: sequence internal functions
    • Pure transforms from args to "request description"
    • A fetch function that follows the "orders" of the "request description"
  • "The point of testing this code is not to test if Aleph works or Twitter works. The logic is in the translation function, so that's why we test it."
  • "Our hero, the Twitch wrapper, is poised and ready to fetch data on our behalf. What will happen next?"

Clojure in this episode:

  • loop, recur
  • Thread.sleep
  • get
  • try, catch
  • ->

Related projects:

  continue reading

118 قسمت

Artwork
iconاشتراک گذاری
 
Manage episode 222839732 series 2463849
محتوای ارائه شده توسط Christoph Neumann and Nate Jones, Christoph Neumann, and Nate Jones. تمام محتوای پادکست شامل قسمت‌ها، گرافیک‌ها و توضیحات پادکست مستقیماً توسط Christoph Neumann and Nate Jones, Christoph Neumann, and Nate Jones یا شریک پلتفرم پادکست آن‌ها آپلود و ارائه می‌شوند. اگر فکر می‌کنید شخصی بدون اجازه شما از اثر دارای حق نسخه‌برداری شما استفاده می‌کند، می‌توانید روندی که در اینجا شرح داده شده است را دنبال کنید.https://fa.player.fm/legal

Christoph tries to get a handle on his #clojure tweet-stream habit.

  • NOT tic-tac-toe
  • Follow #clojure tweet stream and see it print out in the terminal
  • "We like reinventing things."
  • "The terminal is the best UI out there."
  • Does Twitter have an API?
  • Websocket? Nope! Requires a big "E" plan: "enterprise".
  • PubSub? Nope! Not from Twitter.
  • Alas, we must poll the /search/tweets.json endpoint
  • Problem: we're going to keep getting results we've already seen
  • Avoid duplicates? Let's use core cache.
  • Once again, we use loop and recur for our main loop
  • Time for an API wrapper, but what does the wrapper do?
  • HTTP POST form-encoded parameters
  • Ack! 401 Access Denied
  • "An important step in any API exploration is your first 401 response."
  • "OAuth?" "Oh....auth..."
  • Meet OAuth, the API bouncer.
  • Make an auth function to call the OAuth endpoint and get an auth token
  • Have auth return a "handle" with the auth token. Other wrapper functions will need handle.
  • Need to keep handle around. Put that in the app state too.
  • Let the exceptions fly!
  • "Exceptions are an exceptionally accepted way of handling exceptional circumstances."
  • "I caught what you meant."
  • Make a fetch function that does the I/O work.
  • Create a search function that takes handle and query
  • Look for pure logic and move it into its own function, then it's easy to test.
  • Transform args to search into a "request description" and have fetch operate on that.
  • "Twitch, I mean Twitter. You know, that Internet thing that starts with t-w-i-t."
  • Different layers of the wrapper:
    • Top-level functions used by the application. Sole job: sequence internal functions
    • Pure transforms from args to "request description"
    • A fetch function that follows the "orders" of the "request description"
  • "The point of testing this code is not to test if Aleph works or Twitter works. The logic is in the translation function, so that's why we test it."
  • "Our hero, the Twitch wrapper, is poised and ready to fetch data on our behalf. What will happen next?"

Clojure in this episode:

  • loop, recur
  • Thread.sleep
  • get
  • try, catch
  • ->

Related projects:

  continue reading

118 قسمت

All episodes

×
 
Loading …

به Player FM خوش آمدید!

Player FM در سراسر وب را برای یافتن پادکست های با کیفیت اسکن می کند تا همین الان لذت ببرید. این بهترین برنامه ی پادکست است که در اندروید، آیفون و وب کار می کند. ثبت نام کنید تا اشتراک های شما در بین دستگاه های مختلف همگام سازی شود.

 

راهنمای مرجع سریع

در حین کاوش به این نمایش گوش دهید
پخش