-
Notifications
You must be signed in to change notification settings - Fork 0
/
atom.xml
83 lines (47 loc) · 12.9 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Medhat Omr</title>
<subtitle>I build Software</subtitle>
<link href="/atom.xml" rel="self"/>
<link href="https://momr.github.io/"/>
<updated>2018-04-11T05:31:23.224Z</updated>
<id>https://momr.github.io/</id>
<author>
<name>Medhat Omr</name>
</author>
<generator uri="http://hexo.io/">Hexo</generator>
<entry>
<title>Ten years of programming</title>
<link href="https://momr.github.io/2018/04/10/Ten-years-of-programming/"/>
<id>https://momr.github.io/2018/04/10/Ten-years-of-programming/</id>
<published>2018-04-11T05:20:49.000Z</published>
<updated>2018-04-11T05:31:23.224Z</updated>
<content type="html"><![CDATA[<h1 id="what-did-i-learn-about-programming-after-10-years-from-my-graduation"><a class="markdownIt-Anchor" href="#what-did-i-learn-about-programming-after-10-years-from-my-graduation"></a> What did I learn about programming after 10 years from my graduation</h1><p>Ten years ago, I imagined myself writing this exact post, with that same title, but with slightly different content. In my ten years ago version, I imagined myself just writing about some wise advice or maybe some of my knowledge accumulated over the past ten years.</p><p>Today comes, and here is my answer to the question in the title of the post. Unfortunately no wise advice or knowledge more important than that programming is not easy. programming is not easy especially as most of programming books title say like teach yourself programming language X in 24 hours! or even days.</p><p>In fact, I learned it is quite the opposite, programming is hard, and I am not alone who finds it that way.</p><p>For those who don’t know me, well, you don’t know me for a good reason, I am an average person if not less than an average, who happens to perform well in both his undergrad and post grad schools, and somehow managed to survive accumulating ten years of experience in software development field (in fact about 6 years if I didn’t count my Ph.D. and compulsory military service).</p><p>Now, forget about me, and let’s see two examples of the top people in the field, and their opinion about how much time, and effort is required to master your skills in such field.</p><h2 id="1-from-teach-yourself-programming-in-ten-years-by-peter-norvig"><a class="markdownIt-Anchor" href="#1-from-teach-yourself-programming-in-ten-years-by-peter-norvig"></a> 1. From Teach Yourself Programming in Ten Years by Peter Norvig</h2><p>In the introduction of this amazing blog post by Peter Norvig, he says "Walk into any bookstore, and you’ll see how to Teach Yourself Java in 24 Hours alongside endless variations offering to teach C, SQL, Ruby, Algorithms, and so on in a few days or hours. The Amazon advanced search for [title: teach, yourself, hours, since: 2000 and found 512 such books. Of the top ten, nine are programming books (the other is about bookkeeping). Similar results come from replacing “teach yourself” with “learn” or “hours” with “days.”</p><p>Then Peter concludes that "People are either in a big rush to learn about programming, or that programming is somehow fabulously easier to learn than anything else. Felleisen et al. give a nod to this trend in their book How to Design Programs, when they say “Bad programming is easy. Idiots can learn it in 21 days, even if they are dummies.” The Abtruse Goose comic also had their take.<br>"</p><p>I strongly recommend the whole post over <a href="http://norvig.com/21-days.html" target="_blank" rel="noopener">here</a></p><h2 id="2-from-an-advice-on-how-to-study-machine-learningdeep-learning-by-jeremy-howard"><a class="markdownIt-Anchor" href="#2-from-an-advice-on-how-to-study-machine-learningdeep-learning-by-jeremy-howard"></a> 2. From an advice on how to study Machine Learning/Deep Learning by Jeremy Howard</h2><p>“It took me months to create this notebook. Not months of progress, but months of continuous failure. The difference between those who succeed and those who don’t are the ones that succeed didn’t give up!” said Jeremy Howard</p><p>Then he continued, “Also, I spend at least 50% of everyday learning and/or practicing new things, and have done so since I made that commitment at the age of 18. (Nowadays it’s about 90% of my day). <strong>I don’t watch TV or play computer games or get lost in social media</strong> so I maximize the time I spend on things I care about. So over time, I’ve gotten faster at doing stuff, since I’ve been practicing and learning lots.”</p><p>He also talked about one of his MOOC students, Louis Monier, who is also known as the “father of internet search” - he was the CTO of the first big web search company (Alta Vista). Jeremy said that “Louis Monier’s a pretty smart guy! He told me he had watched the part 1 (2017) videos so many times that he knew much of them off by heart. He also practiced on a home deep learning project whilst watching the videos, and IIRC he spent something like 6 months working on that. If Louis needs to study this much, then the rest of us should probably expect to work even harder if we want to master the material.”</p><p>The MOOC referred to above by Jeremy is his freely available online course “Practical Deep Learning For Coders, Part 1”, and which you can find it over <a href="http://course.fast.ai/" target="_blank" rel="noopener">here</a></p><h2 id="conclusion"><a class="markdownIt-Anchor" href="#conclusion"></a> Conclusion</h2><p>I just wanted to share this post with everyone who was like myself 10 years ago, or even yet still like me now, and wonders when I am going to feel/say that I mastered this programming skill or that computer science idea or method.</p><p>My advice to everyone who is really interested in programming or computer science, just be patient and have faith. Never think that programming is easy.</p><p>In the end, I spent a long enough time in such field and I can’t reflect but on my own experience. In my very humble opinion, programming is hard, but in some magical way happens to be fun too. So, for me, it’s just worth it, it worth my time spent trying, then failing, then repeating, then just feeling just getting better than my first trial 😅</p><p>Wish everyone all the best on their journey, and may the source be with you.</p>]]></content>
<summary type="html">
<h1 id="what-did-i-learn-about-programming-after-10-years-from-my-graduation"><a class="markdownIt-Anchor" href="#what-did-i-learn-about-pro
</summary>
</entry>
<entry>
<title>A Year in Review</title>
<link href="https://momr.github.io/2018/02/18/a-year-in-review/"/>
<id>https://momr.github.io/2018/02/18/a-year-in-review/</id>
<published>2018-02-19T05:26:09.000Z</published>
<updated>2018-02-19T16:21:03.000Z</updated>
<content type="html"><![CDATA[<img src="/2018/02/18/a-year-in-review/2017-collection.png" title="My 2017 image"><h2 id="1-p-eng"><a class="markdownIt-Anchor" href="#1-p-eng"></a> 1. P. Eng.</h2><p>I never imagined I would be that happy after receiving the email stating my achievement of my professional designation!</p><blockquote><p>Dear Dr. Omr,<br>I am pleased to inform you that your application for registration as a Professional Engineer has been approved and your name has been entered in our membership records. Congratulations on achieving your professional designation!</p></blockquote><h2 id="2-inventor"><a class="markdownIt-Anchor" href="#2-inventor"></a> 2. Inventor</h2><p>I have now 1 issued patent!</p><img src="/2018/02/18/a-year-in-review/patent.png" title="My patent image"><h2 id="3-staff-engineer"><a class="markdownIt-Anchor" href="#3-staff-engineer"></a> 3. Staff Engineer</h2><p>I became Staff Software Algorithm Designer (Staff Algorithm Engineer)</p><img src="/2018/02/18/a-year-in-review/staff_eng.png" title="My staff_eng image"><h2 id="4-self-driving-car-engineer"><a class="markdownIt-Anchor" href="#4-self-driving-car-engineer"></a> 4. Self-Driving Car Engineer</h2><p>Last but not least, getting my Self-Driving Engineer Nanodegree Certificate</p><img src="/2018/02/18/a-year-in-review/nd013.png" title="My Nanodegree Certificate image">]]></content>
<summary type="html">
<img src="/2018/02/18/a-year-in-review/2017-collection.png" title="My 2017 image">
<h2 id="1-p-eng"><a class="markdownIt-Anchor" href="#1-p-
</summary>
</entry>
<entry>
<title>Programming Land VISA Application</title>
<link href="https://momr.github.io/2018/02/18/programming-land-VISA-application/"/>
<id>https://momr.github.io/2018/02/18/programming-land-VISA-application/</id>
<published>2018-02-19T00:36:00.000Z</published>
<updated>2018-02-19T00:36:00.000Z</updated>
<content type="html"><![CDATA[<p>Hello, I’m Medhat Omr, a citizen of Programming Land. In Programming Land, we don’t have Europe, Asia, or Africa. Instead, we have Google, Github, and Stackoverflow. If you want to visit Programming Land, you need to have a Programming Land VISA, which I will talk about how to obtain one in the following steps.</p><h2 id="step-1-picking-a-language"><a class="markdownIt-Anchor" href="#step-1-picking-a-language"></a> Step #1: Picking a language</h2><blockquote><p>I speak Spanish to God, Italian to Women, French to Men, and German to my Horse. - Charles V, Holy Roman Emperor</p></blockquote><p>In Programming Land, we speak different languages to different programmers too. For e.g.:</p><ul><li>Programmers chasing performance usually speak C/C++</li><li>Programmers in the Web Union speak HTML, CSS, and JS and/or one of the following list: PHP, Ruby, Java, C#, or Python</li><li>Programmers in Data Science and neighbors speak MATLAB, R, and Python</li><li>Enterprise Apps, most probably C#, C++, or Java</li><li>etc.</li></ul><p>Therefore, step number one is depending on who you want to speak/write to, pick the preferred language for them. In other words, based on your project type, choose the most suitable language for it even if it is new to you. It worth learning it.</p><h2 id="step-2-learn-the-language-you-picked-in-the-previous-step-and-master-it"><a class="markdownIt-Anchor" href="#step-2-learn-the-language-you-picked-in-the-previous-step-and-master-it"></a> Step #2: Learn the language you picked in the previous step and master it</h2><p>Learning the syntax and features of a programming language is like learning the alphabet in English or French. All the subsequent steps depend on it, like everything in any writing language depends on knowing the alphabet of that language. So, invest time in knowing your language. It will give you great returns in the next steps.</p><h2 id="step-3-learn-object-oriented-programming-oop"><a class="markdownIt-Anchor" href="#step-3-learn-object-oriented-programming-oop"></a> Step #3: Learn Object Oriented Programming (OOP)</h2><p>OOP is like grammar in any writing language for me, not syntax; I didn’t map language keywords to the alphabet of a language to map syntax to grammar. Lots of programmers once learn the syntax of a programming language they stop learning about programming and start to program right away. Keep in mind, all time you spend in learning about programming will save you multiple magnitudes of time in debugging and/or maintaining your code afterwards.</p><h2 id="step-4-data-structures-ds-and-algorithms"><a class="markdownIt-Anchor" href="#step-4-data-structures-ds-and-algorithms"></a> Step #4: Data structures (DS) and algorithms</h2><p>In this step is where you start building up your vocabulary. The more DS and algorithms you know, the more fluent you will be in your programming language. So I will let you imagine how is life without vocabulary, and you will know how I feel when I see code which has nothing but arrays and for loops.</p><h2 id="step-5-design-patterns"><a class="markdownIt-Anchor" href="#step-5-design-patterns"></a> Step #5: Design Patterns</h2><p>Congratulations, now you can write a whole project by yourself, but what about an organization? How will you structure your code? The answer is design patterns. Like we have listing & classification, chronological & Compare contrast, process, cause & effect … etc. We have, the Multi-Tier architecture, the Model-View-Controller (MVC) architecture or pattern, the Singleton Pattern, the Factory Pattern, the Observer Patter … etc. In future posts, I will write more about each step in details. However, in the next post, I like to write first about what tools do we use in programming land. Stay tuned and happy programming.</p>]]></content>
<summary type="html">
<p>Hello, I’m Medhat Omr, a citizen of Programming Land. In Programming Land, we don’t have Europe, Asia, or Africa. Instead, we have Google
</summary>
</entry>
</feed>