Showing posts with label article. Show all posts
Showing posts with label article. Show all posts

Sunday, 2 June 2013

Some lessons from NFL

http://www.nfl.com/news/story/0ap1000000208418/article/antonio-cromartie-now-mentoring-ny-jets-rookies

 having "too much confidence" is a little like the guy who says in the job interview that his greatest flaw is "trying to do too much." That's ultimately what you want.


"I tell the young guys, 'Don't spend any money the first year and a half of your career,'" Cromartie said. "You don't know what will happen after that. You might be released. You might be hurt. Just save your money."
After his financial revolution, Schwartz said his retirement is funded fully to age 100 and all his children will be taken care of through college.

Friday, 31 May 2013

Low-cost, hobbyist robotics

"Dash Robotics was founded at UC Berkeley by four Ph.D. students with a simple mission — to make robots cheap, lightweight, and fun to use. The breakthrough came when one of the founders realized that robot joints could be mechanically engineered and constructed in a completely different way."

http://www.wired.com/business/2013/05/a-smarter-use-of-crowdfunding-for-the-cheapest-robots-in-silicon-valley-a-vcs-view/

Nerve signals and how to rewire your brain

"The takeaway: practicing skills over time causes those neural pathways to work better in unison via myelination. To improve your performance, you need to practice frequently, and get lots of feedback so you practice correctly."


http://lifehacker.com/the-science-of-practice-what-happens-when-you-learn-a-510255025

Hexapod documentary


"This version is 3D printed using a Stratasys Dimension 3d printer. These parts are extremely rugged and precise compared to any of the Makerbot and RepRap hobby grade 3D printers."


 "I'm interested in robot locomotion that emulates biological movement," Bunting said. "And in doing more work on robotic vision."
^exact same as me!


The
Note to self: Figure out how to generate these API documentation pages for future projects. 
http://12centdwarf.com:8080/API/

" am currently working on a CNC machine to build parts out of aluminum. I hope to begin prototyping aluminum parts in the next few months, but this is a complicated process when it comes to generating G-code to machine the parts from my complicated 3D designs."

http://engr.arizona.edu/news/story.php?id=292

"Matt has since then added several features, like foot sensors, 3D balance gestures, and the hexapod also has a 3DOF camera for doing face tracking. Awesome!" 
http://www.robotshop.com/blog/en/the-story-of-matt-bunting-and-the-hexapod-that-intel-bought-3736
The lesson here is multiple iterations!! Make something, get feedback, and improve!


Merits of IMSA and other "magnet" schools

Even small things like, giving students a day off per week to pursue their own interests, can be just what some students need at a young age. The key early on is to expose yourself to as many topics as possible, see what's interesting to you.

http://www.wired.com/wiredenterprise/2013/05/hogwarts-for-hackers/all/

Pulse jet bike

Dangerous but awesome

http://jalopnik.com/absurdly-loud-jet-bike-built-by-absurdly-loud-dudes-510494866

High speed transport

Claims to feel the same force as if you were in the car, but going much faster. Not sure how this is possible.

http://news.yahoo.com/blogs/trending-now/futuristic-high-speed-tube-travel-could-york-los-171007828.html?vp=1

Wednesday, 29 May 2013

Gas particle logic

Mosh pit movement follows the same motion as disordered 2D particles.

http://www.guitarworld.com/physicists-music-fans-mosh-pits-follow-same-logic-gas-particles

Monday, 27 May 2013

How to be a good programmer

Really insightful article on improving technical skills, but also interpersonal skills. Some notable quotes that stood out to me:

PERSONAL SKILLS


Debugging is the cornerstone of being a programmer. The first meaning of the verb to debug is to remove errors, but the meaning that really matters is to see into the execution of a program by examining it. A programmer that cannot debug effectively is blind.


If there is a single key to debugging is to use the divide and conquer technique on the mystery.




The key to improving the performance of a very complicated system is to analyze it well enough to find the bottlenecks, or places where most of the resources are consumed. There is not much sense in optimizing a function that accounts for only 1% of the computation time. As a rule of thumb you should think carefully before doing anything unless you think it is going to make the system or a significant part of it at least twice as fast. There is usually a way to do this. Consider the test and quality assurance effort that your change will require. Each change brings a test burden with it, so it is much better to have a few big changes.


Sometimes you'll encounter loops, or recursive functions, that take a long time to execute and are bottlenecks in your product. Before you try to make the loop a little faster, but spend a few minutes considering if there is a way to remove it entirely. Would a different algorithm do? Could you compute that while computing something else? If you can't find away around it, then you can optimize the loop. This is simple; move stuff out. In the end, this will require not only ingenuity but also an understanding of the expense of each kind of statement and expression. Here are some suggestions:
  • Remove floating point operations.
  • Don't allocate new memory blocks unnecessarily.
  • Fold constants together.
  • Move I/O into a buffer.
  • Try not to divide.
  • Try not to do expensive typecasts.
  • Move a pointer rather than recomputing indices.

Programming ought not to be an experimental science, but most working programmers do not have the luxury of engaging in what Dijkstra means by computing science. We must work in the realm of experimentation, just as some, but not all, physicists do. If thirty years from now programming can be performed without experimentation, it will be a great accomplishment of Computer Science.


TEAM SKILLS


When not possible to take the time for some investigation, you should first establish the meaning of the estimate very clearly. Restate that meaning as the first and last part of your written estimate. Prepare a written estimate by deconstructing the task into progressively smaller subtasks until each small task is no more than a day; ideally at most in length. The most important thing is not to leave anything out. For instance, documentation, testing, time for planning, time for communicating with other groups, and vacation time are all very important. If you spend part of each day dealing with knuckleheads, put a line item for that in the estimate. This gives your boss visibility into what is using up your time at a minimum, and might get you more time.
I know good engineers who pad estimates implicitly, but I recommend that you do not. One of the results of padding is trust in you may be depleted. For instance, an engineer might estimate three days for a task that she truly thinks will take one day. The engineer may plan to spend two days documenting it, or two days working on some other useful project. But it will be detectable that the task was done in only one day (if it turns out that way), and the appearance of slacking or overestimating is born. It's far better to give proper visibility into what you are actually doing. If documentation takes twice as long as coding and the estimate says so, tremendous advantage is gained by making this visible to the manager.
Pad explicitly instead. If a task will probably take one day---but might take ten days if your approach doesn't work---note this somehow in the estimate if you can; if not, at least do an average weighted by your estimates of the probabilities. Any risk factor that you can identify and assign an estimate to should go into the schedule. One person is unlikely to be sick in any given week. But a large project with many engineers will have some sick time; likewise vacation time. And what is the probability of a mandatory company-wide training seminar? If it can be estimated, stick it in. There are of course, unknown unknowns, orunk-unks. Unk-unks by definition cannot be estimated individually. You can try to create a global line item for all unk-unks, or handle them in some other way that you communicate to your boss. You cannot, however, let your boss forget that they exist, and it is devilishly easy for an estimate to become a schedule without the unk-unks considered.


If you need information about concrete things that are objective and easy to verify, for example the latest patch level of a software product, ask a large number of people politely by searching the internet for it or by posting on a discussion group. Don't search on the internet for anything that smacks of either opinion or subjective interpretation: the ratio of drivel to truth is too high.
If you need general knowledge about something subjective the history of what people have thought about it, go to the library (the physical building in which books are stored). For example, to learn about math or mushrooms or mysticism, go to the library.
If you need to know how to do something that is not trivial get two or three books on the subject and read them. You might learn how to do something trivial, like install a software package, from the Internet. You can even learn important things, like good programming technique, but you can easily spend more time searching and sorting the results and attempting to divine the authority of the results than it would take to read the pertinent part of a solid book.
If you need information that no one else could be expected to know for example, ‘does this software that is brand new work on gigantic data sets?’, you must still search the internet and the library. After those options are completely exhausted, you may design an experiment to ascertain it.
If you want an opinion or a value judgment that takes into account some unique circumstance, talk to an expert. For instance, if you want to know whether or not it is a good idea to build a modern database management system in LISP, you should talk to a LISP expert and a database expert.
If you want to know how likely it is that a faster algorithm for a particular application exists that has not yet been published, talk to someone working in that field.
If you want to make a personal decision that only you can make like whether or not you should start a business, try putting into writing a list of arguments for and against the idea. If that fails, consider divination. Suppose you have studied the idea from all angles, have done all your homework, and worked out all the consequences and pros and cons in your mind, and yet still remain indecisive. You now must follow your heart and tell your brain to shut up. The multitude of available divination techniques are very useful for determining your own semi-conscious desires, as they each present a complete ambiguous and random pattern that your own subconscious will assign meaning to.





Respect every person's time and balance it against your own. Asking someone a question accomplishes far more than just receiving the answer. The person learns about you, both by enjoying your presence and hearing the particular question. You learn about the person in the same way, and you may learn the answer you seek. This is usually far more important than your question.
However, the value of this diminishes the more you do it. You are, after all, using the most precious commodity a person has: their time. The benefits of communication must be weighed against the costs. Furthermore, the particular costs and benefits derived differ from person to person. I strongly believe that an executive of 100 people should spend five minutes a month talking to each person in her organization, which would be about 5% of their time. But ten minutes might be too much, and five minutes is too much if they have one thousand employees. The amount of time you spend talking to each person in your organization depends on their role (more than their position). You should talk to your boss more than your boss's boss, but you should talk to your boss's boss a little. It may be uncomfortable, but I believe you have a duty to talk a little bit to all your superiors, each month, no matter what.
The basic rule is that everyone benefits from talking to you a little bit, and the more they talk to you, the less benefit they derive. It is your job to provide them this benefit, and to get the benefit of communicating with them, keeping the benefit in balance with the time spent.
It is important to respect your own time. If talking to someone, even if it will cost them time, will save you a great deal of time, then you should do it unless you think their time is more valuable than yours, to the tribe, by that factor.
A strange example of this is the summer intern. A summer intern in a highly technical position can't be expected to accomplish too much; they can be expected to pester the hell out of everybody there. So why is this tolerated? Because the pestered are receiving something important from the intern. They get a chance to showoff a little. They get a chance to hear some new ideas, maybe; they get a chance to see things from a different perspective. They may also be trying to recruit the intern, but even if this is not the case there is much to gain.
You should ask people for a little bit of their wisdom and judgment whenever you honestly believe they have something to say. This flatters them and you will learn something and teach them something. A good programmer does not often need the advice of a Vice President of Sales, but if you ever do, you be sure to ask for it. I once asked to listen in on a few sales calls to better understand the job of our sales staff. This took no more than 30 minutes but I think that small effort made an impression on the sales force.
^6/2/2013: I am currently guilty of doing this a little too much. Sorry everybody, I'm working on improving!


Life is too short to write crap nobody will read; if you write crap, nobody will read it. Therefore a little good documentation is best. ... Writing good documentation is, first of all, good writing. I suggest you find books on writing, study them, and practice. But even if you are a lousy writer or have poor command of the language in which you must document, the Golden Rule is all you really need: ``Do unto others as you would have them do unto you.'' Take time to really think about who will be reading your documentation, what they need to get out of it, and how you can teach that to them. If you do that, you will be an above average documentation writer, and a good programmer.



To understand it, you will have to read the source code. You will probably have to experiment with it.
This is a good time to document, even if it is only for yourself, because the act of trying to document the code will force you to consider angles you might not have considered, and the resulting document may be useful. While you're doing this, consider what it would take to rewrite some or all of the code. Would it actually save time to rewrite some of it? Could you trust it better if you rewrote it? Be careful of arrogance here. If you rewrite it, it will be easier for you to deal with, but will it really be easier for the next person who has to read it? If you rewrite it, what will the test burden be? Will the need to re-test it outweigh any benefits that might be gained?


Use assertion checking and test drivers whenever possible. This not only catches bugs early, but is very useful later on and lets you eliminate mysteries that you would otherwise have to worry about.



Source code control systems let you manage projects effectively. They're very useful for one person and essential for a group. They track all changes in different versions so that no code is ever lost and meaning can be assigned to changes. One can create throw-away and debugging code with confidence with a source code control system, since the code you modify is kept carefully separate from committed, official code that will be shared with the team or released.


When stumped, take a break. I sometimes meditate for 15 minutes when stumped and the problem magically unravels when I come back to it. A night's sleep sometimes does the same thing on a larger scale. It's possible that temporarily switching to any other activity may work.



When disagreement arises, it must be resolved somehow, it cannot be ducked for long. Difficult people are often extremely intelligent and have something very useful to say. It is critical that you listen and understand the difficult person without prejudice caused by the person. A failure to communicate is often the basis of disagreement but it can sometimes be removed with great patience. Try to keep this communication cool and cordial, and don't accept any baits for greater conflict that may be offered. After a reasonable period of trying to understand, make a decision.
Don't let a bully force you to do something you don't agree with. If you are the leader, do what you think is best. Don't make a decision for any personal reasons, and be prepared to explain the reasons for your decision. If you are a teammate with a difficult person, don't let the leader's decision have any personal impact. If it doesn't go your way, do it the other way whole-heartedly.
Difficult people do change and improve. I've seen it with my own eyes, but it is very rare. However, everyone has transitory ups and downs.



Finally, if possible, measure the impact of your work in terms of something that will be personally motivating. For example, when fixing bugs, counting the number of bugs that I have fixed is not at all motivational to me, because it is independent of the number that may still exist, and is also affects the total value I'm adding to my company's customers in only the smallest possible way. Relating each bug to a happy customer, however, is personally motivating to me.





To be trusted you must be trustworthy. You must also be visible. If know one knows about you, no trust will be invested in you. With those close to you, such as your teammates, this should not be an issue. You establish trust by being responsive and informative to those outside your department or team. Occasionally someone will abuse this trust, and ask for unreasonable favors. Don't be afraid of this, just explain what you would have to give up doing to perform the favor.
Don't pretend to know something that you don't. With people that are not teammates, you may have to make a clear distinction between ``not knowing right off the top of my head'' and ``not being able to figure it out, ever.''




Learning new skills, especially non-technical ones, is the greatest fun of all. Most companies would have better morale if they understood how much this motivates programmers.
Humans learn by doing. Book-reading and class-taking are useful. But could you have any respect for a programmer who had never written a program? To learn any skill, you have to put yourself in a forgiving position where you can exercise that skill. When learning a new programming language, try to do a small project it in before you have to do a large project. When learning to manage a software project, try to manage a small one first.
A good mentor is no replacement for doing things yourself, but is a lot better than a book. What can you offer a potential mentor in exchange for their knowledge? At a minimum, you should offer to study hard so their time won't be wasted.
Try to get your boss to let you have formal training, but understand that it often not much better than the same amount of time spent simply playing with the new skill you want to learn. It is, however, easier to ask for training than playtime in our imperfect world, even though a lot of formal training is just sleeping through lectures waiting for the dinner party.
If you lead people, understand how they learn and assist them by assigning them projects that are the right size and that exercise skills they are interested in. Don't forget that the most important skills for a programmer are not the technical ones. Give your people a chance to play and practice courage, honesty, and communication.




Carefully consider the cost of a meeting; it costs its duration multiplied by the number of participants. Meetings are sometimes necessary, but smaller is usually better. The quality of communication in small meetings is better, and less time overall is wasted. If any one person is bored at a meeting take this as a sing, that the meeting should be smaller.


Disagreement is a great opportunity to make a good decision, but it should be handled delicately. Hopefully you feel that you have expressed your thoughts adequately and been heard before the decision is made. In that case there is nothing more to say, and you should decide whether you will stand behind the decision even though you disagree with it. If you can support this decision even though you disagree, say so. This shows how valuable you are because you are independent and are not a yes-man, but respectful of the decision and a team player.


Build vs. Buy: after considering these questions, you should perhaps prepare two draft project plans, one for building and one for buying. This will force you to consider the integration costs. You should also consider the long term maintenance costs of both solutions. To estimate the integration costs, you will have to do a thorough evaluation of the software before you buy it. If you can't evaluate it, you will assume an unreasonable risk in buying it and you should decide against buying that particular product. If there are several buy decisions under consideration, some energy will have to be spent evaluating each.


Assume responsibility in excess of your authority. Play the role that you desire. Express appreciation for people's contribution to the success of the larger organization, as well as things as that help you personally.
If you want to become a team leader, instigate the formation of consensus. If you want to become a manager, take responsibility for the schedule. You can usually do this comfortably while working with a leader or a manager, since this frees them up to take greater responsibility. If that is too much to try, do it a little at a time.
Evaluate yourself. If you want to become a better programmer, ask someone you admire how you can become like them. You can also ask your boss, who will know less but have a greater impact on your career.
Plan ways to learn new skills, both the trivial technical kind, like learning a new software system, and the hard social kind, like writing well, by integrating them into your work.


If there is not crisp definition of success, you will not succeed.


You should allow people (including yourself) to fail occasionally and should plan for some failure in your schedule. If there is never any failure, there can be no sense of adventure. If there are not occasional failures, you are not trying hard enough. When someone fails, you should be as gentle as you can with them while not treating them as though they had succeeded.


You balance your personal needs against the needs of the team in choosing what aspect of a project to work on. You should do what you are best at, but try to find a way to stretch yourself not by taking on more work but by exercising a new skill. Leadership and communication skills are more important than technical skills. If you are very strong, take on the hardest or riskiest task, and do it as early as possible in the project to decrease risk.



To get the most from your teammates, develop a good team spirit and try to keep every individual both personally challenged and personally engaged.
To develop team spirit, corny stuff like logoized clothing and parties are good, but not as good as personal respect. If everyone respects everyone else, nobody will want to let anybody down. Team spirit is created when people make sacrifices for the team and think in terms of the good of the team before their own personal good. As a leader, you can't ask for more than you give yourself in this respect.
One of the keys to team leadership is to facilitate consensus so that everyone has buy in. This occasionally means allowing your teammates to be wrong. That is, if it does not harm the project too much, you must let some of your team do things their own way, based on consensus, even if you believe with great confidence it is the wrong thing to do. When this happens, don't agree, simply disagree openly and accept the consensus. Don't sound hurt, or like you're being forced into it, simply state that you disagree but think the consensus of the team is more important. This will often cause them to backtrack. Don't insist that they go through with their initial plan if they do backtrack.
If there is an individual who will not consent after you have discussed the issues from all appropriate sides, simply assert that you have to make a decision and that is what your decision is. If there is a way to judge if your decision will be wrong or if it is later shown to be wrong, switch as quickly as you can and recognize the persons who were right.
Ask your team, both as a group and individually, what they think would create team spirit and make for an effective team.
Praise frequently rather than lavishly. Especially praise those who disagree with you when they are praiseworthy. Praise in public and criticize in private; with one exception: sometimes growth or the correction of a fault can't be praised without drawing embarrassing attention to the original fault, so that growth should be praised in private.



To gather support for a project, create and communicate a vision that demonstrates real value to the organization as a whole. Attempt to let others share in your vision creation. This gives them a reason to support you and gives you the benefit of their ideas. Individually recruit key supporters for your project. Wherever possible, show, don't tell. If possible, construct a prototype or a mockup to demonstrate your ideas. A prototype is always powerful but in software it is far superior to any written description.



The best way to tell someone about a problem is to offer a solution at the same time. The second best way is to appeal to them for help with the problem. If there is a danger that you won't be believed, you should gather some support for your assertion.







Below is the Table of Contents:


2. Beginner
Personal Skills
Learn to Debug
How to Debug by Splitting the Problem Space
How to Remove an Error
How to Debug Using a Log
How to Understand Performance Problems
How to Fix Performance Problems
How to Optimize Loops
How to Deal with I/O Expense
How to Manage Memory
How to Deal with Intermittent Bugs
How to Learn Design Skills
How to Conduct Experiments
Team Skills
Why Estimation is Important
How to Estimate Programming Time
How to Find Out Information
How to Utilize People as Information Sources
How to Document Wisely
How to Work with Poor Code
How to Use Source Code Control
How to Unit Test
Take Breaks when Stumped
How to Recognize When to Go Home
How to Deal with Difficult People
3. Intermediate
Personal Skills
How to Stay Motivated
How to be Widely Trusted
How to Tradeoff Time vs. Space
How to Stress Test
How to Balance Brevity and Abstraction
How to Learn New Skills
Learn to Type
How to Do Integration Testing
Communication Languages
Heavy Tools
How to analyze data
Team Skills
How to Manage Development Time
How to Manage Third-Party Software Risks
How to Manage Consultants
How to Communicate the Right Amount
How to Disagree Honestly and Get Away with It
Judgement
How to Tradeoff Quality Against Development Time
How to Manage Software System Dependence
How to Decide if Software is Too Immature
How to Make a Buy vs. Build Decision
How to Grow Professionally
How to Evaluate Interviewees
How to Know When to Apply Fancy Computer Science
How to Talk to Non-Engineers
4. Advanced
Technological Judgment
How to Tell the Hard From the Impossible
How to Utilize Embedded Languages
Choosing Languages
Compromising Wisely
How to Fight Schedule Pressure
How to Understand the User
How to Get a Promotion
Serving Your Team
How to Develop Talent
How to Choose What to Work On
How to Get the Most From Your Teammates
How to Divide Problems Up
How to Handle Boring Tasks
How to Gather Support for a Project
How to Grow a System
How to Communicate Well
How to Tell People Things They Don't Want to Hear
How to Deal with Managerial Myths
How to Deal with Organizational Chaos


http://samizdat.mines.edu/howto/HowToBeAProgrammer.html

Persistence of vision in bicycle wheels

Display images in your bike wheels.

http://www.kickstarter.com/projects/minimonkey/monkey-light-pro-bicycle-wheel-display-system

Conducive Paint

Draw your own circuits.

http://edition.cnn.com/2013/05/23/tech/innovation/bare-electrically-conductive-paint/index.html

Saturday, 25 May 2013

Overcoming OCD

"Some of you will know who I am, but I am not concerned with that anymore. I am here to deliver a message.
"When I opened that email and checked to see if I was accepted, I ran to my mom and hugged her with the biggest smile. Then, I did a summer program at MIT and met the best friends anyone could ever ask for. When it was time to start my freshman year, I walked through the infinite with more confidence than well, a pre-frosh who was just accepted into the best school in the world. I did well my first semester, with the help and support of my friends of course. Soon after, it was time for my first IAP. During the month of January I came home. I remember the terrible drive home. I couldn't stop thinking of equations and concepts that I just finished talking about with my peers. This seems common and normal, but the extent by which it took over my time was abnormal. When I arrived home, my thoughts became even worse. They were magnified tenfold. I knew something was wrong when I could not sleep, eat or shower. I was avoiding everyone. I felt like I was there physically, but not mentally. I could not finish what I wanted to do during IAP, which was to prepare for classes for the upcoming semester. When I could not take thinking about the same concepts over and over and over again for hours and even days straight, I finally broke down. I cried in front of my father and told him what was wrong. I knew what I had. It was an evil, monstrous imp in my mind, that did not give up. It was a malignant tumor in my head that would not stop growing. It was a soul-sucking fiend that was never satisfied. I diagnosed myself and saw a psychiatrist, who at first did not believe me. Oh, how wrong he was. After giving me some zoloft, it was already time for the next semester.
I could not keep up with the classes I was taking. I emailed my professors with page long emails asking them deep questions that were not relevant. I had the biggest urge to derive, prove and question everything I was taught. When I couldn't handle it anymore, I sought help from MIT medical. Thinking I was suicidal, they sent me to Cambridge Hospital. I spent the night there, scared and worried. I sent a text out to all my friends talking about where I was. They became extremely worried and visited me at the place where I went to next. I was delivered to the best hospital in the world actually. But, sadly they first sent me to a psychiatric ward, where they took away my cell phone, laptop, and any other electronic devices I had. I couldn't even tell my parents where I was. They just kept me there with no definite time of leave. I wasn't allowed to go outside on my own and there were mandatory check ups every 10 minutes. This was one of the most horrible experiences in my life. I was stuck with people with bipolar disorder, schizophrenia...etc. I felt so alone, so isolated, and just plain violated. Then I heard of an institute, an institute that was the best of its kind, just like MIT. An institute to make me better. I was fortunate enough to attend that institute for about 13 weeks. I met the best of friends there. People who were dealing with the same problems I was dealing with. There were definitely many ups and downs, but I survived. I took exposure response prevention therapy along with cognitive therapy and classes for healing. When it was time for my departure, MIT informed me that I would have to complete some steps before returning. I would need to take classes "somewhere else" before coming back so they could tell I was ready for the institute's course load. So I did exactly that. I took classes at Columbia University. Then I took classes at another university and I received all A's.
And here I am today. With the help of constant psychotherapy and medicines, and the unforgettable support of my friends, I was able to overcome Obsessive Compulsive Disorder. Here I am today, writing this message. I am on summer vacation working as a teacher and a private tutor, with a whole bunch of experience points on my back.
Now what was the point of me telling you my deepest, darkest secret? I need your help. I need your prayers for me. I am applying again to MIT. My application is due on June 15th, and I find out around August if I got in. I did it once with early action, but now I need to do it again. I am nervous and anxious about the whole thing. But I am also confident and I feel strong. Please, pray or hope or just have faith in me. I don't need sympathy, but I need closure. This disorder is something that I have conquered, not by myself, but with the help of others. I wanted to let the MIT community know that OCD is not just a quirk or a little problem where people wash their hands too much or organize things too much. NO. It is much more than that. It is a crippling, mental disorder than is unbearable without help. But thank God that is over for me. I am ready for MIT.
I love MIT so much. I cannot express in words how much I have missed p-setting and staying up all night there. I want to again be part of the MIT community.
Don't take anything for granted. I know I will not anymore. Thank you for reading. I hope to see you soon. Live strong and forever MIT!" "


source: MIT confessions on facebook

Computer diagnosis algorithms

I don't understand how an algorithm can be used to diagnose. Is it curve-fitting based on previous cases of patient data?

5/27: probably. the machine learning is probably on patient data used to fit symptoms and measurements of previous patients to match diseases. like webmd but more quantitative.

source: http://mashable.com/2013/05/21/computer-leukemia-diagnosis/

Wednesday, 22 May 2013

Dragonfly robot

Just like its model in nature, this ultralight flying object can fly in all directions, hover in mid-air and glide without beating its wings. 




Festo is a German company. A job there would be awesome, I really agree with their bio-inspired designs.

Robobee

Bio-inspired robotic bee.



Tuesday, 21 May 2013

Ummm gun control?



Many weapons are easier and cheaper to come by than guns, or even this [expensive] plastic-printed gun, but people aren't walking around with knives and attacking people on sight. Same deal with drugs.

I don't know how much the existence (and non-existence) of various regulations propagate throughout society and economics, so I am hesitant to come to any conclusions. However, I predict that plastic guns will be subject to regulation by the government in the same way that regular guns are, and with similar amounts of smuggling and under-the-table sales.

Source:

http://gizmodo.com/the-newest-3d-printed-gun-is-far-more-dangerous-for-muc-508921619?rev=1369078672

Thursday, 25 April 2013

Robots and Insect Flight

http://io9.com/roboticists-discover-the-secret-of-insect-flight-and-i-476242076

Insect flight is dependent on the motion of the body in addition to the lift generated by the wings. Further study may lead to insight on how to design better aerial vehicles (especially with hovering).

Turtle Robot

http://spectrum.ieee.org/automaton/robotics/robotics-hardware/beware-the-unstoppable-robot-turtle#.UXmEYsekeMY.reddit

Bio-inspired turtle robot for studying how to traverse granular media.

Wednesday, 24 April 2013

A Link Between Artificial Intelligence and Thermodynamics

http://www.bbc.co.uk/news/science-environment-22261742

"The simplistic model considers a number of examples, such as a pendulum hanging from a moving cart. Simulations of the causal entropy idea show that the pendulum ends up pointing upward - an unstable situation, but one from which the pendulum can explore a wider variety of positions.
The researchers liken this to the development of upright walking."