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.