Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!


Forgot your password?
Slashdot Deals: Deal of the Day - Pay What You Want for the Learn to Code Bundle, includes AngularJS, Python, HTML5, Ruby, and more. ×

Comment Actually answering your question... (Score 1) 336

The instinct for experienced people when getting a question like this is to just ignore it and give you some broad generic advice (e.g., "he language shouldn't matter!"), which is not what you want. I will try to actually answer your question.

Fact is these days simple programs are not written in C++. C++ is used in kernel code, storage array code, file and database system code, i.e., things with caches where strict control of resources matter for uncommonly important performance reasons (uncommon because performance is not usually a priority 0 problem for "Apps" but it is for systems). If your friend is going to write C++ code they are going to work on a complex system. So then the amount of C++ they will need to know will be probably most of it because for complex systems the code base is large and mature, worked on by many engineers, and usually strictly controlled (code reviews, regression testing, etc...).

What makes the job entry-level then? Answer: they will not be responsible for making large sweeping changes, but instead will be focusing on fixing specific bugs. It will take a while until they earn enough trust and domain-specific knowledge to fix bigger bugs (bugs involving multiple components) and even more until they can design/architect new features. What that means is your friend in an entry-level C++ job will actually be _reading_ more then they write, a lot more.

So your friend will be working on a mature, complex system, fixing bugs with limited scope, and reading lots and lots of code written by other engineers. In the context of reading code the minor features will matter less (e.g,. type parameterization via templates, or various constructor syntaxes, or throwing/catching exceptions). What will matter? What does he need to know to read C++ code and fix small bugs?

1) Being able to identify layers of abstraction and modularization so your friend can tell what a particular piece of code is trying to do and how it fits into the larger system. In this case the major C++ things to understand would be how classes and their data members are declared (often in separate .h and .cpp files), and how class hierarchies are declared (e.g., abstract classes, inheritance, overriding virtual functions, etc...).

2) Being able to understand common memory bugs. The fact is 30+% of bugs in C++ are because it doesn't have strict reference tracking and GC like, e.g., Java, has. Your friend needs to know pointers, pointer arithmetic, referencing, dereferencing, call-by-value, call-by-reference, references, arrays, malloc, free, constructors, and destructors cold. Also your friend needs to know how to use a debugger (e..g, gdb) and something like valgrind that can help find where memory bugs originate from.

3) Soft-skills. Your friend needs to be able to talk to other engineers to ask them how a problematic part of the system was supposed to work, what was the intent? They also need to propose their solutions, and explain what they think the bug is. Particularly for large and complex systems this is really important as you do _not_ want to introduce breaking changes and with more complex systems it is often difficult to regression test just the bit that your friend changes to fix the bug, so you need to import others' experience and get more eyes on your changes when necessary.

Bottom line your friend will be fixing small bugs (often memory related), reading a lot of code, and learning about the particular system they are working on as an entry-level C++ coder. Good luck!

Comment Not Using LinkedIn Is Your Loss (Score 1) 394

I got my jobs and internships before LinkedIn by going to storage conferences, job fairs, and keeping tabs on old colleagues that moved onto work at big companies (references). Those techniques and events are still there and companies love to recruit via those channels. But you can _augment_ this with LinkedIn, which is like an interview machine. My brother graduated recently and could not find a job. I went through all the recruiters that harassed me on LinkedIn and systematically e-mailed all of them with something along the lines of: "I am not available but my brother is a genius, here is his info". My brother called me the next day and he had a couple weeks of interviews lined up already. Now he works on a prestigious tech team and makes damn good money. Unlike Facebook and Twitter, LinkedIn has quantifiable and immediate value to the end-user.

So is it possible to function in society without social media? Absolutely, except for LinkedIn, that is exactly what I do. Does it put you at a disadvantage when competing in the job market if you do not learn to use and master these tools now that they have become prevalent? Absolutely.

Comment No Computers; Just Math (Score 1) 223

If you are truly going to be offline, you are screwed. Even in the pre-internet days I still had to go to the library, the book store, the school, the software store (there were such things), whatever, and connect with people. Basically, it was never long before you had to go back to the source, whatever it was. If you are really going to be offline, you need to go after pure math, not even fundamental CS. I would go check out a couple college courses on topics in math that interest you (cryptograph algebra, topology, theory of comp, complex analysis, real analysis, etc...) and grab the books from those course listings. Read the books and work diligently through the exercises. That you can really do offline, though you may still get stuck on a problem, but you write a letter to a professor and ask, even if you are not matriculated, he'd love it.

Comment What about the new wave of proprietary programs (w (Score 2) 126

So it seems these days the most effective method of DRM is a network interface, like that used by Facebook, Google, Pinterest, etc... You cannot run your own instance of Gmail or Facebook, and you certainly cannot see or modify the code. At the same time all these companies are pressuring us to push our data into their servers by not supporting or coming up with solutions that let us continue to control/manage our data on our own machines and private networks. What can open source do to stem that tide? What about open source licensing? Could webkit or mozilla have slowed down the encroachment of Chrom/ium and its pro-Google agenda if it had more defensive licensing terms like something similar to the GPL? How do we convince hackers to hack on open-source 'website programs', like an open Gmail or an open Facebook (e.g., Diaspora)?

Comment Language is the answer to your question... (Score 5, Insightful) 876

...and I do not mean programming language, though that can help.

There is not a big gain (any gain?) to seeing a square with arrows instead of "if (a) {b} else {c}" once you get comfortable with the latter. I think you hinted at the real problem: complexity. In my experience, text is not your enemy (math proofs have been written in mostly text for millennia) but finding elegant (and therefore more readable) formulations of your algorithms/programs.

Let me expand on that. I've been hacking the Linux kernel, XNU, 'doze, POSIX user-level, games, javascript, sites, etc..., for ~15 years. In all that time there has only been one thing that has made code easier to read for me and those I work with, and that is elegant abstractions. It is actually exactly the same thing that turns a 3--4 page math proof into a 10--15 line proof (use Louisville's theorem instead of 17 pages of hard algebra to prove the fundamental theorem of algebra). Programming is all about choosing elegant abstractions that quickly and simply compose together to form short, modular programs.

You can think of every problem you want to solve as its own language, like English, or Music, or sketching techniques, or algebra. Like a game, except you have to figure out the rules. You come up with the most elegant axiomatic rules that are orthogonal and composable, and then start putting them together. You refine what you see, and keep working at it, to find a short representation. Just like as if you were trying to find a short proof. You can extend your language, or add rules to your game, by defining new procedures/functions, objects, etc... Some abstractions are so universal and repeatedly applicable they are built into your programming language (e.g., if-statements, closures, structs, types, coroutines, channels). So, every time you work on a problem/algorithm, you are defining a new language.

Usually, when defining a language or writing down rules to a game, you want to quickly and rapidly manipulate symbols, and assign abstractions to them, so composing rules can be done with an economy of symbols (and complexity). A grid of runes makes it easy to quickly mutate and futz with abstract symbols, so that works great (e.g., a terminal). If you want to try and improve on that, you have to understand the problem is not defining a "visual programming language" that is like trying to encourage kids to read the classics by coming up with a more elegant and intuitive version of English to non-literate people. The real problem is trying to find a faster/easier way to play with, manipulate, and mutate symbols. To make matters worse, whatever method you use is limited by the fact that most people read (how they de/serialize symbols into abstractions in their heads) in 2D arrays of symbols.

I hope helping to define the actual problem you are facing is helpful?

Good luck!

Comment Jesus vs. Kant (Score 1) 617

Kant: Q: If everyone did not return merchandise mistakenly mailed to them, what would happen [approx. categorical imperative]?
A: Probably the cost of shipping and retail would go up slightly to pay for more expensive insurance to account for the potential of sending the wrong item. Order processing and shipping would employer slightly higher paid people. Overall, we'd expect to see less shipping errors from all retail companies and shipment companies. Overall, a slight price increase on the cost of goods, less shipping mistakes, and not much else.

Jesus: Q: Would you like it if someone else did not send back a package to you that you mistakenly sent them [golden rule]?
A: No, that would suck.

Two different moral systems go in different directions here. Still, I think Kant would probably mail the Vita back. Nobody wants to be a dick.

Comment Hard sells (Score 1) 243

The reasoning behind why paid apps are less likely to be uninstalled is because the buyer feels "attached" to their purchase. This reasoning is exactly wrong and agreeing with it actually makes it easier to miss the larger point. I would argue the reason almost all of us uninstall apps are because they take more than they give. For example, games asking for recommendations before the honeymoon wears off, apps that change the rules half-way (e.g., ask for more system privileges in an update), apps that just ask for personal info up front but offer no real use (WiFi buttons with e-mail access), apps that sell you intangible things that you can only get at through the app (e.g., background tracks to rap against). All of these apps take more than they give. Furthermore, apps that try to hide this relationship are especially hated. So we uninstall apps that take more than they give, and how long it takes us to uninstall them depends on how well the app can hide this inequity. Apps that do a poor job of hiding the inequity at all never get installed.

Conclusion: word of advice to app developers: You want to put out apps that give more than they take, and ask for what they take up front. Deception in this regard is hated and is punished. No "please review me" prompts, no upsells, no in-app business, no fake currencies or intangible goods. Oddly, I don't care about ads, the relationship there is up-front to me, I pay for the app by looking at its ads, but others might find them too distracting.

Comment hyperbole.txt (Score 1) 234

Apparently using the common practice of putting up a robots.txt to ask crawlers to stay away for better political messaging control is actually an Orwellian thought-control power grab. Obviously Cameron was talking about other news/archive sites keeping a permanent record of his speeches, since that is the only way it could work for any party in power. Do we really expect a politically motivated website, of any party, to keep an honest and complete record of its positions and speeches for indefinite periods of time for public scrutiny?

The way this headline read, I half expected to hear about Cameron's administration sending take-down notices to bloggers for dredging up campaign promises, but no, his party's website just updated its robots.txt, sheesh!

Comment Threshold Ticket Prices Filter Consumer Masses (Score 4, Insightful) 1029

I haven't gone to see any of these movies not because I wasn't _mildly_ interested, but because it wasn't worth $14--$17 times three: the cost of bringing myself and my family. That is a lot of cash to see a "meh" movie. It wasn't long ago that movies used to cost $6 a head.

Perhaps the geniuses in Hollywood should use their analytics to actually pick per-movie MSRPs: something they can do with Google's analytics, after they've already bought the movie and are just trying to maximize their investment. Or if that would piss off customers, then just decide to roll out movies such that 3D is the same price as 2D as a special "bonus" or promotion, to effectively bring the price down on movies that you are afraid aren't going to do as well as you thought pre-production.

Comment Re:Alternate perspective from an indie dev (Score 1) 463

Either we were reading different messages, or we understand English in different ways.

Nice false dichotomy. Pretty crafty for a non-native speaker. You are learning the internets well!

Microsoft hasn't changed the deal for Indies, it's trying to improve upon it to attract more developers and is very helpful all around.

Sure, but who cares? Microsoft's policy toward indie devs may be improving upon what it was 5 years ago when they were leading the pack among consoles, but this article is about how the other consoles are surpassing Microsoft in its friendliness toward indie developers, for example, by publishing this new Oddworld game. This article is relevant because in other news Microsoft plans on imposing obnoxious DRM restrictions that chase the typical player of an indie game away from a system and there have been reports of developers having problems working with Microsoft that they don't have with other consoles. The gamasutra guy in the link above, and you my friend, are both missing the point.

Bottom line: the notion that MS is improving on what it was 5 years ago is just not good enough when its competitors are going beyond that to attract indie dev talent and indie game players. MS is getting outflanked by Sony pretty hard right now...

Comment Re:Alternate perspective from an indie dev (Score 1) 463

This guy basically says: "look, everything is like it was before, its all cool at MS." Which is fine, but irrelevant. It is irrelevant because Sony, Nintendo, Apple, and Google/Android do not just keep doing the same thing, they change the terms of their contracts with indie developers over time. So why compare MS to how MS was 5 years ago? We should compare how MS is to its competitors _now_. If you follow that line of reasoning, it seems MS does not want to allow a company to release this Oddworld title for their console because they do not have a publisher recognized by Microsoft, but that is not a problem for the other consoles. Times are changing and MS is trying to turn back the clock to 5 years ago, and further with their ratcheting up of DRM controls.

Comment Emergent Effects (Score 1) 601

This is another case of legislators not looking at very basic emergent effects. This article takes a big step toward making this law, and its consequences, widely known. This law, combined with widespread awareness of it, will obviously have chilling effects on archaeology in Canada. Regardless of what you think is right or wrong, or who should pay, the simple fact is that forcing the property owner to fund a proper excavation of these sorts of artifacts effectively means artifacts found by property owners during a construction project will be repeatedly reburied while no authorities are notified. If we do not want that, we have to change the law. You cannot change human nature.

Comment NEWS: Terrible Journalism Undermines Argument (Score 2) 474

The first four paragraphs of the second linked story consists of the author basically rationalizing her terrible journalism. She makes a terrible error in misquoting a Candian official: “Scientific discovery is not valuable unless it has commercial value.” instead of: “A new idea or discovery may in fact be interesting but it doesn’t quality [sic] as an innovation until it’s been developed into something that has commercial or societal value.” which is closer. Never mind though, the author doesn't skip a beat and goes directly onto jumping innocent conclusions in a dark cyber-alley.

Why is this article one of the (just) two lemmas in the submitter's argument that Canada's current government is trashing publicly funded research?

Make it right before you make it faster.