By Kibner Go To PostOh, so you want to learn how to design computer algorithms? Come listen to my friend Donald Knuth.Lol yeah algorithms are like the main thing I have issues with and I need to know them if I want to get past technical interviews for most companies. It's like yeah I know how to program now but I won't pass your interview since I can't answer an algorithm :(.
This particular book can be hard to approach, but it does teach you how to develop and analyze algorithms.
Knuth is also just a cool dude who came up with his own typesetting software to write this and other books since there was nothing able to notate formulas and such the way he wanted at the time. It was called TeX.
There is a public derivative of it called LaTeX which is quite good. If you ever need to write a scientific paper, it's amazingly useful. It does all kind of things like taking care of spacing, paging, and optimal places for figures. If you build things right, it will also create a table of contents, bibliography, and index for you with page numbers that are always correct. A plug-in will let you print as pdf which can then turn references into links do that things like the ToC and index work as expected electronically.
Also I used LaTeX for my resume actually. Used a moderncv template.
Awesome! I fuck around with it every now and then because the documents it produces are just so pretty.
Oh strange. I am using an app called Pandoc to convert my word docs to markdown and I just literally came across LaTeX for the first time because of it!
Well just checked twitter and a dev I follow just retweeted this book, looks interesting and it may be just the thing I'm looking for.
https://bigmachine.io/imposter/
https://bigmachine.io/imposter/
Don't have a CS Degree? Neither do I - That's why I wrote this book.
For the longest time I would remain silent when discussions with my peers would veer toward theoretical topics like P vs. NP, Lambda Calculus or bubble sort vs. merge sort. Big-O notation? I… uhh…
I decided to change all of this a year ago. I sat down and looked up all of the topics that a typical CS degree covers and then I dove in. Half way through, I decided to write a book about what I was learning.
That book is The Imposter's Handbook: a compendium of my year-long quest to fill the holes in my CS knowledge. Not a replacement for a degree, not an authoritative source for any of the concepts presented. Just a concise summary of the things you should know.
Uhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
I don't think you want to be delving into P v NP, true Lambda Calculus or Big O, Little O stuff if you're just digging into algorithms. Cause that is a DEEP rabbit hole that can involve some serious formal maths, formal logic and how to prove stuff using induction.
Start with just learning the algorithms. I have used Knuths stuff my self in the past. It's good. But don't know the book that was linked. I was mainly using his stuff for a research paper on formal proofs that i was doing. But he has many books, and is p.good at explaining stuff like a human.
Most people that explain several different search algorithms will give you a brief run down on their uses, and their theoretical efficiency. At work at the moment so can't look any up.
Once you've done them, you'll start to see the algorithm's efficency.
You may be better off looking up Design Patterns as much as Algorithms. Design Patterns cover a lot more things, and a lot of common tasks that Algorithms won't. (Though they'll touch on a few more common algorithms like bubble sort etc).
Like the general structure of writing your own linked list (or Array List...) is considered a Design Pattern. Knowing that may make you more comfortable extending lists and adding your own custom fields etc.
I don't think you want to be delving into P v NP, true Lambda Calculus or Big O, Little O stuff if you're just digging into algorithms. Cause that is a DEEP rabbit hole that can involve some serious formal maths, formal logic and how to prove stuff using induction.
Start with just learning the algorithms. I have used Knuths stuff my self in the past. It's good. But don't know the book that was linked. I was mainly using his stuff for a research paper on formal proofs that i was doing. But he has many books, and is p.good at explaining stuff like a human.
Most people that explain several different search algorithms will give you a brief run down on their uses, and their theoretical efficiency. At work at the moment so can't look any up.
Once you've done them, you'll start to see the algorithm's efficency.
You may be better off looking up Design Patterns as much as Algorithms. Design Patterns cover a lot more things, and a lot of common tasks that Algorithms won't. (Though they'll touch on a few more common algorithms like bubble sort etc).
Like the general structure of writing your own linked list (or Array List...) is considered a Design Pattern. Knowing that may make you more comfortable extending lists and adding your own custom fields etc.
By giririsss Go To PostUhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
I don't think you want to be delving into P v NP, true Lambda Calculus or Big O, Little O stuff if you're just digging into algorithms. Cause that is a DEEP rabbit hole that can involve some serious formal maths, formal logic and how to prove stuff using induction.
Start with just learning the algorithms. I have used Knuths stuff my self in the past. It's good. But don't know the book that was linked. I was mainly using his stuff for a research paper on formal proofs that i was doing. But he has many books, and is p.good at explaining stuff like a human.
Most people that explain several different search algorithms will give you a brief run down on their uses, and their theoretical efficiency. At work at the moment so can't look any up.
Once you've done them, you'll start to see the algorithm's efficency.
You may be better off looking up Design Patterns as much as Algorithms. Design Patterns cover a lot more things, and a lot of common tasks that Algorithms won't. (Though they'll touch on a few more common algorithms like bubble sort etc).
Like the general structure of writing your own linked list (or Array List…) is considered a Design Pattern. Knowing that may make you more comfortable extending lists and adding your own custom fields etc.
Bleh, so much crap I have to figure out. I hate algorithms :(. And in general I feel like I'll be going down the rabbit hole once I have to really start learning algorithms for interviews since before I got on track to being a decent JS programmer, I wasted an incredible amount of time gathering and going through ultimately useless resources.
At this point I'm just hoping I can get interviews and if I can get to that point hope the company test me with practical programming questions which I've heard is possible from guys who do the interviews. Though I'm guessing that's rather uncommon since I'd probably have a better shot that way versus answering an algorithm question.
It's the downside to learning online :(
TBH, for years I didn't know anything more formal about algorithms other than which are good and at what. Not the how or why. And that's probably fine for most JS developer jobs (not being dismissive.... just probably true).
TBH, for years I didn't know anything more formal about algorithms other than which are good and at what. Not the how or why. And that's probably fine for most JS developer jobs (not being dismissive.... just probably true).
By giririsss Go To PostIt's the downside to learning online :(
TBH, for years I didn't know anything more formal about algorithms other than which are good and at what. Not the how or why. And that's probably fine for most JS developer jobs (not being dismissive…. just probably true).
Which works for me haha. And yeah I'm facing an uphill battle as it is but I seem to make a good impression people and hoping by the end of next month I'll have an entry level job. Like I spoke to a recruiter at a pretty big name company and based on my pitch he was impressed enough to call me equivalent to a new grad and I just gotta work on a few things then he said he might be able to get me to an interview.
And speaking of which I have a mountain of contacts that I've yet to let's say cash in on for job opportunities and have just been waiting until I knew I was good enough to make use of their reference. Now I finally feel confident enough that I am ready to be a junior dev.
By reilo Go To PostI've never been asked about algorithms in interviews.Can't say i ever have. But i know people who have.
Google used to ask people to come up with the design pattern for things in the interview.
But their interview process was pure fuckery at some stage. Or i'ts just mythologised.
As neat as learning algorithms can be, it is definitely not something a junior dev will ever be asked to do.
I echo Giri with learning design patterns. I really like the Head First series of books for intros to any topic so I will definitely recommend their design patterns book. Be aware that this book is written for object oriented languages and uses Java as its examples.
I like Head First because the books are easy to read and, more importantly, easy to remember. They do things like include different graphics and presentations of info so that your brain is able to more readily recall what you have seen.
I echo Giri with learning design patterns. I really like the Head First series of books for intros to any topic so I will definitely recommend their design patterns book. Be aware that this book is written for object oriented languages and uses Java as its examples.
I like Head First because the books are easy to read and, more importantly, easy to remember. They do things like include different graphics and presentations of info so that your brain is able to more readily recall what you have seen.
By giririsss Go To PostCan't say i ever have. But i know people who have.There is a local company around me that would absolutely ask about design patterns and probably how to design/analyze an algorithm. But they are also a company where the Agile methodology is followed to a T.
Google used to ask people to come up with the design pattern for things in the interview.
But their interview process was pure fuckery at some stage. Or i'ts just mythologised.
Giri, that Knuth book I linked is a good one to pick up. It is his first in his series of algorithm books but it starts off with all the basics, including the math behind analyzing an algorithm and how to write a proof. It is a classic of comp sci literature, right up there with the Gang of Four design patterns book.
Awesome well guess that's one thing I don't have to worry about when I'm hopefully interviewing in the next month. I've heard mixed living in the bay and recently I kept being told you have to know all this algorithm shit.
By Dark PhaZe Go To Postknuth is….a ways away from where most people should startYou don't want to use it to learn how to program, for sure. But it's great for learning how to analyze and write algorithms.
By Kibner Go To PostLike Reilo has mentioned a couple times, Python is probably a good place to start. Especially since it enforces some good aspects of code style. It has been around for a while so it has lots of support.
The best thing to do when learning or trying to improve is finding something that interests you and making it (or at least, attempting to). It is the best way to stay motivated and will also give you a goal to aim for. It can be something like a way to automate something you and/or your friends do manually (like that character ability pre-requisite checker I linked above) or developing an AI to play against in some game (could even be a board game).
If you like math, Project Euler is a good way to develop and implement algorithms in a performant way. There's also CodinGame to build up some skills.
The CodinGame...Gotta check that out.
Just a tip to budding developers: name your functions according to what they do/return.
I am trying to integrate some co-worker's code from a different project into my own and it has been made more difficult by him not following that axiom. (i.e. a function called "IsFoo" returns a group of "Bar" objects)
I am trying to integrate some co-worker's code from a different project into my own and it has been made more difficult by him not following that axiom. (i.e. a function called "IsFoo" returns a group of "Bar" objects)
Relatedly, keep your functions short and have them do one thing only. It makes things much easier to understand and debug. If you have to scroll your editor when viewing the entire contents of a function, it is time to consider refactoring that function.
By Kibner Go To PostJust a tip to budding developers: name your functions according to what they do/return.There's something to be said about keeping a consistent coding style within a company. The caveat being not to be too stringent. It might even be wise to adopt a well established company's styleguides, e.g. Air BnB has a great Javascript Styleguide: https://github.com/airbnb/javascript
I am trying to integrate some co-worker's code from a different project into my own and it has been made more difficult by him not following that axiom. (i.e. a function called "IsFoo" returns a group of "Bar" objects)
Even simple stuff like using linters (prefer JS standard) helps keep code readable.
I do caution that striving for consistencies shouldn't hamper development progress. One engineer arriving at a problem in a different way than is "preferred" by another shouldn't impede that issue being resolved unless there is something fundamentally broken with the way the problem was resolved (e.g. the engineer mutated state, etc).
Yeah, me and my single co-worker have very different naming schemes. I try to compromise when I can, but I am totally not down for pluralizing member names that are singular objects and not collections (i.e. a member that is of type Bar is called "Bars" in his code despite it not being a collection/array/list/etc.) or combining camel case and underscores between each word in a member name ("foo_Bar" instead of "fooBar" or "foo_bar").
He also likes having lines of code that stretch the width of a 1080/1200p monitor on default font size settings with all windows in Visual Studio on hidden. When I asked him if we could maybe ease up on excessively long line length, I was told "I'd rather scroll left and right than up and down". Alas, this makes it difficult for me when I have to work with his code on my laptop.
Of course, he also loves code files that are 2k+ line behemoths as opposed to splitting up discrete functionality into separate, more manageable files.
He also likes having lines of code that stretch the width of a 1080/1200p monitor on default font size settings with all windows in Visual Studio on hidden. When I asked him if we could maybe ease up on excessively long line length, I was told "I'd rather scroll left and right than up and down". Alas, this makes it difficult for me when I have to work with his code on my laptop.
Of course, he also loves code files that are 2k+ line behemoths as opposed to splitting up discrete functionality into separate, more manageable files.
Hah, naw, it's all fair. It's also a valid criticism. His attitude would most definitely not fly if he was working within a group of ten or more experienced engineers that do find readability and consistency important.
There's a line between not passing code review because you disagree on stylistic differences, but writing in his style with that much code in a single file/function will make his code more prone to bugs, harder to test against, and far more difficult to debug if you need to fix something.
Also, being open to an experienced engineers suggestions and improvements speaks to having a healthy attitude in understanding that sometimes someone else knows more and their advice should be welcomed, not rebuffed.
There's a line between not passing code review because you disagree on stylistic differences, but writing in his style with that much code in a single file/function will make his code more prone to bugs, harder to test against, and far more difficult to debug if you need to fix something.
Also, being open to an experienced engineers suggestions and improvements speaks to having a healthy attitude in understanding that sometimes someone else knows more and their advice should be welcomed, not rebuffed.
Anyone have recommendations on dev tools to help ensure/encourage better code? I know Reilo mentioned linters before to keep coding conventions consistent (hell yeah, alliteration!).
My favorite tool that I personally use is ReSharper for Visual Studio. It helps identify code smell, can format code to user-defined conventions, makes refactoring easier (like converting "for" loops into Linq statements and vice versa), and many other things.
My favorite tool that I personally use is ReSharper for Visual Studio. It helps identify code smell, can format code to user-defined conventions, makes refactoring easier (like converting "for" loops into Linq statements and vice versa), and many other things.
The company that makes ReSharper also makes IntelliJ IDEA and, one of my personal favorite recent finds, DataGrip. DataGrip is a database IDE that I adore and like so much more than SQL Server Management Studio.
NFI within stuff like VisualStudio. I know Atom and Sublime have great plugin support. I'm all about the vim and tmux life though.
By reilo Go To PostNFI within stuff like VisualStudio. I know Atom and Sublime have great plugin support. I'm all about the vim and tmux life though.Yeah, I'm just trying to get people to talk about their favorite "assist" plugins/software and maybe a sentence about why. IDE preference doesn't really matter. :)
I really like my tmux and vim combo but you really have to commit to the no-mouse-all-keyboard life. The huge advantage is that when I have to do sys ops it feels far more seamless because I can just open vim for anything and not lose track.
I think the more important things in anyone's dev stack is to make sure you can debug and detect errors easily. A lot of that is experience, but good tools helping you eliminate that. Browser extensions are pretty critical for that, too, eg React Dev Tools and Redux Dev Tools on Chrome help so much. Especially when dealing with compiled/uglyified code.
At work we recently discovered how to properly upload source maps to Sentry and it changed our life. We collectively felt dumb for not doing it sooner.
I think the more important things in anyone's dev stack is to make sure you can debug and detect errors easily. A lot of that is experience, but good tools helping you eliminate that. Browser extensions are pretty critical for that, too, eg React Dev Tools and Redux Dev Tools on Chrome help so much. Especially when dealing with compiled/uglyified code.
At work we recently discovered how to properly upload source maps to Sentry and it changed our life. We collectively felt dumb for not doing it sooner.
By Kibner Go To PostActually, I'm going to stop complaining now because it is doing no one any good.
😂
By Smokey Go To Post😂I love complaining. It's a bad character trait that I have and I have to catch myself from doing it too much when it's not warranted. It is sadly something I have to work on nearly everyday so that I don't annoy others with it or get myself in a funk from dwelling on my complaints too much.
By Kibner Go To PostHe also likes having lines of code that stretch the width of a 1080/1200p monitor on default font size settings with all windows in Visual Studio on hidden. When I asked him if we could maybe ease up on excessively long line length, I was told "I'd rather scroll left and right than up and down". Alas, this makes it difficult for me when I have to work with his code on my laptop.
Of course, he also loves code files that are 2k+ line behemoths as opposed to splitting up discrete functionality into separate, more manageable files.
i couldn't deal
Android coding is the worst shit ever. Do I really need to highlight the struggles of it?
Meanwhile IOS feels so much more dev friendly. What's a good way to stop Android users from using Greenify to block ads in apps?
Meanwhile IOS feels so much more dev friendly. What's a good way to stop Android users from using Greenify to block ads in apps?
By Furyous Go To PostAndroid coding is the worst shit ever. Do I really need to highlight the struggles of it?
Meanwhile IOS feels so much more dev friendly. What's a good way to stop Android users from using Greenify to block ads in apps?
I've been doing a ton of Android stuff for the last 6 months and it's left a few impressions.
1. Android's version of Java, and the whole environment is REALLY young. It's so immature as a language for that environment.
2. Google's inability to get everyone running the latest version of Android is really hurting their ability to streamline the language and bring out consistent new UI features.
2 a. They're also pouring a ton of time and effort into creating "backwards compatible" versions of most of their new stuff.
2 b. It also means development with these is clumsy.
You understand why Google are making a big push to get everyone on the latest version of Android. Going so far as to threaten Telco/Phone companies that if they don't start pushing it out, they're going to start naming and shaming them.
Juggling three different projects right now, absolute murder
RoR app, Python app, some machine learning stuff.
Let me sleep.
RoR app, Python app, some machine learning stuff.
Let me sleep.
Somethings in Android, as per above, are just more complex than necessary.
Creating a circular image from a network resource is... painful.
Particularly when you want to use Googles own recommended networking library, Volley, to handle all network requests.
Creating a circular image from a network resource is... painful.
Particularly when you want to use Googles own recommended networking library, Volley, to handle all network requests.
Well about to go on a job hunt, here's to hoping I can get some interviews this month. I already unexpectedly got an email from a company that remembered me and the head recruiter was impressed with my background so I sent them my resume and just waiting to hear back. Besides that I think it's about time I cashed in on the massive 200+ network I've built up in the past year.
On another note anyone going to GitHub Universe in 2 weeks?. I won scholarship tickets so I'm definitely going. Looking at the schedule and for once every talk looks interesting and I'm pretty sure I'll actually understand them.
On another note anyone going to GitHub Universe in 2 weeks?. I won scholarship tickets so I'm definitely going. Looking at the schedule and for once every talk looks interesting and I'm pretty sure I'll actually understand them.
By reilo Go To PostDude, you're in the Bay Area. You'll be fine.
Lol I hope so. I'm still surprised I managed to get calls back with my shittastic resume at the start of the year. I know I pretty much have to go up against college grads and bootcamp grads. So still a bit paranoid I won't get anything due to my background of no degree nor bootcamp and it has happened before. That and due to all those grads there's a ridiculous influx of junior level developers. Though now I'm at the point where I'm know I'm just as good if not better than them so yeah it's about time I use every connection I have.
You'll probably have a slightly higher learning curve, but any software shop worth its salt will make sure to onboard you and groom you properly. Seek out a place that you can learn and grow in. Don't fret about it too much.
Thanks for the advice Reilo. Definitely feeling way better about my current programming skill and I've like completely forgotten about the impostor syndrome that once plagued me. Though I knew I wasn't shit before lol.
Man I look back at my engineering skills from 18 months ago and I look at the guy as a dummy. You'll constantly learn and improve, it's what you should strive for.
By reilo Go To PostMan I look back at my engineering skills from 18 months ago and I look at the guy as a dummy. You'll constantly learn and improve, it's what you should strive for.Exactly.
Yeah now that you mention it I've made an absurd amount of progress in the past 8 months. Also I just hit double digits for open source PRs with 11.
By Nelo Ice Go To PostYeah now that you mention it I've made an absurd amount of progress in the past 8 months. Also I just hit double digits for open source PRs with 11.If there is ever a time where you don't feel like you have made that type of progress, it is time to either find a new job that offers different challenges or to spend time outside of work developing your skills.
By Kibner Go To PostIf there is ever a time where you don't feel like you have made that type of progress, it is time to either find a new job that offers different challenges or to spend time outside of work developing your skills.
Yup that's one of the reasons I'm trying to break into the industry. I felt like I wasting my time and mind doing mindless customer service at retail and Disney World. Love the fact that with programming I'm learning something new everyday and I'm constantly challenged. If I'm feeling stupid and have to learn something new then I know I'm on the right track haha. Like right now I'm trying to tackle 2 open source issues I've never seen before but I think I can handle them and I'm determined to learn how to add both features.
for anyone fluent in Microsoft's databasing program: if someone wrote database tables from mySQL: is it possible to view the table in mySQL?
By Face it Tiger.. Go To Postfor anyone fluent in Microsoft's databasing program: if someone wrote database tables from mySQL: is it possible to view the table in mySQL?I'm afraid I'm not understanding your question.