Craft and publish engaging content in an app built for creators.
NEW
Publish anywhere
Post on LinkedIn, Threads, & Mastodon at the same time, in one click.
Make it punchier 👊
Typefully
@typefully
We're launching a Command Bar today with great commands and features.
AI ideas and rewrites
Get suggestions, tweet ideas, and rewrites powered by AI.
Turn your tweets & threads into a social blog
Give your content new life with our beautiful, sharable pages. Make it go viral on other platforms too.
+14
Followers
Powerful analytics to grow faster
Easily track your engagement analytics to improve your content and grow faster.
Build in public
Share a recent learning with your followers.
Create engagement
Pose a thought-provoking question.
Never run out of ideas
Get prompts and ideas whenever you write - with examples of popular tweets.
@aaditsh
I think this thread hook could be improved.
@frankdilo
On it 🔥
Share drafts & leave comments
Write with your teammates and get feedback with comments.
NEW
Easlo
@heyeaslo
Reply with "Notion" to get early access to my new template.
Jaga
@kandros5591
Notion 🙏
DM Sent
Create giveaways with Auto-DMs
Send DMs automatically based on engagement with your tweets.
And much more:
Auto-Split Text in Posts
Thread Finisher
Tweet Numbering
Pin Drafts
Connect Multiple Accounts
Automatic Backups
Dark Mode
Keyboard Shortcuts
Creators love Typefully
170,000+ creators and teams chose Typefully to curate their Twitter presence.
Marc Köhlbrugge@marckohlbrugge
Tweeting more with @typefully these days.
🙈 Distraction-free
✍️ Write-only Twitter
🧵 Effortless threads
📈 Actionable metrics
I recommend giving it a shot.
Jurre Houtkamp@jurrehoutkamp
Typefully is fantastic and way too cheap for what you get.
We’ve tried many alternatives at @framer but nothing beats it. If you’re still tweeting from Twitter you’re wasting time.
DHH@dhh
This is my new go-to writing environment for Twitter threads.
They've built something wonderfully simple and distraction free with Typefully 😍
Santiago@svpino
For 24 months, I tried almost a dozen Twitter scheduling tools.
Then I found @typefully, and I've been using it for seven months straight.
When it comes down to the experience of scheduling and long-form content writing, Typefully is in a league of its own.
Luca Rossi ꩜@lucaronin
After trying literally all the major Twitter scheduling tools, I settled with @typefully.
Killer feature to me is the native image editor — unique and super useful 🙏
Visual Theory@visualtheory_
Really impressed by the way @typefully has simplified my Twitter writing + scheduling/publishing experience.
Beautiful user experience.
0 friction.
Simplicity is the ultimate sophistication.
Queue your content in seconds
Write, schedule and boost your tweets - with no need for extra apps.
Schedule with one click
Queue your post with a single click - or pick a time manually.
Pick the perfect time
Time each post to perfection with Typefully's performance analytics.
Boost your content
Retweet and plug your posts for automated engagement.
Start creating a content queue.
Write once, publish everywhere
We natively support multiple platforms, so that you can expand your reach easily.
Check the analytics that matter
Build your audience with insights that make sense.
Writing prompts & personalized post ideas
Break through writer's block with great ideas and suggestions.
Never run out of ideas
Enjoy daily prompts and ideas to inspire your writing.
Use AI for personalized suggestions
Get inspiration from ideas based on your own past tweets.
Flick through topics
Or skim through curated collections of trending tweets for each topic.
Write, edit, and track tweets together
Write and publish with your teammates and friends.
Share your drafts
Brainstorm and bounce ideas with your teammates.
NEW
@aaditsh
I think this thread hook could be improved.
@frankdilo
On it 🔥
Add comments
Get feedback from coworkers before you hit publish.
Read, Write, Publish
Read, WriteRead
Control user access
Decide who can view, edit, or publish your drafts.
Jak niskim kosztem obsłużyć DUŻY ruch webowy? 🤔
Kilkaset tysięcy UNIQ dziennie za... 11zł/miesiąc.
Case-study serwisu sejm.stream
Wątek 🧵 ↓
W połowie stycznia 2024 zauważyłem podejrzanie dziwny skok ruchu na jednym z serwerów webowych w mojej firmie hostingowej.
Mam na myśli zwiększenie ruchu o jakieś 10 tysięcy razy 😱
Czyżby atak DDoS? Nie tym razem! 😏
Jeden z użytkowników uruchomił na Mikrusie (mikr.us) portal, który miał służyć łatwemu oglądaniu transmisji sejmowych z wielu kamer jednocześnie.
Właściciel nie przewidział jednak, z jak wielkim zainteresowaniem spotka się jego rozwiązanie.
Aplikacja wylądowała z płomieniem na głównej stronie Wykopu.
Zwiększony ruch był widoczny w statystykach, ale niespecjalnie przeszkadzało to komukolwiek.
Spoko... Wykop odpieraliśmy już wiele razy na stronach userów Mikrusa. Można liczyć na ruch rzędu jakichś 20-40 tysięcy wejść na dzień.
Tylko info o stronie podało jeszcze Radio RMF FM.
Ruch wzrastał. Autor strony wrzucił ją dodatkowo na Linkedin, gdzie zyskała 920+ lajków.
Temat podchwyciła redakcja GeekWeek i portal został wspomniany na głównej stronie Interii. Zaczynało być gorąco, a działo się to w zaledwie kilka godzin od odpalenia projektu.
Gwoździem do trumny było podanie linka przez najbardziej opiniotwórcze medium w naszym kraju... 😉😃
😱 Make_Life_harder wrzuciło URL-a na swoje storiski na IG 😱
🔥 Serwery zaczęły płonąć 🔥
🧉 To ten moment, gdy poszedłem po dolewkę Yerba Mate.
Aplikacja "sejm.stream" napisana jest w Pythonie, a konkretniej mówiąc we frameworku Django. To, co widzisz na domenie teraz, to już wersja zoptymalizowana.
Całość została zdeployowana na Mikrusa 3.0:
2GB RAM + 25GB dysku za 130zł/rok (~11zł/msc)
Użytkownicy Mikrusa mogą przepuszczać cały ruch bezpośrednio do swojego serwera albo mogą skorzystać z naszej 'tarczy' zwanej Cytrusem.
Użytkownik, spodziewając się zwiększonego ruchu, zawczasu aktywował tarczę 🛡️
Tajemnicza 'tarcza' to zwykły, lekko stuningowany Nginx odpalony na dość mocnej maszynie posiadającej dziesiątki razy więcej RAM-u niż VPS użytkownika.
Odfiltrowuje on skanery, boty z Chin, dziwne połączenia z automatów oraz kolejkuje połączenia do backendu.
Początkowo, każdy odwiedzający 'Sejmflix' generował kilka requestów, co przemnożone przez liczbę odwiedzających dawało kilka milionów zapytań, które musiały zostać dostarczone do pierwotnego backendu.
Obsługa ruchu z sejmflixa konsumowała około 12 GB RAM.
Wraz z adminami mamy gotowe scenariusze na obsłużenie takich akcji.
Pierwszy krok to analiza requestów i wybranie tego, co możemy zaklasyfikować jako statyczny content.
Nie ma sensu statycznych plików podawać wprost z backendu, więc skorzystaliśmy z cache na Nginx.
Ustawienie cache składało się z dwóch kroków.
Pierwszym było ustawienie strefy cache dla Nginx.
Krok drugi to oczywiście przepuszczenie ruchu przez utworzoną strefę z uwzględnieniem odpowiednich nagłówków cachujących.
Zwróć uwagę na cachowanie nie tylko poprawnych odpowiedzi, ale także errorów 404.
Może dziwić Cię cache ustawiony na 5 sekund, bo dlaczego nie 5 minut, albo i na godzinę?!
Autor serwisu stale rozbudowywał go i modyfikował kod. Na miejscu dewelopera nie chciałbym, aby moje zmiany były widoczne na produkcji z opóźnieniem np. 60 minut.
Taka technika microcachingu jest PRAWIE niezauważalna dla właściciela strony (ideałem byłoby ustawienie cache np. na 1s), ale sprawia to, że backend otrzymuje uderzenie tylko raz na 5 sekund, co drastycznie odciąża aplikację w Django.
Kolejnym krokiem było dorzucenie zapasowego upstreama dla serwisu. Zawierał tylko informację 'proszę czekać...' i przekierowanie na główną stronę po kilku sekundach. Pojawiał się, gdy backend nie wyrabiał.
Doczytaj, czym jest keepalive w kontekście upstream!
Autor serwisu bardzo sprytnie zbudował stronę w taki sposób, aby pliki CSS i JS ładowane były z publicznych CDN-ów, co też przyczyniło się do zmniejszenia obciążenia. Na serwerze zostały tylko dwa elementy, które niepotrzebnie bombardowały backend.
Oba poszły do cache 😎
Ta garstka poprawek zmniejszyła znacząco liczbę requestów do backendu.
Kolejne kroki optymalizujące wymagały nawiązania współpracy z autorem serwisu.
Dolewka Yerby, szybki telefon do Mateusza Górskiego (autora) i Sejmflix schowany został za usługą Cloudflare.
Aby Cloudflare działał optymalnie, warto też powiedzieć mu, co i na jak długo może cachować. Tutaj pomogło dodanie nagłówków cachujących.
Jako że na stronie zostały już tylko pliki SVG i ICO, to one poszły do mocnego, 4-godzinnego cache.
Zaprezentowane tutaj rozwiązania, to nie jest jakiś rocket science, a jedynie podstawy konfiguracji serwera webowego.
Wykorzystana 'tarcza' (Cytrus) ułatwiła życie autorowi, bo kwestia optymalizacji została przeniesiona na adminów Mikrusa. Nie było to niezbędne rozwiązanie.
Te same rozwiązania dałoby się zastosować na pojedynczym serwerze z około 4-8GB pamięci RAM.
Dodatkowo warto byłoby na przyszłość przemyśleć renderowanie tego, co podaje Django do statycznych plików, tak aby dynamiczny backend nie był wcale potrzebny.