Dri's Blog

January 4th, 2017

First Blog Post

This is my first blog post ever. I hope to use this blog as a space to write about software engineering, how it affects my life, and record discoveries I have made in my scientific expereince. Today I would like to describe my thoughts on tech interviews.


Tech interviews tend to vary. Some are very conventional, and stick to the book. These conventional 'big 4' interviews usually look the same way: they call for an initial interview, and that usually leads to a technical interview where the engineer codes on some sort of live chat client, and if the interview goes well, they fly them to the tech campus and give them a white board interview. Today I had a tech interview that I hope goes really well.


I was really impressed with the professionalism of the engineers. And I have not worked at a company that has it's own designer in a while. The professionals there were very approachable and gave me confidence that I can grow there as a software engineer, and as a Computer Scientist.


This interview struck me because it seemed like the hiring manager actually picked up on my gerneralist tendencies, and my ability to wear a lot of different hats. Having a company make me feel appreciated for my efforts to be an well rounded person, scientist, and engineer was a very positive experience. Regardless of the outcome, I think I have finished my day a little smarter, which is all I really love to keep me happy.

January 5th, 2017

Always Read The Blog Date

I want this post to be more technical. I spent the last few days writing coffescript to implement an npm module that I will only refer to anonymously, because I disliked it so much.


Part of the reason I came off with a bad feeling for it was because the tutorial was hard to implement. The command that I ended up stopping at was:


curl -X POST -d '{"name":"Create Example Project","category":"Simple Blog Post"}'


Getting frustrated here was sort of positive because I ended up reading some curl docs and finding out a question that I have had for ages:

What does the 'c' in curl stand for?

It stands for client.


Another positive from the exercise was that I wrote my first coffeescript (super readable). And beyond that I was very frustrated.


It wasnt't until I coded that entire the tutorial that I realized that it was written in 2013. Holy shit. There could be a million reasons why my version was not working, and even if the developer did end up seeing my lame comment requesting help, it really helps no one since it is so old.

My final opinion about tutorials in this post, is that it really frustrates me that they usually assume that readers immediately understand the file structure of a project, including the levels of directories. Although I am sure it is very simple to them, a simple diagram of the location of diagrams could save tons of time.


So: Read the date. Diagram your files.

--D

January 6th, 2017

UX Tool Idea, Ember, and Bootstrap

I had a very good day today. It started with some inspiration last night. I have been having my head in the space of UX/UI implimentation for a few months, and an interview I had a few days ago got me thinking about what kinds of tools would be helpful in that kind of workflow. I was in bed when I thought of the type of problems that come with applications and websites that are dynamic, especially when assesing their current state. One problem that I identified was the ability to generate sitemaps of existing websites. Is there a way to create a site map that does not include a designer or programmer sitting down and counting every single accessable interface by hand? This problem becomes more difficult if you do not have access to a person who knows the project well, or if the project is fairly unupdated or old.


So, I incepted a piece of software that has a working title of siteGen, which I do not like. I would prefer to refrence some sort of Science Fiction or something. Simply, the idea is that a user can select an Application of website url, and the program will generates sitemap of enerything the app can do in it's current state.


I did a small wireframe to demonstrate how usable it woule be.

I intend to make a mockup of the app in c#.


On to other web worldy things that happened in my day. I was contacted by a linkedin recruiter yesterday, and they were looking for a developer who had both python and Ember.js experience. I immediately wanted to know all the Ember things (I already did some over the summer), and then continued to star and watch their github page. I also found this nice collection of ember things that I may explore if I ever decide or need to use Ember again. Found here.

I also (kind of embarassingly) made some large strides in understanding bootstrap, which, I had no idea was so simple. I, instead of pouring over it's documentation, found a great cheat sheet guide that is amazing for browsing web componants if you are not sure what kind of design you want. Really helpful. Really dope.


January 7th, 2017

Functional Programming: Part 1

I had a job interview yesterday with a company called MobileMoney, and I have another interview with them in person. Over the phone the interview mentioned that they use a functional programming language in their work flow called F#.


This got me interested in brishing up on my functional programming language knowledge. On my first day, I picked up four main things from the first pages of The Magical World of Functional Programming: Part I: Thinking Functional


Functional programming is all about functions. I like to think about functions with set theory, and imagine with sets of numbers that have a one-to-one mapping. One set is the input, and the other set is the output of the function (the output is kind of like the return statement in a programming language).


Functional programming always returns something that is related to what it is given. The function:


function notafunct (x) {
console.log("hello");
}
is not a function, despite using the token 'function'


I also learned that if there is any possible dynamic changes in a function, then it is NOT what is called 'a pure function'. A pure function returns the same output for input every single time.


This has been fun. I hope to continue my functional programming experience tomorrow.

January 9th, 2017

Functional FizzBuz and Flexbox

I missed my blog post last night, which I terribly regret. I am going to attempt to sum up all that I have learned in the past two days in a single post. Yesterday as I was studying some Functional Programming basics, I came accross a solution to a common interview that I have heard before. That is, the FizzBuzz question.

The problem is as follows: When given a set of numbers from 1 to 100, print the number + "Fizz" when the the number is divisable by 3, the number + "Buzz" when the number is divisible by 5, and the number + "FizzBizz" when the number is divisible by 3 and 5.


I really enjoyed the function approach to the problem, because it can be adjusted easily, and as far as I can tell, it is much faster that using loops. I will write the solution I found in the book below. This is also the first post where I will use codepen. I may create my own css monospace stylesheet so I can display programs (and not the large editor);



var functionalFizzBuzz=function(from, to){
const ar=Array.from({length:(to-from)+1},(elem,index)=>index+1);
const fbResult=ar.map((elem,index)=>fbFormatOutput(fbTest(index)));
fbResult.forEach(fbPrint);
}
var fbTest=function(num){
var retval=[num];
if(num%3==0) retval.push("Fizz");
if(num%5==0) retval.push("Buzz");
return retval;
}
var fbFormatOutput=function(ar){
var i;
var output="";
for(i=0;i output+=ar[i];
}
return output;
}
var fbPrint=function(output){
console.log(output);
}
functionalFizzBuzz(1,100);


I need to do more Javsscript haha.


I would like to end this post by admitting that I have not looked into flex in depth until this evening, even though it was used at my last workplace. I have this weird thing about feeling nervous about watching youtube tutorials in the workplace because I feel like I am doing it for enjoyment, but usually it is because I think I can learn it faster that way. Am I really picky with the types of docs I like? Or do I need a person to weive together the concepts I read into a usable coding concept?


For now I will attempt to do all of my tutorial watching at home, and stick to docs at work.


RDFM!!!!


Also I found a pretty great cheatsheet for flex here. I still need to figure out what flex-basis does lol. I do know that in this example when flex-basis is 'auto', the remaining space between the initial size of the emelents is distributed based on the ratios provided in the 'flex-grow' property, instead of conforming the the ratio strictly.

More technial flex lingo and UX/UI thoughts to follow.
-- Tired Dri


Main