I adore the way my Hasselblad renders photos. It's such an amazing system that I have been wanting to come back to lately. Need to buy a new diopter through, its tough shooting without one and mine broke a year or two ago.

seen from United States

seen from Singapore

seen from Malaysia
seen from China

seen from Hong Kong SAR China
seen from Sri Lanka
seen from China

seen from Malaysia

seen from United States

seen from United Kingdom

seen from Malaysia
seen from Japan
seen from United Kingdom
seen from Sri Lanka
seen from Ireland
seen from Japan

seen from United Kingdom
seen from United States

seen from United States

seen from China
I adore the way my Hasselblad renders photos. It's such an amazing system that I have been wanting to come back to lately. Need to buy a new diopter through, its tough shooting without one and mine broke a year or two ago.
COTURN CT-01
Today "he" arrived, the COTURN CT-01 turntable. After unpacking, the configuration and installation with the portable speakers from Revox (A100 & B100) took place. A first test listening was done with Dark Side Of The Moon.
The guys from COTURN did a good job. Well done.
Easy Listening.
[News] THE COTURN CT-01(ドイツ製) 時代を超えたデザインに、最新の機能と高級パーツを搭載した、新しいポータブルターンテーブル。 レコードファンのためにレコードファンがデザインしたCoturn CT-01は、レコード発掘の旅に欠かせない存在でありながら、自宅のレコードプレーヤーとしても使える優れたポータブルターンテーブルです。 https://coturn.de THE COTURN CT-01 (made in Germany) A new portable turntable in a timeless design, with up to date features and high-class parts. Designed by vinyl fans for vinyl fans - the Coturn CT-01 introduces an outstanding portable turntable, which will be essential for your next digging trip but it will also work just as fine as your record player of choice at home. https://coturn.de #Coturn #CT01 #PortableTurntable #Turntable #ポータブルターンテーブル #ターンテーブル (Turntable Troopers ENT.) https://www.instagram.com/p/CfU1YXxviM4/?igshid=NGJjMDIxMWI=
coturn: notes
udp_server_input_handler - this is the entry point to handling network events: here we receive udp packet, and pass it (the message it contains) to handle_udp_packet
handle_udp_packet tries to acquire child socket; if not exists, it creates it, attaches it to the message, and passes the latter to open_client_connection_session; if exists, it again attaches it to the message, and passes the message to client_input_handler
open_client_connection_session creates new session, set session's client_socket field, registers socket's read handler, sets socket's session, and passes the message to client_input_handler
client_input_handler basically passes the message to read_client_connection
read_client_connection for channel messages, it just passes them to the peer, for command messages, it passes them to handle_turn_command, and possibly replies to the message
handle_turn_command - there are two types of messages: requests and indication messages; here we're basically passing handling of each type of message to corresponding function, if authentication and other security concerns are satisfied
check_stun_auth the authentication is handled by a separate (auth) thread; so, relay thread sends data to auth thread, auth thread authenticates the user (particularly, validates the timestamp), and sends the reply back which gets passed to resume_processing_after_username_check function
Generally, the workflow is as follows:
client sends BINDING packet, the session gets created
client sends ALLOCATE packet, server checks if user is authenticated, as he's not it postpones the reply (401)
client sends ALLOCATE packet again, gets authenticated, server allocates relay address
client sends BINDING/REFRESH packages occasionally (if idle)