15 years of Sidnet: team values and anniversary celebration photos

From small jobs on RentACoder.com for $15 to 15 years in business. From freelancing to a full-blown business. Through years of experience, ups and downs, achievements and happy coincidences.

We have just celebrated the 15th anniversary. Our thoughts? People and projects changed over the years, but a few basic principles have remained engraved in the very core of Sidnet.

1. Running a business is a team endeavor

Maximum productivity with minimum procedures. Over the years, we have learned and tried many methods and techniques of work, but never took any of them as gospel that we would follow blindly.

With 20+ people in the team, we keep our hierarchy flat, allowing everyone to have real impact on how we organize our work, how we communicate, and what tools we use. One person’s voice can make a change that leads to improving the company as a whole.

2. Communication over co-location

Our programmers work from Warsaw, Lublin, Tczew, Rzeszów, Toruń. All the time we stay connected, even though almost all of our work is done remotely. We manage projects in an effective manner thanks to collaboration and communication tools. In real life, we meet at company presentations, when visiting our clients, and on weekly board game sessions.

We stay honest, both when communicating among ourselves, as well as with our clients. We are upfront about risks and are not afraid of admitting to a failure. We make sure to keep it easy to track the progress of our work – through daily stand-ups, reports, and code repositories.

3. Giving back to open source

We put our trust in open source software before it was cool, using it for both our own needs and to build solutions for our clients. We often tweak and modify existing software to better suit our needs. We also make our code available on GitHub for others to use and contribute to.

Every month, we express our gratitude to the open source community by donating to projects, especially those with no commercial backing. Since 2012, we made 90 donations to numerous projects, including Redmine, Matrix, Laravel, Django czy Jenkins, to name just a few.

4. Helping those in need

There is more to life than technology, and with that in mind through the past 7 years we have made 88 donations to foundations, hospices, animal shelters, and individuals in need.

This willingness to help others has also lead to long-term relationships with some of the recipients of our donations. As a web development partner of the “little brothers of the Poor” Association, we take care of their website and build landing pages for their numerous initiatives. The Sarcoma Association has also entrusted us with their website, as well as the registration site for their annual running event Onkobieg.


How we celebrated the anniversary? There were presentations, bowling, billiards, slot machines, food, drinks, and conversations filled with laughter lasting way into the night.

Have a look at a few more photos from our celebratory dinner:

From: Marcin, Sidnet | To: Mobile Detect + Kuba Ułanowicz (Foundation for Children beneficiary)

There is nothing like supporting the development of a smartphone-related tool on World Mobile-Free Day! Yet, there is nothing that we can do about it this time as the open source and non-profit projects that will receive our support were chosen by our web and mobile developer, Marcin Tabaka – also known as Tabs.

Mobile Detect

Mobile Detect has been in development since 2009. It is a tool that detects the types of devices on which users browse a website. It is fully server-based and as such, the content recipient does not experience any drawbacks related to additional data transfer.

Mobile Detect can recognise the following characteristics of a device:

  • type: computer, tablet, mobile phone,
  • name and version of the operating system,
  • name and version of the web browser.

As a result, the tool facilitates the process of optimising a website for devices such as tablets and smartphones.

“The developers of Mobile Detect face a truly daunting task, given the fact that dozens of new mobile devices appear on the market each month. Since they maintain such a useful tool that we use in many projects, including the Kujawski Fooder website, I feel like they deserve our support” – said Tabs.

Kuba Ułanowicz (Foundation for Children beneficiary)

Kuba is a beneficiary of the Foundation for Children “Help on Time” who suffers from autism. Kuba requires pharmacotherapy and daily specialised exercises – speech therapy, psychological therapy, as well as kinesiotherapy and sensory integration. Apart from difficulties with socialising, the boy also suffers from a chronic motor tic disorder, kidney problems and serious haematological issues, which indicate that he may also be suffering from the von Willebrand disease.

“This is the third time that I have recommended Kuba as a person in need of help as part of the Sidnet donation action. His aunt is a friend of mine. Today, the boy is almost 11 years old and is currently undergoing a process of diagnosis concerning his motor tics, which may actually be symptoms of Tourette syndrome or PANDAS syndrome” – said our programmer.

The Foundation for Children “Help on Time” provides assistance to more than 35 thousand children, primarily young patients who suffer from cerebral palsy, heart defects, Down syndrome, autism, epilepsy, retinopathy, cancer, and muscular dystrophy. Established in 1998, the Foundation is actively working on implementing a national aid program called “Help on Time”, which was initiated by a renowned Polish heart surgeon, professor Zbigniew Religa.

WarsawJS Meetup #59 from the perspective of Sidnet

Live coding, magic tricks you can do with your IDE, a recap of clean coding practices, and clearing up the confusion between authentication and authorization. Here’s a subjective review of Wednesday’s WarsawJS Meetup.

„Intro to Authentication and Authorization with JWT and PassportJS”

Like the title suggests, this talk was a good introduction to the topic of authentication and authorization. It helped in understanding the difference between these two terms, which are often confused – especially by beginners.

Artur Klajnerok demonstrated and explained an example of “Basic Auth” in a front-end Single-Page Application, powered by a node.js backend built upon the Express framework. To authenticate users, he made use of the PassportJS library.

The talk concluded with a simple example illustrating the use of JSON Web Token (JWT). Having years of experience dealing with authorization and authentication, I wished this was the beginning of the talk rather than the end 😉

„The Importance of Clean Code”

Tetiana Platonova reminded the attendees what constitutes clean code – based on the guidelines presented in the book “Clean Code: A Handbook of Agile Software Craftsmanship”.

In the limited time of the talk, Tetiana managed to cover the following of Uncle Bob’s (Robert Martin’s) concepts:

  • Variable and method naming
    Key point: Use descriptive names with verbs for methods and nouns for classes.
  • Code structure
    Key point: Keep your structure well-organized, avoid too many (more than two) levels of indentation, Don’t Repeat Yourself by factoring out common code into separate methods.
  • Commenting
    Key point: Avoid commenting what your code is doing – it should be readable enough to communicate that on its own.

Clean code is a huge topic and it’s no surprise that, in a short time, Tetiana was only able to present the basics.

This talk could be an eye-opener for junior developers, while for more experienced programmers like myself it was a good recap of the ideas in the book. It doesn’t hurt to revisit Uncle Bob’s guidelines every now and then, either in his book or by watching the videos available online.

„Use your IDE like the pros”

One of rare examples of live coding that could not fail 😉

In addition to a number of rather well-known tricks, Wojciech Przechodzeń shared several ideas of unconventional usage of the multiple cursors feature. I was surprised to see it used to extract e-mail addresses from a large JSON file. I knew my IDE supported multiple cursors, but would not think you could do something like that.

Thanks for this demonstration, well done!


Confusing concepts of authentication and authorization, classic concepts of clean coding, and advanced usage of your IDE. This meetup had some good content for all JavaScript enthusiasts, no matter the skill level.

Latest project: refreshed online registration for the running event

For the past few years, with each edition of the Onkobieg (“Oncorun”) charity run, we updated the official website of the event. This year our challenge was to rebuild the registration process and make it more user-friendly, as well as more accessible for people with disabilities. And since the event is run by a non-profit organization, we had to accomplish this on tight budget constraints.

Now that the new registration site for the 12th edition of Oncorun is live, we are happy to share a few of the ideas that we put into action to improve usability and accessibility.

Refreshed home page of Onkobieg (“Oncorun”).

Usability enhancements:

  • Progress indicator
    In the previous version of the registration interface, there was no clear overview of the required steps displayed to the user. Including a progress tracker gives the user an idea of what to expect on the way to the starting kit.
  • More readable form hints
    Form prompts have been reworded to be more specific – for instance, “Fill in this field” has been replaced with “Enter your e-mail”. The Call To Action buttons also got new labels to better communicate their purpose – e.g., “Print your registration card” was changed to “Download your printable registration card”.
  • Form design tweaks
    Some unnecessary field decorations have been removed, and a clear indication of required and optional information has been added. Repeating the password is no longer needed.
  • Approachable terms and conditions
    Large portions of legal information have been replaced with shorter introductions, expandable with a “Read more” option. All terms can now be accepted with a single “Check all” option.
  • Suggested donation
    Registration for Oncorun is free, but participants are encouraged to make a donation. Highlighting one donation amount as the suggested one makes it easier for the user to take action.

Accessibility improvements:

  • Better readability
    Blocks of text have been made narrower, with greater spacing between lines and paragraphs. We also abandoned justified style in favor of left-aligned text.
  • High-contrast version
    We added a high-contrast view mode based on black and yellow.

“A breath of inspiration and fresh ideas. Thanks a lot for a job well done!”

Szymon Bubiłek
Member of the Board
Sarcoma Association (Stowarzyszenie Sarcoma)

Oncorun – Together for Health! (Onkobieg – Razem po zdrowie!) is the oldest oncology-themed charity running event in Poland, organized since 2008 by the Sarcoma Association (Stowarzyszenie Sarcoma). Its aim is to collect donations for persons suffering from oncological diseases and support them in their fight for recovery and a better life.

12th edition of Oncorun will take place on 8th of September 2019 in Warsaw.

Register now: https://onkobieg.pl/rejestracja-uzytkownika [in Polish]

From: Sebastian, Sidnet | To: Redmine + Korabiewice Animal Shelter

As part of dog-assisted therapy day in Poland, we wish to repay our four-legged friends for their beneficial impact on our lives. As with every other month, we also show our support for an open source project chosen by our staff. This time around the project was selected by our colleague – Sebastian Stasiak. Sebastian works at our office in Rawa Mazowiecka, and we jokingly refer to him as our “memeager” due to his undying love for memes.

Redmine

Redmine is a flexible, open source project management system. Its list of users includes US and Japanese government agencies, as well as the developers of the Ruby programming language (which actually is the language used to write the Redmine application in the first place). We have been using Redmine for internal and customer projects for 9 years.

Some of Redmine’s notable features include:

  • creating a hierarchy of projects and tasks,
  • assigning roles and privileges in a flexible manner,
  • integration with source code repositories,
  • monitoring of working time,
  • ability to add new, specific functions.

“Redmine itself already has an impressive array of functions. However, its greatest asset is undoubtedly the possibility of further expansion. At Sidnet, our team uses features like additional plugins that allow us to run projects in accordance with the Agile philosophy. We have built some of these extensions by ourselves from scratch”, said Sebastian.

Korabiewice Animal Shelter

This is a shelter for animals of all species, and has been operating as part of the Viva! Foundation since 2012. Currently, the shelter is home to several hundred different animals – not only dogs and cats but also cows, goats and even foxes. Apart from donations, the shelter is financed solely by the Foundation. Volunteers working at the shelter help in feeding and healing the animals. They also build safe and comfortable boxes, houses, kennels and paddocks for them. In addition, the volunteers also assist in physical and virtual adoptions.

“I am well-acquainted with this shelter and I know that they require constant support. I used to work there as a volunteer and walk the dogs. One of them was particularly memorable. He weighed around 40 kilograms and would always act up on the way from his enclosure to the paddock, but immediately turned into a mild and playful puppy the moment he passed through the shelter’s gate. Later on, he found a new home at the seaside”, Sebastian recalled.

WarsawJS Meetup #58 from the perspective of Sidnet

In the last few months, I have been regularly attending the WarsawJS meetups for professionals and enthusiasts of JavaScript. Today I’d like to share my brief (personal and subjective) review of yesterday’s talks.

“Bootcamps from the perspective of a trainer and a developer”

Michał Michalczuk took on the topic of bootcamps and their effectiveness based on statistics. I appreciated that he had a critical view on the whole idea, even though he himself is a bootcamp organizer.

Michał raised a few valid points: that not everyone is good material to become a programmer, that not all bootcamps in Poland are created equal, and that bootcamps should not be seen as a substitute for a degree in computer science. His opinion was that bootcamps are valuable as means of quick introduction to the field and just the first step of many to follow. I am in complete agreement.

„Building high performance apps with Titanium”

Rene Pot is a representative of Appcelerator, a company based in the US, who for the past decade have been developing the Titanium app framework. He named several advantages of the framework, comparing it with more popular solutions with a similar purpose, like React Native and Flutter. There was a live coding demo, showcasing how easy it is to build mobile apps on Titanium.

What piqued my curiosity was what business model allowed the company to make a profit on a fully open-sourced product. It turned out what helps them keep their lights on are enterprise clients. Still, the company remains committed to the spirit of open source and makes all solutions available to the general public on GitHub.

I found this presentation a bit exotic, because I don’t know of any applications (whether big or small) built with this framework. Rene himself admitted that he hasn’t found any Titanium-based applications on the Polish market.

„Call me irresponsible if I ever crash on null or undefined in JavaScript or TypeScript”

A short but packed talk from Rafał Pocztarski on the subject of good coding practices to avoid common pitfalls — application errors and crashes.

What every JavaScript developer should keep in mind:

  • Validate API responses. If we blindly assume the API would always return data in the proper format, we are taking a risk. Developers should always check and validate the data.
  • Expect the unexpected. Always consider the edge cases.
  • Eliminate bugs as early as possible. Common errors such as type error or null pointer exception can be avoided with the help of solutions like TypeScript, TSLint, Flow, or TravisCI.