Categories

Meta

Author: Thomas

I recently applied for and was accepted to WorldQuant University’s Master of Science in Financial Engineering (MScFE) program! So far I’m enjoying the experience and the online courses fit my lifestyle perfectly.

With some of the math heavy courses coming up I have been reflecting on the entrance exam, their Quantitative Proficiency Test. I found this test extremely hard to study for. First, I graduate almost 6 years ago, and this sort of math is not a part of my everyday work. Second, the topic list is extensive and fails to provide any details on how deep into each subject one should go. The Official Guidance:

I figured I would share how I studied and hopefully this will give you a starting point.

I wanted to get a high-level overview and inspired so I started by watching and taking notes of the “Essence” series on YouTube by 3Blue1Brown. Essence of CalculusEssence of Linear AlgebraThese two series are incredibly well put together, I found them genuinely entertaining, and a great place to start. NO these will not replace doing actual problems.

My next stop was practice problems and I turned to Khan Academy. Khan Academy seems to offer problems up to a first year of undergraduate university level or so. What I like about Khan Academy is that you can work through problems quickly, if you get stuck they have worked solutions, and they offer quizzes to test where you are. For me this meant that I could quickly hone in on specific areas I was weak on and cover these topics before getting into more difficult problems.For each of the subjects linked here you can do the Course Challenge at the bottom. When you pass it you are ready to move on.Differential CalculusIntegral CalculusMultivariate CalculusLinear AlgebraDifferential EquationsStatistics and Probability

Full Disclosure :I gave myself two full weeks to review these topics and that was barely enough time for me. I was truly only able to get through all the Khan Academy material and was in the process of doing mid-terms and going deeper on each of the MIT courses when I wrote the test. The exam I wrote (I assume they draw from a random bank of questions) had one question on differential equations, so the fact that I hadn’t gotten there yet wasn’t too bad.Also, half the test is on statistics and probability, so logically you should spend half your study time on those topics if possible.

For the past two years since buying my Dell Precision 7250 laptop I have tried to use the Sierra Wireless card multiple times and I always got stuck at the SIM PIN2 locked error. This has always been the end of the road for me, as after I talked with whichever telecom’s SIM I was trying, there was no hidden PIN2 locking the SIM.

So I opened my laptop up to install the SIM for testing, while ensuring the adapter settings were as per the Lenovo forum’s recommendations: DHCP enabled, and automatically obtain IP and DNS.

… AND still getting the PIN2 error.

Frustrated with wasting another few hours on what must be a botched card, I’m removing the SIM when I realized “hey these two wires next to the card are NOT attached”. The antenna wires were just tucked away next to the card!

Dell Precision 7520 – Sierra Wireless Antenna Connection

I was too excited to take a before picture and YES this obviously worked!! So please check your wires, it seems so obvious, but I guess you see what you are looking for. I also just assumed Dell would have hooked everything up?

So when tech support says “have you tried plugging it in…?” They were certainly right again!

Yes, On One Condition!

Why Julia, Why Now?

Programming is a diverse field! You have people from all around the world, tackling every sort of problem imaginable with their computers. From web-developers, to mobile app creators, from legacy code maintainers, to scientific computing mathematicians, many people need different features and different languages.

Julia is a relatively young language, released in 2012, and was designed to meet the high-performance needs of numerical and scientific programming; while being a general-purpose programming language. Depending on what you are looking to build now or in the future Julia may just be the language for you!

Nassim Taleb and Julia

For those of you who don’t know who Nassim Taleb is just bear with me for a minute on this tangent.

One of Nassim Taleb’s areas of expertise is in the field of risk management, and if you are going to undertake the commitment of learning a new programming language you should think a little bit about risk. While I do believe that you can’t really choose a wrong programming language, depending on what you are trying to get your computer to do, some languages will make this task easier or at least more intuitive. Nassim Taleb often discusses a risk management technique he calls “the barbell strategy”. The barbell strategy was initially applied to investments. Many of you are probably familiar with a graph that looks like the following:

Many investors in search of a higher return, choose to be somewhere in the middle. They underestimate their risk exposure and end up going bust!

The barbell strategy suggests, putting what you need at the left side of the chart, where you get a small and safe return. Then to increase your risk exposure, put some assets to the far right, where they may get a large return, but if you lose them you will not be broke. You get the potential for some large returns on a portion of your assets, while you keep the assets you need safe.

Umm… I Thought We Were Talking About Julia?

Yes! So my main programming language is C#. I consider C# to be a safe language with plenty of demand and a solid future (JavaScript would be another great example). With this in mind, I can invest time into learning Julia, with the goal of expanding my data science and numerical programming abilities. Sure there is R, or Python, or Scala, or some others, but I have decided that Julia offers a great potential (return) and that now is a great time to start learning it. As Julia continues to grow and if it does become the language for specific applications, I will have years of experience at that time.

If you want to become a software developer today, should Julia be your first language? It is fairly safe to say no. BUT on the condition that you can handle most the programming challenges in your field already with a language that lets you share and work on code with others, then Julia would be a great skill to add to your toolkit!

Stay tuned for more about getting started with Julia and my experience so far.

Knowing Enough C# to be Dangerous

Awkwardly wondering what to do after you get through your first C# tutorials?

Learned the C# syntax, but now what?

Intermediate C# Developer

This post builds off my last to help direct you on your path to becoming a professional C# developer. This material will be right for you if you have been working with C# for about 3-6 months. There is some wiggle room in those numbers, as there always is, but if you are entirely unfamiliar with C#, please go here : Learning C#.

Being an intermediate developer can be tough. You know how to get a project started and you can Google search your way through Stack Overflow well enough to do most things, but when can you consider yourself a “professional”? Yes, that elusive term that even many with it don’t even feel that they deserve. Even great developers like Scott Hanselman say “I’m a phony!”. So when can you feel confident in your skills??

If you are here, I would say you should feel some confidence! You are doing the most important thing, you are working to be better. Now you won’t likely be Senior Software Engineer material after finishing just these videos, but you will definitely have a deeper understanding of how C# works.

Again, this post will be made up of a series of PluralSight courses. You should know that I don’t get any credit for directing you there, I just seriously believe it is one of the best places for C# learning! The only thing they lack is a little guidance, so hopefully my series of posts will guide you on your journey of learning C#.

Intermediate Level C#

Being A Better Coder

Duration : 8 hours 25 minutes

These two courses are by Deborah Kurata, and are an excellent place for the aspiring C# developer to continue their learning. Early tutorials and courses tend to focus on syntax and just the basics of how things can be laid out, and how they work together. What those courses are lacking is the important aspect of what makes good code. These two courses cover everything from what makes a good class, to how to create good methods, and introductions to collections, generics, and LINQ.

Pro Tip : If you are planning on doing the following deep dive videos, you could skip the second course here, as these topics will be covered in-depth in the following series.

Intermediate Level C#

Language Deep Dive

Duration : 27 hours 51 minutes

I debated including this course in my previous post on C# Advanced Foundations. This course covers the differences between interfaces, abstract classes, and concrete classes; and when to use them. Interfaces are taught not just from a C# perspective, but through the important Object-Oriented Programming concept of inheritance.

Pro Tip : Understanding interfaces will help you with all of the following series!

Eventually you are going to want to compare objects that are more complicated than the standard C# value types. How will your code know if your cat object > dog object? The answer is false, but that’s another story… You need to be able to define how objects are compared, there are a couple of interfaces which will help you with this, and they are all explained in this series.

Pro Tip : These above three courses will expand your knowledge of how to structure your code, what existing C# structures you can start using now, and finally how to make the most of your custom classes.

Events are a very powerful feature of C#. You will often want to write code that only executes when something happens. This course will teach you how, and how to keep your code clean when you only need to use a function once, with anonymous functions.

You’ve been probably using generics since the collections course without fully realizing it. Upon completion of this series you will be able to use generics with your custom collections, classes, APIs, and more.

Pro Tip : The above two courses really fit together. Generics are a critical part of higher level anonymous functions (Action and Func), but are used in many other places, particularly collections.

After the LINQ course you will know that they are built using extension methods. This course will further your ability to not just use LINQ methods, but to write your own. You will also learn how to work around many restrictions, such as restrictive access modifiers through various compiler tricks.

Pro Tip : These final two courses on LINQ and Extension Methods will allow you expand (no pun intended) on the libraries you may use, and to interact with your programs data with ease!

Think you can handle the deep dive?

I do! Getting through the deep dive will give you a really solid knowledge of a large chunk of C#. Not only that, but you will have a great understanding of when to use what. Knowing the strengths and weaknesses of different collection types and the use of lambda functions, especially when used with LINQ or your own extension methods will make you a much better programmer. You will not only be able to tackle harder problems, but will be able to do so much more efficiently.

I hope my outlines are helping you navigate the great PluralSight courses! I have one more coming up shortly.

No Longer a Beginner, Not Yet a Pro

Ready to take you C# skills to the next level??

When I got started learning C# I looked to PluralSight . This has proven to be a great choice! There are literally weeks worth of great C# and .Net content. While I did not get started advancing my C# knowledge THAT long ago, it was before PluralSight started offering “Paths”. At that time, way back when, they had just a few old blog posts to guide me on where to get started, and which order to watch some videos in. With the release of PluralSight’s C# Path I started comparing my learning track with theirs…

I may be bias – but I think mine’s better! So I’m going to share it with you.

Note: If you are entirely new to C# check out my blog post for you here : Learning C#

Advanced Foundations Level

Duration : 20 hours 13 minutes

Even after the free tutorials I linked in my Learning C# post, I would still suggest doing this course. Practice makes perfect, and the instructor Scott Allen (on Twitter
@OdeToCode
) is great at explaining things. It may be your second or even third time through some of the C# basics, but it won’t hurt you and you’ll get a chance to explore some related concepts like the Common Language Runtime (CLR), and Object Oriented Programming.

Pro Tip : If there is a new version of Visual Studios, check for a new version of this course.

This course is again by Scott Allen and introduces you to some really powerful C# features. Language Integrated Queries, or LINQ, will become a regular part of your programming once you learn them. The Dynamic Language Runtime, and Functional Programming will give you glimpse at some new ways to think about your programs. Finally, the course wraps up with Scott’s 10 rules for writing better C#.

Pro Tip : Even if you know the rest, watch the 10 rules! Scott has been a Microsoft MVP for over 11 years now, take about advice from a pro!

Great chance to get a look at the internals of C#, hear about how the language is changing, and the roadmap it is on. While the last two series will get you started writing great C#, this one will try to save you time by showing you some of the new syntax changes. Also, get ready for you introduction to Roslyn.

Pro Tip : If there is a new C# (7 isn’t too far away as I write this post), check out that one too.

This course slows things down with Mike Woodring (another Microsoft MVP) and will explain how all the acronyms you’re always hearing work together. From what really is the .Net Framework, to understanding Just-In-Time (JIT) Compilation, the Global Assembly Cache (GAC), and even concepts like CLR Interop! If all that sounds like gibberish to you, you know what to do, watch these videos!

Pro Tip : Don’t skip this one, this low level stuff could save you a lot of time debugging in the future.

How many cores does your processor have? I bet it’s more than one. I bet it’s more than two. You’re going to want to use them, so you’re going to want to watch this one. It is authored again by Mike Woodring (on Twitter
@mcwoodring
, and he is going to help you get through understanding the main parallel programming concepts, and concerns.

Pro Tip : I didn’t use these ideas right away, but when I needed them I was happy to know them.

I almost didn’t watch this course, but by the end I was happy I did. Regular expressions are used for pattern matching with text. How will you know if a user input string is an email address? Or a phone number? Regular expressions can! Yes, the syntax gets a little (a lot) crazy, but should you ever need to do a lot of text processing you will be happy to know about the power of regular expressions.

Pro Tip : Turn up the video speed a bit. Get the concepts, you can look up the specifics when you need them.

I never said it was going to be quick! There is a lot to learn with C#, but thankfully these core skills can be transferred to all types of projects, desktop (WPF, Windows Form, Linux and Mac with .Net Core), mobile (iOS, Android, and Windows with Xamarin), and web-apps (ASP.NET).

Stay tuned for more my next building block of courses next week. If you make it through all the above before then, just message me and I’ll send you more material you coding beast!

For Data Science and Beyond!

R or Python for Data Science

So you want to be a data scientist, but are stuck on the first polarizing decision of learning R or Python… I’m going to try to help you!

I’m also going to attempt to not make this post follow the typical “R is maybe the best, or Python, or neither”, as I find these kind of articles informative, but not that helpful. If you are wanting a break down of R and Python’s strengths, ease of learning, salaries, etc. you can find soo many with Google, I’ll even save you the work of typing it in – R or Python. But while their infographics are detailed and interesting, reviewing them does not help you make the decision of which to start learning. So that is what I’ll try to do here, in just two simple questions.

Disclaimer : I’m neither an R nor a Python expert, but I think my little bit of experience with both can set you on the right path

1. Do have a data set and a problem in mind?

Yes – R

No – Python

I feel this question may split developers and academics (generalizing a lot here). Academics typically have a thesis, which is a set problem they are wanting to solve, and are looking to a data science language to beef-up what they might have tried to do in Excel. In contrast, developers, may be wanting to find work with a company and be looking to a data science language to add valuable insight to business data. With these two needs in mind, I think the academic approaching a problem with a mathematical rigor could find R a great place to start, and the developer looking to hack together business data, could find Python great. Now obviously, I’m making some assumptions here, but if you can see yourself fitting into either camp, that would be my advice.

TL;DRChoose R – If you have a dataset (sensorlogs.csv, or a database). You’re going be able to get up and running very quickly and answering questions with R. Choose Python – If you need to scrap a website, hack together program outputs, you may need the flexibility of Python to get things together.

2. Do you have programming experience?

Yes – R

No – Python

This may seem a little reverse, but hear me out. The simple approach is to say if you have programming experience, you can learn Python quickly and be solving problems in no time; while learning R is an entirely new beast. However, I think that if you already know how to program, you can use that language to solve the parts of your problem which R would not be as strong at. For example, if you want to build an entire application and require some data analysis. You can build the application in your known language, then introduce R to crunch data as required. Now in contrast, if you have no programming experience, I think you should learn Python. The journey of learning will always open new and unforeseen doors. If a year from now you need to build a web service, you probably won’t get far with R there. Most people will not get a job where they are doing pure data science all the time. If you end up needing to develop something, you will probably need other tools. If you don’t have other tools, learn Python.

TL;DRChoose R – If you already have a working understanding of another programming language. Choose Python – If you have never programmed before, as you can do almost anything with it.

The Choice Is Yours

I tend to see R as a really fancy calculator, and I’m talking really fancy, fancier than even a Titanium TI-89. This isn’t meant to be an insult! On my desk I always have my calculator next to me (yes I know there is one on my computer), but my calculator is better because it is specialized. R could be the best choice for you if you have data, even dirty data. Even if you don’t have a clearly defined goal with that data, R has many great tools for exploring and visualizing that data.

Now Python on the other hand, I see as good kitchen knife (where do I come up with these metaphors??). Sure there are specialized knives, pairing, steak, bread, etc. But for tackling the biggest variety of jobs, that kitch… err Python is going to get the job done.

So, to repeat myself like a broken record (I do similes too). If you have data, or get to work with just data choose R, especially if you already know a different programming language to handle any other development needs. If you don’t know any other programming language, or need to create something to generate your data choose Python.

I know everyone won’t agree with me, and rightfully so. I also had to generalize a fair bit to try to draw a clear line between the two, but I hope I was able to help you. As always, if you have any further questions about my suggestions please reach out to me with any of the links below.

Should I Learn C#?

Why should you choose to learn C# out of all the other languages? Perhaps you are trying to decided between it and Java, or Python, or C, or JavaScript, or [insert other great language choice].
Well quite simply you should choose C# to learn now, because C# is the best! … Is what I wish I could say, but truly there are many different programming languages and most have varying pros and cons for many applications. With the disclaimer that there is certainly no “best”, C# has many great features and is a good beginner language. People smarter than I have written great and thorough articles on why to choose C#, linked below is just a small sampling. I didn’t want to repeat them here, but have summarized what I think are some great points below. Additionally, I have included some content to get you on your way learning C#.

Sampling of why you should learn C# references:

TL;DR

Common syntax – you’ll get used to {curly braces}. This should help make it easier for you to read other curly brace languages, at least enough to get the gist of what the code is doing. This is very helpful, as sometimes you will only be able to find code examples in other languages, so being able to quickly interpret other code and get your C# code underway is a big bonus.

High level language – takes care of a lot of the little details and lets you get going. Now this isn’t to say it handles everything for you, but you will get good mileage.

Huge community – If you are unfamiliar with Stack Overflow, you soon won’t be! C# has the 4th largest community on Stack Overflow. This means if you have a problem, someone else probably has had it too, and you can find a solution here quickly.

You can write pretty much anything, anywhere – Microsoft loves open source if you hadn’t heard! With the release of .Net Core, and Visual Studio – Code you can now program C# on any platform in Microsoft’s “best” C# IDE Visual Studio. This means yes to Windows, Mac OS X, and Linux; and this means yes to desktop, web, and mobile applications.

Getting Started Learning C#

Everyone learns differently so I’m going to include a couple different methods for learning C# which hopefully you will find useful.

I got started learning C# with the course C# For Beginners on Microsoft Virtual Academy. Microsoft Virtual Academy has a plethora of free content to help anyone at any level get underway with many Microsoft technologies, and the best part is it is all free! This is probably the best way to get your feet wet with C#, it has around 8 hours of video tutorials, split into 24 modules, with 21 assessments. The 24 modules are great for when you are busy and can’t allocate a big chunk of time to learning all at once. Just complete a module or two when you can.

Now I haven’t tried this one myself, but if you tend to learn more through reading another free learning service by Microsoft is Getting Started with C#. This text based tutorial appears to cover many of the same topics as the Microsoft Virtual Academy course. This could also be a great option for learning on the go on your mobile or if you live in a region with slow or intermittent internet access. These tutorials will even get you coding C# right in the browser, no need to download anything!

Well there you have it, you should consider learning C# as it has a bright future and seems like it should be an in demand language for years to come. Microsoft’s recent moves to open source the .Net Framework and huge cross platform support will only increase C#’s popularity.

I hope that the links above help you get started on C# and stay tuned for how to take your C# skills to the next level!

Note: When you are ready to take your C# to the next level check out my next blog post for you here : C# – Advanced Foundations

Thanks for reading,

Thomas

Pssssst! If you want to type a ‘#’ in a markdown header, switch to using HTML tags: “<h2> Should I Learn C#? </h2>”

Now for the content, hold onto your seats people. As a big podcast fan I often heard the benefits of sharing your knowledge from many people, such as Scott Hanselman and Jon Sonmez. They preach that sharing your journey will not only help you retain what you are learning, create an excellent portfolio, but you may also help/inspire someone else to tackle new challenges.

So I decided to leap and started this blog a little over a month ago, but like anyone who likes to tinker with technology, I took the long road.

Domains, Hosting, Servers, CMS, Oh WOW

The first technical challenge which will siphon hours of Google research is where will your blog live??

I knew I wanted my own domain and settled on Namecheap because they had the best value for domain registration and email hosting.
Some services offer many more features, but seeing as I will not be requiring a lot of features for this simple blog, Namecheap’s offering was perfect.

Following my domain purchase and email setup, I stared down the barrel of hosting options and blogging platforms.

I reviewed hosting with Dreamhost, Digital Ocean, and a few others. I reviewed VPS options like Azure, and Linode (wouldn’t it be fun to admin a Linux server!).
And I considered your classic WordPress, and the new blogging focused Ghost platforms.
But at the end of the day, I didn’t really want to have to start paying for a hosting subscription at the start, and then I stumbled upon Github Pages.

Github Pages and Static Site Generators

Github Pages will serve the content in a Github repository as a website, with the catch that everything in the repository has to be static.
So while you could create the content and HTML of each page, you can use a static site generator to take care of the HTML for you!

Now here is where the real fun begins, choosing a static site generator.
StaticGen tracks the top Open-Source static site generators and their list contains well over 100!

Hexo.io was my first static generator. I chose Hexo, because it ranked high on the list of generators and runs a node.js server.
I do not have much experience with JavaScript, but I felt that if I needed to code something to go along with node.js it would be good experience.
Unfortunately, my love of Hexo was short lived. They have great tutorials, and I was able to get my site up very quickly, but when I wanted to dig into the theme and make some changes things got tricky.
Hexo themes use either the template language EmbeddedJavaScript (EJS) or Swig, and I’m currently not interested in learning either of these.
Thus, while I was able to get my Hexo site up and running smoothly, I didn’t want to tackle their foreign templating language just to make theme changes.

So I moved onto the next generator.

Seeing that some experience with the underlying language may be advantageous I decided to try Wyam.io next.
Wyam is a static content generator written entirely in .NET, and allows for templating in Markdown and Razor. I used Wyam for a couple of days before deciding it was too complex.
Wyam is a lot more than just a static site (simple blog) generator. Wyam is used by chaining together flexible modules to produce your end product,
and while you can create a website this way it seemed like overkill (to me).

Finally, I stumbled upon goHugo.io (another .io)!
Hugo is very similar to Hexo. Both have great documentation, easy setup guides, and awesome themes.
Hugo was different for me because the entire application is written in Go. While Go is vastly less popular than JavaScript, I have been trying to find time to use Go all year.
Hugo’s themes use Go templating and they have a great primer in their documentation. So far the minor changes I have wanted to make have been pretty simple.
It feels more like I’m making simple HTML changes, with the power of Go objects and conditionals.
Finally, another important aspect to me was that with Hugo you create your content in Markdown files.

There you have it, a short summary of the meandering trail I took to get here.

If you have any questions about my choices feel free to reach out to me with any of the links below.