birdnest

nest.appspot.com is down

Seems like Google decreases the default urlfetch deadline to 5 secs again. Good news is we can set it to 10 secs manually . Bad news is we can't set the deadline for httplib, the library we are using.

In easy words, now you have the only choice for birdnest. Point your gateway to http://nest.onedd.net.

Anyway, I'll think about the proper solution within next week. Any suggestions are welcome.

Birdnest get update

The usage of birdnest increased dramastically since the beginning of June. Now we get more than 100,000 hits daily, mostly from China, and takes more than 10GB/month. So impressive this little service can be useful for many people over the world.

Anyway, I have to redeploy birdnest in wsgi mode to lighten the server load because the increasing of #birdnest usage. After some test drive, I migrate nest.onedd.net to wsgi over Phusion Passenger. Even though its wsgi support is just proof-on-concept, the performance is quite impressive. Kudos to Passenger team.

Thanks to @sugree, @iake, @tewson, @jittat and everyone for testing and give me bug report and other feedback. Feedback and suggestion are welcome at Project homepage.

Birdnest now has logo

ได้ผู้ใจบุญแล้วครับ พี่ที่ทำงานเป็นคนวาดให้ ขอแสดงผลงานของพี่เค้าหน่อยแล้วกันครับ

birdnest and jibjib

ไหนๆก็ไหนๆแล้วก็เลยขอให้พี่เค้าแยกเฉพาะตัวนกมาไว้เป็นโลโกของ #jibjib ด้วยเลยทีเดียว เลยได้ตัวซ้ายเป็นโลโก jibjib ตัวขวาเป็นโลโก birdnest

ตอนนี้ขอเคลียร์งานอะไรซักเล็กน้อย แล้วจะอัพเดทหน้าเว็บของ birdnest ทีหลัง

ปล. ใครมีงานแนวๆนี้อยากให้พี่เค้าช่วยก็บอกได้นะครับ เดี๋ยวจะประสานงานให้

รับสมัครคนออกแบบโลโก Birdnest และ Jibjib

ความตั้งใจแรกที่ทำ birdnest แอบรู้สึกว่าก็ดีที่มันไม่ต้องมี icon อะไรให้เกะกะวุ่นวาย จะได้ไม่ต้องทำพวกโลโกหรือของอะไรตกแต่งยุ่งยาก

เมื่อสองอาทิตย์ก่อนผมได้รับอีเมลจาก TwitGoo ว่าถ้าทำให้โปรแกรมรองรับ TwitGoo ภายในเดือนเมษายน เค้าจะช่วยโปรโมทในเว็บเค้าให้ ต้องขอบคุณ @sugree ที่ช่วยทำให้จนสำเร็จพร้อมทั้งเพิ่ม upic.me ให้อีกที่ ผมเลยจัดการอัพเดทเข้า GAE เรียบร้อยแล้วแล้วจัดแจงอีเมล์ไปให้ TwitGoo

ใครที่ใช้ #jibjib beta เวอร์ชันใหม่ก็จะเห็นในหน้าตั้งค่าว่ามีหัวข้อ picture gateway เพิ่มขึ้นมาให้เลือกอีกหนึ่งหัวข้อ ข้อแตกต่างระหว่าง gateway แบบต่างๆ ก็คือจะเป็นการเลือกใช้ว่าจะใช้ twitpic, twitgoo หรือ upic.me แล้วก็เลือกว่าจะใช้ผ่าน birdnest รึเปล่า แต่ตอนนี้ปกติแล้วมันชี้ไปที่ nest.onedd.net ถ้าเกิดว่าที่นี่ล่ม ก็จะใช้เป็น nest.appspot.com แทนก็ได้

สองวันก่อน TwitGoo ส่งเมลมาขอรายละเอียดของโปรแกรมพร้อมกับ screenshot กับ logo ซึ่งผมยังไม่เคยคิดจะทำโลโกเลยเพราะฝีมือการออกแบบและวาดรูปผมมันอยู่ในขั้นผิดมนุษย์ เลยจะรับสมัครคนออกแบบโลโก 1 อัตราครับ ไม่มีค่าตอบแทนแต่ชื่อผู้ออกแบบโลโกจะถูกใส่ไว้ในหน้า Homepage ของโครงการนี้ที่ Google Code, nest.appspot.com และที่ nest.onedd.net ซึ่งยอดผู้เข้าชมรวมประมาณ 0 view/เดือน lol

เปิดรับทุกความคิดเห็น รูปภาพ และคำแนะนำครับ

update: @sugree อยากได้คนออกแบบ jibjib ด้วย #

__ได้โลโกแล้ว ลองดูที่ entry นี้

Come back to GAE

We moved out and now we move in. Birdnest is now hosted by Google App Engine again.

New Birdnest Features: Callback and username stripout in Replies timeline

Today announcement for #birdnest, 2 new features roll out, callback parameter support and stripping out the username at the front of tweet.

Callback parameter

Requested by @iake right after #barcampbangkok2.

When supply Twitter API with a parameter called "callback", Twitter sends back the JSON result enclosed in a function you specified with callback parameter. It's useful for creating javascript widget but #birdnest cannot handle these result and doesn't filter the unnecessary information out. The new #birdnest can recognize this callback function and can filter the unwanted data out.

Stripping out the username at the front of tweet

Request by @bact.

Why put @username in front of every reply tweets in reply timeline especially those who have a very long name. Let #birdnest strips it out for you. Don't worry #birdnest doesn't touch your name when it is on you friends timeline or public timeline.

JSON-Only Features

These feature are available only on JSON and I don't think there are many XML format user. If you are, please tell me. I'll try to make it for you. What? Can't wait? You can do it yourself and send the patch to the project homepage.

Wanna try?

Just point your Twitter gateway to http://nest2.onedd.net/. Notice the gateway name, it's nest2.onedd.net, not nest.onedd.net. Because I want these features to be tested by all of you first.

As always, all suggestions and bug reports are welcome at the project Google Code page.

Happy Tweeting

Barcamp Bangkok 2

1 สัปดาห์ผ่านไปหลังจากงาน Barcamp Bangkok 2

วันเสาร์ผมไม่ว่างช่วงบ่าย แต่ก็ยังไม่วายไปร่วมแจมในตอนเช้ากับเย็น

เจอหน้าใหม่ก็มากมาย เจอหน้าเก่าๆมากมายเช่นเดิม

ตอนเดินเข้าไปตอนแรก ยังไม่เปิดให้ลงทะเบียน พี่เก่งก็เดินมาพร้อมกับคุณ Gen Kanai จาก Mozilla ก็เลยเดินเอาโปสเตอร์ไปช่วยติด ทำไปทำมาก็เห็นสิ่งที่ยากยิ่งที่จะเห็นในบ้านเรา ทุกคนพร้อมที่จะกระโดดเข้าไปช่วยจัดงาน โดยไม่ต้องมีคนบอก คนที่มาใหม่ก็กระโดดเข้าไปช่วยคนเก่า

หลังจากนั้นก็ไปช่วยรับลงทะเบียนแถว walk-in อ.ยรรยงเป็นคนแรกของแถว

พี่มุก พี่ด็อก พี่จิว มาช่วยลงทะเบียน

นั่งเล่น Rubik อยู่ซักพัก ก็ต้องไปข้างนอก

กลับมาอีกที คือเวลาของ session ก่อนสุดท้าย เข้า l33t t-shirts

แล้วก็เข้า session ในตำนาน

ปิดท้ายวันด้วยปาร์ตี้ ขอขอบคุณ Mozilla ที่ทำให้ได้เห็นสิ่งที่ไม่เคยเห็น และคิดว่าคงจะไม่ได้เห็นอีกแล้ว


วันที่สองตื่นมาตอนเช้าด้วยอาการมึนๆนิดหน่อย นั่งคุยกับท่านพ่อท่านแม่ แล้วออกมาตอนสิบโมง แน่นอนว่าสาย

มาเขียน session ไป 1 อันคือ Birdnest พร้อมเขียน session "Teach me rubik please" ขอเป็นคนเรียนนะ ไม่ใช่คนสอน

แล้วก็เดินๆนั่งๆอยู่แถวนั้น สังเกตว่า คนน้อยกว่าเมื่อวานอย่างเห็นได้ชัด

งานเริ่ม เข้าฟัง

  • MySQL Tuning

  • Git

  • Birdnest แน่นอนล่ะ ว่าต้องเข้า

เดินออกมา เจอ Kirit ที่ออกมาจากห้อง Django + ASP.NET โดนแซวว่า พลาด Session ASP.NET ได้ไง - -"

  • session ลับ Free Culture โดย อ.โป้ง เป็น speaker ที่ผมชอบสไตล์การบรรยายมากที่สุดเลยแฮะ intonation สุดยิด

  • Innovation & Life at Google ฟังไม่ทัน พูดเร็วแมกซ์

  • กินข้าว แบบชิวๆ โต๊ะเดียวกับคุณ kowito คุยกันโคตรมัน

  • ขึ้นมาฟัง แชร์ร้านอาหารอร่อย รู้สึกว่าเวลามันน้อยไปหน่อยแฮะ เอ่อ ใครยังเก็บรายชื่อไว้กรุณานำมาเผยแพร่ด้วยครับ (หลังจากนี้จะเริ่มมั่วๆ จำไม่ได้ว่าเข้าอันไหนก่อนหลัง)

  • Cloud computing discussion โดย Luke และ Sugree

  • RESTful Web

  • Bittorrent ของ อ.ยรรยง
  • ตบท้ายด้วย Rubik ขอบคุณน้องที่มาสอนเล่นมากมาย (รู้สึกว่าจะมากับคุณ kowito) น้องเก่งระดับบร๊ะเจ้าเลยทีเดียว

หลังจากนั้นก็เดินไปกินข้าวกันที่สามย่านใหม่ พร้อมๆกับการดูบอลคู่เชลซีกับสเปอร์

ปิดท้ายด้วยความเจ็บแสบเนื่องจากความขี้เกียจ ก็เลยไปรอรถอยู่ป้ายรถเมล์สามย่าน รออยู่สี่สิบนาที แถมมาที 3 คัน (ปกติถ้ากลับรถไฟฟ้า 40 นาทีก็ถึงบ้านละ)

สุดท้าย ขอบคุณสปอนเซอร์ ผู้ประสานงานและผู้ร่วมงานทุกท่านที่ทำให้เกิดงานดีๆแบบนี้

หมดเวลาสวัสดี

Birdnest: twitter proxy

Below is the slide I used for the birdnest session at barcamp bangkok 2.

Enjoy.

Birdnest: twitter proxy
View SlideShare presentation or Upload your own. (tags: birdnest proxy)

The new nest has been completed

Dear all mobile twitter-ers, the construction of the new nest has been completed. After sweats and tears, we've set up a new gateway for birdnest at http://nest.onedd.net. I hope all 50x error we've encountered before now have gone. Please update your gateway url to this new nest.

But this new gateway comes at the cost of latency. Since this new birdnest is not hosted by Google App Engine anymore, there might be little drop in speed. However, you can still choose the old gateway as your desire. The app engine version is available but there's no service for their anymore. Moreover, I've added more variations for some methods, namely friends timeline and direct message related.

Last but not least, @sugree told me he might releases a new jibjib with this new gateway url soon. Please keep an eye on his site.

Happy tweeting.

porting birdnest

When I worked on Birdnest last week, I realized the simplicity and how powerful framework Google App Engine provided. Google provided framework makes my job in implementation the birdnest for AppEngine really easily. As you have seen, I implemented the working prototype of Birdnest within 3-4 hours after studied the web framework. With git and Google Code, the project went to usable state within 2 days.

Nevertheless, Birdnest is not responsive and reliable as it should be. It often returns error with 304 status code which mean Gateway timeout for some users. After some investigate, @sugree and I implied this happen because App Engine limits the outgoing urlfetch, HTTP related module we've used to call the Twitter API, request timeout to 5 seconds and Twitter servers are not responsive enough to reply within that duration. This causes Birdnest to be terminated and throw out 504 error to the clients.

Some of you might noticed the discussion between @sugree and I over twitter, we're now setting up Birdnest somewhere outside the Google App Engine to solve the above problem. Of course, to minimize porting time, web.py is chosen to be target framework because of its similarity to Google webapp framework. Anyway, we have to change urlfetch to httplib which is more complex and a bit harder to use. Moreover, web.py doesn't provide some functionality we've rely on App Engine. However, this is still considered easier than using php or any other language. Thanks to battery included.

The contruction of this new nest is planned to be completed and ready to use within Monday and the new gateway url will be announced thereafter.

Happy tweeting