Miliard złotych – tyle są warte bitcoiny

Na skutek bańki spekulacyjnej wartość wszystkich bitcoinów sięgnęła już miliarda złotych.

Disclaimer: kurs zmienia się z każdą chwilą i w momencie gdy czytasz ten wpis podane kwoty mogą być już nieaktualne.

Bitcoinów na świecie jest niecałe 11 milionów. Według obecnego kursu 1 bitcoin jest wart 93 złote. Continue reading

Posted in bitcoin, lifestyle, polskie, technologia | 1 Comment

Sugestie technologiczne Qertoipa: Bitcoin

in cryptography we trustW nowym cyklu “Sugestie technologiczne Qertoipa” będę podsuwał Wam tematy i technologie, którymi IMHO naprawdę powinniście się zainteresować. Mam na myśli rzeczy przełomowe, o spodziewanym dużym wpływie na przyszłość technologii i nie tylko.

Pierwsza rekomendacja to kryptowaluta Bitcoin. Continue reading

Posted in bitcoin, lifestyle, polskie, technologia | 1 Comment

Odliczanie do software’owej katastrofy

Miliony klientów w UK mają od kilku dni zablokowane środki bankowe z winy Royal Bank of Scotland:

http://www.theregister.co.uk/2012/06/21/rbs_natwest_tech_glitch_banking_freeze

Intruz uzyskał dostęp do wewnętrznej sieci Citibanku:

http://niebezpiecznik.pl/post/intruz-uzyskal-dostep-do-wewnetrznej-sieci-citibanku/

Wcześniej, z Citi ukradziono 2,7 miliona USD i dane 200 000 osób poprzez manipulację URL-em:

http://niebezpiecznik.pl/post/z-citi-ukradziono-27-miliona-usd/

Wykradziono 1,5 miliona kart kredytowych z Global Payments: http://niebezpiecznik.pl/post/wykradzino-26-000-kart-kredytowych/

W ciągu najbliższych 15 lat dojdzie do katastrofy, w której zginą tysiące ludzi. Powodem będzie błąd w kodzie napisanym przez zmęczonego studenta pod presją deadline’u. Rządy wykorzystają to, by uregulować zawód programisty. Wyobrażacie sobie pisanie kodu zgodnie z widzimisiem urzędasów? Zejdę raczej do podziemia i będę robił zgodnie ze sztuką, za Bitcoiny.

Niniejszym chciałem okazać wielki środkowy palec nieprofesjonalnym programistom:

Posted in bitcoin, lifestyle, polskie, programowanie, rails, rant, ruby, technologia | 3 Comments

Jak stracić czas na TDD i nie dostarczyć na czas

Niekiedy można spotkać się z opinią, że TDD spowalnia wytwarzanie oprogramowania. Jeśli chciałbyś powtórzyć eksperyment i samodzielnie dowieść, że TDD się nie opłaca, poniżej zamieszczam gotową receptę:

  • pisz testy po napisaniu kodu produkcyjnego
  • nie rób żadnej wstępnej analizy problemu, przemyśleń ani odrobiny projektowania (przemiel 100% projektowania przez cykl TDD dzięki czemu będziesz miał okazję sto razy zmieniać design i testy)
  • samodzielnie odkrywaj jak efektywnie pisać przypadki testowe, dzięki czemu zajmie Ci to kilka lat (pod żadnym pozorem nie oglądaj screencastów i nie czytaj książek)
  • upewnij się, że testy ładują się co najmniej pół minuty zanim faktycznie zaczną testować (możesz to łatwo osiągnąć np. ładując cały framework i pracując na powolnym dysku HDD)
  • zadbaj, by każda funkcjonalność była testowana przez GUI (przez sterowanie przeglądarką lub oknem GUI na pulpicie)
  • zadbaj, by wszystkie testy były uzależnione od bazy danych
  • za każdym razem ręcznie poluj na plik testowy odpowiadający kodowi produkcyjnemu i vice versa
  • za każdym razem nawiguj pomiędzy pulpitami, oknami i zakładkami w poszukiwaniu skryptu startującego testy
  • im mniej klas tym lepiej, staraj się by każda klasa miała bogaty zestaw niezwiązanych odpowiedzialności (dzięki temu będziesz mógł spędzić nieograniczoną ilość czasu na pisaniu testów)
  • pisz piękne opisy kroków w Cucamber nawet jeśli klient ma w dupie czytanie Twojej specyfikacji funkcjonalnej (a zwłaszcza gdy w ogóle nie masz klienta)
Posted in polskie, programowanie, rails, rant, ruby, technologia | 2 Comments

Responsibility

After it was revealed he cheated on his wife, Arnold Schwarzenegger said:

“After leaving the governor’s office I told my wife about this event, which occurred over a decade ago. I understand and deserve the feelings of anger and disappointment among my friends and family. There are no excuses and I take full responsibility for the hurt I have caused. I have apologized to Maria, my children and my family. I am truly sorry.”

I really like that guy. Not for cheating on wife of course but for taking full responsibility and making no excuses. Personal responsibility is exactly what I expect from any leader and in fact any person. Taking full responsibility for all your actions and your fate is the only way to go.

And Bill Clinton is a pussy.

Posted in english, lifestyle | Leave a comment

Izolacja transakcji w aplikacjach Ruby on Rails

Na WRUG-u miałem przyjemność opowiedzieć o izolacji transakcji w ogóle oraz konkretnie w Railsach.

Zareklamowałem też dwa gemy mojej produkcji: transaction_isolation pozwala wygodnie manipulować poziomem izolacji transakcji. Gem jest dosłownie bezkonkurencyjny. Tzn. żadne inne dla ActiveRecorda nie istnieją.

Natomiast transaction_retry auto-ponawia transakcje, które zakończyły się błędem typu deadlock lub serialization error. Ten ma silną konkurencję w postaci starego deadlock_retry, ale nie pisałbym go gdyby nie miał być lepszy ;-)

Słowa kluczowe: serializable, repeatable read, read committed, read uncommitted, transaction isolation levels, deadlock found when trying to get lock, serialization error, ActiveRecord, gem.

Posted in polskie, programowanie, rails, ruby | Leave a comment

DataMapper 2 – nie mogę się doczekać

Jest późno w nocy i nie mam czasu uzasadniać – po prostu zaufaj mi i przeczytaj o DataMapper 2 na blogu Piotrka Solnicy: http://solnic.eu/2012/01/10/ruby-datamapper-status.html.

Posted in polskie, programowanie, rails, ruby, technologia | Leave a comment

Dekorator w Ruby

Dekorator przyjmuje w konstruktorze obiekt i dodaje do niego nowe zachowania. Przykładem dekoratora jest Presenter – klasa dodająca do obiektu możliwość zaprezentowania się, np. w postaci sformatowanego Stringa, XML-a czy JSON-a. Na wroc_lover.rb Piotr Szotkowski pokazał bardzo fajny sposób tworzenia dekoratorów z użyciem SimpleDelegator. Zysk polega na uniknięciu boilerplate kodu – wszystkie metody dostępne na wejściowym obiekcie stają się dostępne bezpośrednio w dekoratorze.

require 'delegate'

class Address
  # extend with your favourite persistence solution or:
  attr_accessor :street, :postcode, :city, :country

  def initialize args = {}
    args.each { |key, value| send "#{key}=", value }
  end
end

class PolishAddress < SimpleDelegator
  def initialize address
    super address
  end

  def formatted
    [street, "#{postcode} #{city}", country].join "\n"
  end
end

Czyli mamy i ładnie (SRP), i zwięźle (no boilerplate code). Jeśli natomiast potrzebujemy Presentera bazującego na więcej niż jednym obiekcie, z pomocą przyjdzie mixin Forwardable, również z stdlib:

require 'forwardable'

class PolishEnvelopeAddress
  extend Forwardable

  def initialize args
    @person  = args.fetch :person,  Person.new
    @address = args.fetch :address, Address.new
  end

  def_delegators :@person,  :given_names, :surname
  def_delegators :@address, :street, :postcode, :city, :country

  def formatted
    ["Sz.P. #{given_names} #{surname}",
      street, "#{postcode} #{city}", country].join "\n"
  end
end
Posted in polskie, programowanie, rails, ruby, technologia | 9 Comments

Do zobaczenia na wroc_love.rb!

Moi wierni czytelnicy (łudzę się, że są tacy ;)) – do zobaczenia na wroc_love.rb!

Patrząc po prezentacjach, konferencja zapowiada się na taki Ruby OO summit i świetnie wpisuje się w ostatnie trendy w railsowym świecie. Żyliśmy The Rails Way przez wiele lat i dojrzeliśmy do następnego etapu ewolucji – The Right Way.

Cóż to jest The Right Way? To stosowanie najlepszych praktyk, nawet wtedy gdy  kłóci się to z The Rails Way / The Golden Path ;-). Jakież to praktyki? Ano na przykład:

  • Single-Responsibility-Principle na czele z oddzieleniem logiki biznesowej od persystencji (asta la vista fat models)
  • Izolacja od frameworków (Railsy nie są Twoją aplikacją)
  • Architektura sterowana przypadkami użycia (przykład)
  • Security-by-default
  • …itd

See U!

Posted in lifestyle, polskie, programowanie, rails, ruby, technologia | 2 Comments

Uncle Bob: decouple your app from Rails

Robert C. Martin in his famous keynote “Architecture: The Lost Years” says we, the proud Rails programmers, are doing it wrong. Uncle Bobs urges us to decouple our applications from frameworks. And Rails is no exception. According to Uncle Bob, we should build upon frameworks, but isolate from them.

I mean, really? Why should I? Is it even possible?

The expected benefits are profound.

But at what cost? How much overhead and boilerplate code do we need to achieve that? How can I decouple from ActiveRecord? I love the convenience and white magic ActiveRecord and Rails stack is giving to me!

I’m in the process of developing an experimental application which tries to answer those questions. The initial findings are very encouraging!

Posted in english, programowanie, rails, ruby, science, technologia | Leave a comment