Skip to content

Entries tagged "business".

med.aplikacja.info uruchomione

Wczoraj został uficjalnie uruchomiony portal med.aplikacja.info. Pozwala on zintegrować automatyczną rejestrację pacjentów z istniejącą stroną WWW przychodni. Tożsamość pacjentów jest weryfikowana za pomocą SMS, więc kontakt w postaci numeru telefonu komórkowego jest wymagany.

Zarejestrowany pacjent ma możliwość samodzielnej rezerwacji/anulowania wizyt a przychodnia zyskuje wygodną formę komunikacji z pacjentem (np. automatyczne przypominanie o umówionym terminie wizyty dzień wcześniej poprzez SMS).

1

Zdaję sobie sprawę, że konkuruję z takim potentatami jak Orange, ale uważam, że jestem w stanie dać korzystniejsze warunki i lepiej dopracowany system. Czas pokaże ...

OC w PTU czyli jak nie obsługiwać klientów

Ponad rok temu miałem okazję przeprowadzić rutynową operacją jaką jest odnowienie polisy OC na samochód. Pomyślałem sobie, że sprawę załatwię w ciągu kilkunastu minut i pełen optymizmu wybrałem się do przedstawiciela PTU (Polskiego Towarzystwa Ubezpieczeń).

Jakież było moje zdziwienie kiedy na miejscu otrzymałem do przepisania stertę papierowych formularzy. Jako pomoc otrzymałem formularze wypełnione przeze mnie przed rokiem! Poczułem się jakbym żył w średniowieczu. Nawet nie próbowałem pytać dlaczego tak "maltretują" swoich klientów.

Nauczony przykrym doświadczeniem w tym roku zmieniłem ubezpieczyciela. Rejestracja przez internet, żadnego ręcznego przepisywania papierków. PTU w XXI wieku dziękujemy.

logo_ptu

SMS Notifications for site-uptime.net

Yesterday SMS notifications were added to site-uptime.net. You can specify cell phone number and get information on network problems directly to your cell phone. I hope this option will be useful for S-U customers (existing and new).

cell_phone

HTTP Method selection for site-uptime.net

site-uptime.net, network monitoring service was extended today by HTTP method selection option. You can choose to use HEAD (smaller network overhead) or GET (maximum 10 kB is downloaded in one measurement). Get option allow to download and analyse HTML content for specific keywords (required, like static text on webpage or undesirable, like IFRAME viruses).

3

Obsługa płatności przez DotPay w site-uptime.net

Miło mi ogłosić, że site-uptime.net (usługa monitorowania serwisów WWW) obsługuje od dziś płatności przez DotPay, co pozwala korzystać z wielu kanałów płatności dostępnych w Polsce takich jak mTransfer czy MultiTransfer.

Obsługa PayPal oczywiście nadal będzie dostępna równolegle z DotPay.

How To Effectively Migrate Web Application Between Hosts

In Agile world there are no immutable constraints. Your requirements may change, libraries used may be replaced during development, application may outgrown your current server setup etc. I'll show you how to make web application migration between servers as fast as possible: with minimum downtime and data consistency preserved (techniques also apply to hosting providers environment).

Known Problems

You may say: moving a site? No problem: just copy your files, database and voila! Not so fast. There are many quirks you may want to handle properly:

  • DNS propagation time
  • Database consistency
  • Preserve logs
  • Preserve external system configuration
  • Environment change impact integration tests

DNS Propagation Time

DNS is a distributed database handed by servers along the globe. In order to be efficient some kind of caching had to be introduced. For every DNS record you can define so called "TTL": "Time To Leave" (time in seconds when the information can be cached safely). Typical it's half hour. I suggest you to make TTL shorter (5 minutes for example) during transition.

Then create new site under new temporary address and validate if it's working properly. I suggest to configure temporary.address.com in your DNS and redirect it to your new location. This way you can access new site and validate if all is working properly under new address.

Setup redirection on old site. This redirection will work during DNS update time. Here's example that can be used for Apache (place it in .htaccess if AllowOverride is enabled):

Redirect 301 / http://temporary.address.com

Here's the poor-mans' version that use HTML HTTP-EQUIV header (use it if you don't have .htaccess enabled on your account):

<meta HTTP-EQUIV="REFRESH" content="0; url=http://temporary.address.com">

This will redirect all visitors that open your site in transition period. After it ends add redirect in opposite way: from temporary address to main application address.

Database Consistency

The worst thing you can do is to leave two public versions of your application and leave them "open" for customers. You will end up with two separate databases modifications that will result in data loss (it's practically impossible to merge updates from two databases). I suggest the following procedure:

  1. Setup new site under temporary address (see previous section)
  2. Prepare fully automated script that on new site (easy with SSH + RSA keys + Bash):
    1. block both application instances (service message)
    2. download database dump from old site
    3. install database dump on new site
    4. unblock old site and redirect to temporary adress
    5. unblock new site
  3. Test the script (only 2, 3 steps)
  4. Run the script
  5. Reconfigure DNS-es

Above procedure ensures:

  • no concurrent DB state modifications (only one public version available)
  • no updates lost (freeze during move)
  • minimum downtime (process is automated)

Preserve Logs

Application logs hold information on application history. They are not critical to application but you may want to move them with application in order to leave historic information for analysis.

Logs could be transferred in the same step as application database. Then new location will just append to transferred logs and all history is preserved.

Preserve External System Configuration

To be checked/migrated (listed in random order).

  • Webserver configuration (i.e. virtuals setup)
  • Crontab setup that supports the application
  • Mail Agent configuration (specific to application being moved)

Environment Change Impact Integration Tests

Your new environment may differ in environment setup to old one. That's why temporary DNS address is very useful here. You can make integration test on new location before migration to be sure no environment changes will break application. The following environment attributes need to be taken into account:

  • OS architecture (32 / 64 bit)
  • OS (i.e. Debian, Centos)
  • Webserver software used (Apache / Lighttpd / Ngnix)
  • Database versions
  • Application server (JBoss, Weblogic or just plain Tomcat?)

Are there other issues I haven't mentioned?

Rezerwacje zmiennej długości w med.aplikacja.info

med.aplikacja.info to platforma pozwalająca zintegrować z istniejącą stroną przychodni możliwość rezerwacji wizyt online.

Jeden z moich klientów potrzebował udostępnić swoim pacjentom rezerwacje zmiennej długości (zależnej od rodzaju usługi). Zastosował on tymczasowe (przyznaję, sprytne) rozwiązanie polegające na rezerwacji dwóch kolejnych terminów dla dłuższej wizyty. Było ono jednak dość niewygodne dla pacjenta.

Dziś system został rozszerzony o możliwość definiowania usług (wraz z czasem), dzięki czemu wybór specjalisty i usługi jest wygodny. Zapraszam do zapoznania się z aktualną wersją systemu.

site-uptime.net: a migration to UK

site-uptime.net is a web monitoring service that continuosly measures response time of a server.

Random network instability visible during last days forced me to make a fast migration S1 to new server. Linode slice deployed in UK was choosen as default platform for S1 monitoring station. Their networks and servers proved to be very stable in past few years.

I hope new infrastructure will make better measurements and lower false notifications ratio.

Definiowanie usług w med.aplikacja.info

System rezerwacji med.aplikacja.info pozwala rezerwować wizyty pacjentów u specjalistów poprzez Internet. Dotychczas w pierwszym kroku pacjent wybierał specjalistę by móc zarezerwować wizytę. Aby ułatwić wybór w przypadku wielu specjalistów system rezerwacji został rozszerzony o możliwość wyboru usług.

  • Usługi mogą mieć różny czas trwania (i taki czas będzie rezerwowany w kalendarzu specjalisty)
  • Można przypisać usługi do różnych specjalistów

Uruchomienie mechanizmu jest bardzo proste: po pierwsze definiujemy usługi i przypisujemy je do wybranych lekarzy (zakładka "Usługi").

Od tego momentu pacjent w pierwszej kolejności wskazuje usługę którą jest zainteresowany:

Następnie wybiera specjalistę realizującego szukaną usługę (widzi opis i najbliższy dostępny termin):

Dalej procedura rejestracji postępuje jak dotychczas (z SMS-owym hasłem).

Inbound Marketing by Dharmesh Shah

Dharmesh Shah, Hubspot (and author of the popular On Startups blog) presents "Inbound Marketing" term, mostly how to attract customers to your product using SEO (Search Engine Optimisation) techniques.

He believes "Outbound Maketing" (traditional channels like TV, phones, ...) that gives results in ~1% cases will be replaced by "Inbound Marketing" in future (allow the people to find your product). Dharmesh shows three main channels of "Inbound Marketing":

  • Google (and search engines)
  • Blogs
  • Social Networks (Like Facebook)

"Lean Times Require Lean Thinking" by ThoughtWorks

Błąd w systemie transakcyjnym mBanku

Kiedy człowiek dorasta to zwykle zakłada rodzinę i zaciąga kredyt na mieszkanie żeby mieć gdzie tę rodzinę pomieścić. Konieczność terminowego spłacania swoich zobowiązań powoduje, że warto kontrolować poziom wydatków względem przychodów na koncie w banku by uniknąć przykrych niespodzianek (patrz: przypadek Grecji). Narzędzia raportujące wbudowane w system transakcyjny mBanku ułatwiają taką operację. Przynajmniej ułatwiały - do czasu ostatniej aktualizacji oprogramowania.

Przelewy wychodzące zwykle związane są z kosztami stałymi które ciężko jest zoptymalizować (kredyt, czynsz, media). Kiedy trzeba kontrolować koszty warto więc spojrzeć na historię operacji na karcie. Możemy (czasami z zaskoczeniem) zobaczyć ile wydaliśmy np. w ciągu ostatniego miesiąca. Ustawiamy więc filtrowanie na 1 miesiąc:

i oglądamy wyniki:

Wyniki wyglądają sensownie, więc może teraz sprawdzić historię za ostatnie dwa miesiące?

W podsumowaniu operacji czeka nas niespodzianka:

Dane wyglądają nieco, hm, nierealistycznie. Analizując szczegółową listę operacji widać wyraźnie, że podsumowanie nie odzwierciedla sumy z listy. Obroty na rachunku są źle sumowane.

Kiedy ten błąd jest widoczny? Muszą być spełnione dwa warunki:

  • lista operacji na koncie nie mieści się na jednej stronie wyników i aktywuje się stronicowanie wyników
  • dla danego konta jest aktywny kredyt hipoteczny z mechanizmem bilansującym (tzw. mPlan)

W przypadku aktywowania się stronicowania podsumowanie gubi informację o wybranym rodzaju operacji.

Dobry proces testowania powinien uwzględnić przypadki szczególne (aktywny mPlan + stronicowana lista wyników). Z tego co widzę taką kombinację pominięto przy wprowadzaniu nowej wersji oprogramowania w mBanku. Problem zgłosiłem, zobaczymy ile czasu Bank potrzebuje na reakcję w przypadku takiego (dość prostego) błędu. Mam nadzieję, że procedury wpływające bezpośrednio na stan konta nie mają tego typu defektów ;-)

"Usability" na przykładzie bankomatu

Niedawno miałem okazję przekonać się jak ukształtowanie interfejsu użytkownika może wpływać na sposób w jaki aplikacja będzie odbierana przez użytkowników. W skrajnym przypadku może prowadzić do odrzucenia systemu.

Czekając w kolejce do bankomatu zauważyłem, że dwie osoby przede mną odchodzą nie pobierając gotówki. Gdyby to była tylko jedna osoba pomyślałbym, że chodzi o brak środków na koncie. Gdy druga osoba odebrała kartę obstawiałem problem z bankomatem. Postanowiłem sprawdzić co jest przyczyną problemów.

Na pierwszym ekranie widocznym po włożeniu karty pojawiło się pytanie:

Czy potrzebujesz gotówki?

Poniżej znajdowały się dwa przyciski: TAK i NIE. Pytanie wydało mi się dziwne jak na bankomat sieci Euronet.

Kiedy użytkownik wybierał "TAK" (przecież po gotówkę przyszedł do bankomatu) kierowany był na stronę ze szczegółami reklamy kredytów gotówkowych i "głupiał". Użytkownik oczekiwał przecież pojawienia się menu bankomatu, dostawał coś mylącego. Rezygnował więc z transakcji ("bankomat zepsuty") i odchodził.

Aby móc dokończyć transakcję należało wybrać "NIE" - dalej procedura przebiegała już standardowo.

Tak oto z mojego małego doświadczenia można wnioskować, że prosty błąd popełniony na etapie projektowania interfejsu użytkownika potrafi zniechęcić większość potencjalnych użytkowników systemu. Nie był to błąd działania systemu (nie poleciał żaden wyjątek, salda zachowały poprawną wartość), ale operacja do której bankomat był stworzony nie doszła do skutku.

Stało się tak, ponieważ przy integracji komponentów (nowa wersja reklamy w istniejącym UI bankomatu) nie sprawdzono jak całość zostanie odebrana przez klientów. Nie dokonano "testów integracyjnych na poziomie interfejsów białkowych". Z moich doświadczeń wynika, że styk człowiek-komputer jest trudniejszy do oprogramowania niż interfejsy pomiędzy komponentami oprogramowania.

"coworking" w Warszawie

Jakiś czas temu rozglądałem się po możliwościach najmu powierzchni biurowej w Warszawie i nieco odstraszyły mnie koszty związane z biurem w Warszawie. Wiedząc ile jeden z moich klientów płaci za wynajem biura zacząłem się zastanawiać, czy stać mnie na taki "luksus".

Z pomocą, podobnie jak w innych dziedzinach (wirtualizacja, outsorcing) przychodzi efekt skali. Jeśli możesz pogodzić się ze współdzieleniem zasobu z innymi użytkownikami jego cena potrafi spaść o rząd wielkości do wartości już akceptowalnej dla niedużej firmy.

Najtańszą opcją dostępu do powierzchni biurowej (poza pracą w swoim domu) jest tzw. "coworking". Nie wiem czy istnieje dobre polskie określenie na ten termin, ale wydaje mi się, że "współdzielona przestrzeń biurowa" mogła by dobrze oddawać sens tego typu usług (jak zwykle język angielski pokazuje swoją przewagę jeśli chodzi o zwięzłość).

Poniżej zamieszczam przegląd wybranych opcji w Warszawie (Centrum i okolice) pod kątem trzech typowych profili użytkowych:

  • współdzielone biuro dostępne tylko kilka dni w miesiącu
  • współdzielone biuro dostępne bez ograniczeń
  • mały kilkuosobowy startup potrzebujący wydzielonej przestrzeni

Noa Cowork: najtańsza opcja dla 6 dni / miesiąc wynosi 250 PLN + VAT. Nieograniczony dostęp do przestrzeni współdzielonej to 550 PLN + VAT, natomiast biuro dla dwóch osób to koszt 1400 PLN + VAT. Dobrze znana lokalizacja: okolice gmachu głównego Politechniki Warszawskiej :-)

CoPoint: 8 dni / miesiąc to 199 PLN + VAT, nieograniczony dostęp kosztuje 450 PLN + VAT. Na 4-osobowe biuro należy wyłożyć 1750 PLN + VAT miesięcznie. Lokalizacja: nieco dalej od Centrum, w okolicy metra Służew.

GoldPlace jest natomiast zlokalizowane w najbardziej chyba prestiżowej lokalizacji (Atrium Centrum przy Jana Pawła). Nielimitowany dostęp to koszt 650 PLN + VAT (na stronie jest promocja 500 PLN, ale nie jest jasne na jakich regułach oferta została doprecyzowana, jest to cena standardowa). Za opcję "minibiuro" (3-4 osoby) zapłacimy 2500 PLN + VAT.

W Biurco za 8 dni / miesiąc zapłacimy 200 PLN + VAT. Dostęp nielimitowany to 500 PLN + VAT, a dwuosobowe zamknięte biuro kosztuje 900 PLN + VAT. Lokalizacja: niedaleko skrzyżowania Jana Pawła i Solidarności.

Czy przegapiłem jeszcze jakąś ciekawą ofertę w Warszawie z niższej półki cenowej (poniżej 2 tys. zł/mc)?

Online Booking For Your Google / iPhone / Exchange Calendar

We, Aplikacja.info are delivering online booking services for Polish customers using med.aplikacja.info service since 2008. The service is mainly targeted at small/medium medical businesses and allows to integrate seamlessly with existing webpage.

I was asked recently about integration with hosted Microsoft Exchange calendar. Customer (also medical business) is using currently iPhone to record visits and would like to use existing contacts and calendar events and allow his customers to book online.

Our current persistence mechanism is local SQL database. In order to integrate with external contact / event source we have the following options:

  • keep local SQL storage and make periodical import/export of events/contacts to Microsoft Exchange
  • replace local SQL storage with remote-only storage thus import/export will not be needed

First option drawback is possible de-synchronisation / higher probability of conflicts. The benefit is that local storage is more reliable than rely only on remote system availability. Also some customers doesn't have existing calendars we can connect to. Then setup is much simpler (just signup to our online service).

The latter gives better guarantees of eliminating conflicts, but may be slower / less reliable (when remote system is unavailable for some reason).

We started few weeks ago attempt to integrate with Google Calendar - the interface is pretty well documented. Current option that will probably win is to rely only on remote storage with some data cached locally to make things go faster. Maybe the same approach will be used for MS Exchange (probably CalDAV as transport option).

First Draft Of Public Calendar Specification

After making decision to launch online booking service for existing calendars (Google / Microsoft Exchange) it's time to make minimal functionality specification. Then landing page will be prepared to check if the subject catch attendance then MVP to prove basic flows will work as expected.

Glossary:

  • Customer: calendar owner
  • Client: wants to book an appointment with customer
  • Time slot: period of time that can be selected for appointment

MVP Use case list below (will define implementation order and priorities):

  • Show customer's calendar on a website with available slots
    • WHY: Proves that we can read existing event source
  • Allow to book an appointment for selected slot
    • WHY: Proves that we can write existing event source
  • Allow customer to register new calendar
    • WHY: Allow for external tests for potential customers
    • Allows to set timezone, day of week range, hours range

Optional use case list:

  • SMS book confirmation
    • WHY: prevent abuse
    • Phone number is required from client
    • SMS code should be entered on confirmation screen to finish booking a visit
  • SMS notifications
    • WHY: minimize no-shows
    • One day before a visit notification SMS is sent
  • Vacation management by Customer
    • WHY: block booking for selected days
    • allow to specify date range for "unavailable" days
  • Automatic SMS after moving a reservation
    • WHY: easy change schedule
    • compares local cache with current calendar state
    • sends SMS to client and e-mail to customer
  • Custom SMS messages (with proper character limit check)
    • WHY: more details (address) in a message
  • Client cancels appointment
    • WHY: minimize no-shows
    • Maybe as easy as sending SMS to some address with confirmation?

To be continued ...

8 types of waste in Lean Software Development

Lean methodology is a "production practice that considers the expenditure of resources for any goal other than the creation of value for the end customer to be wasteful, and thus a target for elimination". Lean ideas were moved into Software Development Fields by Marry and Tom Poppendieck. It's interesting how general idea behind "Lean" (originally applied to manufacturing) can be applied for other fields (software development in this case).

Waste of Over-production

Have you ever developed a module that was never used in final product? Or end users weren't using some functionality because it was too complicated? You will probably say "yes" here (like me). How can we eliminate unneeded functionality from specs? How can we validate user interface to ensure a part of a system will be useful before actual build?

We have two opposite options here: prototyping with detailed design (yeah, Waterfall!), and iterative functionality delivery (bye, bye fixed-price contracts, welcome estimated iteration deliverables). The former is better for customer ("my budget is fixed"), the latter for development shop (lower risk of invalid estimates).

Waste of Defects

The Holly Grall of software development methodologies: to limit number of defects. There are many approaches here:

  • Test-in quality at the end of a whole process (worst case IMHO)
  • Parallel tests with development (waste of repeated tests)
  • Automated system-level tests (may be hard to maintain!)
  • Automated unit-level tests (my choose)
  • Random DBC-based system level tests (promising ...)

Defect means: slower delivery and it's waste of resources (time, QA time, ...).

Waste of Inventory

Means "Holding inventory (material and information) more than required". Looks like it's missing continuous integration practices. If you working on a topic too long time integration effort might me much bigger than syncing in smaller steps (minimum once a day?). The only problem with frequent syncing might me hitting regression (thus slowing work). But we can handle that by automated testing (see "Defect" above).

Waste of Over-Processing

"Processing more than required wherein a simple approach would have done" tells us we should prefer KISS (Keep It Simple Stupid) over heavy frameworks and complicated (fat) interfaces. In my opinion not the completeness of an interface designates it's quality. Better interfaces are ones that are harder to be used in incorrect way (for example: eliminate default constructor if it does not have sense).

Waste of Transportation

"Movement of items more than required resulting in wasted efforts and energy and adding to cost", in my field possible wastes are:

  • duplicating bugtrackers within one project - needs syncing in both directions
  • duplicating version control storage (local SVNs + central Perforce as a real example) - requires syncing methods
  • submitting code always to more than one branch - is it better to cherry-pick set of commits from branch A to B then retest before submit?

Waste of Waiting

If team A is waiting for team B to produce module that will be used by team A it's a waste of waiting. The solution:

  • Create draft interfaces
  • Stub implementations from lower layer

Then upper level modules can be started in parallel with lover level and stubs can be eliminated during integration. Interface will emerge as a result of two processes (A requirements + B possibilities).

Waste of Motion

How many "proxies" do we have for any information flow? Is there a person that just pushes some messages between customer and programmers without added value? Maybe we can make flows shorter (they will be faster and more effective).

Waste of Un-utilized People

Looks very similar to "Waste of waiting". Our work strictly depends on people. We can improve our tools but people will be always be most important in software development activities. Avoid "push"-style, prefer "pull"-style work item assignment.

Time Tracking in Bug Trackers

Modern bug tracking software are not only the bug trackers. There are more features. Typical additional components that are included are:

  • Wiki systems: to share knowledge
  • Estimations
  • Time tracking

I'd like to focus today on time tracking capabilities and compare few mainstream bug trackers: Trac, Redmine, FogBugz, Jira.

Why do I expect time tracking to be included in ticket management system? Some of our project are invoiced by time & materials, so it is useful for a developer (or designer, or tester, ...) to register hours spent on subject in his basic workflow tool (bug tracker).

What functionality do I expect from such time tracking module:

  • Able to start/stop work on particular issue
  • Able to fix existing time table (in case of a mistake)
  • Show total time spent on issue
  • Compute total time spent on milestone / software component / ... (reporting with aggregations)

Let's review some bugtrackers time tracking abilities then.

Trac

Trac is Python-based ticket tracker well known for his integrated Wiki and extremely powerful queries tool.

We have few options to select from:

Redmine

Redmine, on the other hand, is written in Ruby. It's positioned as biggest Trac competitor. Unlike Trac "batteries are included" in default installation (no need to install additional plugins).

Redmine contains "Log time" option, but there's no start/stop options available:

FogBugz

FogBugz is a commercial, hosted solution used by my customer at the moment.

There's "Working On" menu you can use to start (by selecting an issue) or stop (select "Nothing") time measurement. Very convenient feature. I don't have to track time, just switching current tasks and resulting reports are generated automatically.

Jira

I was using that commercial, hosted, solution in the past for Websphere-based projects management. Probably written in Java.

Also time tracking is included, but without start/stop (is there any plugin for such feature present?).

Summary

Currently I see FogBugz the only viable option for time tracking, however Trac's query language (you can embed queries even in your Wiki page) attracts my attention to Trac. Looks like I will have to write start/stop time tracking plugin for Trac myself. Have I missed any existing plugin with that functionality?

How to do the best mailing to your customers ;-)

Recent e-mailing fragment from STMicroelectronics: Dear Dariusz

In our previous notification there was a mistake, the go-live date for the new web sites should read correctly :

Monday February 18 , 2013 instead of November 18.

We apologize for any inconvenience this might have caused.

Best regards

STMicroelectronics

No comments.

Przeczytaj zanim wyślesz - zwłaszcza do tysięcy klientów

To jest chyba zaraźliwe (e-mail od Freeconet, wzorowali się na STMicro): Szanowny Użytkowniku!

Do poprzedniej wiadomości, dotyczącej niższych stawek za połączenia komórkowe, wkradł się błąd związany z datą wprowadzenia obniżki. Zmiana cennika obowiązuje od 10 kwietnia br. (a nie od 10 marca, jak podane było we wcześniejszej wiadomości).

Przepraszamy za pomyłkę, Wnioski:

1) Czytamy e-maile dwa razy przed wysłaniem, żeby nie musieć potem prostować. Zwłaszcza dotyczy to komunikatów marketingowych do tysięcy klientów.

2) Czytając pierwszy e-mail nawet nie zwróciłem uwagi na błędną datę. Pomyłka raczej oczywista (nie zmienia się zwykle stawek z poprzedniego okresu rozliczeniowego). Ktoś zadecydował, że muszę się o tym fakcie koniecznie dowiedzieć. Kolejny e-mail do przeczytania. Dlaczego? Teraz Freeconet ma na moim blogu darmowa reklamę :-P

Can you compete in a crowded area?

Can you compete in crowded area?

Below you will find two sample projects announced on guru.com. First: is hardware-related work, 2nd is a plain database:

Notice the difference in proposals counters. 1st project has no bids as it's:

  • complicated: real time compression probably will require hardware support thus it requires pretty complicated embedding of H264 encoder on FPGA chip
  • unpopular: I bet hardware guys are outnumbered by PHP programmers with ratio 1 to 1000
  • risky: you cannot work on high level of abstraction leaving all the ugly details (OS services, memory management, ...) for lower layers

2nd project has many proposals and I bet there are many talented Hindi specialists that will do the job for 20% of offer you expect to earn. So you will loose with your bid (make no money).

The general idea is to find a niche that is not easy to reach by other software development companies to be able to compete in smaller market. Even if you have brilliant PHP programmers you have to limit your project budget expectations according to 100s others PHP-related companies around, the one with highest quality / cost will win.

 

"Keep It Simple, Stupid" by UK goverment

I was searching for current UK VAT rates as my client operates on this marked and found the following official page that was a delight for my eyes:

334

Compare that with all that bloat you expect from your government and you know why some countries are much better for business than others.

PayU apologizes for ...

The best idea PR guys from PayU might have: Dear Sir or Madam,

We would like to apologize for the INCORRECT INFORMATION in our last communication.

During the break which will take place on 27 November 2014 from 05:00 am to 05:30 am you could not be able to log in into the system but all transactions WILL BE SETTLED. A message informing about unavailability of the service may be displayed during login attempt.

We are very sorry for the inconvenience and misrepresentation.

Kind regards, PayU Team The funny thing is that I haven't got any e-mail on the technical break in the first place.

LOL.

Meeting "minutes" in three simple steps

Nobody likes it. They are boring duty you ought to do after a meeting. What? "Minutes", of course.

By "minutes" I mean: a note from the meeting (or a telco) that should be sent after a call to all participants involved in order to remind what has been agreed on the meeting and what action items are specified and who is responsible for implementation.

boring-meetingIs there a way to make this very useful tool more effective? The answer is: YES!

First of all: lets enumerate expected properties of those "minutes":

  • easy to write
  • do not skip/forget anything important
  • allow to control if every action item has an assignee

Having above properties in mind I've implemented the following process using an online documents solution (Google Docs, to be specific):

  • I send proposed agenda as online document link to every participants and I allow them to extend it if needed
  • During the call I (or any participant) add action items and responsible persons to the document. Remember: concurrent editing is fun!
  • A copy the document is sent after the call in the same e-mail thread as invitation
  • And now: the previous step delivers your team "minutes"! Voila!

Everyone has R/W access to the document and this is the gag - you can delegate your job to add notes and complete document (including completeness checks) to meeting participants. They enjoy that as they're involved in the meeting flow and the output directly. Nobody is bored.

To speed things up you can add timestamp to each agenda item. Such meeting could never miss allocated time!

Implementation tracking is also easy - you can add ticket tracking ID (Jira, Redmine) to the minutes and assign appropriately.

Happy (not boring) meetings! :-)

ssls.com review

Sometimes you need to provide encrypted traffic to your site. Besides proper configuration in web server you need to authenticate your server using some publicly trusted certificates, so your customer's browser won't show warnings about untrusted site.

One of the cheapest SSL certificate solution is ssls.com. Let's check their price for 3 year lease:

694I used to pay $10 per year in the past for ComodoSSL certificates, this offer seems to cut the usual price in half. Sounds unrealistic? Let's check it!

First step is to add your purchase to the basket:

695Then you need to select payment method:

696And you proceed to account registration and the payment itself. When you complete payment you can see the following message:

697You need to:

  • pass your CSR file (I've already mentioned how to create that file)
  • then confirm you are the owner of the domain (typically by responding to special e-mail sent to administering contact of the domain)
  • and finally install you new *.crt key in the web server
  • use https://www.sslshopper.com/ssl-checker.html to check if your domain SSL config is OK

If you hit the following warning from SSL checker:

698You need to install COMODORSADomainValidationSecureServerCA.crt as ssl.ca-file (SSLCertificateChainFile). After web server restart you should see the following picture:

699And finally, manual browser test, just use https:// for your connection. Should be 100% green now.

Technical Support Engineer position in Warsaw (C++, Linux)

If you are an experienced programmer who:

  • crosses inter-company and inter cultural boundaries with ease
  • enjoys working directly with customer and partners (knows that a conf call could be not a boring waste of time, but an effective tool)
  • is, like me, a "script guy" who automates everything in projects
  • efficiently uses grep / sed / awk, and the command line in Linux
  • knows that *.pcap is not another MS Office file format
  • is willing to analyze the systems source code one has never contributed to
  • uses many languages (C++ is a must, Java & JavaScript are nice to have)
  • has Linux embedded background (preferably IPTV)
  • is able to capture patterns where others see only noise (i.e.: effective scanning of gigabytes of log files)
  • learns new things in real time
  • owns "sixth sense" to reduce the entropy in IT projects

... then:

uncle-sam-2

... in Warsaw office (Poland), for big, international, IPTV project.

My team makes things happen by:

  • analysis of stream of bugs effectively
  • introducing automation
  • improving development processes and flows
  • squeezing everything possible (and more) from existing build systems
  • pro-actively tracks and improves project health by (guess what?) AUTOMATION!!!

If you match the profile highlighted above do not hesitate to contact me via Skype: cieslakd or by e-mail: dariusz.cieslak at schange.com. I'll be glad to share more details about the position.