Saturday, July 14, 2012

How to Start in Computer Programming

Lots of people are intimidated by programming, but while I was managing one of my companies i asked my engineers what programming languages would be

1) so easy to learn that a freakin biz guy would be able to handle it


2) powerful enough to actually do interesting things, as fast as possible, as often as possible.

They looked at each other like long-suffering people do and tried to explain a few things to me. First they told me that I was probably thinking about web programming (which, obviously i was. There are still other kinds of programming, turns out. who knew.), and they told me that yeah, there's a couple of good languages out there for exactly that purpose. Twitter, for example, was built in a couple of days using Ruby on Rails, which is designed to write code for you and automate simple tasks.

Second, they told me that if i want to be a lone programmer who doesn't contribute anything to the community, i probably wouldn't be a very good programmer because i couldn't play around with as many projects or see as wide of a variety of tasks, and i'd be more likely to lose interest because i'd be working by myself on things only interesting to me. There are tons of open source projects available if you want to work on em, and it's the best way to learn beyond the basics.

Third, because all software is written by programmers and they're the sorts of people who like to make their own lives easier, they have written tons of different tools to help themselves program better. Most of what people call 'programming' is just copying and pasting from other people's successful projects, learning how to use these tools (lots of installing and troubleshooting), and trying to simplify ideas you thought were already simple into things you know how to do. So it doesn't require a ridiculous intelligence as much as it just requires tenacity and curiosity, and a problem to solve. It's more like writing a letter to a pen pal in a foreign language than it is like math, and when you get it right the program replies by doing your bidding and being the best minion you could ask for.

I find that a bit of realism helps too- software programming isn't some kind of magic power you get from hiding in your basement, getting a gut, and growing a beard, which lets you cast magic spells using a computer. It's mostly just really simple algebra, people complaining on web forums, and google searches. Just like everything else these days, except a) you can get a high five figure to mid six figure salary with it, b) you can use these skills to start the next facebook or twitter just like Zuck did, and c) everyone who is in the field is self-taught- software engineering moves too fast to ever have a university program that isn't obsolete by the time you graduate. Having a degree doesn't mean much in programming- it's all about what you've done.

So I recommend following this tutorial to pick up the basics of programming for the internet-

The Best Way to learn Ruby on Rails

Ruby on Rails can automatically build you a whole website. It'll be a crappy website, but you can tweak it later to your heart's content. That tutorial is awesome because it has a lot of quick and easy parts, keeps things simple, and is more explicit than most sites that help you just 'learn programming.'

then, or if you get bored with that, software engineers have copy and paste coder heaven in the form of a website called github, and being programmers they aren't intimidated by making it a little bit complicated. But if you go through this next tutorial you should be ready to go onto it and see what people can do with software these days. Github is where open-source projects are hosted as well, and there's lots of cool stuff going on in that area.

Try Git

I could put more links out there but if you haven't gone through those two then it won't help, and if you have then you can google search as well as i can. Get tenacious and curious, and get going. Enjoy!

Thursday, December 10, 2009

What if the Singularity Doesn't Happen?

There is a great deal of interesting conversation around the topic of 'What if the Singularity Doesn't Happen?' Or what if it doesn't happen all at the same time. The latest issue of H+ magazine offers a glimpse into the idea that strong AI doesn't happen. What could still be built at a nanoscale without an AI doing the designing for us?

Neal Stephenson's The Diamond Age posits a future in which there have been few, if any, advances in AI from the current standpoint, yet nanotech is everywhere its visionaries hope it will be. Zeppelins composed of diamondoid spheres filled with vacuum float serenely over societies fractured by a complete disintegration of the geographically based Nation-State in favor of the 'Phyle' in an era when the size of your borders is the area you must defend from nanotech incursions.

But perhaps the most compelling single article on this topic comes from Vernor Vinge, who coined the term Singularity. He suggests three scenarios for if the Singularity doesn't happen.

The Return to MADness is the nuclear winter scenario. Pretty classic.

More interesting is the Golden Age, in which we decide to stop at some point. After a gentle recursion as populations balance, we enter a static state of blissful lack of progress.

The final scenario he thinks worth mentioning is the Wheel of Time. In this scenario, a mixture of the other two occur. Every time Humanity gets close to the Singularity, somebody pushes a big red button and blasts us back to the stone age, but not to extinction, starting the cycle over. In a sense, this scenario has our current state of being acting as a golden age, and getting much further than we are puts us over the edge.

Saturday, November 28, 2009

HCS Speech Outline

On Tuesday I am presenting to the Harvard Computer Science club a fifty three minute talk about possible futures of computing.

It's been rough! Just try and think of something interesting to say to some of the brightest computer programmers in the world. Especially when your interests are in computer programming... but without a technical background.

I've decided to focus on four key points; First, a look at Drones. Everything being done with drones, including ever advancing UAVs, and self-propelled CNC robots. I'll float some of the MIT CSAIL work by them and point out that it's mostly a software problem to make these things... so why aren't they involved? The question this stuff is meant to inspire is; Why would I mention this to computer scientists, and not save it for roboticists?

Because point 2 is Drone Fusion. This part of the talk will look at gaming, the growth of AI for specific situations and how UIs are getting more streamlined and easier to use, and comment on how a savvy programmer or forty could definitely find a place linking Drones and RTS, or in other types of Augmented Reality. Fusing drones and real life real time strategy is already being done in the field of drone farming, some cool projects like FourSquare, which has been augmented with 4mapper to be what I would call an RLRTS sort of app. Others include the Monopoly City Streets program from Google and, to a lesser extent, Google's project to CAD Every Building On Earth (Boston is being worked on as we speak!).
I hope i'll get some good questions on this topic. I think it's a fascinating field, and these are the people who could do the most to make it a reality instead of the whimsical dream of every RTS player.

Third, I want to touch on some of the neural interface, Brain Computer Interface, and brain simulation information that's been piquing my interest lately. This topic, surprisingly, touches on the first and second topics. Tenuous links, perhaps, but enough tenuous links make a pretty strong tie-in. I'll also cover some of the work at the University of Adelaide on Biomimetic Algorithms, simulating a fly brain in computer science to improve flight capabilities of drones. This'll be a brief section, I just want to make sure that nobody in the Harvard Computer Science club decides to go into a boring part of Comp Sci just because they don't know that cool stuff like this is being done out there!

Finally I'll briefly mention some of the alternative paradigms for computing which I think haven't seen enough use and ask the HCS some questions about it. This part will include questions like;
Why aren't chaotic algorithms used more often in software creation? Genetic Algorithms were appallingly successful in this robotics experiment, to link back to points 1 and 2. As a more practical example, a genetic algorithm to automatically generate new pages and optimize websites based on metrics (which are already absurdly available).
Why isn't game design taught to every comp sci major? Instead, it's reserved for specialized programs. That seems odd to me. I'm curious why they aren't interested in game design. Or if they are, I'd like to know that as well.

Tuesday, November 24, 2009

How and Why to apply to Mail at NonProfit Standard Mail Prices

As a project for my work at T.H.E. BRAIN TRUST, I've been asked to figure out how to apply to mail at nonprofit standard mail prices. This post will be a how-to and a why-to, with a cost/benefit analysis and the procedure we're using to apply.

The first thing we did is go to the postal service and find form 3624, the application to mail at nonprofit standard mail prices. This form requires several forms of proof that you are, in fact, a nonprofit and not a lying for-profit.

These forms of proof include 1 of the following;
-an IRS letter of exemption from payment of federal income tax,
-a financial statement prepared by an independent auditor proving your nonprofit status (which must include balance sheets, notes, etc.),
-a place of worship.

Don't ask me whether they want you to mail your place of worship to them, I didn't need to use that part of the form. I hope not, the postage would convince you there is no god.

You also need a copy of one of the following;
-your articles of incorporation (you do not need a certified copy),
-your articles of association,
-your charter,
-your constitution,
-your enabling legislation,
-your trust indenture,
-something else which you can try and explain but knowing the gov't will probably get rejected.

Finally, you need some proof that you are operating. a few copies of several of the following work;
-financial statements,
-listing of activities for the past 6-12 months,
-membership applications,
-minutes of meetings,
-organizational or other documents substantiating that the applicant is the state or national committee of the political party,
-a copy of the statute, ordinance or other authority establishing responsibility for voter registration.

We're sending in some brochures and form 990s for the last couple of years.

So, we filled out our form 3624, found that crap (articles of inc, IRS letter, the brochures and 990s), and thought we were done! But a quick call to the post office (always a good idea when dealing with the gov't) informed us that we were, in fact, only beginning! And we still didn't even know if it would be worth it for a small non-profit like us to apply for this thing.

The issue now was that you have to mark the mail in your nonprofit bulk mailing (bulk and standard mailings are the same in post-office terminology) stuff somehow. All of the options for doing so require another layer of paperwork. But they have no permit application fees required. Well, except another three hours or so making sure you did the form just right, ha, ha, ha. That obviously doesn't count. And i guess there's one of the options that doubles your costs in the venture. But moving on!

So, with your form 3624 and associated materials in hand, you go to your general mailing office. These are apparently not marked any differently from regular post offices, you'll have to call your local mail requirements office (Also not marked differently. Call your post office and ask for it. You didn't really think that this guide would save you all of your phone calls to the gov't, did you?) to find out which one is right for you. In our case it was the Boston General Mailing office and we go to room 1004.

Again, all you need to bring with you on this trip is form 3624, 2 forms of ID (one photo), and the money for your permit to mail at bulk rates (185 or so). If you want to leave with a rubberstamp for your mail bring another 185. I'll get to why.

The person taking your form 3624 will tell you you're applying for one of These Things in the office;
A postage meter/a license to use one. Companies own the postage meters and will rent them to you if you have a license.
Precanceled stamps! Which require the form
Permit imprint- rubber stampy thing you use to stamp your special, special mail.

Regardless of which, annual fee of $185. The stamp (permit imprint) has a special fee of another $185. Because rubber stamps are so expensive. We'll get into whether this is worth it in a sec.

So, we bring our app down to general mailing room 1004, (along with 2 forms of ID, one photo), fill out the app for permit, submit 3624 along with documentation, after deciding which one of the above to use. You walk out with your stampy thing or the ability to use precanceled stamps or your license to use the postage meter. The application to mail as a nonprofit takes a couple weeks to go through.

If you decide to mail while pending, you mail at normal rates. If you are approved, your approval is retroactive to the day you handed it in and you can apply for a refund by Writing a letter to the mailing office including a copy of the mailing statement.

So! Now we know how. Time to figure out whether or not to do it!

We're sending out about 3k letters, once or twice per year. There are size requirements on bulk/standard mailings (i don't know why they call it standard when you are mailing in bulk, but the post office people will keep saying standard and that's what it means), but our couple of pieces of paper and a brochure are well within normal letter requirements.

The basic thing to consider here is that if you're sending out a bulk mailing anyway, you pay the 185 regardless of whether it's for profit or not for profit. So that's not worth considering for us, due to the whole retroactive nonprofit status thing, and the fact that the mailing at nonprofit status thing doesn't cost us anything.

However, we can mail all this junk first class instead of as a bulk mailing. Which is obviously more expensive, but the way we'll figure out how much we'll save with our nonprofit application.

First class costs 44c/letter. For a nonprofit bulk mailing, it's 17.2c/letter. So a 27c difference per letter. The mail guy said the bulk mailing could be a little cheaper depending on sorting, where it's going, barcoding, and a bunch of other maily things our nonprofit probably doesn't have time to do (if yours does you probably have time to have someone look into them on your own), but the most you pay is 17.2c.

So if we do 2 mailings of 3k per year, 6k *44c is 2644 dollars at first class rates. For standard non-profit, it's 6k* 17.2 is 1072 dollars, plus the annual fee for the ability to send out bulk mailings is 1217. The charge to be able to send out bulk mailings is an anniversary fee, not a calendar year one, meaning it goes for 1 year from the date bought.

So our savings are about 1400 dollars for two mailings, and i bet we could cram the two mailings into one anniversary schedule if we wanted to, even though we generally send out only 1 mailing of 3k per year. Would the hassle of trying to do that every two years be worth the saved 185? Would it be worth the saved 370 for both the bulk mailing permit and a permit stamp? Probably not, depends on the wages of whoever's doing it.

If we were only sending out 3k per year our savings are (3000*.44)- (3000*.172 +185), or 1320-701, or 619. Still almost pays for the two weeks it took me to figure this out. Our savings per letter might also add up over the course of the year. Every time we send out 685 letters we save back the cost of the bulk mailing permit, and another 685 would cover the stamp. So we're in the money for the whole thing, but for someone with less than 685 letters per year it might not be worth it.