“[E]xpert programmers control the complexity of their designs with the same general techniques used by designers of all complex systems. They combine primitive elements to form compound objects, they abstract compound objects to form higher-level building blocks, and they preserve modularity by adopting appropriate large-scale views of system structure. However, as we confront increasingly complex problems, we will find that … any fixed programming language is not sufficient for our needs. We must constantly turn to new languages in order to express our ideas more effectively. Establishing new languages is a powerful strategy for controlling complexity in engineering design; we can often enhance our ability to deal with a complex problem by adopting a new language that enables us to describe (and hence to think about) the problem in a different way, using primitives, means of combination, and means of abstraction that are particularly well suited to the problem at hand.

    Programming is endowed with a multitude of languages. There are physical languages, such as the machine languages for particular computers. These languages are concerned with the representation of data and control in terms of individual bits of storage and primitive machine instructions. The machine-language programmer is concerned with using the given hardware to erect systems and utilities for the efficient implementation of resource-limited computations. High-level languages, erected on a machine-language substrate, hide concerns about the representation of data as collections of bits and the representation of programs as sequences of primitive instructions. These languages have means of combination and abstraction, such as procedure definition, that are appropriate to the larger-scale organization of systems.

    Metalinguistic abstraction – establishing new languages – plays an important role in all branches of engineering design. It is particularly important in computer programming, because in programming not only can we formulate new languages but we can also implement these languages by constructing evaluators. An evaluator (or interpreter) for a programming language is a procedure that, when applied to an expression of the language, performs the actions required to evaluate that expression.

    It is no exaggeration to regard this as the most fundamental idea in programming:

The evaluator, which determines the meaning of expression in a programming language, is just another program.

To appreciate this point is to change our images of ourselves as programmers. We come to see ourselves as designers of languages, rather than only users of languages designed by others. “

– Abelson, Sussman, & Sussman, SICP pp 359-360.

The science is problematic

Physics: Keeps me on the ground

too many rules/equations

????Dark matter????Dark energy????

Astronomy: I want to know all the stars

Space???? Too big.

I cannot touch the sun

Geology: Nothing.

Rocks are perfect.

Just trust me on this one.

Chemistry: Too many chemicals I am not allowed to touch


Cool experiments are “too dangerous” and “could kill you”

Biology: Living things are problematic.

Like seriously.

Just look at humans.

Oceanography: So much we do not know

The ocean is deep

Things will eat you.


Also, fixing things make things worse



Probably you’ve heard Karlie’s speech about her coding scholarship. “I think it’s crucial that young women learn to code as early as possible, to ensure that we have a voice and a stake in what the world looks like”, she said at the famous promotional video.

Coding is an amazing skill for making some of your thoughts real. It’s the ultimate way for solving problems, implement algorithms and so on. As you may know, coding works as another way of communication, and so you need a language. But which one? Choosing the adequate one is sometimes difficult, always relevant. Wikipedia has a page itself describing the differences between C, C++, Python, Java, Pearl… Forums are a good source of information too.

For making easier the introduction to languages (maybe you don’t like how C++ works, Java syntaxis), I thought that a list of webs where you can code online could be useful.

Specifically for Web Development

My fave. I started when I was fifteen or sixteen learning on my own, and I was absolutely in love with Brackets. But here I found other software online:

Codepen: Minimal design, fast, with liveview that is automatically updated when you click them.

JsBin: This one allows you to code in the same page where it’s embedded into. Super recommended.

CSSDeck: Offers HTML, CSS, and JavaScript preprocessors, and is also connected with GitHub. In addition, you can record your process so it can be reviewed by others later.

Liveweave Updates the layout without reloading the page, and you can actually change the size of each individual cell, as well as downloading your code. It’s very similar to the others, and includes an interesting feature for autoformating and cleaning up the code. Many forums recommend it.


Ideone: Compiler and IDE that supports 40+ languages: Ada, assembler, C++, COBOL, Java, JavaScript, Pascal, Perl, PHP, Python, Ruby, SQL, and many more. Code can be download in the proper format to your computer system, and shared as well at a wide range of social networks. Super recommended.

CodeAnywhere: Super cool. Multiplatform (web, Android, iOS), 75 languages, customized playground, code beautify… It has different prices deppending on your needs. I recommend the $7 per user/mo., but they have a free version too.

Viper-7: PHP only. Lots of languages, like JavaScript, Python, Ruby… visually, simple and with examples. It has a special service called “Teachers”, for making easier the taching of code.

Runcode: Compiling fragments of text in the language of your choice.

Pythonanywhere: A fully developed environment exclusively for Python.

We would be very happy to receive your opinions, and complete the list with many more sources. There are plenty of courses online about learning to code, so give a try!

Originally posted by keepcalmandprogram

Coding Masterpost

Hey buddies guess what??

I’ve brought you some awesome links that I have for learning how to code, computer science posts, and also various things about hacking. :p


The best free and paid classes on the web. This is my go to site for learning something new.

$40 a month but the courses are top tier. You might find a free trial from microsoft dev essentials…

Free MIT courses with video lectures, notes, and resources!!!

Perhaps the most famous site for learning how to code, this is must have for any aspiring computer scientist, web dev, or programmer. A smooth UI, dozens of courses, APIs, and fun quizzes if you decide to cough up a bit of money. $19 is crazy dirt cheap compared to some $200 courses out there on the web.

Dubbed by its creator as the social network for programmers, TNB is a hotbed of hundreds of video tutorials for programming and computer science, as well as other disciplines like cooking.

Another crazy important site for anyone serious about programming. You can find online terminals, IDEs, and tutorials for almost every popular language out there, from oCaml to lisp

Geared towards children, this is a good introudction to programming thinking and helps a younger audience get into the problem solving mindset.

For users with some coding experience, codewars offers hundreds of challenges in various languages and help them build up their skills. Perfect for intermediate to master programmers.

This site is a bit geared towards new coders, it’s still fun and helps a ton in developing confidence.

Random blog that discusses some concepts regarding computer science. Worth a read if you’re ever lost and wanna just reflect on something.

Both the old and new sites are still up and provide their services for learning IT skills.


What good is a programmer if they can’t make a good resume to show off their skills? With these helpful templates you can impress your potential employer.

I haven’t used this so be cautious. Has a lot of ebooks.

Web development cheat sheet.

Awesome intro to programming with links to projects.

Eli has a blog and also videos for various things.

CCIE book. Not sure if it’s open source. I’ll remove this link if requested.

pay money, learn to code. seems legit.

A forum for Python usrers! There are only a few sections but there are enough posts on here so if you haev a question, it might have already been asked.

Another sweet forum that covers multiple topics.

A really popular forum! Lots of languages and users, dozens of topics.

Another large forum, perfect for any use.

A freaking large factory of forums you will never find the same post twice.

Lots of forums, jobs, and helpful resources all geared towards game development.

The most famous one imo. Be wary friend, don’t let your CS teacher find this in your browser history.

Resources, forums, tutorials, blow yourself out here.

Has some training missions and other stuff. Helps you find projects to work on.

Put your skills to the test against AI or humans.

Like big data? Well this site teaches you Python, the numpy library, and R.

Full of courses for anything.

handy book on progrmaming.


This is one of the BEST websites to learn about security and you can follow tutorials by real hackers and members of the IT field. With a strong community full of experienced authors, you will either flourish by using proper grammar or be mocked for asking “how do i hack gmail??”



Small collection of resources for educating yourself on internet security.

A must read for anyone with a desire to get into IT

Crash course on Command line.

Great if you cannot afford pricy online classes. Instructors know what they are talking about and despite a few poor quality videos, you will be supplied with helpful resources and forums.

One of the better forums out there for learning. Delve into it at your own risk.

ROBLOX hacking, general exploits, or just normal discussions. Roblox helped put me on my path to coding and I love how every day, millions of kids are being taught the ability of coding thanks to its studio.

Lessons, challenges, forums, and resources all bundled in a site to hone your pentest skills.

Like hackthissite, but with a different UI

Read the above

Free pentest tools. Don’t use it for anything wrong.

Hehe..we are in defcon 4..

Capture the Flag learning site. Amazing imo.

Another war games site. You get various challenges that are fun to solve ^.^

Wikipedia but for security.


Compete against IT pros. Git rekt code-bug

Explore this site a bit.

The link kinda gives it away.

Fun little project.

Professional blog that has tutorials and highly detailed information.

Ahh read the above please!

A CTF guide. Pretty well written and has slides. Awesome resources. What else can I say?

Another swell blog.

Woa..another..awesome blog..there are too many to count!

Hey kid? Wanna learn how to hex edit like a b0ss?

Nice little pdf for forensics.

A blog that’s a bit dated but has useful information.

Dated but useful blog.

haven’t tried this yet but it has great reviews.

Search engine for data scientists.

Best sites to learn from.

Awww yiss ebooks

Might run into errors downloading books.

Full books that are virus free.

That’s all for now! Special thanks to everyone who suggested I make this!
Her Code Got Humans on the Moon—And Invented Software Itself
Instead of just supporting her husband’s career, Margaret Hamilton invented the modern concept of software.

MARGARET HAMILTON WASN’T supposed to invent the modern concept of software and land men on the moon. It was 1960, not a time when women were encouraged to seek out high-powered technical work. Hamilton, a 24-year-old with an undergrad degree in mathematics, had gotten a job as a programmer at MIT, and the plan was for her to support her husband through his three-year stint at Harvard Law. After that, it would be her turn—she wanted a graduate degree in math.

But the Apollo space program came along. And Hamilton stayed in the lab to lead an epic feat of engineering that would help change the future of what was humanly—and digitally—possible.

As a working mother in the 1960s, Hamilton was unusual; but as a spaceship programmer, Hamilton was positively radical. Hamilton would bring her daughter Lauren by the lab on weekends and evenings. While 4-year-old Lauren slept on the floor of the office overlooking the Charles River, her mother programmed away, creating routines that would ultimately be added to the Apollo’s command module computer.

“People used to say to me, ‘How can you leave your daughter? How can you do this?’” Hamilton remembers. But she loved the arcane novelty of her job. She liked the camaraderie—the after-work drinks at the MIT faculty club; the geek jokes, like saying she was “going to branch left minus” around the hallway. Outsiders didn’t have a clue. But at the lab, she says, “I was one of the guys.”

Then, as now, “the guys” dominated tech and engineering. Like female coders in today’s diversity-challenged tech industry, Hamilton was an outlier. It might surprise today’s software makers that one of the founding fathers of their boys’ club was, in fact, a mother—and that should give them pause as they consider why the gender inequality of the Mad Men era persists to this day.

Continue Reading.

Studying Advice

Ahhh this is the first semester that I got all A’s in my classes! And mind you this is my third year (fifth semester) at Georgia Tech so I’ve been waiting a while for this day :’)

Honestly, I think the studyblr community has contributed a lot to my success this semester. I think a lot of us know the techniques we should be using in order to get good grades, but it’s hard to actually find the motivation to have good study habits. However, there were two things that I really put some effort into changing about my study habits this semester:

1) The Curve of Forgetting

Studying every day is one of those obvious things, but seeing this graph really drove home just helpful it is to study even just for a little bit each day. I had tests every week for the month leading up to Thanksgiving, so I had one week after finals (which we call Dead Week) before finals week started. However, every day during Dead Week I spent a lot of time studying for each of my finals. BUT I didn’t pull any all-nighters – I was just really dedicated each day to spend my time studying. Which led to me being extremely prepared during finals week itself. Even though I was spending most of my day during finals week studying, I had time during the day to take some nice breaks and also get a full night’s sleep each night.

2) Pomodoro Technique 

I saw @slytherinstudycove‘s post about this app called Pomodoro Challenge. It’s essentially a Pomodoro app that times your work periods and your breaks. When you start the timer, you can specific what project you’re working on, and it’ll track stats about how much you worked on that project, how much time you spend working each day of the week on average, etc.
I’m the kind of person that can focus working on a homework assignment / project really well, but I’m reeeeally bad at focusing on studying. It’s just so much more boring and there’s just no clear end in sight (after all, when are you truly done studying?). At least with this app, it actually motivates me to study for the 25 minute work periods without getting distracted. I know that the breaks are only 5 minutes, but I edited it so I have 7 minute breaks haha.

On top of the time that I used this app to study, I spent several hours studying that I didn’t record. Overall this app definitely helped me out while I was studying for my finals.

Well, those are the two things that were most helpful to me. Happy studying!

Computer science masterpost

Hey, guys. I’ve decided to make my first study masterpost. This contains great free online courses to improve your coding skills and broaden your knowledge or a guide for a newbie who wants to start learning cs. Many of this recommendations were sent to me by some big tech-companies to help me to prepare for the interviews. Generally, it would be a great addition to classes taken at college. 


Object-oriented Programming Languages

Discrete math

Algorithms and data structures

Operating systems 

Parallel programming

Computer Science sub-fields 


A Book from the Sky 天书

Another Neural Network Chinese character project - this one by Gene Kogan which generates new Kanji from a handwritten dataset:

These images were created by a deep convolutional generative adversarial network (DCGAN) trained on a database of handwritten Chinese characters, made with code by Alec Radford based on the paper by Radford, Luke Metz, and Soumith Chintala in November 2015.

The title is a reference to the 1988 book by Xu Bing, who composed thousands of fictitious glyphs in the style of traditional Mandarin prints of the Song and Ming dynasties.

A DCGAN is a type of convolutional neural network which is capable of learning an abstract representation of a collection of images. It achieves this via competition between a “generator” which fabricates fake images and a “discriminator” which tries to discern if the generator’s images are authentic (more details). After training, the generator can be used to convincingly generate samples reminiscent of the originals.

… a DCGAN is trained on a labeled subset of ~1M handwritten simplified Chinese characters, after which the generator is able to produce fake images of characters not found in the original dataset.

More Here