Show HN: Securly - Keep your kids safe on your home network - <AUTHOR>

http://www.securly.com
To keep kids safe online, we felt it wasn't enough anymore to rely simply on blocking websites (domain filtering). We also need to protect them on trusted social media sites like Facebook, YouTube and Wikipedia. We couldn't find any solution that does this for the entire home network. We are two security hackers who have worked in the enterprise firewall space for several years and felt this was an important problem to solve.
The video on our front page gives you a pretty good idea of what we do. You can also use us as a free premium DNS server by pointing your DNS to the IPs here:
http://www.securly.com/setup
We would love some honest feedback on what we have built so far. <comment><USER2> It sounds decent (but would still like more detail about how it content filters with DNS). But my concern would be that the average potential customer isn't willing or able to go change their DNS settings. A lot of parents we know don't even know their router password anymore.

I think there's an untapped gold mine there for the first company that comes out with an idiot-proof content filtering system for parents and gets in into Walmart, Staples, Best Buy, etc. I'm thinking either a replacement wireless router or a wired filter that goes between their current wifi router and broadband modem. It's got to do as much auto configuration as possible. Or if Verizon or other broadband providers would just offer it as part of their service package. For another $19.95 a month they'll proxy filter your internet content.

<comment><AUTHOR> When it comes to websites that require content inspection, we resolve the DNS requests to a web proxy which does the content filtering.

To get around the issue of the average consumer not being able to change their DNS settings, we are working on an application that will automate (login to router, change DNS) configuration. Our intent is to cover the top routers in the market which we believe will make it easier than ever for people to use Securly.

Incidentally, we started off with the hardware box idea and moved towards a cloud based approach because (1) its much harder for a startup to manage the complexity of being hardware based (2) users have to spend money upfront to try us out (3) investors tend to be hardware-averse. To our knowledge, a hardware box does not provide any significant advantage over the cloud based service that we have come up with.

</comment></comment><comment><USER3> My family uses the SafeEyes filter on each machine, but I think this is a much more interesting approach as it helps tackle filtering for kids' smartphones as well.

One small piece of feedback: Could you give a little bit more info on how to set up the two DNS servers? Perhaps an example or some links to walkthroughs for popular routers?

<comment><AUTHOR> Thanks Cliff. Yes, SafeEyes (we are ex McAfee as well) and similar software based solutions are painful to manage across devices. We are already working towards addressing the DNS setting issue by not only providing instructions on our site but also coming up with an application that automatically configures the wireless routers. We believe this will make it easier than ever for people to use Securly.

</comment></comment><comment><USER4> That video is OK. I'd rather see a plain text description of what it is exactly that you're blocking or not blocking.

<comment><USER5> 2nd that. Needs FAQ.

<comment><AUTHOR> Thanks for the feedback. We are in the process of revamping our website to include FAQ -- but we felt like we could get away with launching on HN without it given the high density of early adopters here.

</comment></comment></comment><comment><USER6> I'd assume that not all parents would be able to set this up. A simplified step by step may help. A PDF or video should work.

</comment><comment><USER7> The securely guys demoed their technology for me a while back - it is _very_ impressive. Congrats guys!

<comment><AUTHOR> Thanks for all the support, Bill! Really appreciate it.

</comment></comment><comment><USER8> how do you all differentiate from OpenDNS's family config? I've used that with pretty good success so far, but always open to improvements.

<comment><AUTHOR> Our key differentiators are (1) Being able to filter inappropriate content on trusted websites (Google, YouTube, Wikipedia, etc) that children use frequently. Domain based blocking allows or denies the entire website. But cannot for example, filter out a "bad" page on Wikipedia without blocking the entire domain (2) Being able to provide easy parental access. Parents login to Securly via our website and immediately get unfiltered Internet access.

<comment><USER9> Would be interested in knowing how you're doing the content filtering. Returning a filtering proxy server in place of the actual server?

<comment><AUTHOR> Correct. But only for the sites that are known to have content that might be age inappropriate.

</comment></comment></comment></comment><comment><USER10> In general, I am a hugely pro-choice. If the kids think they are up for that kind of websites, let them be. The odds that they see something they'd rather not have seen are a thousand to one. Sure, not impossible and there will be plenty of stories, but it's not worth it to censor the internet like this.

Better talk with your children what the dangers are. Tell them how burglars find that you are on holidays and then break in, or how your Facebook images could be abused by that bully to make you look stupid. It'll make them be more careful, and you needn't use securly to block Facebook's photo upload feature. And yeah, you can also take the lead on talking about sex, better to have them hear it from a trusted source first hand. (I appreciated my mom's effort to raise me, let's say, aware of how stuff works.)

Also, _asking_ people to do something rather than demanding or prohibiting, works always better[1]. If you tell your kids they shouldn't do something, they're more likely to experiment but decide it's better not to, than when you prohibit it and they're going to try and find holes. And believe me, try they will, often either finding a way or having someone fix it for them.

Lastly, I know someone who had this kind of block on his pc. Dutch kids, and I guess any, aren't frugal about swear words like "fuck". The kid who had this filter installed couldn't see a significant part of the forum since it blocks the entire page over that word, and he missed parts of discussions and conversations. Then someone tried to be funny and simply put "fuck" in 1pt white text in his signature, almost entirely blocking him from the forum. In the end of course, he found a way around the block. There are always ways.

I know this is your business and you're not going to stop for this kind of personal morals, but I wanted this to be out there. It's certainly nothing personal!

[1] <http://lesswrong.com/lw/4e/cached_selves/> 9th paragraph.

<comment><AUTHOR> Your feedback is well taken. A couple of things (1) Based on our experience, we ran into a lot of empirical evidence that parents don't take the lead in talking to their kids about what they might run into on the Internet (2) The pro-choice argument works well for teens who are well aware of whats out there. Our intent is to protect younger children who might be accidentally exposed to adult content before their parents have had a chance to talk to them about it (or are too young to visit these sites even after such a discussion). Incidentally, the trigger for this idea was when my co-founder saw his 6-year old cousin accidentally viewing an age-inappropriate video on YouTube on an iPad while his parents were away. That's when we looked for solutions for "safe YouTube" out there and were surprised to see how sorry the parental "control" solutions out there were.

<comment><USER11> This is definitely needed. My six year old has a tablet and I dread the day she sees something "rude" on the internet.</comment></comment></comment>


500 Facebook fans in 10 days - <AUTHOR> http://www.mobitto.com/2011/05/500-facebook-fans-in-10-days/

<comment><USER2> What does the app do? There's no description on the web site that I could find. I don't watch videos.</comment>


The geology and geophysics of Kuiper Belt object (486958) Arrokoth - <AUTHOR> https://science.sciencemag.org/content/early/2020/02/12/science.aay3999 <comment><USER2> Impressive. How much data can be deducted from some pictures. What is it made of though?

<comment><USER3> Porous rock and ice, with mean density less than that of water ice. The exact density is apparently unknown because of the objects's asymmetric shape and a lack of natural satellites.</comment></comment>


SHA-3 extensions for Ruby and Node.js - <AUTHOR> http://blog.phusion.nl/2012/10/06/sha-3-extensions-for-ruby-and-node-js/

<comment><USER2> I would wait for OpenSSL to provide a verified implementation of SHA3, and use it via Ruby's Digest.

</comment><comment><USER3> Of course you can just use SHA-3 as part of a PBKDF. I don't get the kneejerk "use bcrypt!!" thing.</comment>


Why Groupon is Not Necessarily Bad for Business - <AUTHOR> http://blog.zuupy.com/3-reasons-that-groupon-is-not-necessarily-bad

<comment><USER2> The model is interesting but Groupon's margin will drop as more competitors come in and self-service comes in. I don't think that a 50% margin is tenable for many small businesses.

I disagree with the statement that Groupon sheds light on issues in a business. Restaurants, for example, aren't structurally built to handle that. Think about it for a second - it's really hard, even at scale to make a $10 (market price) tuna sandwich for $2.50. There are companies focused on better- serving restaurants like Corner Dish.</comment>


The Complete Guide to Know about the Development of FISH - <AUTHOR> https://www.creative-bioarray.com/services/Fluorescent-In-Situ-hybridization-FISH.htm <comment><AUTHOR> Prospects for future development The development of in situ techniques provides us with valuable information about the location and expression patterns of genes in individual cells. A more complete gene expression profile of single cells will provide a deeper understanding of the correlation between gene expression patterns and specific cell phenotypes, which is especially important in studies of development and disease progression, where complex, finely-divided gene expression programs are playing a role.

Researchers can predict how molecular pathology ultimately exceeds the limitations of morphopathology, which will allow more judicious use of minimally invasive biopsy techniques that sacrifice retrieved tissue morphology in favor of comfort of the patient. FISH probes have already colored the way that we visualize and conceptualize genes, chromosomes, transcription and nucleic acid movements. What remains to be seen is how detailed molecular analysis of single cell and tissue samples will influence how we identify, diagnose, and alter the genetic pathology.

In the long run, it is expected that the database of associated gene expression patterns will accumulate at the single cell level as researchers and industry adopt FISH technology and their favorite biomarkers. Ultimately, FISH will be the preferred method for predicting the complex components of genes that cause disease.

</comment><comment><AUTHOR> The Past of fluorescence in situ hybridization As early as the 1940s, antibodies were conjugated to fluorescent dyes without losing their epitope binding specificity. Several decades later, primary antibody-dependent fluorescence detection of nucleic acid hybrids was achieved, however, this technique was soon replaced by the appearance of fluorescent nucleic acid probes.In situ hybridization, first performed in the late 1960s, was not fluorescent at all, but used a probe labeled with a radioactive isotope. Non- fluorescent technologies such as enzyme-based color reporters and gold-based probe systems used in electron microscopy are all independent.

FISH for visualizing nucleic acids was developed as an alternative method using radiolabeled probes.Early isotope detection methods used non-specific labeling strategies such as random incorporation of radioactively modified bases into growing cells followed by autoradiography. Several disadvantages of isotope hybridization, such as unstable, limited resolution, time consuming, expensive and difficult to store, have inspired the development of new technologies. The first application of fluorescence in-situ detection was in the early 1980s, detection of nick translations characterized by secondary detection of biotinylated probes and fluorescent streptavidin conjugates was used to detect DNA and mRNA targets. About a decade later, improved labeling of synthetic single-stranded DNA probes allows the chemical preparation of hybridization probes carrying enough fluorescent molecules to allow direct detection. Since then, many changes in the topics of indirect and direct labels have been introduced, providing a wide range of detection solutions for the user to choose.

</comment><comment><AUTHOR> Fluorescence in situ hybridization, which is a selective assay for the localization of a specific nucleic acid sequence in its natural context. It is a technology that has been in existence for more than 20 years and continues to evolve. During its maturation, various methods and modifications have been introduced to optimize the detection of DNA and RNA. The reasons that make this technology become prevalance are the wide range of applications and its relative ease of implementation and in-situ performance.

Although the basic principles of FISH remain stable, high sensitivity detection, simultaneous determination of multiple species, and automated data collection and analysis have significantly improved this technology. At present, the introduction of FISH surpasses the previously available technologies and becomes the most important biometric. In the future, this technology may have a significant impact on live cell imaging and medical diagnostics.

</comment><comment><AUTHOR> Although the number of detection methods has increased, the types of targets also have become quite diverse. FISH chromosome analysis has promoted significant advances in cytogenetic studies. However, due to this assay cannot benefit from the preservation of tissue structures or cell structures, its future applications are more likely to be in silico than in situ. Initially, RNA assays can reliably detect considerable amounts of information with clone- derived probes.

The new goal has led to the new application of the FISH program, the popularity of which has increased dramatically in the 1990s. The new research approaches opened up by these applications require the simultaneous detection of more and more species. Initially, this was achieved by simultaneously observing fluorophores of different spectra. Later, strategies that using two major coding schemes expanded the approach.</comment>


Report: iPhone 5 Will Be 'Completely Redesigned' - <AUTHOR> http://www.nytimes.com/external/readwriteweb/2011/01/17/17readwriteweb-report-iphone-5-will-be-completely-redesign-90456.html?ref=technology

<comment><USER2> I really don't like this co-branding the Times has been doing for awhile. This is actually a ReadWriteWeb article, not an article written by Times staff, and not one that goes through the Times' fact-checking process or anything else.

Here's the original: [http://www.readwriteweb.com/archives/iphone_5_completely_red...](http://www.readwriteweb.com/archives/iphone_5_completely_redesigned.php)

Every time I get an article like this, and it's under the times brand, I presume that it's been through the editorial processes of the Times. But it hasn't. It's a way to confuse credibility and I really wish the Times wouldn't do this.

<comment><USER3> The _New York Times_ selling unsubstantiated rumors as newsworthy, shows why the newspapers are in trouble. It is nearly impossible to imagine Apple allowing someone else's shoddy product to carry their logo...let alone doing so on a regular basis.

<comment><USER4> It's not sold... it's just a syndicated blog. You won't find this article in the newspaper...

</comment></comment></comment><comment><USER3> Only Apple can get this sort of marketing fluff in the _The New York Times_ very morning Wall Street will respond to the announcement about Jobs. When _Endgadget_ calling their sources "Reliable"is sufficient for its editors, the _Times_ is only one or two steps above _MacRumors_.

<comment><USER5> I think it's important to note that this isn't a New York Times piece but a Read Write Web (and an amateurly written one at that) reposted in the NYT template shell. It's a bit misleading to call it an NYT article entirely, though they should take some responsibility for republishing it.

<comment><USER3> How would it be different if they hired an independent journalist to write it? Apple gets their PR in front of analysts on the subway and the _The New York Times_ can maintain plausible deniablity.

</comment></comment></comment><comment><USER6> Why does it have to mention Steve as a key part to the process in such a way that his leave of absence determines the success or failure of Apple ? The last few quarters have been pretty good for them right ?

Jobs was absent for a good bit in 2009 (the same year 3GS was released). I think that if Jobs is the visionary and leader everyone talks about then a few months without him cannot dent the Apple market and development. The company will still run, it is still running. It did it in 2009 and it can do it again in my opinion.

<comment> brown9-2 Because most business journalism isn't all that good.

If the product is going to be out in the summer you can bet a good amount of the design has been going on for many months. Obviously Jobs would be heavily involved in it, and would continue to be. This point of the article doesn't make much sense to anyone who thinks about it for more than a few seconds or who is familiar with how products are designed; it's as if they intentionally decided to keep the story at the surface-level.

<comment><USER7> _Because most business journalism isn't all that good._

Science journalism is bad. Political journalism stinks. Is it a case of those who can do, do, but those who can't report?

</comment></comment></comment><comment><USER8> I didn't see anything in there about a new _design_ , just different software capabilities. A new _design_ , to me, would be a slightly larger screen so that my Kindle-App technical books would be more readable.

<comment><USER9> Opinions differ. To me, a 'complete redesign' means that all previous design decisions get revisited. The end effect of a redesign could, in extreme cases, even be the identical product (that is what Coca-Cola eventually did in the 80s)

For iPhone, I would expect differences, though. The technology (especially batteries and screens) improves rapidly, and the target audience changes, too. On the one hand, apple has to reach out to less technologically savvy users; on the other hand, even those likely are more familiar with the UI than the original iPhone buyers were.

I would expect that the UI and the hardware should focus more and more on the cloud. The (eventual) end result of that will be the removal of the iPod connector in iPhone 7 or therabouts.

</comment></comment><comment><USER10> Sounds like they've bought too much of the hype without having any tangible to show for it.

It's very likely that we won't see a Home button on any future iOS devices; that's pretty impressive, but the new gestures seem to perform the same function really well. It should put Apple way ahead of other mobile platforms who still struggle with which order to place all their buttons.

<comment><USER11> I don't buy it. We _might_ see an option to make Home inert, but to be completely buttonless hurts discoverability and familiarity with non-techy consumers.

(I won't say it's completely impossible that Apple would do it, just that it's overall a bad idea.)

<comment><USER12> That would be perfect for my toddler. He sits on my lap and plays with Uzu (an app) but can't resist the home button. There seems to be many people asking in forums for cases that solve the same problem by obscuring the button. It could be great for a kiosk mode too, especially if the gestures to get out of the app could be a chosen secret.

<comment><USER13> Yes, it would make a great toy / embedded device.

However, as a phone I don't see how less than a back button and a home button is sufficient. It's a lot like the mouse debate. I need at least a couple hardware buttons.

<comment><USER14> Lots of iPhone users are quite productive with just a home button and no back button. Not to say that it's definitively better that way (I think I prefer it, though I haven't spent nearly as much time with an Android device), but it's certainly not so much worse as to cause an outcry for it.

</comment></comment></comment></comment></comment><comment><USER15> Re: Jobs's absence, AAPL stock increased by 52% while he was gone from January 2009 to the start of July 2009.

Given that the iPhone 5 has been effectively complete for a little while, and given Apple's performance during 2009H1, I really don't see why there's a question about Apple's performance in 2011.

<comment><USER16> the results from 1/2009-7/2009 were the product of work completed earlier

<comment><USER15> Fair point. My extremely scientific analysis of (a) setting a 6-month interval on GFinance, and (b) dragging that 6-month interval forward from January 2009 revealed no lower than a 10% return on AAPL at any point in time.

</comment></comment></comment><comment><USER17> Proximity payment system? Banks, meet your "Napster".

<comment><USER18> Would you explain why proximity payment is like Napster to banks? My (limited) understanding of proximity payment is that it is a token that isn't very different from the magnetic strip swipe; it is still a token that resolves to a particular bank account through a payment processing network.

<comment><USER17> Sorry for my rather brief thought. Here it is explained:

Napster changed the music industry forever and caused the music industry to (at least to some extent) change.

My thought is that proximity payments + API for banking system (ie: PayPal or Google equivalent) would shake things up for the banking industry.

In other words, if you could completely bypass the big banks - while they struggle to implement 10 year old payment system technology, not to mention high service fees - you'd end up with a system that is more convenient and manageable.

My point wasn't the file sharing aspect of Napster. It was about how Napster changed an industry.

<comment><USER19> I'm not sure what you are suggesting can change. You cannot completely bypass the big banks with just proximity payments. That's where the money is. Apple can help you move your money, from your bank account, to a merchant, into their bank account, but that's just Paypal level of functionality, nothing new.

Proximity non-card payments will change the situation for the debit/credit card operators, and possibly to a degree for Paypal-like services. Big banks are here to stay, and if they change something, it'll sooner be reasonably priced wire transfers to cut out the Paypal/cheque alternatives from hell.

<comment><USER17> You're thinking of a complete overall, whereas I am thinking a gradual disposition.

To some extent, the card is where the control is. PayPal knows this, which is why they came out with a debit and credit card.

If a proximity payment service emerged that could interact with the API inside a device, it is a matter of time before a "simple, affordable microtransaction" service/app comes about. From there, exponential growth due to the order of convenience and simplicity. Banks, meet your "Napster", as it were.

Imagine mint.com came out with a proximity payment system for all devices and used the existing mint.com system as your "Bank Account" overview. Simply amazing!

</comment></comment></comment></comment></comment><comment><USER20> Something tells me it will also have a bigger screen - like 4". The PPI would still be good enough, although less than 300 PPI.

<comment><USER21> good enough isn't something apple seems willing to compromise with on their displays. they were pretty clear about the 300ppi benchmark and it's significance when they announced the iphone 4. my guess is they never dip below that again on their phones.

</comment></comment><comment><USER22> Angry Birds will work in portrait orientation.

</comment><comment><USER23> It is far too late for Jobs' illness to have any effect on the iPhone 5. That product is practically done from a design standpoint if it is going to be in user's hands by July.

If anything the iPhone 5 will be largely similar to the iPhone 4 except faster and with an NFC chip in it. And yes, a dual CDMA/GSM radio which happens to come from Qualcomm.

</comment><comment><USER24> Jobs is not on leave. He went to meet his alien friends to get new iPhone design.</comment>


How to Sell your Company - <AUTHOR> http://jacquesmattheij.com/How+To+Sell+Your+Company

<comment><USER2> I never thought I would sell, but I got three offers in one week. I told them all no. But after thinking about it a while, I told them all yes.

Thing is, Amazon was not one of the three. And I always thought that Amazon would be the perfect daddy for my baby.

So after the first three companies were looking at my books with NDAs and LOIs, I asked a connected friend to introduce me to someone at Amazon, and told him why. I was surprised how quickly someone at Amazon got back to me, and they were a contender until the end. (I chose a different company - one of those first three, after all.)

It makes all the difference in the world to have multiple interested buyers.

Any time you hit a snag in negotiations, you really have to be 100% sincerely ready to walk away. Actually believe, to the core, that until the final signature and wire transfer goes through, the deal might not happen, and you're OK with that.

<comment><USER3> "Any time you hit a snag in negotiations, you really have to be 100% sincerely ready to walk away..."

Wish I could upvote that more. When we sold our company my partner was ready to take nearly any offer but fortunately for me I held a 51% stake and was able to adopt that mindset. Two months into acquisition discussions I got up from the virtual table and said "This won't work. Sorry."

The acquirer resumed discussions later that day and we were able to hit the target we had for the deal. Managing that kind of stress is incredibly hard.

</comment></comment><comment><USER4> This is one of the best articles on selling a company I've come across, and I've read my fair share of them... I recently had a negotiation that went to a few days before closing and we stepped away. I've since been through various up and down periods of regret for stepping away, followed by relief. It's a nightmare, and I think Jacques accurately captured what to consider in this article (I wish I had this available before!).

I would be really interested to read articles around market timing of acquisitions if anyone on HN has come across something as good as this post by Jacques. I've found a few articles here and there, but mostly written by M&A guys who are pushing to have more deals to broker.

</comment><comment><USER5> Very long, but very worthwhile read. It's about how common sense isn't common sense. Assume the worst will happen, always be ready to walk away, and only a final signed contract with money in your bank means anything.

One specific thing I learned from reading this:

> Typically value that is there today should be reflected in the 'cash' > portion and value that is still to be built in the 'stock' portion.

This makes sense because you are getting paid in cash for the value at the time of selling your company. Whereas the stock is contingent on future performance and not a 100% sure thing.

</comment><comment><USER6> _If it was to stop working for a big company and to chart your own path, think about whether or not selling to a large company with a mandatory employment period (with serious consequences in case you break that contract) is for you at all._

Could someone give an example of a mandatory employment period with "serious consequences"? Most discussions I've had with people who have left early from a post-acquisition environment centered around forgoing their stock vesting or retention bonuses (to them, it was worth the loss). Assuming no one's breaking non-competes or NDAs, I'd be curious to hear what else is under consideration.

</comment><comment><USER7> Does anyone have any insight into what point (size/complication of the deal) you transition from getting representation from a lawyer versus lawyer + investment bank. I could imagine a good M&A lawyer would be enough representation to navigate a less complicated deal but when is an investment bank necessary?

</comment><comment><USER8> _with the thread now deleted (for good reasons, which is why I'm not linking to it here)_

<http://news.ycombinator.com/item?id=2154106>

Why was it deleted?

<comment><USER9> Because the people who were buying the company might also have been reading that thread.

<comment><USER10> ... and that's potentially a good reason not to post the link again here at the moment. You (by which I mean user duck) might consider redacting it. Please.

<comment><USER11> And screw over the acquirers? Clannish mentality...

<comment><USER12> It's not a question of screwing over the acquirers, it's just that in that case the acquirer had much more experience and could easily use the information they could get from the discussion to their advantage

</comment></comment></comment></comment></comment><comment><USER13> Great post.

One question I had is whether it _ever_ makes sense to agree to a "no shopping" clause in a letter of intent. This seems to be a big disadvantage because if company A you're dealing with passes or plays hardball, then companies B and C you were previously talking to will assume they passed for a good reason. Is there any reason you can't have multiple parties still competing during a period of due diligence?

</comment><comment><USER14> Good article - I noticed that my comments from HN were quoted a few times in there... might have been good to put a bit of attribution, or at least highlight them so it's obvious they are HN quotes. Some parts show the quote marks, but others don't. Specifically the two deals mentioned (the lowball and the bait-and-switch at closing) were ones I posted about in the original HN post.

</comment><comment><USER15> Anyone else note the different mentalities between seeking more capital and outright selling the company?</comment>


A Full-Featured, $38 Tablet Is Coming to the U.S. - <AUTHOR> http://blogs.wsj.com/digits/2013/12/16/a-full-featured-38-tablet-is-coming-to-the-u-s/ <comment><USER2> Microcenter is selling a $39.99 tablet with a 1.2Ghz CPU, pretty similar specs: [http://www.microcenter.com/product/423567/A700_Tablet_- _Grey](http://www.microcenter.com/product/423567/A700_Tablet_-_Grey)

EDIT: comparing the specs, they seem 99% identical

</comment><comment><USER3> I have one of those (I volunteer with a program that teaches kids how to code, and we're thinking of giving one to each of them for them to program games etc. on). It's actually pretty responsive! My main everyday tablet is an iPad mini, and I was expecting a clunky piece of crap - but for 38$, it's totally worth it.

<comment><USER4> I'd love to know if there's a good way to program an Android on an Android. I haven't found a satisfactory answer yet. On the other hand, programming for kids is probably a good use, as it doesn't have to be massively processor intensive.

One problem is lack of a keyboard, though I've got a $20 Bluetooth keyboard that's a clone of the Apple. But I wonder if kids really care about that. Maybe not.

I'd love to have something that was as simple as the good old BASIC of old. In fact, as I'm typing this, I'm downloading a couple of BASIC interpreters to play with.

If you come up with a good way of doing this, that the kids enjoy, please share!

<comment><USER5> You can write and compile standard Java apps on Android with AIDE [1]. For young kids, you can make games on Android with Pocket Code [2] using a visual programming UI similar to MIT Scratch.

[1] [https://play.google.com/store/apps/details?id=com.aide.ui](https://play.google.com/store/apps/details?id=com.aide.ui)

[2] [https://play.google.com/store/apps/details?id=org.catrobat.c...](https://play.google.com/store/apps/details?id=org.catrobat.catroid)

</comment></comment></comment><comment><USER6> At that price range I would buy one for each of my kids, hands down. It works for reading, internet, and some videos. Sure you might be able to play every game out there, but it's fantastic for common usage!

Specs:

$38 7" screen at 800x400 Android 4.0 ICS 1GHz single core processor 4GB storage with microSD for expansion and I'm guessing 512MB ram The $38 UbiSlate 7Ci tablet, running on Google's Android 4.0 Ice Cream Sandwich operating system, features a 1-gigahertz , single-core processor (the sort of CPU found in the first-generation iPad introduced in 2010). Just 4 gigabytes of storage is built in, although microSD card slots are included for those looking for more space to store apps and media. The 7-inch display offers a resolution of 800×480 pixels,

<comment><AUTHOR> It _does_ sound nice, but I'll believe it when I see it shipping. Over the years we've heard lots of "cheap tablets coming" stories, but the final product turns out to be vaporware, or nearly useless.

<comment><USER7> It appears to be available right now

[http://ubislate.us/product.php?prodid=1](http://ubislate.us/product.php?prodid=1)

<comment><USER8> It looks like it has some weird custom skin.

</comment></comment></comment></comment><comment><USER9> Tablets are getting cheap enough that branded tablets are going to be more of a common thing, especially for like trade show gifts and things. Remember how people used to distribute (or still do) software/presentations/sales materials via USB sticks or CD's? At some point it will be cost effective to give away a tablet with your stuff preloaded on there and with your company branding on it.

I can see this happening with custom enterprise type apps that have a tablet component. Take a sub-$100 tablet, get your brand on it and have it load into your app by default or something. Sort of like kiosk tablets.

<comment><USER10> Roger that. AutoZone uses an iPad in their stores for yeoman duties. And today I checked into a potential employer's office on a kiosk tablet.

Some other vertical markets -- car diagnostics, tuners.

<comment><USER11> In Pakistan, a lot of the classier places use tablets as menus.

</comment></comment></comment><comment><USER12> This is an interesting price/inflection point. I agree that it's a "toy" tablet and unlikely to have much utility for regular applications, but an 800 x 480 screen for $38? That is a pretty good deal :-). Scrape a serial port off the USB connector and voila, very nice display for your robot or other throwaway project. I could, for example, see using one of these next to my RaspPi which streams music and have it show a 'now playing' and perhaps album art on it.

</comment><comment><USER13> UbiSlate is the commercial version[0] of Akash tablet[1]. Akash was developed for enabling e-learning in schools and colleges, and promoted by government of India.

[0][http://www.flipkart.com/tablets/tablets-with-call- facility/d...](http://www.flipkart.com/tablets/tablets-with-call- facility/datawind~brand/pr?sid=tyy%2Chry%2Cadj)

[1][http://en.wikipedia.org/wiki/Aakash_(tablet)](http://en.wikipedia.org/wiki/Aakash_\(tablet\))

</comment><comment><USER14> A $38 tablet with WiFi is not a bad deal. An Arduino + WiFi alone is higher than that. This tablet includes a 800x600 display too. If the components are of decent quality (i.e., the caps don't pop after a few weeks of use) then it could be pretty sweet for hobbyists.

</comment><comment><USER15> They are charging $10 shipping per device, even when multiple units are ordered at once, so it is essentially a $48 tablet, a 26% increase.

</comment><comment><USER16> We're finally there! Everyone in the whole world can have a computer now. Now the whole OLPC thing is a software problem.

</comment><comment><USER17> What was intended to be affordable computing for the poor will probably become disposable computing for the middle class.

<comment><USER18> You know this isn't an 'either/or' thing, right?

<comment><USER17> I'm not making a moral judgment, just an observation based on how many people here expressed interest in buying one..or more.

</comment></comment></comment><comment><USER19> There's a pretty great $129 tablet (marked down from original retail price of $149) already available in the US: [http://www.walmart.com/ip/Hisense- Sero-7-Pro-7-Tablet-Quad-C...](http://www.walmart.com/ip/Hisense- Sero-7-Pro-7-Tablet-Quad-Core-Processor-with-8GB-Memory-M470BSA/25427874)

I bought one for the grandparents. It's a clone of the V1 Nexus 7 in terms of specs, feels like a high-end tablet and has some pretty great reviews. Only problem is it's out of stock online - you can only get it at Walmart stores.

<comment><USER20> Plenty of sub-$100 tablets in walmart. I didn't even know about that segment, and it is already super crowded.

</comment></comment><comment><USER21> I have experience with a "Yeahpad Pillbox 7" or whatever it's called, with similar specs. Cost me $60 CAD even, mailed from Hong Kong a year ago, so a price point of US$38 for one now is believable.

They work fine as long as you don't expect too much. For example, installing the Facebook and Gmail apps on mine made it frustratingly slow each time it was unsuspended since these (relatively) bloatware apps - for such limited hardare - could take up to a minute to settle down. Similarly, Google Chrome is slower than the stock android browser on there, and for most practical surfing I use Opera Mini, which does most of its rendering server-side and works as well on this hardware as anything.

Youtube and Dailymotion videos play fine, although the Youtube app takes its time to start up. The weird media player that came preloaded can play full-on 1080p H.264 videos effortlessly. I don't know how they do that, must use some clever hardware acceleration.

But on the whole, just don't expect that "Android is Android". These are minimalist web surfing tablets, not pocket supercomputers.

<comment><USER21> I should add that the web interfaces to Facebook and Gmail work just fine in Opera Mini.

</comment></comment><comment><USER22> I think the android project is starting to move toward optimizing for lower performing devices in an effort to get the OS in more hands. If that's the case, it may make a usable $38 tablet more feasible.

</comment><comment><USER23> this is great. they should preload it with offline version of Khan academy.

Half gig single core this year, next year they will do 1gb dual core for the same price, etc. Still out of reach for those surviving on $2/day, but will put self-improvement and education opportunities in the hands of millions more. Won't be long until almost everyone on the planet has access to a computer

</comment><comment><USER24> Can't imagine it'll be popular in the US, but these are exciting times for developing countries. Here in Rwanda the government has embarked on a noble and ambitious plan to give OLPC laptops to every school child. AFAIK they've been charged about $200 per laptop. It sounds like this tablet comfortably beats that on price and performance.

</comment><comment><USER25> If this is $38 and includes a touchscreen then I wonder how much it would cost to produce a similar device but with a DVI-out and a USB port instead? In other words a sub-Rpi priced desktop.

I suppose the hardware would struggle to drive a 1080p display.

<comment><USER26> You can already buy lots of Android devices with an HDMI out and USB for $30-$40 - MK802, MK804, MK808. They easily drive an 1080p display, some can even drive an 2160 display if you have one.

</comment></comment><comment><USER27> Since people most likely hand this out to kids, I hope --just because it's so cheap-- it's also safe for them (e.g. no easily detachable small parts, not using dangerous chemicals).

</comment><comment><USER28> If they haven't 'killed' the asian market, why bring it to the States?

Insights anyone?

<comment><USER11> In Asian markets, cheap tablets aren't news at all. You could even get one for $30. But the society in general doesn't trust such low-end products. Asians are very skeptical. Yes, loads of peoples still buy them. But no one would choose this over a high end device just because of the price. If they happen to beat the IPad sales, it's not because people find this more attractive than the ipad, it's just that those people can't afford to buy an ipad but would still like a piece of the game.

So it's not exactly a competitor of main stream tablets, its more of a niche product. And in US they are trying to be "disposable". Aiming for more niche markets like schools. It's a pretty good strategy. In fact they are more likely to get more sales in US because as you can see, a lot of people here are considering buying it. In India, most people would see the price and would stop reading. They wouldn't even bother with the specs. Inherent skepticism.

DISCLAIMER: Not criticizing indians or asians in anyway. Just explaining a cultural phenomenon</comment></comment>


Let's Not Call It "Computer Science" If We Really Mean "Computer Programming" - <AUTHOR> http://codemanship.co.uk/parlezuml/blog/?postid=1109 <comment><USER2> So, I agree with this article in spirit. Lots of programmers could've benefitted from a more programming centric approach rather than a CS approach. However, this bit gave me pause.

" I cannot tell the difference by watching them develop software."

I can't disagree with this more. While this may be true of students who were middle of the road students in CS programs. I can't definitely tell the difference between people with a formal cS background and those without in my daily work. I work with a handful of extremely talented self taught programmers but there is definitely a difference between the way they attack problems and think about coding versus the CS folks. Not to even mention the programmers I've worked with who have EE degrees. Those guys think about things and code in an entirely different third way.

All of these people / approaches are necessary... and none of them are better than the others... but pretending like they don't do things different because you want to feel like you don't need a CS degree is disingenuous.

<comment><USER3> Add me to the list of people who are curious and don't agree at all with your claim that people with CS background approach regular problems in a fundamentally different way. The only times when the CS folks' approach differ is when they can reduce the unknown to a known - finding the least wasteful way to cut raw materials(knapsack); modelling problems as graphs/trees and then applying well known, efficient algorithms etc.

From what I have seen, the ratio of non-clever to clever code in a typical software is 80:20(I am being conservative. It's more like 95:5). The 80% doesn't need cleverness - it needs a lot of discipline and proper abstractions. CS doesn't teach you discipline or proper abstractions. Most of the projects in a CS curriculum are small, done in small teams or solo and are thrown away as soon as the course requirements are met. The higher level CS projects exist just to prove a point(research), or doesn't exist at all except in theory.

<comment><USER4> Something that no one is acknowledging here is that a "CS" program isn't a uniform thing, and that people who come out of a "CS" program have not uniformly learned what it did have to teach.

I never took the full CS program, but I hit most of the core classes while studying Cognitive Science. By far the most valuable class sequence I took was compiler design; learning HOW a compiler takes code and turns it into assembly language was a revelation to me, and I was able to "see" the relative optimization of algorithms much better after taking that course.

Will I ever need to write a compiler? Probably not, though I have written several small interpreted scripting languages/DSLs. But taking the class expanded my mind in a way that grants me insights a LOT of self-taught programmers I've worked with never seem to have.

Does everyone who takes a compiler design class gain those insights? No, certainly not. It's possible to muddle through just about any class without REALLY understanding it and pass -- some more easily than others.

The weeder classes in CS at my college were tougher than many, though, including one that actually required each student to write non-trivial programs in assembly language.

But back to your comment: It's not that all code needs to be "clever." A friend of mine once CRITICIZED a piece of code for being "too clever," and he was right. "Clever" isn't a goal. But sometimes the straightforward approach made by someone who is good, but self-taught, isn't as good as the equally straightforward approach by the self-taught AND CS-educated programmer.

>The higher level CS projects exist just to prove a point(research), or doesn't exist at all except in theory.

Real higher-level CS projects frequently involve interesting graphics research, which (also frequently) ends up working its way into commercial game development.

I don't have any clue what you mean by "doesn't exist at all except in theory," since even if you're building advanced data structures that you could otherwise pull from a library, you're building something "real" that could actually be used.

<comment><USER3> I think you are arguing against a claim I didn't make. Your first half of the post about compiler classes and other tougher courses are giving me the perception that I somewhere claimed CS education isn't useful. I didn't make that claim. I was responding to the claim about CS and non-CS people taking different approaches to problem solving.

> But back to your comment: It's not that all code needs to be "clever."

By clever, I meant code that isn't routine. My definition of clever will include dynamic programming, reducing NP complete problems to known algorithms, writing a parser which takes xml as input and produces python dicts("writing a parser is simple" you say. But compared to the rest of the code in a typical project, it does count as clever)

> But sometimes the straightforward approach made by someone who is good, but > self-taught, isn't as good as the equally straightforward approach by the > self-taught AND CS-educated programmer.

It's not me who was making general claims. In my post, I did point out that about 20% of the time, CS background is very useful. The OP made the claim that CS and non-CS approach differs in general, which I don't think holds true.

> Real higher-level CS projects frequently involve interesting graphics > research, which (also frequently) ends up working its way into commercial > game development.

"Real higher level CS" -> <http://en.wikipedia.org/wiki/No_true_Scotsman>

You don't get to choose what real CS research is.

CS researchers have a lot of commendable qualities, but that requires a different set of qualities than a regular software development project, and CS research doesn't hone their skills as far as regular software dev is concerned.

Look at the code from the academia. More often than not, either there is no code(hence the comment "doesn't exist") or it's spaghetti. I don't see how that helps you write code for the regular projects where you work with teams, code isn't thrown away and you are expected to maintain it. Now, I am not saying CS researchers can't work that way - I am saying what they do for research doesn't help.

</comment></comment></comment></comment><comment><USER5> #1 (My Ad-Hominem Attack) Who is this guy? Why does he go on to trash comp sci if he never studied it?

#2 "Of all the mathematical sciences, computer science is unquestionably the dullest. If I had my time again, despite discovering just how much I love writing software, I still wouldn't study computer science."

I stopped reading after this point. Why does he state as a matter-of-fact that computer science is unquestionably the dullest? It's actually quite captivating and quite profound. Cryptography, machine learning, computability theory - all leading ultimately to the question of what, exactly, is knowledge and what can we know.

I can't stand the broader attitude of this, which essentially boils down to "I'm a hotshot programmer therefore anything academic or computer-sciencey is stupid". A lot of people in general could be a little more humble and recognize the fact there's a lot of things that they don't know they don't know.

<comment><USER6> Starting with your ad hominem, I think you took exactly the wrong things away from this article. Regardless of his writing style, his points are dead-on:

1\. Computer science doesn't teach programming (with the corollary that computer scientists specifically don't want to teach programming).

2\. Most people going into computer science want to learn programming.

3\. Many people get fed up with the rigors of _computer science_ (because they recognize it isn't teaching them programming) and move on to other pastures instead.

I've always believed that there should be a "Software Engineering" curriculum in the engineering department and a "Computer Science" curriculum in the math department. That we blur the lines hurts both fields, as programming students demand more programming in CS, at the expense of the underlying theory; and math students demand more theory, at the expense of being able to actually code up a solution.

At the end of it all, though, there is a strong value for _some_ computer science in all programmers. It is amazing how often solutions get re-invented, though it happens far less now with the combination of open source and Google.

<comment><USER7> I agree with the sentiment that software engineering isn't computer science, but I disagree with the sentiment that software engineering is a discipline worthy of note on the same scale that we afford to, say, electrical engineering, civil engineering, or mechanical engineering. To date, software engineering is still largely a collection of (fairly subjective and contextually-sensitive) best practices.

Software Engineering is better off if it's treated as a trade like being an electrician or a carpenter (which it largely is through on the job, experiential training being as emphasized as it is). Take what you absolutely need from the theory, and learn from those in the know to become a respected practitioner.

Software engineering is a trade without a guild.

<comment><USER8> 2 years after I graduated with a BS in Computer Science from the LAS College the Engineering College introduced the Software Engineering program. It was a joint effort between the ComS & CompE departments. Becoming increasingly common.

<comment><USER7> My institution has introduced similar programs. I question their utility in the face of the cost of college and the shelf-life of what you can learn in a 4-year classroom setting (not to mention general ed requirements).

</comment></comment></comment></comment></comment><comment><USER9> Here in the UK, when I did my Computer Science degree, about a third to a half was programming. The rest of it was basically hardware and mathematical type theory. There was more but the point is, it covered computing in the whole. How CPU's actually work, how data is organised on a disk, what is actually going in in CAT5 between cards, etc. AI, Databases, servers, etc.

The was another course, CS Software Engineering, or "programming" for the rest of us. They did our programming stuff, and then some. The two courses sort of forked. Programmers did more programming, we did electronics, hardware etc.

Funny thing was, the CS students became better programmers than the CS-SE people did. I think it was because they understood computers, and not just programming. Next odd thing was that the CS guys often become programmers, and the CS-SE guys ended up in support roles. Even when the CS-SE guy were programmers, they worked in herd like environments, where as the CS programmers ended up on some very interesting projects, like avionics.

Later on, when I did some support roles, I found that the programmers knew less about computers than secretaries. Web designers/coders were worse.

Not saying this is any sort of trend, and I did do my degree 15 odd years ago. But I found it interesting.

<comment><USER10> Would be interested to know the course requirements for the CS vs. CS-SE

If they had more relaxed A-level grades for the CS-SE students (or it was under-subscribed and filled through clearing) then the students on the course were just a lower standard of student rather than the course itself being deficient.

</comment></comment><comment><USER11> I follow the author's point, but I feel as though he's as guilty of dismissing valuable knowledge as the academics he condemns. I recently completed a graduate degree at a university that offered both a "Computer Science" program as well as a "Software Engineering" program. This is only my opinion, of course, but the difference in depth of understanding between the students in each field was very stark. The SoftE students dedicated several semesters to development best-practice-type classes: generating JavaDocs, curating JUnit tests, writing and revising good requirements, and UML modeling. They would essentially walk away from their program as expert Java users with little to no idea how Java itself (let alone the machine underneath) functioned. The CS students knew the inner workings of a computer program from code to compiler to stack, but would have to learn the bookkeeping side of development on the job. Both paths have their strengths and weaknesses and you've got to learn some degree of each to be a meaningful contributor.

</comment><comment><USER12> I agree that a lot of people only need to learn how to program, but I find computer science genuinely fascinating and mind-expanding, so it's a shame that more programmers don't feel like they're able to access it, either because of unfamiliarity with formal mathematics or a justifiable aversion to the "category theory or GTFO" attitude.

<plug> Which is why I'm writing <http://experthuman.com/computation-book>. </plug>

<comment><USER13> I have always considered computer science to be information science and be a part of mathematics and not a separate science. But then again, as a physicist i might be wrong. It's not meant to be diminutive at all (i am after all a programmer) but i consider programming to be a tool, like maths (and consider the two to be inseparable).

<comment><USER14> I have always considered mathematics to be a part of philosophy and not a separate science.

<comment><USER15> It's all down to definitions.

You could argue that mathematics is philosophy done right: With rigour.

<comment><USER14> Well, if you take attitude, then you'd have to reject all science because it relies on induction.

<comment><USER15> Oh, nothing wrong with induction. Just with waffling around.

<comment><USER14> I think Hume would disagree.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> fwiw, an opposite take, from a decade ago.

at my cs pgm, the assistant professors were supposed to make a presentation on day 1 so the grad students could make an informed decision which prof to work with, which subjects to sign up for.

the software engg prof was a glib, entreprenurial hotshot who said "my students have been placed at netscape, sun, microsoft, oracle". he talked about industry partnerships, internships, 1000s of lines of production code, maintenance, unit tests, refactoring...

the db prof said "i have personally placed all my students in oracle". he talked about rdbms, schemas, superkeys, boyce codd normal forms, how "everything was ultimately data, so you'll never be jobless if you became a dba".

the algorithms prof was a shy lanky dude who went straight to the blackboard and wrote "computers are to computing what telescopes are to astronomy". at that point none of us knew who dijkstra was, so we just looked at each other like "huh?". he then turned to us and said "99% of cs is about searching and sorting. sort algorithms. search algorithms." then he drew a table which listed performance of quicksort, shellsort, heapsort, insertion sort, and two algorithms of his own invention. he talked about Big O notation, theorems, discrete math, taocp. our heads were spinning, and when he left there was a huge collective sigh of relief.

at the end, the student breakup was like 49-49-2. So only 2% of the class signed up for algos. Like most indians, I come from a poor household & my main concern was coin. So I signed up for Software engg. After 1 month, I dropped the course and went crawling back on my knees to the Algo prof, and begged him to take me on. That single decision changed my whole life. In that 1 month, I had found out something about myself - that I was a royal prick. I was personally not cut out to do scut work.I had zero interest and respect for maintenance, unit tests, requirements & specs, UML modelling, refactoring, waterfall method, agile, kanban...I found that whole discipline filled with unproven subjective airheaded garbage, essentially a fad. To this day when a recruiter mentions the word "unit tests" on the phone, I just hang up. Just pure instinctual reflex.

It takes all kinds...

<comment><USER17> > I was personally not cut out to do scut work. I had zero interest and > respect for maintenance, unit tests, requirements & specs, UML modelling, > refactoring, waterfall method, agile, kanban...

The world in which this is "scut work" is not the world I want to live in.

Let's be honest. You don't want to do practical, you'd rather do theoretical, and that's fine. However, don't disrespect practical just because it isn't your bag of chips, particularly to an audience that is _full_ of practical engineers. I could spend all day disrespecting theoretical -- mainly because most of those passionate about theoretical at the expense of practical make comments like these -- but I do not, because I see theoretical as necessary for our craft.

<comment><USER18> Are you saying people who do theoretical work don't don't it in practical ways?

As an example, take Google's self-driving cars. Would you say the meat of their body of work theoretical? But would say the code they (Sebastian Thrun himself, and others involved in the project) write code that's not very practical, readable, maintainable or without tests? I would say what they do is theoretical work. And they write practical code for their theoretical work.

If you look at Udacity classes - I've watched Peter Norvig not Thrun's so I'll use that as a reference - Norvig places a lot of importance for tests, maintainability, readability and other practical things throughout his class. I would assume the code he writes (however little now, however much in the past) is very practical. Yet what he writes code for has a huge theoretical aspect to it. I'm saying one can have their body of work being theoretical by nature but that doesn't mean they don't write practical code.

<comment><USER17> > As an example, take Google's self-driving cars. Would you say the meat of > their body of work theoretical?

No.

<comment><USER19> Would you care to elaborate? Surely most of the lines of code are not directly implementing theoretical things, but I would say the meat of the work is without a doubt theoretical.

<comment><USER20> I don't know about self driving cars, but I have known people who did PhD level research in control engineering and then went into industry (real, heavy metal industry, like offshore oil installations in the North Sea) implementing advanced control systems.

The estimate they gave me of the contribution of their control algorithms (the "theoretical" part of the project) to the over amount of effort getting the thing working was less than 1%.

</comment></comment></comment></comment></comment></comment><comment><USER21> This is practically a high brow version of "math is hard, let's go shopping": hash tables are hard, let's use java.utils. Yes, you can write a lot of programs with a few primitives you've learnt in high school and some random bits of practical wisdom you've picked from co-workers. But you're horribly limited as well. (To pick a simple example: if you don't understand how hash tables work, then you probably also use naive O(n^2) algorithms where O(n log n) is possible with little extra effort.) It's a personal decision to stay this way, but it's quite awful, for other people who may look up to you, to quash their interest to become more educated by proclaiming higher knowledge is "dull" and useless.

</comment><comment><USER22> I was with him until he started complaining about being asked how to implement a hashmap and how this implied that the interviewer had reimplemented Java.utils.

How would you know when to use a hashmap and when to use a list if you don't know anything about big-O notation?

<comment><USER23> I think he addresses this point pretty well -- you can learn good programming practices through apprenticeship/experience without understanding the deeper fundamentals. You won't be creating the next MapReduce, but you'll be able to remix and hack up existing functionality in new and creative ways.

<comment><USER24> From the other end though, this can result in a lot of cargo-cult programming. "this is how to do it" can create a ton of redundancy (the bad kind) if the underlying mechanisms are not understood sufficiently.

<comment><USER8> Even having the underlying ability to understand something sufficiently doesn't imply you'll automatically do so. There are plenty of times even a properly educated person on the subject matter at hand will miss opportunities to apply their knowledge. Recognition of a given scenario is a test of your analytic ability, not sheer know-how.

</comment></comment></comment></comment><comment><USER25> "Of all the mathematical sciences, computer science is unquestionably the dullest."

Really? I find it the most interesting. Which is, I think, what led me here.

<comment><USER26> Sigh.

I keeping seeing all these cs vs programming articles. I'm really waiting for a "fuck just programming, cs is fucking awesome" one, because all the ones I've read so far sound like "haha, stupid math nerds and their cs. just learn to program" (a bit of mis-characterization of this article, maybe, but I get annoyed when people say something I like is "unquestionably" dull)

<comment><USER27> Knowing HN, someone will surely deliver, and the front page will have 4-6 variants of "Why you should/shouldn't learn computer science"

<comment><USER26> After I wrote out "fuck just programming, cs is fucking awesome", I immediately thought it sounded like a good name for a blog post :)

Is my hipster showing?

<comment><USER28> I've been mentally composing a blog post entitled, "Programming is hard, which is why I don't want to do it" about the differences between "real programming" and computer science. The thesis is that "real programming" involves solving problems that are _inherently_ simple but have _loads_ of incidental state and details to mentally keep track of, whereas computer science involves solving streamlined, semi-pure instances of _inherently hard_ problems.

I prefer computer-science because I don't like loading five windows and 18 tabs worth of incidental state into my working mind just to get any work done at all, but I greatly enjoy cutting away every impurity and irrelevant detail to forge a creative solution from the ore of a truly difficult problem.

<comment><USER29> Please write this blog post out in full because it sounds exactly like what I've always felt but haven't been able to express properly.

<comment><USER28> Done and submitted to HN.

<comment><USER29> Thanks. I really think the difference you've pointed out is something more people should discuss, instead of implying that CS is just like programming(coding) but with more math.

Instead most people focus on how programming isn't CS enough, or how CS isn't real-world enough and they miss or gloss over the fundamental difference between the two in regard to the type of cognitive abilities required.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER30> I interview a lot of people who want programming jobs.

What I find is: almost nobody can program, and almost nobody knows basic CS 101 data structures.

It does not matter if you are a self-taught programmer with ten years of experience in the best companies, odds are that you cannot solve a trivial coding exercise.

It does not matter if you have a masters degree in Computer Science, odds are that you cannot successfully build a tree structure.

I have no idea how these people keep their jobs or how they graduated, but this is the norm. People who can do CS at all, and people who can code at all, are both rare. Or at least, are rare in the pool of people applying for work.

<comment><USER31> If a person is a self-taught programmer with ten years of experience working in a good company, then you are obviously programming for that company in a sufficient capacity even if you are unable to solve puzzles offered up by human resource managers that found them on Google by typing in "Questions for Programming Interviews." Programming is not about being able to solve brain teasers. Programming is about being able to deliver quality code. If the language handles most of these data structures for you or if you have used them before without actually considering it, then you obviously know their importance even if you cannot put it into words under stress. Do not degrade people that cannot repeat verbatim some useless information they read in a book or solve brain teasers in minutes (unless they had already seen those puzzles.) Being able to work hard, clean, in a team, and supply a functional product on time according to specifications are the most important traits.

<comment><USER32> You are the only one who said anything about brain teasers and puzzles. The parent lamented the fact that so many programmers can not solve basic programming problems. Fizzbuzz for example. If you can't write fizzbuzz, you are not qualified for a programming job. It has nothing to do with computer science, or brain teasers people googled, and everything to do with writing actual working code to accomplish a trivially simple goal.

<comment><USER31> I had to look up "FizzBuzz" to know what you mean, but you are correct. (I have actually been asked to write programs like this, and this is great even if it is minimal. I think the questions may need to be a bit more complex than this, but at least it is possible to solve in one sitting.) Asking an applicant to write simple programs like this would be good. Or, if the person is a front-end JavaScript developer, you can ask them how they would handle thumbnail mouseovers to display larger versions of the images in a separate div. Things like this are fine and have purpose. Asking a database administrator about the difference between joins makes sense. Another question might be how would you write a class to represent a deck of cards including methods for shuffling the deck. In comparison, sometimes you will have technical questions thrown at you that have no real world applications or literal brain teasers, and I think those types of questions are pointless. There is a difference between asking programming questions and asking programming puzzles, and I wanted to voice the opinion that puzzles should not be misconstrued to the point of suggesting that people cannot program because they cannot solve them.

Real programming projects are best. I think one of the best methods would be to give a person a reasonable assignment that should only take a couple hours to complete (if that long) and ask for the results within a few days. (This will give them plenty of time to clean it up, add surprising features, and create a nice design and front-end after they are finished with it. A day can be used for the promise of completion, and the remaining time can be used to overdeliver.)

<comment><USER32> >In comparison, sometimes you will have technical questions thrown at you that have no real world applications or literal brain teasers, and I think those types of questions are pointless

My point was that nobody else is talking about that. You just brought that up completely out of the blue, but in response to someone. When you reply to a post, those of us reading the thread tend to assume your post will in fact be in reply to the parent post, not a completely unrelated post just stating your opinion on something else entirely.

</comment></comment></comment></comment></comment><comment><USER33> The rift between CS and SE is unfortunate. To use Greek terms for different kinds of knowledge, computer science is _logos_ (reasoning from first principles). Software engineering is _metis_ (practical, local knowledge). They complement each other.

I suspect that the only reason there is such a rift in the first place is because the sources of funding for people employed in CS and SE are different. CS is funded via (predominantly) government grants. SE, clearly, is typically funded privately.

Like China commenting on diplomatic rows between North and South Korea, I'll say: both sides need to learn how to work with each other.

</comment><comment><USER34> "Computer science is no more about computers than astronomy is about telescopes." - Edsger Dijkstra

</comment><comment><USER35> It's worth noting that a sharp high schooler can learn to program - many do.

It's a rare, rare high schooler that can learn how to use computer science. Most CS grads don't.

And we wonder sometimes why our software is so cruddy.

<comment><USER36> Well, a sharp primary schooler can too... Bah, my first CS teacher claims now that it's crucial to start in primary school if you care about getting anywhere in IOI.

<comment><USER37> I don't think it's _crucial_ to start early. Rather, there's a correlation-- the sort of person to become a really good programmer or really good at CS is also very likely the sort of person to start programming at an early age.

</comment></comment></comment><comment><USER38> The reality is that there are many different responsibilities that, confusingly, fall under the singular title of "programmer".

If you're the tech cofounder at a startup, you're probably focused on building a new product that customers love from scratch. You're going to need a very different set of skills and abilities than, say, Microsoft engineer #10000 who is maintaining some old codebase. Or even engineer #100 at Google who's trying to scale to hundreds of millions of people. Etc.

What's weird is that people hardly ever mention these differences. They just say things like, "All programmers should know advanced algorithms"... or data structures, or compilers, or UX design, etc. Even if people/companies don't say this explicitly, they say it implicitly when they quiz for specific material in interviews for jobs that don't rely on that type of material.

If you're exceptionally good at what you do, but you constantly hear that you're inadequate because you don't have _this_ skill or _that_ knowledge, it's easy to doubt yourself. But you shouldn't. The fact is there's nobody who knows _all_ of this stuff, or even most of it. And there's no job that's going to ask you to _do_ most of it (I say this as the sole tech person at a startup where I have to do sysadmin, back-end coding, front-end coding, and design single-handedly).

Just find what you love and get good at it.

</comment><comment><USER39> I like to think of it like this:

Scientists: Focus on developing new theories, solutions to abstract problems, etc.

Engineers: Build tools based on the theories created by the scientists.

Developers: Build products based on the tools the engineers made.

<comment><USER20> So where do mathematicians fall in that spectrum?

<comment><USER40> Well it's not a spectrum really, you need a mix to do anything. Scientists need developers (or need to be developers too) if they want to do experiments related to their theories, or if they want to push them to the world. Developers need to understand what scientists say, or they need to be partly scientists, to be able to build up their own small theories whenever a problem is difficult enough. And so on.

Back to your original question, maths is an extremely useful tool both for CS research and development. A pure mathematician is providing material for all of CS to work. But CS people, programmers, and so on need to know some math too.

</comment></comment></comment><comment><USER41> When i was in university majoring in Computer Science i had about 5 programming classes in all 4 years of school while the rest were theory, applied statistics and mathematics. So to call it "computer programming" is a major overstatement to me.

<comment><USER37> This definitely varies per school. At my university, almost all of the CS classes involve a significant amount of programming. (For reference, all the EE and CS people have one major.)

We have a slightly weird structure: everybody takes the same intro courses but then you can do whichever advanced courses you like. So this means that _everybody_ (even pure EE people) get programming courses going from Scheme (SICP) to assembly. (And the CS people like me also have to do a bunch of EE.) Then, most of the advanced CS courses all involve a healthy amount of programming. The only exception is the algorithms/theory sequence, but most people don't do all of it and _everybody_ (except EEs) do some other programming courses as well.

I think the main difference is that the program I'm in is part of the engineering college of a school that takes engineering rather seriously.

</comment></comment><comment><USER42> Upvoted just for the title. C'mon, value judgements of CS vs programming aside, there needs to be a broader awareness of the difference between the two.

</comment><comment><USER43> That's why schools like RIT have a Software Engineering program. Learn the basics of CS, then go build real software with it.

</comment><comment><USER44> I agree with his main point, that we should have an entirely separate "software engineering" major which would stress the _process_ of software development and prepare students for being professional software developers. Then, computer science programs would mainly be for students who wanted to do research in computer science - much like the difference between various engineering disciplines and physics.

But he comes dangerously close to the "computer science is math" notion that assumes CS is just theory. It is not. I wrote an entire blog post in response to this (surprisingly common) sentiment: <http://www.scott-a-s.com/cs-is-not- math/>

HN discussion: <http://news.ycombinator.com/item?id=3928276>

<comment><USER45> My university had a software engineering and computer science majors. Practical difference was that the SE majors took the standard 1st & 2nd year core engineering classes, which meant more physics and DSP classes. After that both majors took mostly the same classes. CS majors took a bunch of SE classes and vice versa. I could theoretically go back to school take about 8 classes and get a SE major.

</comment></comment><comment><USER46> Great article. Most students would probably prefer practical programming experience but they get CS degrees since that is all that is being offered at their college. The schools meanwhile couldn't care less about what's practical and they refuse to become a "trade school" so they instead require the students to learn difficult and often unnecessary material. Besides making it more difficult for the students who do succeed, it ends up scaring off many people from a career in software development all together. I think its time for some disruption in the education system...

<comment><USER47> I can't tell you how much I learned on the job vs. what I learned at school.

I don't think the difficulty barrier is the issue.

The issue is the code you write out of school. Your sense of style is driven by the fact that the TA would mark you off if you didn't write a comment before your function. Your experience working with other developers is confined to that one terrible semester long project with the one idiot and the other guy who wouldn't do anything until the week it was due.

I don't mind so much that I had to learn QuickSort every year for 6 years or so. I do mind that I left school not really grokking a thing about object oriented notation. I left school thinking objects were nice and they could have methods, and you could create other objects that got those objects for free - maybe some sort of polygon class with subclasses "square" and "triangle".

But in practical terms of course it was one huge main() function for most of the "hard" problems they had us solving.

I understand not wanting to be a "trade school". Computer science _is_ harder than that. You want people who can understand big-O notation. But teach them how to code, even just a little bit.

</comment></comment><comment><USER48> IMO CS is necessary to advance the state of the art. And while I completely agree that many computing/programming tasks currently do not necessarily require a CS degree, there is no guarentee that will always be the case.

As for my myself, I studied roughly 3 years of computer science before I dropped out to work full-time, so I only have a half-finished bachelors degree. I wont say I regret it, because the last 5-6 years of being partner in a startup and earning a good pay-check have been fun. But I very much do regret not being able to completely grasp all the new interesting research papers that are coming out. Nothing is more frustrating than reading a research paper, and knowing enough to be able to grasp that this algorithm could improve some part of your system, but then being unable to decipher/implement it, because one have forgotten(or not learned) parts of the mathematical notation/background. In other words being able to see the solution, but the solution being juuust out of your grasp. I hope down the road to be able to compensate for this problem by hiring smarter guys than myself that DID finish their CS degree :)

Also another benefit of studying CS is that around year 2-3 you will be introduced to some subject matter that I at least personally am pretty sure I would never have heard of otherwise. I found stuff like operations research and integer programming very interesting. I havent yet have had opportunity to use any of it in the "real world", but its nice knowing whats out there, who knows it might come in handy a few years down the road in some other venture.

</comment><comment><USER49> I've studied theoretical math and computer programming.

Coming from theoretical math, I feel like the reason that computer _science_ is dull that as a part of math, it is mind-bendingly difficult.

The almost no "substantial" theories of computer science because they would have extraordinarily encompassing abstract statements about what is possible to compute, essentially to even think about. P =? NP is a good example. Unlike other Millennium Math Problems, there has essentially been no positive progress on the question. The only theorems are about how this or that tool won't help us. And P=? NP is a simple, even "obvious" statement from the right standpoint.

Essentially, most of the generic theories of CS are constructions to show something either possible or impossible.

I'd wonder if you could teach CS as something like the ragged edge of mathematical logic. Might make it authentically interesting ... for a few people but it would probably wind-up being less practical. Sigh...

</comment><comment><USER50> > the UML meta-meta-model

that's not computer science; that's software engineering "theory".

Algorithms; data structures; type systems; however ...

</comment><comment><USER51> Great article. This expresses better than I ever could have at age 20 why I quit my CS degree since I already had a job. At the time, the university was experimenting with a "software engineering" degree, but it was new and not yet accredited so it was too early to know if it was worth it.

</comment><comment><USER52> "Developers will need some theory, and I'm painfully aware, too, of the degree snobbery that most employers harbour. So I propose that the right course would be a 5+ year apprenticeship with part-time degree study - CS in the classroom 1 day a week, software development in the office the other 4."

I disagree with this statement. My program at school supplements 6 months of formal learning with 6 month long internships. I don't feel like 4 days a week is enough to get the benefits of working to supplements formal learning. I defiantly need 6 months in a job to learn something valuable, and towards the end of my internships is where I feel like I've learned enough to contribute just as much as any of my teammates and coworkers can.

</comment><comment><USER53> Basically, we should only learn the 'real' programming skills and forget that the whole state of computing technology rests on the shoulder of giants who created these algorithms and did all this research for 'real programmers'. Oh, we certainly don't need CS, because it gets in the way of writing code.

Seriously, I understand what the author is trying to convey, but IMHO he goes too far on the bias against CS. It is a serious handicap to program anything worthwhile and using APIs and frameworks without understanding (at least to some degree) what they do ... my .2 cents

</comment><comment><USER54> To a computer scientist, programming is merely a tool to help bring their computer science ideas to life. Writing a bunch of APIs and calling them will only take you so far. After a certain point, theory will prevail because math (computer science is applied math) is the truth. Also the "computer programming" major is called Infoscience majors at the top engineering schools, those students are laughed at, you don't have to be smart to grind through those classes ie you don't build mental toughness towards theories.

</comment><comment><USER55> I agree that modern "computer science" educations often don't teach enough to allow you to make great software, nor enough to open your eyes to the grander concepts. But you can't take that to mean that there is some subset of concepts that are useful to you and that this is all you need to know to hone your craft.

I do not like these strange lines in the sand that are drawn between engineers and scientists. These distinctions are artificial and a curious mind shouldn't be trapped on one side or the other.

</comment><comment><USER56> >Time spent learning the UML meta-meta-model and Object Z >is, for 99.9% of developers, time completely wasted

I thought it was interesting that the poster used these examples for CS.

I didn't take a single course at university that dealt with either of these topics. Everything I dealt with in comp sci was algorithms & complexity theory, coupled with a smattering of, "this is how computers actually work". Far as I can tell op is talking about computer programming subjects, and not computer science subjects.

</comment><comment><USER57> Indeed, don't call it computer science unless you're making computer hypotheses that you then test via computer experiments, using the computer scientific method.

</comment><comment><USER58> While we're at it, why is it called Computer _Science_? I think "Computational Mathematics" or something would make more sense.

<comment><USER59> Computational maths (research area of mine) is its own field, and is very different to computer science.

A introductary (undergrad) computational mathematics course at my university covers; numerical solutions to PDEs, Inverse problems, Regularisation problems, numerical optimisation etc.

<comment><USER58> I should have looked for a name conflict first, I suppose, but my point is that "science" doesn't seem like the right word to describe most of CS.

I'm not saying it's incorrect, but it just doesn't seem to fit well.

</comment></comment></comment><comment><USER60> Writing applications: go ahead, program by the seat of your pants.

Architect a solution to a big problem: theory comes in very handy.

<comment><USER61> The theories behind computer science have little very application in large software engineering.

software engineering != computer science

<comment><USER60> That's preposterous. Computer science is directly applicable to understanding issues of scalability, searching, hashing, database properties, network routes and looping, the list goes on and on.

Computer science is a lot more than proofs.

<comment><USER61> None of those things deal with maintainability, design by contract, interface design, etc.

When you're writing a multi-million dollar piece of software (20+ man-years), the technical problems are the easy ones to solve. Actually putting the thing together is the hard part.

<comment><USER60> Well said. Computer Engineering is a lot more than programming languages. But does it take a college education to get there? Or a seminar on the latest tool chain.

</comment></comment></comment></comment></comment><comment><USER62> Contrarian take on the issue:

I wrote a Quake 3 mod in C++ (directional damage modification, server/client magazine+reload, and a few other things not-so-difficult things) in high school around age 17. I then did a CS undergrad at a top 6 university.

I learned more about programming writing that mod than my combined experiences at school.

<comment><USER63> Yep, because programming and computer science don't have a lot of overlap. But I bet you could have written a mean linked list after the CS degree.

</comment></comment><comment><USER64> What's wrong with "Software Engineering"?

</comment><comment><USER65> CS to a programmer is no more "theoretical" than anatomy is to a surgeon.

</comment><comment><USER66> Feynman had it right: <http://www.youtube.com/watch?v=lL4wg6ZAFIM>

<comment><USER67> I agree it's more of a mathematical discipline than a science.

But it isn't just "studying man-made creations". It's about studying computation in general. Not just man-made machines that compute.

<comment><USER68> Complexity theory is based on the idea of a turning machine, a man made thing.

Mind you, information theory, which is often considered computer science, certainly applies to nature itself. Of course, it would be easy to claim that information theory isn't actually computer science. Personally, I consider most of computer science more math than science. In fact, I sometimes tell people I do math! (This is a great way to avoid further questions at borders or awkward parties.)

<comment><USER69> Not really. Complexity theory deals with many different forms of computation, from Turing Machines to RAM models to circuits to quantum computers. These are all particular concrete artifacts that we use to study the fundamental notion of computation itself.

Saying that complexity theory studies "man-made things" is like saying that chemistry studies man-made molecules. It's technically true, but it confuses the methodology with the object of study: studying particular chemicals vs the underlying laws governing them or particular models vs the underlying laws of computation.

</comment></comment></comment></comment><comment><USER70> "It helps to know some music theory if you write and perform music, but a lot of very successful songwriters and performers get by very happily with just enough music theory."

This is an absolutely bogus comparison. Music does not need to be maintained, music does not need to be troubleshooted or debugged (and thus, reasoned about), music does not solve a problem(1).

Music is an artistic expression, while computer software isn't.

(1) Writing soundtracks for movies, for example, can be considered solving a problem with music. It also requires music theory knowledge because soundtracks have to convey particular emotions at particular moments.

<comment><USER71> _"It helps to know some music theory if you write and perform music, but a lot of very successful songwriters and performers get by very happily with just enough music theory."

This is an absolutely bogus comparison_

I disagree. There are very successful songwriters and performers who have no training, but almost all of the _good_ songwriters and performers did have (usually classical) musical training.

The same is absolutely true in software: There's a lot of very popular crap out there, but the software which is universally recognized as _good_ \-- code like TeX -- almost always comes from authors with solid computer science training.

<comment><USER72> There's some good stuff in TeX but it's been buried in an avalanche of shit from people who aren't Knuth. You can get TeX in a couple megabytes (<http://www.kergis.com/en/kertex.html>), but if you install something like pdfTeX or XeTeX or TeXlive, well I hope you've got a big hard drive.</comment></comment></comment>


Poor, Hispanic school focuses on test prep, sees huge gains - <AUTHOR> http://www.washingtonpost.com/local/education/poor-hispanic-school-focuses-on-test-prep-sees-huge-gains-but-can-it-be-replicated/2015/01/10/5a65ca1c-5b95-11e4-8264-deed989ae9a2_story.html?hpid=z4

<comment><USER2> Are they learning better, or just learning to take tests better? I suspect the latter. Is that really the best use of their time and our money?</comment>


Private Sector Edges Deeper in Space - <AUTHOR> http://www.nytimes.com/2012/05/15/science/space/contracts-help-private-sector-edge-deeper-into-space.html?hp <comment><USER2> I want to see some hard numbers on savings in form of an infographic come from one of these companies, particularly SpaceX. Let's see how much NASA has been overspending the last few decades...</comment>


Why Apple Pay won't work - <AUTHOR> http://americasmarkets.usatoday.com/2014/10/07/why-apple-pay-wont-work/

<comment><USER2> I'm not necessarily saying Apple Pay is going to work, but I don't think these are strong arguments against it.

1) Fees: Everybody charges fees. Any competitor who wants into the market is going to charge a fee. The fact that nobody has succeeded in this in the American market means the market needs something that works first before fees become the issue. Apple can always lower the fee if they feel pressure. Remember that nay-sayers said the App Store 30% cut would never work because it was too high, but anybody who remembers this market before the App Store remembers that 3rd party payment services were often just as expensive if not more because you often had to do the labor of tying multiple services together (web site, shopping cart, payment authentication). Additionally, Apple promised and delivered in being able to draw in and convert more potential customers into buyers.

2) Inferior tech: Technology isn't the problem. The technology has been around in other countries. There is something different about the American market that has prevented adoption of this kind of transaction system. Apple's belief is it is the seamless integration, not the technology.

3) Little incentive for adopters: Self-interest may prove to be enough incentive. You only need to think back to McDonald's and other fast-food's semi-recent fight to remove credit card signatures from small transactions. They fought hard for this because their own market research found that signatures discouraged credit card transactions and slowed down lines. Their other research showed that people spent more money on average than compared to when they paid with cash (because they didn't have to worry about not having enough cash on hand). Merchants may have enough self-interest to adopt this system in order to speed up lines (more customers with fewer cashiers) and get higher spending per customer.</comment>