Copy of: „How I Interpret Jeff Atwood’s: How to stop at sucking and be awesome.”

This is a copy of Chris Schmitts post on his blog: oakcitylabs.com, which doesn’t exist anymore. This post is possible thanks to pocket. Which made the copy and saved the text. 

 

I recently stumbled across this video in a truly serendipitous moment.  I must have missed the original Coding Horror blog post (linked below in “External Links”) when it came out a couple of months ago.  But I’m very glad I did and found the video instead.  Jeff gives a great presentation and presents the material in a very engaging way.  I found the 26 minute talk full of insights, examples and good advice.

In the speech Jeff boils this thesis down to three points:

  1. Embrace the Suck
  2. Do It in Public
  3. Pick Stuff That Matters

I think Jeff’s presentation is fantastic and he has really hit on some great points.  Personally I have fallen victim to all three points.

  1. I have been afraid to tell people what I am going to do for the fear that they will think it sucks.
  2. I have worked for months on projects in seclusion following the “if you build it they will come ” montra only to release them to no one.
  3. Almost all of my “great ideas” have suffered from a lack of insight into what people actually care about.

With this in mind, here is how I interrupt the 3 topics that Jeff has raised.

Embracing The Suck

The lesson is simple, no one is perfect.  If you are good at building things then you probably messed up the message.  If you are great at messaging then you probably messed up the code.  It is impossible to be great at everything.  Accept the fact that you have missed something and focus on what you are good at.   Embrace your weakness and play to your strengths.

Launching a new idea or product is hard work.   It is easy to criticize and hard to create.  The internet is full of people just wanting to hate on you.  All of this leads up to one hard truth.  If you can’t accept criticism then you are in for a very long road.  And if you can’t tune out the trolls, you dreams will be crushed.  But, if you have a vision and you can communicate it effectively then it won’t matter if the colors are off or you have misspelled something in your copy.  People will see through all the warts to find the value in your product or service.

Tip:  Use the way back machine to check out what your favorite sites looked like when they first launched.   Some of my favorites include Craigslist and Digg.

Do It in Public

Find your audience.   Every single topic you could ever want to talk about is being discussed somewhere on the web.  Before you write a single line of code, go out and find those people.   Join their conversations and don’t be afraid to share your ideas with them.  If you are unsure on where to go, start a twitter account and ramble.  Post everything that comes to your mind on the subject.  Eventually someone out there is going to find you and think you are amazing.

Second, build your base.  By communicating your thoughts and ideas with your audience you are building customer advocates.  Seek out the people who are willing to give you feedback and invest in those relationships.   Listen to them!   People who care about your product will help spread the word.   Imagine having 50 people clamoring for your product before you release your first beta.  Ideas are easy, execution is hard.

Pick Stuff That Matters

Be relevant!  Find their biggest pain point and focus on that one thing.  Don’t get caught up in the 50 things you can do in a year from now.  Don’t get caught up in finding a way to finally introduce that amazing cool new tech you just read about.  At first, keep it simple and only give them what they need.  Demonstrate that you can provide the solution to their problems.   The more often you ship solutions the more willing people are to forgive your mistakes.

Finally.. remember this, building for you is a hobby, building for them is a business.

 

Facebook , jak tworzyć konkursy?

SAMSUNG

Konkursy na Facebooku są popularną formą promocji. Możemy grać o wyjazd na wakacje, zestaw kosmetyków, karnety do kina itd. Krótko mówiąc wszystko. Marka zyskuje, uczestnicy się dobrze bawią, wszyscy zadowoleni. Niestety nie. Każdy kto tworzył takie aplikacje wie, że w takich konkursach uczestniczą „zawodowi” gracze, którzy często wygrane sprzedają, ogłaszając się na forach czy allegro. Często jawnie oszukują jeśli niestety mechanika aplikacji na to pozwala. Dawno temu współtworząc jedną z pierwszych aplikacji konkursowych dowiedziałem się tego w trochę bolesny sposób. Wyniki opierały się na czymś na czym nie powinny, na czasie i zdobytych punktach w mechanizmie po stronie klienta.

Nigdy nie wolno robić gry/quizu gdzie zdobywa się punkty grając po stronie klienta w grze wykonanej we Flashu lub HTMLu, jeśli stan gry w danym momencie nie będzie odwzorowany po stronie serwera i nie będzie tam pilnowany. Nawet jeśli taki stan będzie odwzorowany, nie wolno polegać, w kwestii wyłaniania zwycięzców na tych punktach i należy posiadać dodatkowy sposób. Czemu? Ponieważ nie jest to większy problem stworzyć bota, który będzie grał i wygrywał. Oczywiście jest jeszcze kwestia czy się komuś opłaci tworzyć bota. Gra na czas, o punkty jest dobra, wprowadza konkurencję, ale jak wyłonić zwycięzcę i nie zabezpieczyć się przed oszustami? Metod jest wiele, poniżej tylko kilka z nich:

  • gramy na punkty, co poziom jest wyświetlane jedno z pośród wielu pytań w formie otwartej gdzie uczestnik musi odpowiedzieć na pytanie.
  • po zakończonej grze, zadajemy pytanie otwarte
  • gra polega na kliknięciu w guzik, zaś o odpowiedniej porze każdy kto trafi na tą porę dnia otrzymuje punkty
  • wybieramy n-tą osobę od godziny X , która grała w nasza grę

Możliwych kombinacji i sposobów jest wiele, najważniejsze jest by nikt nie mógł napisać bota i wygrać, czy to otrzymując maksymalną ilość punktów czy to uzyskując czas 0.5 sekundy. Jeśli zmusisz człowieka by jego program nie mógł działać lub by nie opłacało się go tworzyć to też będzie rozwiązaniem.

Miałem niedawno szybkie zlecenie („ma być na jutro”) gdzie musiałem stworzyć właśnie konkurs z wygraną przyznawaną za najwięcej punktów zdobytych w jak najkrótszym czasie.
Zasady były proste:

  • jest pula 100 pytań, gdzie losujemy 10
  • każde z pytań ma kilka odpowiedzi
  • uczestnik musi odpowiedzieć w jak najkrótszym czasie

Jak sprawić by nie można było użyć JS, wyrażeń regularnych i prostej listy pytań i odpowiedzi? A tak:

  • każde pytanie i odpowiedź jest w formie obrazka, każde wstawione w formie data uri
  • do każdego takiego obrazka dodajemy losowej długości pasek o losowym tle, taki pasek zwyczajnie ukrywamy
  • każde id pytania jest losowym ciągiem znaków, kolejność jest zapamiętana na serwerze
  • jako dodatkowe zabezpieczenie, każdy kto zdobędzie maksimum punktów otrzymuje pytanie opisowe, tak na wszelki wypadek

Nie zostały ustawione żadne minimalne limity czasu odpowiedzi i do tej pory nikt nie udzielił odpowiedzi w czasie mniejszym niż 25 ( tępe klikanie w pierwszą odpowiedz i dalej to ok. 8 sekund, ja miałem czas 28 sekund znając odpowiedzi więc jest to realne ). Pytanie otwarte spełnia swoją rolę dobrze, choć ciekawi mnie jak prezentowały by się wyniki gdyby go nie było. Niestety nie zamierzam sprawdzać tego. Mając sposób by oszuści nie mogli stworzyć łatwo takiego bota ( da się, niestety wszystko się da) , który by odpowiadał za nich, nadal pozostawiłem pytanie otwarte. Lepiej mieć pewność.

PS.

Pisząc ten wpis wpadłem na pomysł jak to jeszcze bardziej utrudnić. Można by to osiągnąć dodając szum do obrazka w postaci koloru posiadającego np. czerwony kanał większy/mniejszy o 1 , jako tło lub jako grupy pikseli na obrzeżach lub w pewnych obszarach obrazu. Powodowało by to zmiany ciągu data uri , można też próbować zmniejszać losowo w pewnym przedziale jakość obrazu.

Szybka ściąga z regulaminu FB

SAMSUNG

Ostatnio Facebook wprowadzał pewne zmiany. Siadłem, więc w ostatni weekend nad regulaminem i API. Poza faktem, że muszę przetestować tworzenie aplikacji na mobilne przeglądarki wraz z punktami i osiągnięciami, no i w końcu trzeba odpalić coś z Open Graph. Postanowiłem zrobić sobie małą ściągę z regulaminu, co mogę i czego nie.

Szybki wyciąg z regulaminu:

  •  nie zbieramy loginów i haseł, jest to chyba oczywiste
  •  nie wolno obchodzić ograniczeń na dane usługi nałożone przez FB, czyli jeśli ktoś ma post niewidoczny dla wszystkich to go nie wolno publikować go publicznie lub umożliwiać coś czego API lub sam FB nie pozwala ( np. sprawa menadżera zaproszeń z aplikacji )
  • jeśli przekroczymy: 5mln użytkowników na miesiąc, 100mln wywołań API dziennie, 50mln wyświetleń dziennie to musimy się skontaktować z FB
  • jeśli masz zaimplementowane logowanie przez FB musisz umieścić button wyloguj, który wyloguje z twojej apki oraz FB
  • nie wolno nam używać nazw i grafik, które używa FB
  • nie wolno mieć w aplikacji odnośników do innych serwisów społecznościowych np. G+, czyli np. jeśli logujesz się przez FB to nie możesz mieć tam odnośników/reklam do np. G+
  • nie wolno eksportować danych do innych serwisów społecznościowych
  • jeśli robisz aplikację na kanwie, nie może ona od razu przekierowywać poza FB
  • musisz zamieścić politykę prywatności, często mi o tym przypominają, musi to być i w twojej aplikacji i w ustawieniach aplikacji FB,
  • najlepiej wypełnij ile możesz w panelu aplikacji FB
  • nie możesz handlować danymi z FB
  • najlepiej, aby FBUID był tłumaczony na twoje wewnętrzne ID użytkownika
  • masz zapewnić mechanizm usuwania danych, jeśli użytkownik usunie aplikację ( jest w panelu apki )
  • jeśli przetrzymujesz dane użytkowników, aktualizuj je za pomocą Realtime Updates
  • możesz zamieszczać reklamy jedynie z listy dostawców, których autoryzuje FB
  • jeśli robisz promocję, nie możesz wykorzystywać głównych funkcji FB ( share, like itd. ) do osiągania wygranej , czyli: chcesz zrobić głosowanie ? nie używaj guzika Like tylko zrób własny mechanizm głosowania itd.
  • treści jakie są publikowane z twojej aplikacji mają być świadomie publikowane lub stworzone przez użytkownika w trakcie korzystania z twojej aplikacji lub o publikacji treści jest powiadomiony użytkownik i jest to jego świadomy wybór , czyli: użytkownik tworzy obrazek w aplikacji i wie że zostanie opublikowany ( pytasz się o zgodę) to możesz publikować, publikacja na wall albo dokonywana jest przez użytkownika ( sam podaje treść oraz klika publikuj ) albo użytkownik wyraża świadomie zgodę na publikację treści ( może się nie zgodzić to nie publikujesz )

Lista nie jest zakończona, nie ma tutaj nc o tworzeniu reklam FB czy płatnościach.

 

Będę ogrodnikiem!

9a4bb464d7b411e18ed022000a1e87a9_7

No dobra, może nie od razu. Przyszedł mi do głowy po prostu kolejny dziwny pomysł: „a nie mogę uprawiać pomidorów na oknie?”. Można i to swobodnie. Jak wymyśliłem, tak zrobiłem.

Okazuje się, że trzeba spełnić takie wymogi:

  • duża ilość słońca
  • temperatura powyżej 25°C
  • odpowiednie nawadnianie
  • staranna pielęgnacja

Problemów z temperaturą i wodą nie ma. O pielęgnacji przeczytałem w sieci. Niestety problem miałem ze słońcem. Jedyne okno na mieszkaniu, niestety wychodzi na zachód, więc nie ma światła tak bardzo długo. Nie zraziło mnie to jednak, spróbujemy mimo wszystko.

Zabawę zacząłem od szukania odpowiedniej skrzynki. Po wizycie w kilku sklepach, „donicę” odnalazłem w Ikei.  Nie kupiłem doniczki, a pudełko. Jeśli coś się nazywa doniczka na kwiatki to jest to droższe od pudełka na byle co. Kupiłem 22l pudełko, do tego jeszcze wziąłem mniejsze. Mam w kuchni mięte i bazylie świeże, więc co mi tam, pakujemy co się da i hodujemy. Nasiona wyciągnąłem z pomidora. Zasiałem pod przykryciem. Po kilkunastu dniach pikowałem. Rosły dość szybko, więc nadszedł czas na paliki. Najtańsze co znalazłem to były paliki bambusa. Obwiązałem i zostawiłem by rosły. W między czasie jak rosły, mięta i bazylia w drugiej doniczce stworzyły prawdziwy las. Po długim oczekiwaniu dostałem to:

Instagram Photo

Pierwszy dojrzały pomidor! Długo to trwało z braku słońca, ale się doczekałem.