Page 1


Dariusz Kalbarczyk Angular lover, software developer, author, speaker, @ngPolandConf & @jsPolandConf conference organizer.

We live in very exciting times, where part of the technologies described in sci-fi novels 30 years ago have become incorporated into our everyday lives. Computers turned our lives upside down and the internet gave us unthinkable communication possibilities. Social media, advanced games and virtual reality captivate us one after another. We even run background checks on our future life or business partners before reaching out to them. This is of course only one side of the coin - visible and explicit to everyone. But there also is a second, personally I think more interesting side – behind the scenes technology. The technology that evolves every day and focuses vast groups of enthusiasts who spend numerous hours pushing its limit. As a result, we obtain better and more advanced tools aiding our work. The change is easiest to observe in the Frontend world, where JavaScript rules. Language which was once looked down upon, has been thrilling and dividing people at the same time. At the end of the day it became number 1 technology of the internet. It's widely used in phones, TV's, cars, washing machines, fridges, etc. - we could spend long hours enlisting further possibilities. One of the effects of its popularity are frameworks based on JS. What's interesting, the language itself hasn't changed much since its creation. The society focused around Frontend, in my opinion is the craziest and most dynamic of all. It causes Frontend ecosystem to work efficiently and mixing it with UX only makes it greater. Some of computations that previously occurred at backend have been moved onto client-side, namely the famous SPA - Single Page Applications. The concept is based on an idea where web application is no longer a static template but a fully-featured application itself. It initially loads all scripts and only communicates with server when necessary. The user experiences a native-like application, furthermore routing occurs quickly and smoothly.


Angular is one of the most popular SPA frameworks. Originally powered by Google, recently adopted TypeScript, thus bringing Microsoft to the table. If I were to name 3 reasons for using Angular, I'd say: 1. SPA 2. Modularity 3. Tests Since we already have discussed SPA, let’s move to the 2nd point. Everybody that had opportunity to work with enterprise applications, based on JS knows how hard it is to maintaining clean code. Angular aids developers with this task by splitting code into independent (Lego-like) modules that make up the entire system. 3rd point mentions tests. There are plenty of methodologies and concepts built around the topic, one thing is certain - tests help me to keep my app tight.

Before eventually moving to final part of the article I'd like to put an emphasis on the great value of learning new things and say few words about two conferences organized by me. One of the conferences is JS-Poland.pl, solely focused on JavaScript took place 19th of June, 2017. Second is NG-Poland.pl, one of the biggest Angular events around the globe. Upcoming edition is taking place on the 21st of November, 2017 in Warsaw, Poland. Both conferences serve similar purpose - to share knowledge and celebrate. Now we reach one of the most important aspects of life - learning. If some think that graduating from University means end of studying, they should keep their hands of IT and medicine (of course there exist more disciples requiring constant learning, but those two should give a fair idea). If you really want to be that good, you should learn every day, especially from more experienced developers. If you stop expanding your knowledge you might soon become outdated and useless for your organization. I believe it’s worth attending conferences and meetups (such as Angular Warsaw and Angular Cracow), I believe it’s worth sharing your knowledge and investing in self-development, because it’s the best investment one can make.


Todd Motto Owner @UltimateAngular, Google Developer Expert for Angular and Web Todd is a Google Developer Expert (GDE) for both Angular and Web Technologies, and was one of the first to be invited by Google to the GDE Program back in 2014. Todd has been working with Angular for over 5 years, writes technical posts on his personal blog, and he regularly talks at industry leading conferences on Angular and web. All his realworld experience and knowledge are baked into Ultimate Angular's training material.

Can you tell us something about yourself? Like, who are you and what do you do? I’m a 27 year old developer from England, UK, that loves JavaScript and the web! I live in the beautiful countryside with my soon to be wife Rachael. By day (and night) I run a company Ultimate Angular, where we provide industry leading Angular, AngularJS and TypeScript courses to train developers to really understand the technologies, patterns and APIs they’re building with. I love it! What made you choose the path of a programmer/techie? I actually started life as a graphic designer back in college, where I setup my own company (which is now Ultimate Angular) age 21. After graduating with a few design qualifications, I started doing more web design which eventually led to me writing my first line of JavaScript. A year or two passed and I switched to full-time JavaScript developer. Since then it’s been my passion. Is that what you dreamed of doing? Nope! But I wouldn’t change it, I feel like I found what I’m meant to be doing, and that’s mainly helping developers and sharing knowledge to make people’s lives much easier when it comes to learning new things and progressing with their career and skills.


If you had to choose a different profession, what would it be? I think it’d have to be something space related, I follow NASA and regularly boggle my brain with physics material. Do you think that software rules the world? I think it’s quite fair to say that at the moment - software pretty much powers everything, I keep wondering what’s next though. Why Angular? It was the first JavaScript framework that resonated with me, and I’ve been obsessed with learning design patterns and applying them conceptually to the web. Angular takes this idea and delivers it tenfold. The new version of Angular (previously AngularJS for the 1.x releases) is an absolute pleasure to work with. TypeScript and RxJS were interesting learning curves (when you start life designing logos and then jQuery plugins you have to realise there’s so much more to learn). So I keep learning and trying to help educate others in the space. How much do you travel? The last few years I’ve travelled quite frequently, 2016 I hit about 10 different countries, and around 15 conferences and meetups. I learned a lesson that year - that it was too much! I’ve stepped back a little now to focus on the niche Angular conferences, I love the Angular community so I absolutely love travelling the world to meet them, they’re the people that keep me inspired! What motivates you? Helping others is my main aspiration. I believe in really making a difference, not just on a surface level, but providing someone completely fresh with a whole new skillset to change their career is a very empowering position to be in. Running Ultimate Angular has opened my eyes to how you really can change lives through just a few online courses. I hear so many success stories through our Slack community and support email that keep the cogs of motivation turning. What do you wish for? Free Dominos Pizza for life, and to be doing what I do forever! BTW: „Observable.combineLatest() with ngrx/store + route params is super clean”


Filip Mamcarczyk Frontend Developer at Codewise Filip is an Angular enthusiast and a Frontend Developer at Codewise where he provides Single Page Applications used in affiliate marketing business. He loves sharing his knowledge and experiences because he believes that explaining something to others is the best way to learn it in depth.

Can you tell us something about yourself? Like, who are you and what do you do? I'm Filip, I live in Krakรณw and I'm frontend developer at Codewise. I've been using Angular in our projects for more than a year now. Apart from work, I'm a movie and board games freak. What made you choose the path of a programmer/techie? That's a kind of funny story, I used to study civil engineering, so I supposed to build bridges and highways now, but... I didn't feel that it was a thing I wanted to do for the rest of my life. I heard that programming can be funny and requires a lot of creativity, so I decided to start learning on my own and that's how I choose the path of a programmer. Is that what you dreamed of doing? When I was young I didn't dream about becoming a software engineer. On the other hand, I always wanted to use newest technologies, solve hardcore problems and work in the cool community so I can definitely tell that is what I dreamed of doing. If you had to choose a different profession, what would it be? Professional baby panda hugger. Do you think that software rules the world? I think it doesn't rule the world, but it's already a big part of it. And it's getting even bigger every day. Why Angular?


What I love in Angular is the fact that it gives us so many abilities to keep our code clean and stable. It's also built around the great community which is very important in terms using a framework in apps that are bigger than todo-lists. How much do you travel? Excluding conferences, not so much, but I can't imagine going out of town once in awhile. I love being close to nature. What motivates you? I just want to learn something new every day and share that knowledge if possible. What do you wish for? I'd be awesome to stay hyper-motivated 24/7. In other words, you can wish me a lot of good coffee :)

Ranking Financial Times i Deloitte

Codewise, the Platinum Sponsor of Ng-Poland, proves that profits come naturally if you let people thrive. Over 13,000% growth granted Codewise the 2nd place in the Financial Times’ “FT1000 Europe’s Fastest Growing Companies” chart. The entirely self-funded company has also been deemed the winner of the Deloitte’s “Technology Fast 50” ranking. https://ig.ft.com/ft-1000


Miłosz Piechocki Software Architect I'm a passionate full-stack web developer and a software architect. I'm fascinated by functional programming. I’ve been using Angular and AngularJS for few years. I love sharing my knowledge as a public speaker at meet-ups and conferences. I run a programming blog and wrote an e-book about functional programming in JavaScript. I’m also an open-source contributor and a trainer. Privately, I love hiking in the mountains and having a good beer in a great company.

Can you tell us something about yourself? Like, who are you and what do you do? I’m a software developer, public speaker, blogger and a huge fan of good beer (in a good company)! During the day I build applications in Angular and .NET and at night I write posts for my blog and practice to become a better speaker. I love to hike in the mountains but when there are none nearby than I resort to running. What made you choose the path of a programmer/techie? I wrote my first computer program in Microsoft Basic when I was seven years old. I remember being excited about discovering a completely new world where I could unleash my creativity. It was like LEGO bricks on steroids! Since that time it’s been obvious to me that I want to become a programmer. Is that what you dreamed of doing? Definietly, I’ve never regretted that decision. If you had to choose a different profession, what would it be? So far I’ve been really enjoying my public speaking endeavors which makes me think I might be a good teacher. Besides, my parents are teachers so I could use some of their experiences. Do you think that software rules the world? No, I don’t think so. Software is just a tool and there are always some human beings


behind it. It’s the human passions, emotions and desires that rule the world in my opinion. At least until some A.I. takes over... How do you think technology (software) will evolve? There are some obvious trends in technology such as Artificial Intelligence, Blockchain and Data Mining. I think that all these areas have great potential both to improve our lives and to make them miserable. I want to believe that it will go in the right direction and that we will end up with self-driving cars rather than mass surveillance. What is your favourite technology? I strongly believe that we should choose the technology that best suits the problem we’re trying to solve, therefore I don’t really have a favorite. However, I’m a huge fan of the functional programming paradigm which allows you to write code in a very elegant and succinct way. For me, it’s pure joy. Why Angular? Angular was the framework which took JavaScript application development to the next level. I’ve been always a fan of web applications (as opposed to desktop applications) but before Angular it wasn’t really feasible to bring complex user interfaces to the web. What’s more, Angular has an amazing community and it feels great to be part of it. How did you like ngPoland 2016? It was amazing. Before the conference I’ve been overwhelmed by the abundance of names and acronyms in the world of frontend development. RxJS, Redux, CLI, PWA, GraphQL… after ngPoland it was all much more clear to me and it also got me excited about some of the topics. I’ve spent many evening digging into Redux after Nir’s talk.

What motivates you? I feel the constant need to develop myself - I don’t like staying in one place for too long. Besides, it feels very gratifying to be able to help others by sharing my knowledge on the way. What is your favourite film and book? My favorite movie is Space Odyssey: 2001 by Stanley Kubrick. My favorite book is also sci-fi and it’s The Left Hand of Darkness by Ursula Le Guin. What music do you listen to? I listen to various music genres including rock, metal, grunge, french house and downtempo music.


Miłosz Piechocki Using RxJS with Angular

If the presentation about functional programming in Angular caught your attention, here is a great way to make the most out of it! This article explains how Angular integrates with RxJS. Since RxJS is a functional-reactive programming toolkit, you may count on it being mentioned during my talk. Reading this article will definitely make the presentation easier to follow. Recently I wrote about using RxJS as part of my Functional Programming in JavaScript course. Let’s see how to combine RxJS with the Angular framework. As a quick reminder, RxJS is a functional-reactive programming JavaScript library. It helps you write maintainable, readable code by allowing you to express your application as a manipulation on streams of events. If you have no experience with RxJS, I recommend you to read the part of my course dedicated to it. Angular support for RxJS It’s especially easy to overlook RxJS support in Angular when you are coming from the AngularJS (1.x) background where asynchrony was based on promises. For example, the $http service in AngularJS returned a Promise which would resolve once the remote server responded to our request. In Angular (2+) it’s still possible to work in exactly the same way. The HttpClient service (Http service before Angular 4.3) returns Observables. However, Observables are easily convertible to Promises with the toPromise operator. In some cases, that’s ok. However, there are cases where we can benefit from sticking to Observables. What does it actually mean that HttpClient returns an Observable? An Observable represents a stream of events. Given a callback (provided as an argument to subscribe call) it will run it every time a new event is produced. When we make a remote server call our “stream of events” contains only a single event – the response coming back from the server. It’s therefore a very specific kind of Observable, but an Observable nonetheless. Async pipe Besides having Observables baked into the API, Angular also supports consuming them with the async pipe. Let’s see an example.


@Component({ selector: 'app-root', template: ` <ul> <li *ngFor="let post of posts | async">{{post.title}}</li> </ul> ` }) export class AppComponent implements OnInit { posts: Observable<Post[]>; constructor(private httpClient: HttpClient) { } ngOnInit(): void { this.posts = this.httpClient.get<Post[]>("https://jsonplaceholder.typicode.com/posts"); } } interface Post { title: string; body: string; } Pay attention to the template. We are binding to the bands property. Since it’s an Observable we can’t bind to it directly. However, the AsyncPipe comes to rescue. If it weren’t for the AsyncPipe, we would need to manually subscribe to the Observable. What’s more, we would need to remember to unsubscribe from it when the component is destroyed. Issues with AsyncPipe You need to be careful when using the Async pipe, though. Let’s have a look at the following example. @Component({ selector: 'app-root', template: ` <p>{{ (post | async)?.title }}</p> <p>{{ (post | async)?.body }}</p> ` }) export class AppComponent implements OnInit { post: Observable<Post>; constructor(private httpClient: HttpClient) { } ngOnInit(): void { this.post = this.httpClient.get<Post>("https://jsonplaceholder.typicode.com/posts/1"); } }


Here we are fetching a single post and want to display it’s details. Hence, we use the AsyncPipe twice. Surprisingly, if we check the Network tab in our browser’s developer tools, we will discover that two HTTP requests have been made instead of one.

To explain this we need to understand the difference between hot and cold observables. Cold observables are the ones that “trigger” the observed stream when they are being subscribed to. HttpClient returns cold observables. We are using the AsyncPipe twice here which invokes the subscription twice. In consequence, an HTTP request is fired twice. On the other hand hot observables are ones that are already “triggered”. When we subscribe we will only see new events. The fact of subscribing has no side effects. It’s possible to fix our problem here by converting the cold observable to a hot one. However, it has its drawbacks too. The best option is actually to use good old Promises. this.post = this.httpClient .get<Post>("https://jsonplaceholder.typicode.com/posts/1") .toPromise(); Summary In this post you have seen how to deal with Observables returned by the HttpClient service in Angular. I have also shown that it sometimes makes sense to fall back to plain Promises. In the next part we will unleash the real power of RxJS by combining our Observable with another event stream. If you'd like to know, check out the second part of this article on my blog: https://codewithstyle.info/using-rxjs-angular-part-2


Meet ngPoland Gold Sponsor 7N IT outsourcing doesn’t have particularly good press among IT professionals and for good reason. Lack of (especially financial) transparency, draconian contract clauses, not knowing whom you can turn to for help in case of problems on a project – that’s the reality too well known for those experienced enough in the field. Ever wondered if there can be a different way outsourcing people? Well, there’s a company that tries just that. And with success.

7N is an agent for high-end IT professionals. Over 30 years of operation they have proven that a clear and transparent financial model, collaboration exclusively with experts in their respective fields, and taking good care of them comprise the best possible IT consulting model. 7N sees themselves less as a traditional outsourcing company (famous for “outsource and forget” model) and more as an individual agent for their consultants, promoting the consultants’ competences to 7N’s clients by offering them a wide range of projects. All this is supplemented with transparent rates and margins, career development support and professional stability. 7N’s goal is long-term collaboration, therefore the majority of their staff have been with the company for many years. As an agent, 7N supports their consultants in education and professional development. It involves not only financing conferences, workshops or certification paths. For those wanting to speak at conferences, for example, 7N is able to provide professional individual public speaking coaching workshops. Being the best agent for IT contractors, 7N also wants to be visibly useful to their customers – the most demanding business organizations where IT is one of the biggest factors influencing the business. They work to help them reach their goals with respect for their ambitions and needs. 7N attracts the best people in the field – not only technically. Their consultants are famous for their excellent interpersonal skills as well. With its own research on the factors influencing people’s performance in IT projects, 7N proves that soft competences are actually quite “hard” in improving it.


Tomasz Ducin Modern JavaScript addict, architect and software consultant Tomek is an advocate of modern JavaScript solutions. Experienced in both frontend and backend, he's keen on designing interfaces and APIs for long-living enterprise systems. Tomek aims to provide a truly scalable architecture, solving both technical and organisational issues. He considers software development as a challenge of creating small and maintainable pieces of code that provide big business profit. Tomek has been working for financial, data analysis and ITIL sectors, currently working at Ivanti. He regularly speaks at conferences and does trainings on JavaScript and JS-related technologies.

In your opinion does software rule the world? I think that we’re living in times on the verge of technological and industrial breakthrough. On one side – personal information. The giants like Google or Facebook have an enormous amount of personal information about their users, and the average person with a master’s degree can’t even imagine what can be done with such information. What we’ve gotten used to in social is remarketing and targeted ads. However, research about the most recent USA elections suggests that implementing social media in your campaign can have a significant impact on the results of electing a president of the largest super power in history. And that is only the tip of the Iceberg. Someone who has power will want to hold onto it and won’t want to show it off. I don’t think we really know exactly how much and for what purpose digital information is being used. On the other side – industry. Even now, there are massive projects in the fields of genetics (where research is being done on genotype and disease development, which, without doubt insurance companies will use to their advantage) and the automotive industry (with self-driving cars, a 30 year old taxi driver may have problems finding work in 20 years). I’m expecting that software will make some professions extinct. The questions is: how fast and which ones? Or maybe a machine will never be able to compete with a human being in certain situations.


If you weren’t a developer, then what would you be? Good question… Recently I’ve been thinking about how do major airports work. During a normal day, there are a ton of unexpected situations like flight delays, which mess up the airports agenda and financial aspects between the airports and the airlines. A storm can shatter a flight schedule for the rest of the day. Some of the flights get their gates allocated at the very last moment (about 40 min before departure). A decision to do so is made at the very last minute in order to best accommodate the situation to an unpredictable event. It is important to use all available resources. What really matters in logistics is “getting things done” and I think I would find myself in that field. Why JavaScript? JavaScript is like the Wild Wild West – It attracts me! There’s a lot happening, and there are a lot of problems that don’t have fixed solution (just like in Java). Some people accuse JS of copying the solutions from other technologies that are sometimes applicable, and sometimes not. They forget that the majority of technologies pertain to solving server issues, however, JS is foremost, a client based environment. Why does it matter? Just a simple example – loading an app. When dealing with a server, all the files are at hand. File access is a secondary IO operation that can be accomplished via sync or async, but it’s still nothing compared to loading files through phone WiFi (for every second of app loading, you lose a great amount of traffic coming through your business). In comparison with server technologies, JavaScript is a different environment with different issues, which translates to different solutions. And that’s interesting! That’s why JavaScript. How do you foresee the future for this language? With the current popularity of JS it’s quite obvious that it will be developing very dynamically. Especially that the technical committee behind JavaScript, TC39, makes most of its work transparent: “proposals” are available at github, where anyone can see their status and you can submit your own ideas. JavaScript is becoming a more and more complicated language. For example, in order to effectively use async await, you have to lay a solid foundation of promises and generators and you have to know when it’s better to use one over the other, and when to use observable. It’s quite a lot! And silver bullets do not exist. Additionally, even though ES6 moved the entire JS environment forward, it has not removed the garbage from the old JS. Actually, it has even added some more of its own. To add to that, we are not relieved


from understanding the old JS. There is still an enormous amount of code that’s prone to hoisting, tricks with intentional or unintentional binding this or manual work on object arguments and others alike. It’s doubtful whether some of the changes that were made, were right or not. For example, why were the arrow functions added only as a bold arrow, which has a solidified lexical this?...and why has it not been done like that in CoffeeScript, (which is a separate topic itself…) where we have a thin arrow, which is just an ES5 function and a bold arrow, which additionally binds lexical this? We would have a choice – you could just stop using the keyword “function”. So our language is swelling up with new keywords and will continue to do so – this is how I see the future of JS. It will be filled to the brim with features like C#. Additionally, JavaScript is becoming a compilation target for other platforms including other languages (TypeScript, CoffeeScript and Elm) or even frameworks (Angular). I’m not talking about some fantasy creatures like scala-js (code written in Scala and transpired to JS), but something more like electron. If your X platform can already transpile itself down to JavaScript, HTML and CSS - then you can take over the world! Technologies might go in this direction. What do you think about your performances during ng-poland 2016 and jspoland 2017? As a rule of thumb I don’t judge my own performances ;) But I do remember the events as being very positive. I was surprised by the turn out of ng-poland – 700 people attended. An amazing outcome for a first edition of this kind of event! Nota bene, I pay tribute to the organizers of that conference, especially because there were only two ppl working on it. I have co-organized three conferences so far and I know the insane amount of work that it involves :). Going back to my presentations – for those who didn’t see them, I encourage you to view them on youtube (“Async functions awaiting you” and “ng-enterprise”).

What’s the greatest benefit of attending a conference like that? To me, the most beneficial aspect of attending a well-organized conference is - inspiration! I get to learn new ways to tackle with technical challenges I faced already. A ‘good’ conference is defined by its agenda. The more it broadens my horizons, the better. Additionally, you can always find passionate people working on any technology. Chats during a quick coffee break, more often than not, are an awesome knowledge and


experience sharing exchange between people who know what’s up. I can’t imagine a conference without networking. Do you have a guru in your programming world? If so, who is the person ? There are people worth listening to like Martin Fowler or Greg Young. In the world of JS – definitely, Doug.

What are you working on now? I’m developing coding training programs – the ones that I have already lead as well as new ones :) It takes a lot of time, but judging by the results, it was really worth it! The people that attend these trainings say that they are the best ones they’ve ever gone to. – And that is what motivates me to improve the programs and expand their range. Apparently, I have a calling for teaching others, as well as passion, commitment blah blah blah… ;) But the market isn’t really too great as it goes for training programs. Most of the frontend ones are instruction manuals on how to use a hammer for a semi-witted caretaker. That’s a huge waste of the potential of the people attending, because the bottom line is that in order to become a developer/coder you have to have really good hardware and analytical skills up. For example, let’s take RxJS, on which I’ll be leading a workshop during NG-POLAND 2017. This is not about Angular requiring Rx’s, we just need


async pipe or subscribe to get the show on the road! And it’s also not about making operator overviews like map, flatmap, merge, etc. (refer to Hammer Instruction Manual). And for the advanced “hot n’cold observables”. Greeeeat….. It’s really about understanding the idea of ‘streams’. Imagine that we can depict the entire world we live in as streams. How do delivery companies work, restaurants, traffic or even TV. There are a lot of observers and observables here. Some of them are cold, some of them are warm and some are really hot. You can simply visualise it! There’s buffering here and backpressure there. How long does the subscription last? When does a certain stream end? We can observe all of this in our surrounding world because programming is based on imitating the real world, isn’t it? After such cognitive journey RxJS is just an implementation of a concept that we have already understood earlier. But going back to the question – I’m preparing and developing great training programs involving JS technologies :) You’re more than welcome to contact me ;) What do you do in your free time? Lately I’m pretty absorbed with renovating my apartment ;) besides that, I love outdoors and travel. Whether it’s a stroll around the block or an excursion to another continent. In the past 2-3 years I’ve spent more time on an airplane than in a car. I’m also considering buying a plot of land to do some gardening… What’s your favorite movie / book? I have a lot of favorites :) Forman’s: One Flew Over The Cuckoo’s Nest and Amadeus, Kubrick’s Shining, Von Trier’s Dogville, Kusturica’s Underground, Webber and Rice’s: Jesus Christ Superstar and many others. As it goes for books: Herbert’s Dune. You haven’t really asked me this, but I love music and I can’t imagine a day without a few hours of some good quality beats. Pink Floyd, The Cure, Joy Division, The Doors, and The Beatles rule in this field! For the ones that only link The Beatles to Rock n’Roll, it’s time to do your homework and listen to Sgt. Pepper’s!


Shmuela Jacobs Frontend Developer and Consultant Shmuela Jacobs is a frontend developer, consultant, speaker, and community activist. She is the founder of ngGirls organization and Angular Nights meetup group. During her academic studies (M.Sc. in Information Management Engineering and B.Sc. in Physics) Shmuela had combined her passions of coding and teaching as a software developer, teaching assistant, science museum guide, and researcher. Today she continues to enjoy these activities developing with Angular and sharing her knowledge and experience in meetups and conferences. Shmuela lives in Tel Aviv with her husband Haggai, their deaf dog Ziggi, and one-eyed cat Franco.

Can you tell us something about yourself? Like, who are you and what do you do? Hi :) I'm Shmuela Jacobs. I live in Israel. I'm a self-employed developer, consultant and trainer, focusing on Angular. I like sharing my knowledge in conferences and meetups. This also gives me the opportunity to travel and make new friends! I'm the founder of ngGirls, which aims to increase diversity in the tech world. With ngGirls we have free workshops for women who are beginners in programming. They learn Angular with the help of volunteering mentors. It's really amazing to see how ngGirls is getting known around the whole world. What made you choose the path of a programmer/techie? Iâ&#x20AC;&#x2122;ve encountered programming a few times throughout my life, but only during my Masters studies it really got to me. I started working as a student with C++, Java and Python. I realized that the world of possibilities is infinite - you can put almost any idea that you have into code, and share the program with others! After a short while I saw that everything evolves around the Web. I started going to meetups to learn more about fronte-end frameworks, and thatâ&#x20AC;&#x2122;s where I found out about AngularJS. I loved it, so I took a course and started working in a consulting agency. After gaining some experience and starting to work with Angular (the new version), I decided to


become self-employed so I can be free to go to conferences around the world, teach, learn, and work wherever I want. Is that what you dreamed of doing? I actually wanted to become a singer/songwriter, and even wrote a lot of songs as a teenager. But I realized that I'm not serious enough in pursuing this dream, and that there are much more talented and hard-working people in the music business. After letting go, life took me to this new exciting direction - programming and software engineering. I'm still taking singing lessons and enjoying Karaoke. If you're into jam sessions - let's rock! Do you think that software rules the world? Software definitely has a major role in today's world. We rely on it for small things as setting up the alarm clock, to major things such as managing our money in banks and flying aircraft. But if we take software away, the most meaningful things in life are still there: family and friends, pets, hobbies. We'd still enjoy direct communication and creativity. Nature is always out there for us to take a walk, relax and observe. And of course the basics such as air, water, and food don't depend on software. Why Angular? I fell in love with AngularJS in a meetup, after encountering some other frameworks that were available at the time. I like the declarative style. It makes it really easy to start building an application. And of course the ng-model with two way data binding - the speaker at the meetup used the word "automagically" for everything that happens in AngularJS. I started learning what's under the hood. As I became more involved with the AngularJS community, I started learning the new version - Angular, which takes what I love in AngularJS one one hand, and presents new and better concepts on the other. Angular is more than a framework, it's a platform designed to help programmers focus on creating wonderful apps and forget about boring stuff like set-up and boilerplates. The Angular team is focused on giving both developers and clients the best experience. And the community is so warm and welcoming, you can always feel free to ask questions and get involved. How much do you travel? Lately I've been traveling a lot. I have this opportunity with every conference I take part in around the world. I enjoy visiting new places, learning about the local history and experiencing local traditions. I enjoy also coming back to places I've already been to, walking in familiar streets and venues. And, as part of the conferences, I get to meet people from the Angular community and catch up with them again in other events. What motivates you? Seeing people put effort in something they like and then smile with the sight of success. This what makes the world go round. What do you wish for? I wish that everybody could live their life, doing what makes them happy, without having to worry about the situation around them. I wish people and governments who have more power and control would think about us, the common people, as human beings and not as play tools, so that we can all live our lives in peace. In our core we're already nice to each other, so just let it happen. I wish that everybody could see the bright side in life, and be positive about achieving goals and dreams.


ngGirls @ ngPoland - Sunday, November 19th. A free Angular one-day workshop for beginners * We still need more mentors, and thereâ&#x20AC;&#x2122;s room for more participants!

ngGirls is an initiative that aims to introduce women to the world of technology and increase the diversity. It focuses on Web-development, and mainly the Angular platform. ngGirls organize various activities, targeting women of all levels of expertise: from beginners, who want to try out coding, to experienced developers, who can get more involved in the community and become role models. ngGirls Workhops The main activity of ngGirls is free, full-day workshops, in which the participants - women who are beginners in the programming world, build and deploy their very first Web application with Angular. During the day they follow an open-source tutorial, with the guidance of volunteering, experienced mentors.


How it all started A bit more than three years ago, ngGirls founder Shmuela Jacobs had the privilege to participate in the very first Django Girls event, which was held as part of PyConf. Shmuela has not been a coder from young age, but at a certain point in life she started getting more involved in coding, and realized it can be an enjoyable career path. But the same fears and biases she had at a younger age were still emerging every now and then. The experience in Django Girls and similar events, where she met more women who have the same concerns, and mentors - guys and girls - who set an example of the developersâ&#x20AC;&#x2122; openness and willingness to help, motivated her to keep going.

During her explorations of the web-development world, Shmuela has encountered AngularJS. Simple and intuitive with is declarative style, this was the gate to step into a professional path in front-end development. As her knowledge and understanding grew, so has the framework, and a new version of Angular was released. It is now not just a framework anymore, but a whole platform that helps developers easily set up and create web applications while concentrating on the app and not its scaffolding. Recognizing the power of this platform, especially with the Angular-CLI, Shmuela thought this could be an excellent opportunity to bring programming closer to women. Following just a few simple steps of installations, an Angular project can be generated and served in no time. With this starting point it is easier to start learning HTML and JavaScript, and to link between the app structure and its logic. With the help of some friends, Shmuela decided to organize a whole day event, based on the model of the Django Girls workshop. Space was available for this at the Google Campus in Tel Aviv. For writing the tutorial she leveraged the local community: she organized a meetup where each participant wrote a chapter of the tutorial. Following posts on Facebook many developers applied as mentors, and many women as participants. The event took place exactly one year ago, on November 18th, 2016. The warm and welcoming Angular community was happy to embrace ngGirls and to help organize more events around the world. The second event was held as part of ngVikings in Copenhagen. There, one of the mentors, Robert, got hooked up with the idea and started organizing ngGirls events by himself. Today he is an integral part of the ngGirls team, alongside Revital who has been helping since the beginning.


ngGirls @ ngPoland is the 12th ngGirls event. Another workshop is already set for Poznan for December 9th. There are many more events planned for 2017 and 2018. Itâ&#x20AC;&#x2122;s amazing to witness how companies, organizations and individuals put an effort into organizing ngGirls events - reaching out to local communities and universities to find participants and mentors, setting up the space, coming up with swag and sponsoring the whole event. The goal of ngGirls is to have many workshops all around the world, to reach as many communities as possible. The team also thinks about ideas to encourage more experienced women developers to keep growing in their profession and take more significant roles in the community. Anyone who would like to help - by organizing an event, giving ideas and suggestions, spreading the word, or any other way, is more than welcome to get in touch with the ngGirls team.


Behind the Code Magazine #1