Personvern og beskytte egen data

Nå i disse tider er det blitt ganske mye fokus på personvernet og det å ha en fornuftig praksis i forhold til å ta vare på- og beskytte data som man har på nettet, om det nå er data i skylagringer som dropbox og google drive, eller om det er e-post.

Litt av årsaken til at jeg ville skrive litt om hvordan jeg gjør det personlig i forhold til disse tingene, er på grunn av et par artikler som har kommet siste dagene;
Den ene, som omhandler Yahoo, kan du lese på denne lenken: https://www.wsj.com/articles/yahoo-bucking-industry-scans-emails-for-data-to-sell-advertisers-1535466959

Det er hovedsaklig at de går ut til annonsører og sier at de scanner e-postene til kundene, ca 200 millioner innbokser, og kan tilby detaljert informasjon derifra som kan brukes til målrettet reklame.

Den andre artikkelen omhandler at landene som utgjør “five eyes,” en ring av allierte land som utveksler (konfidensiell) informasjon og etteretning og består av USA, Storbritannia, Australia, New Zealand og Canada, nå har bestemt at bedrifter som tilbyr tjenester innen kommunikasjon og informasjon skal bygge inn funksjonalitet slik at myndighetene skal få full tilgang til dataene som ligger hos de. Lenke til full artikkel er her: https://www.cnet.com/news/us-five-eyes-allies-take-aim-at-tech-companies-over-encryption/

Hvorfor bør man beskytte data mot andre parter?

Dette handler ikke noe om at man har noe man må skjule for myndigheter eller andre parter, men det handler om respekt for privatlivet og andres eiendom, om det så er filer eller kommunikasjon som e-post eller meldinger. Og det faktum at om en part har en “bakdør” inn i et system, er det bare et spørsmål om tid før noen andre har det.

En analogi som er brukt tidligere for dette er at man hadde heller ikke likt at noen kunne stå på utsiden av vinduet i huset eller leiligheten din og registrere alt du gjør og sier i ditt eget hus, selv om det ikke er noe som er skadelig eller ulovlig. Det er det som fort blir tilfelle med data som ligger på nettet om man ikke tar noen forholdsregler for det.

Som nevnt i de artiklene jeg lenket til over, foregår slikt i stor grad allerede, og det er store krefter i sving for å få enda mer tilgang til folk sine data og kommunikasjon. Tjenester som er geografisk lokalisert i de landene som utgjør “five eyes” er spesielt utsatt siden de er underlagt deres lovgivning. Noen bedrifter har vært flinke med å beskytte innholdet i tjenestene ved å kryptere dataene til brukerne på brukerne sine enheter før opplasting. Det gjør at andre parter ikke kan lese dataene selv om de på en eller annen måte får tilgang til serverne de ligger på, annet enn om krypteringsnøklene også er tilgjengelige på serveren. Dessverre er det nok ikke flertallet som krypterer data. For eksempel vil kryptering av innholdet bety et stort problem for de som lever av å hente ut informasjon fra kundenes data som ligger på serverne for å selge til annonsører, som f.eks Yahoo, sannsynligvis Google, og flere.

Det gjør at om de får et pålegg fra f.eks myndighetene om å utlevere data, eller blir hacket og får innhold på avveie fra serverne, kan dette være i klartekst og kan leses av hvem som helst.

Et eksempel der data er kryptert på brukernes enheter, lastet opp på en skytjeneste, men likevel er utrygg på grunn av at krypteringsnøklene også ligger på servere der, er Apple i Kina. De ble pålagt av kinesiske myndigheter å lagre krypteringsnøklene til kinesiske brukere på servere i Kina, noe Apple gikk med på. Det gjør at kinesiske myndigheter kan få tak i en nøkkel- og data tilhørende en bruker, og da ha tilgang til alt innholdet. Da forsvinner også hensikten med krypteringen, til en viss grad. Dette tilfellet kan leses mer om her: https://www.wsj.com/articles/apple-to-start-putting-sensitive-encryption-keys-in-china-1519497574

Alternativ til tjenester

Jeg er nok kanskje over gjennomsnittet opptatt av det med datasikkerhet og prinsipielt personvern, men det er også mye sunn fornuft i det om man tenker litt gjennom det. Det er ikke en dårlig ting å ta ansvar for egne data og egen kommunikasjon.

I den forbindelse har jeg tatt i bruk andre tjenester enn de “vanlige” som er kjent, som dropbox, google gmail, facebook messenger, m.m.

For e-post bruker jeg Protonmail, som er åpen kildekode. Dette har jeg også nevnt tidligere her. Det er en e-posttjeneste som er lokalisert i Sveits og som har alt innholdet på serverne kryptert. Man kan også sende e-post med ende-til-ende kryptert innhold til alle protonmail-brukere, eller andre brukere av andre tjenester så lenge de andre tjenestene støtter PGP-kryptering. Protonmail får ikke på noe tidspunkt tilgang til krypteringsnøkkelen som låser opp innholdet på serveren og i e-postene dine da den kun vil være på dine enheter som du bruker til å logge på med, såkalt “zero access policy.” De har apper til iOS og Android, og en god og brukervennlig webside. De støtter også 2-faktorautentisering. De har en gratis tjeneste med èn e-postadresse og 500 MB lagring, men du kan også betale ca en 50-lapp pr mnd for opptil 5 adresser og 5 GB med lagring. Du kan lese mer om sikkerheten deres her: https://protonmail.com/security-details.

For skylagring, hvor jeg tidligere har brukt Google Drive og Dropbox, har jeg nå gått over til Tresorit. Det er en tjeneste som fungerer likt med dropbox, men all data blir kryptert lokalt på enhetene før opplasting og ligger da trygt på serverne deres. De har heller ikke tilgang til krypteringsnøkkelen som blir brukt til å kryptere dataene med ved opplastning, så selv om innholdet på serverne skulle komme ut, har de ingen mulighet til å dekryptere den dataen. Tjenesten er brukervennlig, og fungerer ganske likt med dropbox, men er mer fleksibel. Man har apper til stort sett alle mobile platformer, samt Windows, Linux og Mac. Du kan også lese mer om sikkerheten her: https://tresorit.com/security. Prismessig, for 200 GB lagring og opp til 5 enheter tilkoblet koster et abonnement ca. 100 kr mnd.

I forhold til meldinger bruker jeg Signal. Det er gratis, åpen kildekode, og det er apper til alle mobilplatformer, samt desktop apps til Windows, Mac og Linux. Den støtter, i tillegg til meldinger, video- og lydsamtaler. Alt er ende-til-ende kryptert så det er trygg kommunikasjon. På Android kan den også settes som standard meldingsapp og sende/motta vanlig SMS i tillegg. De er dog ikke krypterte. Det er ifølge flere steder den beste krypterte meldingsappen tilgjengelig nå. Andre apper, som WhatsApp, bruker Signal sin krypteringsprotokoll, men de har andre forhold som gjør at jeg stoler mer på Signal direkte. Du kan lese mer om Signal på https://signal.org. En artikkel fra Wired omtaler også Signal her: https://www.wired.com/story/ditch-all-those-other-messaging-apps-heres-why-you-should-use-signal.

DNS

DNS-oppslag er noe som tradisjonelt sett har- og fortatt blir sendt i klartekst gjennom UDP. Om man bruker standardoppsettet på routeren man får av internettleverandøren sin, er dette normalt sett til DNS-tjenerene som driftes av den internettleverandøren. Stort sett helt ok, men det som er greit å tenke over er at de har da full oversikt over hva du går inn på på nettet.

En kjapp påminnelse av hvordan DNS fungerer:
Alt på internett har sine internettadresser, såkalte IP-adresser. Et eksempel er 213.162.246.78, som er larshoydal.no.
Når du skriver inn www.larshoydal.no i nettleseren, vet ikke den på hvilken server denne nettsiden ligger. Den sender da en forespørsel til DNS-tjeneren den har fått oppgitt og spør etter IP-adressen til dette vertsnavnet. I alle tilfeller hvor et slikt vertsnavn blir brukt i stedet for en IP-adresse direkte, vil denne prosessen skje. De som kontrollerer denne DNS-tjeneren kan da ha full oversikt over hva du på din IP-adresse (som du har fått av internettleverandøren din), søker opp av vertsnavn på DNS-tjeneren.

Det som ofte blir tatt opp som et scenario er at disse DNS-tjenerene ikke nødvendigvis har all verdens med sikkerhetsfunksjoner eller ikke er oppdatert programvaremessig, slik at de kan ha potensielle svakheter som kan som utnyttes av f.eks personer med ikke så gode hensikter. En slik potensiell trussel er  at i stedet for å få den korrekte IP-adressen for et vertsnavn, kan du få en annen som peker til en ondsinnet nettside. Dette skjer ikke ofte, men det er ikke umulig. Dette er kjent som et “man in the middle” angrep der en ondsinnet part plukker opp DNS-forespørselen din på vei til DNS-tjeneren, utgir seg for å være den korrekte DNS-tjeneren, og sender et uriktig svar tilbake.

Det som kan være anbefalt er å bruke en av de større DNS-tjenerne på internett, som f.eks CloudFlare eller Google. CloudFlare er den raskeste serveren, og har ingen logger over hvilke oppslag som blir gjort mot den. Den har IP-adresse 1.1.1.1 og 1.0.0.1 om man vil bruke den. Den støtter også en rekke sikkerhetsfunksjoner som f.eks DNSSEC, og har støtte for DNS over TLS og DNS over HTTPS.

Et alternativ, som jeg bruker selv, er å få kryptert DNS-trafikken mellom DNS-serveren og enhetene dine gjennom DNS over HTTPS eller DNS over TLS. På den måten kan ikke noen lese det av på veien og/eller sende uekte svar tilbake til enheten din. Dette er funksjonalitet som er ganske ny, og som ikke er så veldig utbredt ennå.

En brukervennlig programvare som benytter DNS over HTTPS er Simple DNScrypt. Det kan man laste ned og installere på Windows. For Linux eksisterer en annen versjon som heter bare DNScrypt, og er basert på kommandolinje. Begge de kan man enten sette opp som bruk på bare den enkelte enheten, eller som en intern server på lokalnettet ditt slik at du ber de andre enhetene dine sende DNS-oppslag til den lokale IP-adressen til den enheten på nettet ditt. Det bør i så fall være en statisk IP-adresse på den enheten, ikke en som kan forandre seg ved å få den servert gjennom DHCP.

Normalt sett er ikke dette noe mannen i gata trenger å være noe redd for, men om man ikke er redd for å leke litt med innstillingene, og vet litt hva man gjør, er det en grei ting å sette opp for å ha mer kontroll over hvilken informasjon folk kan få tak i når du sender slike forespørsler over nettet. I USA er dette blitt et ganske stort tema etter at internettleverandørene der fikk frie tøyler til å bruke denne slags informasjon i bl.a annonsesalg og kan i mye større grad enn her bestemme hva kunder skal få se og ikke få se på nettet, noe som står mer om denne artikkelen: https://eu.usatoday.com/story/tech/news/2017/04/04/isps-can-now-collect-and-sell-your-data-what-know-internet-privacy/100015356.

Jeg kunne skrevet mye mer om forskjellige temaer innen dette, men jeg føler at det jeg har nevnt nå dekker det mye av det som folk fleste vil kunne relatere til. Merk at alt dette er basert på egne erfaringer og anbefalinger og egene undersøkelser jeg har gjort selv, så det er et subjektivt innlegg. Noen vil kanskje kalle det litt over toppen for paranoia, men for min del så handler det bare om å ha kontroll på hvor min kommunikasjon og lagrede data er og hvem som har tilgang til det. Send meg gjerne spørsmål og kommentarer om i forhold til innholdet her, om du har noen av de.

Begynt på Cisco-sertifiseringer

Jeg har endelig fått satt i gang med sertifiseringer innen nettverk gjennom Cisco. Foreløpig har jeg gjennomført CCENT – Cisco Certified Entry Networking Technician, noe jeg er glad for, og det skal bli mer.

Jeg har alltid interessert meg for- og kunnet en del om nettverk, men ikke noe spesifikt rettet mot spesielle leverandører og merker.

Det er Cisco jeg girer meg imot nå. En viktig grunn til det er at de er bransjeledende innen profesjonelt datanettverk, og det å kunne både Ciscos spesifikke systemer og protokoller er viktig i profesjonell sammenheng, og interessant og moro i privat sammenheng.

Jeg tok CCENT (Cisco Certified Entry Networking Technician) i slutten av juni i år, og driver nå å leser på neste trinnet, som er CCNA (Cisco Certified Network Associate). Begge er innen Routing og Switching.

Neste på planen etter den er fullført, er å gå i gang med CCNA Cyber Ops for data- og nettverkssikkerhet. Det virker veldig spennende siden jeg er ganske opptatt av data- og informasjonssikkerhet. I et digitalt samfunn hvor trusler og overvåkning foregår fra mange både kjente og ukjente aktører, er det å sikre kommunikasjon og data på best mulig måte et viktig tema.

Nettverk, og ikke minst sikring av nettverk og infrastruktur, er viktige emner innen dette, og siden jeg nå jobber en del med nettverk, er det viktig for meg å få sertifisert meg innen “best practice” og kunne det på lavt nivå, slik at man gjennom det kan forstå hvordan alt henger sammen, og på den måten kunne forutse og forebygge utfordringer med- og eventuelle svakheter i forhold til sikkerhet.

Jeg ser absolutt frem til å få dykke dypere ned i spennende og omfattende emner rundt dette, og hele tiden lære mer og få styrket kompetansen på dette, siden nettverk og digital kommunikasjon er noe som bare blir mer av og mer komplisert i tiden fremover.

Oppdatert:

CCNA i routing og switching har nå blitt gjennomført og bestått, så jeg er nå den stolte innehaver av denne sertifiseringen.

Upping the C++ learning

It is really fun to have a plan and getting to learn more — and use the increasing knowledge in programming for building software and tools, and realizing my ideas!

Earlier, I started to get more serious about learning development and coding. Me and a few friends is starting out with the Unreal Engine, and having fun with that.

Since I like to code some from before – like PHP, some JavaScript, etc – I felt like this was a great opportunity to learn and use C++.

I know some of the basics principles from PHP, like arrays, variables, simple types, and stuff like that, but I hadn’t a lot of experience with memory, pointers, and other likewise principles from machine code.

From before I’ve read and worked through a book called “Beginning C++ Through Game Programming” and got some insight and knowledge through that, but I now felt I had to go deeper into the matter and learn more to be able to use it for more productive purposes.

I also enrolled in some courses on Udemy.com within programming and Unreal Development that I’m currently working through. I can warmly recommend these, since they are thorough and takes it in a good pace.

Now, after making a request on Mastodon (a lot of devs there!) for a good intermediate level book on C++, I have found – and ordered – a book that I got recommended, and that’s looking good for my purpose. The book in question is “C++ How to Program.” It has released the 10th edition, but I bought the 9th edition used on Amazon.co.uk (since I live in Norway), and it seems promising. Since the latest edition cost about $155, I settled for the used version for about £30.

I’m really looking forward to getting it, and get to start working through it!

Long time, no see

A small update on what I’ve been doing lately, since it’s been a while since I posted. Includes: 3D modelling with Blender and developing with C++ in Unreal Engine.

So it’s been some time since my last post here. I have used that time mainly working, but I’ve also shot some photos and done some code learning.

One of my biggest resources for learning, is Udemy.com. I have purchased some courses there, regarding Unreal Development with C++, and 3D modelling with Blender. For me, this works perfectly. I’m learning progressively and get the work down through the challenges in the courses.

I’m quite happy with my progress. I’m by no means any expert in any of the fields yet, and I will call myself an amateur enthusiast at the moment. My plan is to 1) complete the courses and 2) work on my own, learning what I need to make games and assets without a lot of limits in competence and know-how.

The latest model I made in Blender, is this Chess Pawn below. I haven’t applied any material or texture to it yet, though. Not too shabby after [never used blender –> 3 days].

And in Unreal Development, I’ve just finished a main challenge in the course, over multiple videoes and smaller challenges, of building a working word game in pure C++, with difficulty settings, error handling, class building, etc. Quite entertaining and exciting.

Now I’m currently learning to build custom components with C++ in the game engine itself. Progress is happening, and I like it.

I hope it will be a bit shorter until my next post, but this is what’s currently happening at the moment. 🙂

Mint on MacBook Air

I installed Linux Mint 18.1 (with MATE desktop) on my MacBook Air yesterday (coincidentally after watching “Snowden” :)).

I got it all up and working, but one issue remains, and it looks like there is no good fix for it yet, and that is the FaceTime camera in the front.

I can find all info about it in terminal using:

lspci -vnn

and get the following result:

02:00.0 Multimedia controller [0480]: Broadcom Corporation 720p FaceTime HD Camera [14e4:1570]
 Subsystem: Broadcom Corporation 720p FaceTime HD Camera [14e4:1570]
 Flags: bus master, fast devsel, latency 0, IRQ 59
 Memory at c1500000 (64-bit, non-prefetchable) [size=64K]
 Memory at a0000000 (64-bit, prefetchable) [size=256M]
 Memory at c1400000 (64-bit, non-prefetchable) [size=1M]
 Capabilities: <access denied>
 Kernel driver in use: bdc-pci
 Kernel modules: bdc_pci

I have tried the fix for earlier systems by using a package called isight-firmware-tools and wrapping the AppleUSBVideoSupport file, but no such luck for me. I’ll try with a different version of the VideoSupport file before giving up on that, though.

Another alternative I’ve come across is a commuity made alternative driver for the FaceTime camera. That is a reverse engineered linux driver. The source for that is on GitHub here: https://github.com/patjak/bcwc_pcie

I haven’t tried that yet, but I’ll give it a go later today and write a update here about how it goes.

If anyone comes across a good fix for this (for debian based systems) and accidentally also comes across this post, please give a comment about it below here.

We’ll get it fixed somehow. ^^

FreeCodeCamp progress

So, I’ve been using the website FreeCodeCamp.com for some days now, and I’m pretty happy with it.

The first challenges took me through the basics of HTML and CSS (stuff I knew before, but still great for beginners), how to build responsive with Bootstrap, and then some jQuery.

All this is a part of one of the certificates they give me when all is completed, the Front End Development Certification.

I still have a long way to go to complete this certification, though, but it is very fun to work with, and the challenges are open for creativity for the user, and they also point to the community and self learning (googling) for figuring out stuff you want to do in the projects.

I have one more project to do before moving on to a section of JavaScript, and further down the road it is Object Oriented programming, Algorithm scripting and APIs.

The length of the sections vary relative to the complexity of the subject. All from 2 hours to 150 hours (Advanced Front End Development Projects).

And after that it is over to server side programming and working towards the Data Visualization Certificate and Back End Developing Certificate.

The goal is to complete all these, and by that get the Full Stack Developer Certificate.

Since it all is built upon learning-by-doing in small chunks, and doing larger projects, as well, for each section, I feel I’m learning this in a good and structured way, and I would heartily recommend this website to anyone who wish to learn web development.

One of the projects in the section I’m doing right now, is to make a “tribute page” on codepen.io. Codepen.io is the service the projects are built in, and is a great service I can also recommend.

I’ve done this project, and you can see it on the codepen url here: https://codepen.io/lkhoydal/pen/zwZYKy (which include both the finished page and the code. A little bit like GitHub, kind of, sort of.

I’ll continue posting progress I’m making, with related projects I’ve done and other stuff if I come across, both on FreeCodeCamp.com, but also in other regards about learning code that can be useful for others.

Encryption in mail and other services

Some of the addons and software that I’ve been using so far for encryption, and that I’ve registered a profile at keybase.io and using my key pair I got there.

So, I have been looking a bit into this the last few days, and I think it is pretty interesting to tinker with!

I started with me wanting to protect my privacy some more, and with that got my self a VPN connection. And after that I started reading on PGP, and encryption in general.

Now, I’ve got myself a profile on Keybase.io, with a corresponding public and private PGP key for that. On keybase I have also verified myself on the social networks I’m on, as well as my ownership of this website here. You can take a look at my profile, and perhaps make your own (?) here: https://keybase.io/lrshdl

I’m now using the key pair I’ve got on that site for encrypting and decrypting e.g online mail at gmail.com, encrypting files when I need to, and plain text.

I also wanted to mention the addons and software I use for this here, and perhaps that can help others, and maybe I can get some feedback on good alternatives for these, etc.

What I use for encryption / decryption at the moment

I found that there was multiple alternatives for addons Chrome / Firefox for gmail encryption and decryption. These are all open source and they store the private key and pass phrase locally in the browser/computer and encrypts the text before it comes in contact with the gmail system.


## A small note for those who who are new to encryption (newer than me, that is, because I’m pretty new, too): 

There are two types of keys you get when you get a key pair; the public key and the private key.

The public key is what you can give away to others so they can encrypt text or data they want to send to you, and then you are the only on who can decrypt it with your private key. The public key locks the text/data down, and the private key unlock it.

So if you want to send some encrypted text to a friend, you need to have his/hers public key to encrypt it, and they can then decrypt it with theirs private key.

I hope that makes some sense.

How it works


Mailvelope

This was the first Chrome extension I tried. In this extension you can add your private key for decrypting emails others send to you, and you can add other peoples public keys for encrypting emails you’re sending to them.

It usually found the corresponding public key according to the “to:” address I wrote in the mail composer in gmail, but there were some small hickups. Like the overlay button for encrypting the mail did go away after 4-5 seconds and I had to choose “reload elements” in the extension button in the top right corner to get it back, but other than that it worked pretty good.

It is simple and effective to add key pair, or generate a new pair of keys (private and public), and add other’s public keys to the list of keys in the extension settings.

Link to project: https://www.mailvelope.com/en

CryptUp for Gmail

Browser extension for Chrome and Firefox.

This is the one I’m currently using. It has a good inline design and function to-, and work seamlessly with the gmail browser app. It decrypts inline pretty well, adds a “secure compose” button for sending encrypted mail. It also search the key servers for public keys when you add recipients to the mail, if you haven’t manually added the public keys in the extension directly yourself.

I have tested it somewhat and I’m happy with how it works and the workflow in the gmail app. This is also a open source project (the only type of project I trust).

You have the option to generate a new pair of keys (private and public) and upload the public key to the key server. I just imported my keybase.io key pair and use that for primary keys.

Link to project: https://cryptup.org/

GPG Keychain

In addition to the Chrome addons mentioned above, I use the GPG Keychain software on my MacBook Air to manage keys and encryption locally on my computer.

With this I can import key pairs, public keys, and export my public key with ease, and if I copy a PGP Public Key text, it automatically detects it and ask if it should import it to the keychain.

It adds options under the “services” menu throughout MacOS to encrypt, sign, and decrypt both text and files with the key of choice. A lovely tool to have, in my opinion.

I do have the Windows equivalent on my main computer that is called Gpg4win, though the Mac version is easier to use because of how the system works.

Overall

I think it’s pretty great to have the possibility to encrypt and decrypt stuff at my leisure once things are set up.

I didn’t use too much time to get my Keybase.io account going. Then I could use my key pair based there as a verification, and for primary encryption / decryption since other people easily can get my public key on my profile there.

Once I had my addon for gmail up and running, writing encrypted email were a breeze, as well.

The only challenge now is to get more people using it for when it is needed. When encrypted mail works like unencrypted mail, it is no reason to not use it, right? 😀

I hope that people with more knowledge corrects me if needed, and everyone is of course welcome to leave a comment with other recommendations, experiences with services, etc.

Learning web coding in a good way

I have said that I want to learn more coding and get better at web development. Earlier (like 2004!) I did some PHP coding, including MySQL, HTML and CSS. Nothing serious, though, just learning it since I thought it was fun and challenging.

As the years went, I did tinker with it still, and learned some javascript and did use jQuery, as well, but just for personal stuff like making systems for organizing my books in a fancy way or making my own shopping list.

Now I’ve been idle on that front for perhaps 4-5++ years, and A LOT has happened in that time. In came things like nodeJS, typescript, angularJS, npm, etc, and I don’t know too much about it. (Yet.) I know how it works, but I’m quite outdated in form of coding it and organizing the code well.

So — this I want to do something about!

I have, not too long ago, purchased some courses over at Udemy.com about nodeJS + angular, VueJS, and general web design techniques and tips, and they all look promising with good instructors, good content and all that, so I look forward to working through them and complete them.

FreeCodeCamp

In addition to Udemy, I stumbled across a website, on recommendation from a friend, called FreeCodeCamp.com. I want to write a few words about this website here.

This site offer learning through simulation kind of an actual working environment a developer might have. After learning you the basics of the different programming languages, of course, that comes in chunks for all to master.

It is designed to let the user benefit from the community, both in the form of teaming up for doing certain projects, mostly fictional, but still work-like, and for getting help in specific problems a user might run into.

You’ll get certifications after completing a certain amount of tasks and challenges, and it exists multiple certifications for e.g front end dev, back end dev, etc. And when all those certifications are done and bagged, you get to work on real life projects for nonprofit organizations for experience.

They even offer help and resources for job search within development when you’re done.

And it is all free, since they are a nonprofit, open source organization. You can donate from $3++ a month to them if you wish.

I have a principle of donating to open source- and free organizations / services I’m a part of or using since I usually think they do a great job or provide a great service then, hence me being there in the first place.

I’ve just come about starting on the challenges for responsive web design with Bootstrap there now — something I’ve done some work with (again, personally, not profesionally) earlier, but it is nice to get “the correct approach” to it.

I can’t wait to get deeper into it and working more with it. So far it looks very good, and I can absolutely recommend this service for everyone who’s considering to start learning web development.

If you have your own personal experiences with this service, or perhaps know of similar services, you’re welcome to leave a comment below.