signs of epilepsy to watch for
So much advice is heaped upon beginners that it can be hard to know where to start. However, these five practices are the foundation upon which everything else is built. The beginner I have in mind has a basic understanding of how programming works, has written mostly small programs of varying complexity, and is heading off to either a career in the field or committed to excellence for his or own personal projects. There is only one truly foundational activity in programming: writing code. To be good at it, you’re going to have to write a lot of code. That big body of work can be a vehicle for growth, or an exercise in repeatedly practicing a limited set of skills. To avoid the latter, you need to: Read a lot of code. Specifically, read a lot of code by excellent programmers. Not just good programmers, like the guy down the hall, but excellent ones. Due to the huge amount of open source today, this is easy to do. When I was learning Java, I read code from the Tomcat project and from the CI server, Cruise Control. I’ve read lots of good code since. It might be tempting to look for main() and start from there, but you’re likely to spend a lot of time just reading set-up code and command-line parsing. I prefer to scan the filenames to look for some activity that interests me and then dig into those files. It’s not crucial to understand the whole project or the ins and outs of the entire design, you’ll wear yourself out doing this. Read the code. Look at the comments, see what the authors are doing, and how they went about it. Learn your tools thoroughly. I think the greatest loss of programming time is not in debugging or rewriting code, but in the innumerable seconds lost here and there by developers who don’t really know their tools. I am referring to: the IDE, the language, the build system, and the VCS. Of these, the IDE and the language are by far the most important. You should, after a few weeks of practice, know almost every keystroke combo in the IDE, so that you touch the mouse only when it saves a lot of keystrokes. If you know the keystrokes, you know the commands. If you use the mouse only, you know only menus on which you tend to click on the same one or two entries. Knowing the IDE is pure discipline. Knowing large languages, such as Java or C++, takes more than discipline. They’re huge, as are their libraries. Reading is the best approach, in my view. Read code that uses features you don’t know and you’ll look for opportunities to use them. Books (rather than blogs) are another excellent source. Read about features that are on the periphery of what you use currently, and soon you’ll find the periphery expanding. Knowing the VCS and build systems make you a desirable team member — who doesn’t waste time due of ignorance of important operations. Plan your code before you write it. I think this is the most difficult item on this list. In exchange, it probably delivers the most benefit. I’m not thinking of formal design — at your stage, that’s unlikely to be necessary. But you do need to plan out the code in some manner other than carrying it around in your head. The simplest approach is to write up a small document (I frequently use a mind map): What are the requirements for this code? How will you implement it? What do I need to know that I don’t know now? What are the objects I will need or need to create? And write this out. Only then begin to code, you’ll find the code much easier to write, to document, and to get correct. Save your notes — they’re great reference material. Write lots of code and have it reviewed. If your site does not do code reviews, do them yourself. Find the best programmer who’ll give you useful advice in a way that can be heard and understood. Don’t be a pest, but don’t avoid the process because you’re shy, busy, or feel you’re good enough, etc. Code reviews should be part of your programming life. Be creative. Try pair programming with someone more senior than you for an afternoon. The important thing is that you need feedback that you cannot give yourself. Write tests as you code. This advice is perhaps the only controversial item here. It’s not an endorsement of TDD. But it is an endorsement of knowing that your code works in most scenarios it will face. Start with unit tests and exercise new code with edge-case values. For example, does your function work if it is passed a negative value, or the maximum integer size? If not, does it throw an informative exception or just blow up? If not an exception, have you narrowed the range of inputs with asserts? If so, test the asserts. Use the planning you did earlier to write mocks, and then begin testing your new code with objects you still need to write. This will clarify design issues in your current code and the upcoming objects. Save your tests and run them prior to every check-in, so that they can be early warning systems for later code that breaks your current code. There’s a lot more advice and many wise sayings that can be added to this list. But that’s part of the problem: There’s so much advice available that it’s difficult to know exactly where to start. For that reason, I purposely limit my recommendations to just five points. If you apply them with diligence, you’ll soon find two things: You’ll be able to handle progressively larger and more important tasks, and you’ll look back in embarrassment at code you wrote just a few months ago. Both experiences are sure signs of progress. Good luck!
Okay so I just finished my first semester in university and lets just say I’ve got to change my whole learning/studying style to be able to survive here. Here are some of the things I’ve learnt to do and will be doing in second semester:
1. Start backwards:
I highschool, you try to learn the subject by going to class, listening to the teacher, then going home, reading the textbook, then doing the homework, then making notes, then studying for the final. In engineering, you have to do this backwards: You will realize that you are going to be basically teaching yourself the content one way or another soon before the finals, so better start now. First, go through the past exams and past papers - make a list of all the major topics covered (example: if in an electrical circuits course, a question on a past final exam is “find the equivalent circuit using thevenin’s theorem” then write Thevenin’s theorem as a topic to be learned). Then go on youtube and find videos that explain each of these topics to you and make rough notes on these topics. (Reblog if you want me to make a master list of all the youtubers that teach engineering really well). Then go through he textbook and find sample questions not he theorem/topic you learnt off of youtube, and solve them. Then write your doubts in a notebook. Then go to class and have two notebooks open : one where you are taking notes of what the prof is saying, and one which has your practice problems solved, and see if the prof clarifies your doubts in the lecture. The lecture should be review of what you learnt at home!!!! Then, after class go to the prof and clarify any doubts. Then go home and make final notes on the topic. I like to make notes on cue cards (more on this later). Then go back to the final exam and see if you can solve the problem.
2. Make cue cards:
I like to get index cards and write a short note on how to solve each type of question I am likely to see on a final exam on each question card. Example: one cue card for “how to find resistance using wheatstone bridge” . I link the cue cards with a clip and its easier to carry the around and study.
3. Get pretty notebooks and organize your stationary. Its easier to stay focused when everything is pretty.
How much is known about Neptune's atmosphere, more precisely about "raining diamonds"?
The atmosphere of Neptune is, in many ways, similar to that of Uranus. However, its dynamics are presented in a complex configuration of strong winds that sweep the planet, besides the formation of cyclonic storms and clouds, with clearly visible visual characteristics.
The upper atmosphere of Neptune is made up of 79% hydrogen, about 18% helium and most of the remaining methane, the presence of which imparts the blue-indigo color of the planet by absorbing the incident red radiation.
The diamond rain on Neptune and Uranus was predicted long ago, because of the pressure inside the planet that could be formed by carbon and hydrogen. But now it was virtually confirmed by an experiment conducted by an international team of scientists, this “diamond rain” was recreated under laboratory conditions for the first time, giving us the first glimpse into what things could be like inside ice giants.
At about 10,000 km below the surface of these planets, hydrocarbon compression is thought to create diamonds. To recreate these conditions, the international team submitted a polystyrene plastic sample to two shock waves using an intense optical laser in the Matter in Extreme Conditions (MEC) instrument, which were then paired with X-ray pulses from Linac Coherent Light Source SLAC (LCLS).
Polystyrene is made from a mixture of hydrogen and carbon, key components of the general chemical composition of the ice giants. In the experiment, the team was able to see that almost all of the carbon atoms in polystyrene were embedded in small diamond structures up to a few nanometers wide.
However, in Uranus and Neptune, scientists predict that diamonds would become much larger, perhaps millions of carats by weight.
2°image: (This false color photograph of Neptune was made from Voyager 2 images taken through three filters: blue, green, and a filter that passes light at a wavelength that is absorbed by methane gas. Thus, regions that appear white or bright red are those that reflect sunlight before it passes through a large quantity of methane). 1°image, 3°image & 4°image.
Here are two links if you want to read about it: Click here and here.
Phobos, Mars’ moon, from the surface of the Mars. Credit: NASA / JPL / MSSS / Justin Cowart [840x1050]