Most programming books do not let you pause to reflect. They just go on and on. Consider Fluent Python by Luis Ramalho. If you read through the book, you will not get much out of it. However, if after each chapter, you try to come up with a practical application of the concepts discussed, then you will have a better chance at building a mental model around the topics. The code presented is just a solution to a problem. You need to come up with more problems. Basically, don't be a passive learner. Be an active learner.
HN user
__strisk
Reading code is the equivalent of looking at solutions for math problems... is it more helpful reading the solutions without context or with? You need to see the original problem, and how the solution came about in response to that problem. In regard to this, I would say, pick a problem that has a solution (walkthrough, if possible) available and then attempt to solve it and then honestly check your solution against the given solution.
Yep! I also like the fact that it's just plaintext with no interspersed meme/pictures. Just straight information.
nautilus was the first publishing company that I subscribed to... Although I feel bad for the company, I feel worse to have given money to an organization whose owner is gambling the livelihoods of their employees.
There is a really good course on edX that goes over some key aspects of secure web applications. Just finished it myself. Learned a lot about preventing common oversights such as maintainable password hashing, XSS, CSP, Certificates, etc.
https://www.edx.org/course/web-security-fundamentals-kuleuve...
It pretty much goes over most of the OWASP top 10.
I found jupyter notebooks to be a good note taking medium (its markdown!). I usually rsync my notebooks to a remote server that I can access anywhere. One thing I find frustrating is that the json is difficult to manipulate if you don't want to spin up the jupyter notebook server.
God I hate those backyard cottages, did you label yours as a "casita" too? Some AirBnB hosts literally go to home depot, haul a shed, plant it, add crappy insulation and list it.
I actually find that to be the worst aspect of AirBnB, if I go to a hotel and I do not like my room I can switch it. If I use AirBnB and the place sucks, well, I'm stuck. Unless I want to go through a lengthy customer service battle.
Listings managed by professionals are pleasant on the other hand, I honestly do not want to check-in putting up a front after lining my "host"s pockets. I pay for a service and receive service. Let's not pretend they're doing this for any other reason. AirBnB damn isn't Couch Surfing.
Correct, I don't count a software foundation as a corporate branding. I see it as a positive.
we think alike! I have this process written down and pinned to my wall. I have been refining my thought process regarding learning. currently I have:
1. try to find a overarching synopsis of the main topic or goal. This can be done by looking at a summary article or by skimming the summaries of a textbook or by checking an expanded table of contents
2. Extract major topics and write these on a spreadsheet/graphical program/(giant) index card/ paper. If you used index cards or a graphical program or index cards try to discern dependencies between these topics by using the gui tools or simply laying out index cards on the ground.
3. Find resources that explain the topics. The resources do not need to be from the same resource. One source can explain topics a,b,c well but not d. You can use another resource for topic d.
4. map projects to topics: extremely important. After finding out the topics and associated resources, you should be able to come up with applications of the topics. These could be as simple as solving problems from a textbook or they can be grand like building a motorcycle (actually, that's too grand). Keep the primary goal to be learning the topics you set out to learn or completing your goal.
5. execute the projects
6. check off topics as you encounter them
7. reflect on the results of the project or application
8. if you encounter difficulties find more resources and drill down on topics you found interesting or challenging.
Not perfect, but its working well for me. You can start from practical applications or theoretical concepts. Books are great because they contain a structured approach to a topic. ALWAYS MAKE SURE THE BOOK HAS PROBLEMS THAT HAVE (some)ANSWERS!! You should be able to do quick knowledge checks.
topic based learning is more difficult and I feel like it's like making your own sandwich vs buying a prepackaged one.
From my research so far, here is what I have found...
the main topics that one should learn are: * some tidbit of history on why oop * fundamental object oriented concepts: inheritance, encapsulation, and interfaces * network of objects and their restricted interactions
* modeling a domain using objects * documenting objects and their interactions * how are objects represented in memory * SOLID principles * solutions (design patterns) to common problems * concurrent design and thread safety in oop designs * tools in oop design (CRC cards, UML, etc.) * actually making projects and laying out the code in an implementation language.
Here are some books I seem to like so far.
books:
Holger Gast - How to Use Objects: Code and Concepts (https://www.amazon.com/gp/product/0321995546) This book seems to be what I was looking for. It has an integrated practical approach using the Eclipse source code as examples for various object oriented concepts. I have cross-checked various sources and it seems like this book covers all relevant concepts including SOLID principles.
Bertrand Meyer - Object-Oriented Software Construction https://www.amazon.com/Object-Oriented-Software-Construction... This seems to be a great reference. However, I haven't looked too thoroughly into it. I found a nice quote though.
"Today, no one will call security if one of the cocktail guests
declares object-oriented tastes. This is the buzzword effect, which
has been dubbed mOOzak: the omnipresence, in the computer press, of
O-O this and O-O that, causing a general dilution of the concepts.
The words flow so continuously from the loudspeakers — object,
class, polymorphism... — as to seem familiar, but are the concepts
widely understood? Often not." (29.1)
only found one course that I would probably refer to...
courses:
https://web.stanford.edu/class/archive/cs/cs108/cs108.1092
This has great course notes and projects to implement using object oriented programming.Sandi Metz seems to have the oop teaching thing down. I looked at her 3 day course, https://static1.squarespace.com/static/537c0374e4b0f52ed9294... to see what topics she covers there and it seems like it has mostly do with SOLID principles. Thanks for the suggestion, I've been looking at that book as well.
this is awesome. I was in a similar situation several years ago using crap like Clearwire, Hughes Net, and some mifi hacks to get internet to a dislocated house. I ended up researching and finding out about ubiquiti radios and found a way to hook up comcast to a garage by the road. the distance is about quarter of a mile from the modem location to the house. I went from having the most miserable internet experience (SATELLITE INTERNET SUCKS), to practically being in internet heaven.
Here's the kicker. Comcast was willing to drop a line to the house for around $15,000. No thanks. With two m5 ubiquiti radios and 100ft of ethernet cable, I solved the problem spending less than $300. It would have been nice to have a direct connection, but I'd rather save some money.
The radio's have been up for 5+ years now. I had a problem with one of the POE adaptors once, but other than that I think these devices are cost-effective and robust. I believe these radios can help bring about internet connectivity for a large portion of the unserved population. Easy to setup. Cheap. Robust.
I remember liking http://www.tangowithdjango.com/ .
It goes over building a link aggregating service using Django.
However, I also remember it being free. Doesn't seem to be an option with the most recent release.
Is the practice of shoving all disparate pieces of proprietary software (or individual projects) in the same repo a common occurrence? I have found that pulling unrelated changes just so that I can push my changes is an inconvenience. Furthermore, tracking the history of a particular project is confounded due to unrelated commits. I am sure that their vcs (piper?) makes this a feasible task, but for git, it seems like it would suck.
The article posted by kyrra, mentions this.
Given the value gained from the existing tools Google has built and the many advantages of the monolithic codebase structure, it is clear that moving to more and smaller repositories would not make sense for Google's main repository. The alternative of moving to Git or any other DVCS that would require repository splitting is not compelling for Google.
It seems like they have just too much invested in this "shove it in the same repo" style. Or is this the more appropriate way to do things in a large organization?
don't use git commit messages as "dear diary" sort of things.
For example:
"I fixed the button issue on the homepage. Still, need to center the title."
would be better written as:
"fixes button issue on homepage"
Always think about what that commit does to the codebase. This is obviously for single-line commits. I suppose it would be okay to "dear diary" in the commit body. You can provide rationality or context in the commit body.
disclaimer: you may need to have a masters in CS or Statistics to be taken seriously. For every success story you hear of someone "doing it on their own", scrutinize it enough and you'll see that they had either a decent educational background or support from a career facilitator (bootcamps).