- he really doesn't use his PGP key all that often, had the same one for 16 years on god knows how many computers, and decided that if he's going to generate a new one, he might as well send a message with it.
Edit: I am located in the North Eastern part of the US.
Edit 2: perhaps we need a geolocation aware social network a la Square but just for notifying you of other nearby PGP users...
He has worked previously in mostly corporate and private context, so 2048 is just fine. Now he works with people and data NSA wants their hands on and he wants the data to be secure also in the future. It's just reasonable to move to 4096 key sizes.
>Dr Lenstra and Dr Verheul offer their recommendations for keylengths. In their calculation, a 2048 bit key should keep your secrets safe at least until 2020 against very highly funded and knowledgeable adversaries (i.e. you have the NSA working against you). Against lesser adversaries such as mere multinationals your secret should be safe against bruteforce cryptoanalysis much longer, even with 1024 bit keys.
See also: http://www.keylength.com
> 3) Assume that while your computer can be compromised, it would take work and risk on the part of the NSA so it probably isn't. If you have something really important, use an air gap. Since I started working with the Snowden documents, I bought a new computer that has never been connected to the internet. If I want to transfer a file, I encrypt the file on the secure computer and walk it over to my internet computer, using a USB stick. To decrypt something, I reverse the process. This might not be bulletproof, but it's pretty good.
Does the computing cost to encrypt/decrypt make this impractical?
It comes in a pair with 2 USB ends and can be mated together to share a key.
Of course, I have to ask: why bother? If you're giving them a flash drive anyways, just exchange public keys. Also safer, as if someone loses/etc. a public key it's no big deal whereas if someone loses the OTP then all of the data you sent is trivially decryptable.
Next important factor is to have a LinkedIn profile with "Rails" in it
I talked to a friend who works at Twitter (he is 37) and he told me it's not a "college graduate world" as some depict it, he said most people he works with are around his age (which was very encouraging for me).
Here in Atlanta there are tons of Sr. Java jobs, both enterprise and startups, at least based on the recruiter spam I get in LinkedIn.
When you say "too old in this industry" which industry are you talking about? SV? Web Startups (Ruby / Python / Node)? Gaming? Mobile? perhaps for these you are right. But for the companies I listed above, or any enterprise company in the country, your age is just about right, and your experience years are in demand. Again, don't know about C++ specifically, but if you had 10 years of Java, you would have easily landed multiple offers from various good companies around the country, at least this is what me and people I talk to in the Java community seem to experience.
I don't know if it's C++ that is different, but the "if you are 30+ then your career is over" situation is not something I see even close to the reality at least here in Atlanta.
Hope it encourages you a bit.
P.s. If you want to increase your spectrum of possible jobs, I recommend learning "less cool" technologies, like Java EE 7, Spring, Hibernate, or if you need to choose between Haskell / Go or Scala, go with Scala, it will be perhaps less cutting edge, but will give you much more job opportunities. Also learning Hadoop, Storm, MongoDB will make your resume look very attractive. Also you should pick up good github projects that show you are full stack, do some AngularJS projects, write a jQuery plugin, the jobs offers will follow (I got more than a few solely based on some nonsense plugins I wrote in github that look as if I know what I'm doing)
YMMV, all based on my very subjective experience here in Atlanta...
You are definitely not too old to continue to do development but it seems like you would like to move on from that.
if you can't even get one freelancing work, then consider it as you don't have exposure skills
if you can't complete a taken work, then you have to improve your skills
For straight computer geekery, there's /r/technology (http://www.reddit.com/r/technology) -- but I like it less than Hacker News since the comments can be more immature. (There also seems to be a large population of gamers on that subreddit, and I'm not a gamer, so I have less in common with the people there than with many people here on HN.)
For marketing and some general startup business advice, I like http://www.inbound.org/ -- they are also starting to do AMAs ("Ask me anything") like Reddit does with well-known startup/marketing folks.
For intelligent interviews with successful entrepreneurs, you can't beat Mixergy (http://mixergy.com/). Disclaimer: I've done two interviews with Andrew. Here's one I did on finding the right business idea, which might be useful to your less-technical-but-still-entrepreneurial friends: http://mixergy.com/course-cheat-sheet-find-your-biz-idea/
I also like http://www.reddit.com/r/IAmA/ and http://www.reddit.com/r/askreddit when I'm just ready to zone out and enjoy some Internet strangeness after a long day running a startup.
1. Give a confidence value: 'this can be completed in x hours with 50% confidence, or y hours with 85% confidence (where y > x)'. If you don't want to work in 'confidence percentages', translate that to a range: 'this can be completed in x/2 - x*1.5 hours'.2. Never, ever quote on something you've never done before. Does the project require using a new API? Write a small, isolated test application that uses the API in similar ways. This will sharpen your confidence value. If you don't have time to exercise all the parts of the project you've never done before, shrink your confidence value but explain why: 'this can be completed in x hours with 20% confidence, but with a little more preparation time, I can get you a more accurate quote'.
Most importantly: be professional with your quotes. Don't take on too much just to be the hero who moved mountains and saved the day. No-one will thank you if you do (after all, you're just doing your job), and your professional image will take a dent when you don't. Also, as soon as you realise you can't make your confidence value, don't keep it to yourself. Yes, you'll piss people off by lagging the project, but the alternative is much worse. Not speaking up when issues arise is an ego problem (similar to being the hero who moved mountains).
Yes quoting is hard, but is required. Don't worry, developers are not the only ones who struggle with it. I work for (real, genuine) engineers who are currently taking a $1.6M+ bath (and rising by the hour) because they botched the quote process. Shit happens all the time.
Many times the Analysis and Design of a solution encompasses trying things out and actually experimenting with changes. By the time you're done with Analysis and Design you've virtually implemented the solution. Of course there is the documentation and reviews that you could also estimate separately.
This is a classic human problem - we suck at estimation. And if some pointy haired boss is demanding perfect estimates, you should give him or her good estimates for the next piece of work you can predict rather than the finished task.
Basically you launch it, it jumps straight to the blank compose window (nothing else), and closes when you hit send. That's it.
I try use it for the times when I don't want to see my email, but need to email something.
Examples:http://www.staff.science.uu.nl/~hooft101/theorist.html thanks tokenadult)http://www.thegreatcourses.com/tgc/courses/course_detail.asp...http://how-to-learn-any-language.com/e/index.html
If you had a learning website built around teachers rather than subjects, I would definitely check that out.
that's a big one for me. I am in the process of trying this out, and it seems to be working: Practice, every day, for any amount of time, even if it is just for 30 seconds.
I made a schedule of daily reading/doing, I shoot for 30 minutes for every subject (not daily, but pretty close), but I will at LEAST put in 1 minute.
One of the pain points was learning, what to learn first. Ie, a resource that said, here is the "must reads" to learn french, or piano would have saved me a bunch of time.
The only thing that makes self learning remotely manageable is to break up your goals in to manageable chunks.
Half the solution to self-motivation is deriving a satisfaction from completing goals.
If you set your goals reasonable, it obviously isn't a silver bullet, but it helps ALOT.
2) Lack of time. A lot of people are students or have jobs, and their free time is already taken up. Also, people need large chunks of time to Download the Task - http://www.collegeanswerz.com/downloading-the-task.
3) Poor resources. See http://www.collegeanswerz.com/rethinking-education for how to make it better. My plan is to make money with that website, and then start to implement these ideas with a Big Push.
Lack of motivation, i.e. Absence of "burning need" to learn the stuff at hand. Also, inability to visualize the end-result/reward.
Trying to look at the task as whole than in smaller parts: i.e. looking at a 720 pages, mostly text-only O'reilly programming book.
Multitasking: Checking news feeds, twitter and trying to learn/code/read simultaneously.
Distractions: people around, location, short attention span.
Not able to get into the zone/flow: This usually happens when,
goals are not clear
feedback is not immediate
lack of balance between opportunity and capacity
Appropriate reward and feedback system is really important in learning.As per some studies, it relates to certain neurotransmitters in the brain i.e. dopamine.
Nowadays you can get any information in micro-seconds, so people don't know the value of information.
Don't ever expect anything happen overnight
I honestly do not remember how much floppy disks used to cost; it's been... probably over a decade since I bought one. But $1.26 seems pretty reasonable for such a use.
If you really don't want the information (even encrypted) to travel over networks you don't control, then you probably can afford SD cards or USB sticks or more esoteric special constructions.
Can you elaborate on why you feel a need for such physical media?
Is there any possibility that you could (even if slowly, at first) move toward where you want to be in the current job? The reason I ask is, if they are accommodating about your educational goals, then they value that and they value you. So, think about what is available where you are at. I can't tell from your post, but if the work you are doing is semi-relevant, then it could be that you are currently in a "semi-relevant" area because they are grooming your talent for the future; meaning, they want to get you warmed up before they put you in a starting slot as a wide receiver  in The Show . Just a thought that maybe you haven't considered.
Otherwise... you could:
1. Start going on interviews.
If you truly feel that things are going nowhere at your current job, and if you feel confident with the target subject matter, then start interviewing. Even though your current experience is semi-relevant, you can still leverage it, coupled with your education, to demonstrate that you can discuss the subject matter and deliver in the target area. Only you will be able to determine if you are ready to take this step. Sure, you may get rejected on some interviews, but, at some point, we all have to "put ourselves out there" and give it a shot.
2. Stay where you are and "work your craft" until you are ready to move.
If you are unsuccessful in landing any solid interviews (or you simply don't feel ready to start interviewing), then stay the course. Appreciate the situation that you are in as being temporary. Stay focused, keep working on your education and, this part is critical: start developing a portfolio. That is, start working on side projects that are related to the area where you want to be. This will increase your skill-set while simultaneously increasing your ability to talk comfortably about the target topic during an interview. This is, of course, important, because you want to be comfortable with the topic so that you can sell yourself during an interview. A portfolio will also show initiative, interest and experience in the target area to a potential employer.
Wishing you the best.
Second, if you are happy with your employer, stick with them, at least until a good opportunity comes along. It's rare to find people you like working with.
In my personal experience, pet projects and general hacking advanced my career much more than any project an employer threw at me. In fact, most of the projects I worked on for an employer were driven by experience I had acquired on my own time: "hey, I think we should build a highly available MySQL cluster over WAN. I have done this before and it'd be perfect for this application" or "hey, I'd can create a small C program to spoof source IP addresses in UDP packets to simplify transitioning from one server to another" or "hey, let's put our entire server configuration into puppet" or "hey, let's package everything into .deb packages". In other words, I play with tech, then bring it to my employer (now client as I am a contractor) and some of it sticks, not the other way around.
For one you can start researching companies where you see yourself working and that align with your career goals. After you have gathered a decent list of companies you are interested in, check to see if they have entry level jobs you can apply for that fit your skill set. For the jobs requiring more advanced skill sets, find out what those skills are and work at them.
There is a ton of free information available to help you move forward and advance in your career. Take online courses (coursera.org and edx.org are both great resources available for free) and read books at your local library. Continue to build the necessary skills so that when an opportunity in which you are interested in does come up, you are prepared and have the necessary skills and experience.
Hope that helps! Good luck and hope you are able to get where you want to go!
If you're progressing in school and the job is being accommodating I'd stay for a bit and see what happens.
Life is too short to be on some deferred plan.
I started out with Algorithms by Tardos (you can pretty easily find a copy of the book and solutions online somewhere). It is less terse and goes through all the basics in a much less formal format. In this book I would advise starting at chapter 1 and going straight through to 8 or 9, doing the exercises and programming up most of the algorithms on your way. At this point you'll have a really nice working knowledge and can dive into Cormen and tackle stuff that interests you.
Prefer Python ?
I'm sure there are plenty of other online algorithms courses online too.
Whatever the answer, check out Numerical Recipes (http://www.nr.com/).
Introduction to Algorithms by Cormen
"Hello World" in Malbolge:
I would much rather program in assembler, such as Sigma-7.
But difficulty is kind of a vector, really.
Here's an article about it:
Here are some cool answers:
Seriously: I'd go for befunge or malebolge.
1) If the company has someone in particular in mind that they want to sponsor for a visa, they need to prove they couldn't find someone local, so they tailor an unattainable or excessively tight job description. This is real, and happens very frequently.
2) Many companies discredit experience gained elsewhere. "2 years with us is worth 5 years anywhere else." So they set the bar high.
3) HR reps get burned by letting unqualified people through. If they can't understand themselves if someone knows Python, but they know the last 3 peoples with 5 years experienced got crushed in the interview, then they ask for 10 years.
4) Most firms know that employee referrals are the highest percentage shot for good hires of both technical and cultural fit. As such, the external barrier is much higher than the internal barrier. At my current and prior employer, I could get anyone an interview for an open position by dropping their resume off at HR. It didn't matter if they fit the credentials as long as I vouched for them. This helps them avoid point 3, because if the interview doesn't go well, they're off the hook.
We can talk about the injustice of this, but there is a simple answer. If there is a place that you want to work, make a friend there. Or make a friend who has a friend there.
I see a lot of CVs and the fact is most people exaggerate their skills in their CVs. In turn companies exaggerate their needs in their job descriptions.
I mean WTF!
Who writes this crap?
Some of the work I had to do was non-technical. I would often find myself translating and rewording awkwardly written passages so that they sounded better (the author is a non-English speaker).
That said, Packt is pretty hands off and don't micromanage (which I actually really enjoyed). Most communications that I had with them were initiated by me when I felt things needed to be pushed along during the review process. That said, in the end, a book was published, so I suppose even if the process leading up to that moment was not completely optimized on their end, the end result was a successful book.
I decided not to go ahead because I'm a perfectionist - I'd want to write a damn good book and the opportunity cost loss of earnings whilst I was writing the book didn't compare to the relative prestige of saying I was a "published" author.
If you mean Backbone/Angular/framework of the day, that one is booming. Uploading your CV to one of the popular job boards will get you over 10 calls a day.
Caveat: these guys are almost all back-end developers, and mostly working for big companies.
Pick an interesting "hard" problem in computer science and attempt to solve it. This works best if either there are no published solutions (e.g. massively parallelizing ad hoc graph search) or the solution space varies widely under the possible parameters (e.g. the design of a unique high-performance database kernel). Iterate, be creative, search the literature for interesting ideas that you can borrow from, and evaluate new designs you come up with. If something does not work, understand how and why and try to fix it. Wash, rinse, repeat.
This sounds like a lot of work, and it is, but there are three unique upsides. First, the challenge of it can be quite a bit of fun in its own right and there is a clear goal of what you are trying to achieve which helps keep you motivated and measures progress. Second, you will cover more of the phase space and explore some tangential theoretical areas while hunting for solutions to narrow sub-problems that you would never be exposed to in a more structured setting. Third, you will invariably explore some unusual or unorthodox ideas that you simply would not be exposed to in a directed, formal program. From the standpoint of being an effective theoretical computer scientist, it will help you develop a unique perspective of the problem space that is different than the perspective that arises from more structured programs.
Also, you might actually solve one of the unsolved theoretical computer science problems you have as your challenge in addition to developing a deep understanding of the surrounding problem space. That happened to me (and then replicated later once I realized it was possible) and it would never happen if I was simply taking courses on the subject matter.
This was an effective way for me to gain in-depth understanding of a diverse range of theoretical computer science areas on an informal basis. One of the downsides is that your rote knowledge will not perfectly overlap what is taught in CS curricula even though what you do know will likely be more valuable (e.g. in spatial indexing some CS courses teach priority trees even though they have no memorable theoretical value).
1. Algorithms & Data Structures <- The biggest one
2. Baremetal Hardware. ASM, goes into the design of a physical cpu with ALUs, etc. Sometimes you make your own basic CPU. I suggest using a course with ARM ASM, simpler than x86 ASM.
3. Operating Systems & Multithreading Theory. You usually do a bunch of C language work here. Maybe combine it with a project on an ardunio or similar.
4. Discrete Mathematics
6. (Optional) Compilers. Write your own compiler, do this after the ASM course.
7. (Optional) Artificial Intelligence. Learn cool things such as machine learning. AI can be very statistical at times, so I suggest adding a Statistics & Probability course to supplement. Statistics is used a lot in business, so it's useful to know for life in general.
8. (Optional) Computer Graphics, using OpenGL!
On top of that I suggest you learn a functional language like Clojure or Haskell. Or both of them. Also learn a language where you have to do memory management and deal with pointers (like C, C++, Objective-C) if you don't include it in your Operating Systems course. After that you can basically do anything in software. Any new language and platform will be just covering concepts you already understand at that point, so you'll be able to learn them extremely quickly.
It depends on how you learn. Some people will recommend Coursera et al., which are great. I tried some Coursera courses, but found that I found the pace too slow and became bored quickly.
For me, reading always works the best, since I can adjust it to my pace. You could look up a curriculum (as someone else suggests) and compose a reading list from that. Also, there are some works where you really can't go wrong. Some examples:
- Structure and Interpretation of Computer Programs, Abelson and Sussman
- Algorithms, Sedgewick, Wayne
- Introduction to Automata Theory, Languages, and Computation, Hopcroft, Motwani, Ullman
Lesser known, but incredibly fun books:
- Purely Functional Data Structures, Chris Okasaki
- The Reasoned Schemer, Friedman, Byrd, Kiselyov (or a good Prolog book).
After learning the foundations, you could branch out to a subfield that interests you.
(Or as Frank Zappa has bluntly put it: If you want to get laid, go to college. If you want an education, go to the library.)
The above is deliberate practice and learning but also keep an eye out for CS-level posts linked on HN and http://www.reddit.com/r/compsci and relate them to what you're learning. Read a post about AI data structures in Prolog? Don't understand Prolog that sounds interesting? Get a feel for what Prolog is. Write a simple program. Get a feel for implementing the data structure in a language you do understand. Then try and bring both Prolog and the structure together. Rinse and repeat with anything that interests you. Again, be sure to TAKE NOTES or you'll forget things using this scattershot approach.
It'll take a TON of time but if you keep your sessions relatively short, you'll get a shallow knowledge of all of the major CS areas quickly, and then you can use your job or natural interest to drive you into going deep on areas that affect or motivate you.
I'm starting an MSc in software engineering later this year but my own CS knowledge has mostly been learned in the above ways (that is, I don't have a bachelors in CS).
Clarification: As cliveowen got me to realize (below), the above approach might not be for you if you have a very specific target in your career development. My experiences and recommendations are specifically around getting a broad level of experience rather than aiming at a specific role (which, perhaps, you should be doing).
My background: I did a BS in CS/Economics but spent most of my time playing online poker and skipping class. I managed to get a job I love on mostly potential, and I've had a great time re-learning all the stuff I was superficially exposed to but didn't work that hard at.
The most important thing is caring about what you do and taking ownership over your own development.
Structure And Interpretation Of Computer Programs:
Mathematics For Computer Science:
The first one is pretty much a master class in software engineering, the other prepares you for studying algorithms, I would consider those the two main more theoretical facets of programming at a professional level. With that background you can try to work on their algorithms course:
It would also be very valuable to eventually take all the core mathematics subjects from OCW: Single+multivariable calculus, linear algebra and probability theory - the profit is less immediate but those things do come very useful. All those six courses on the MIT OCW are top notch.
Read lots of papers. Start with easy ones to learn how to best digest highly academic technical writing then keep pushing.
CS is remarkable in how much of its academic knowledge is online, available, for free. Taking advantage of that resource is beyond key.
If you know roughly what you want to learn, search out a seminal paper in that area. If it's deep CS, you'll probably find a good one from the 80s. Seek out every citation that's proximal to a sentence in that paper that confuses or excites you. Search on Google Scholar for all the recent papers that cite the one you found and begin eating up the chain that direction. When you find a deep topic you want to learn more ofset theory, logic, formal languages, discrete math, matrix analysis, automata theory, geometry, topology, &c.don't be afraid to look for a good book on the topic. There are resources around the internet answering "What's a good introductory book to X" for all kinds of X.
If you don't know the general area you're interested in then I recommend the exact same strategy but with greater emphasis on following citations that make connections to other areas of CS. Additionally, pick a few disjoint topics (Category theory, system architecture, graph theory) and follow them all simultaneously looking for connections.
Formal languages, automata, and process algebras form a really fundamental mathematical course of study that I'd highly recommend to anyone interested in "why" CS works. Optimization, matrix analysis/linear algebra, and diffeq form a great basis for simulation and machine learning.
Generally, for any of these routes, learn to find your boundary of knowledge. Studying source material is very challenging because any given paper will tend to assume many things about your background. Most of those assumptions will be false and lead to density of the paper. You can often power through without them, but you can also take it as an indication of a new place to study.
Finally, see if you can find a study group or journal club. I'm not there, so I don't have firsthand experience, but I'm sure there are many in the bay area.
(Oh, and if you read mathematical papers/books don't skip the proofs and exercises. That'd be like reading the iOS documentation without ever programming anything.)
Subjects like that give you a firm grounding in the area of computer science but you could study them for ages especially on your own. These subjects are also not very practical in terms of everyday engineering and on top of that before you even get to that level, a top school would require you to study a bunch of mathematics to gain a certain level of rigor of your thinking. My guess is that this is hard to do on your own.
On the other hand, since you have a related degree already and since you know programming, I would heartily recommend you to study on your own combining two approaches: bottom-up to learn the basics and top-down to immediately start increasing your market value and to start opening doors and to keep yourself motivated to go forward with the more tedious study of the basics.
E.g. say you are interested in distributed systems - you can start reading up on them (top-down) while digressing here and there to learn some of the basics.
Make use of online resources like Coursera for the necessary basics (bottom-up): at least some maths heavy on proofs , at least some complexity theory, at least some graph theory, ....
I think a purely bottom-up approach (going to a university) could be a waste of time and money in your case. But you need to emulate it a bit because a purely top-down approach could be too superficial and wouldn't teach you some of the more rigorous thinking you might need.
Whatever you do and learn try to do it in-depth. Superficial knowledge of many things will not benefit you much in the long term while in-depth study of many computer science fields will likely lead you through a series of small enlightenments.
 My professor of linear algebra used to insist that we as computer scientists have to know all the proofs of the theorems we were learning - in contrast to mathematicians learning the same subject - simply because we have to know how things are done to the last detail and we have to develop that kind of thinking.
A good prof will figure out where your knowledge is lacking and give you the resources to catch up fast. You'll likely be thrown into some grad-level courses that are way outta your league and will have to work like a crazy bastard to catch up with students who have a CS B.Sc., but you'll have great student-teacher ratios and your best teachers will actually be the other students. You'll probably have to TA material you'll be learning the night before, and teaching something is a fantastic way to learn it well. Eventually, you should do some research, and hopefully you'll have chosen a prof doing something you're interested in. Do NOT do a course-based M.Sc., as those are just upgraded Honda Civics!
You'll be under intense pressure to learn a lot fast, but you'll have the resources to do it. A B.Sc. will likely take longer and you'll spend a lot of time slacking off because undergrad courses are pretty damned easy. Also, a M.Sc. is a better credential to have than another B.Sc..
When you're choosing a prof, talk to the other grad-students. DO NOT just choose the guy who was nominated for a nobel prize. As the saying goes, "Happy students never won anyone a Nobel!".
Also, read actual code. Want to know how diff works? Read diff. Getting better at code forensics is the second-best way for a self-taught programmer to learn real CS.
EDIT: I am a largely self-taught programmer.
My problem with teaching myself is that it's hard for me to stay motivated after the first couple of weeks. Now this just me -- it's not you. So maybe you don't have this problem at all, but I've found school to be a good motivator.
Plus having a good professor can help get through the tough spots. I studied complexity under Papadimitriou and he was great at explaining things I struggled with.
One problem with school though is you'll have less flexibility to skip things you don't care about, and investigate those things you do. That can be a blessing or a curse.
In any case you first need to investigate what is interesting to you, free resources are far from rare and you can probably build yourself a decent curriculum from MIT OCW, Coursera, Udacity and similar websites which you can then study at your own pace with videos and books. If finding a job is not your concern I wouldn't advise putting yourself into debt. See http://www.saylor.org/majors/computer-science/ for an example of curriculum.
If you're happy and have good opportunities on Android, focus on getting a deeper understanding: what are good open source repos, what coding conventions do they use, what frameworks and approaches could you know better. Are there parts of the OS you haven't worked with and wanted to? For instance, I built a demo app for LG designed for in-store promo devices where we hacked around in the OS to intercept the display of screens that would let the user delete apps from the phone and throw up a password lock that would kick them out to the main screen. Try and get a sense of where your best (however you measure it) opportunities are and focus your learning in that direction.
I took a BA in Linguistics, worked for a while, then discovered computers. I spent a year on prerequisites and then did an MS in CS. I got good grades and did a thesis and it opened a lot of doors for me.
Some things that an MS CS degree will teach you that you may not have learned as a seasoned developer are: How to invent solutions to cutting edge problems. How to operate at scale using efficient algorithms and appropriate data structures. How to think about problem spaces. How to research. How to operate at the correct level of abstraction and how to get a level deeper when the abstraction leaks. The intersection between math, stats, and software. How to think like a computer.
To me it sounds like that's exactly what you want to do. One way or another you want these skills.
You may want to separate your desire for these skills from your desire to be credentialed for these skills. It is going to take a while to see how employers react to the Georgia Tech online MS. I believe the vast majority will treat it as second-class for a while. The judgment of HR departments is a lagging indicator. But the top tier employers may not care and just test you to see if you walk the walk.
You don't need a top tier school to get a good job. My MS is from a state university, and I work for Amazon.
Here's a list of what I've done:
- Learn more languages. Penn State only teaches Java. I've worked professionally with Python, have open source projects in Go, and have read books on Erlang, Haskell, Scala, Clojure. The more languages you know the more abstract concepts you'll know that you can apply in any language.
- Watch online lectures in your free time. MIT Open Courseware, UC Berekely, Coursera, YouTube, InfoQ are all really good resources.
- Start a reading collection. I have tons of books and white papers downloaded that I read.
- Get an interest. I like distributed systems. I honestly don't know much about them, but I think the problems are interesting and I've read some of the important white papers that establish the field. Establishing an interest will help guide you down the rabbit hole.
- Get out there and do stuff. Find a project on GitHub or make one with a circle of friends. Pick something outside your comfort zone. Even if the project never sees the light of production use, you'll learn from the experience. Having your name in open source projects AUTHORS/CONTRIBUTORS files is also very nice.
I'm getting closer to graduating, so I've been reading up on algorithms and data structures again because I know I need brushing up on it. I'm close to getting a compsci minor and was recently debating just getting a masters in it instead. If you want someone to vent your experiences at PSU, feel free to drop me an email.
Just to underline some of the points others have made, here is a short list of things I found most valuable from my CS degree:
- Algorithms, Datastructures & Computational/space complexity (ADC). <-- This one is huge imo and will allow you to discern efficient code from inefficient ones.
- Discrete Mathematics. It's the lingua franca when talking about CS and you will need it to understand ADC for example. It introduces set theory, graph theory and so forth, which are used in ADC/AI etc... to describe and solve problems.
- Linear Algebra: if you ever want to work with 3d stuff, this one will be essential. It'll also work out nicely for 2d work, and seeing as you mentioned you've got a knack for UI work, you probably will appreciate this one. It'll allow you to get an understanding of for example affine transformations etc... You will need a computer graphics course too, but this is definitely a prerequisite course to do those.
- Probability and statistics. I really hated this course (it's also one of the harder ones coincidentally), but once you "get it", you really do "get it". Ever wondered how gesture recognition works? Or how spam filters work? Well, the math required for this will be addressed here, together with the following subject.
- Artificial Intelligence. Extremely useful if you're interested in game dev, or just want to learn to solve problems in a smart and efficient manner. It combines ADC with discrete mathematics with probability & statistics.
- Calculus. If not for the math, it'll definitely make you look at things in a different way, which imo in turn, contributes to your way of looking at problems. Partial derivation / integrals and how it can relate to 3d surfaces for example. And let's not forget taylor series etc... It'll give you an idea of how mathematical functions such as sin(1) etc... can be implemented etc...
- Operating systems, Computer Architecture/organization. Essential for understanding what happens under the hood. Allows you to reason about what the best code path is for solving a problem. Should you use the GPU for example instead of the CPU etc... and if so, why? etc... It also introduces models such as finite state automatons etc... which are also applicable in language processing for, say, compilers.
And that brings us to the last, but certainly not least subject, my all time favorite:- Compiler construction. Gives you an insight in how languages are being processed, and how to design your own language and build a compiler for it. It should also give you additional insights on how runtimes/virtual machines work.
The software engineering courses were more about processes, philosophies and patterns etc... and even though they're definitely useful, I think most experienced software engineers have already "got this". Either via books, company policy/culture or via experience.
Again, these are my experiences, YMMV :) Good luck!
If I were you I wouldn't add on any more debt until I've settled my current one. With a good CS job, that shouldn't take more than 2-3 years, considering you have no dependants and presumably relatively low living costs. In the meantime, maybe take part time courses where you can get class credit, and if you plan it right you might be able to complete your degree in a year or so, considering you already have your basic requirements done. Just do some research into making sure your class credits will be able to transfer. Good luck.
In terms of "taking knowledge to the next level", though, it could mean anything from you wish you knew what red-black trees and big-O notation were, to you'd love to be able to design your own programming language and write a compiler, to you wish you could administer a Linux box. I would actually suggest the best approach here is to find someone with the job you want and talk with them 1:1 to figure out where your knowledge could be most improved.
Also, for Coursera, etc, there are local study groups at places like Hacker Dojo you could join to get some of the benefits of college without the expense.
First, you need to figure out exactly what you want to learn. By theoretical, what do you mean? If your goal is to be on the same level as other programmers who are CS grads, then you might consider digging into algorithms and data structures and discrete math. This is pretty much the base of anything theoretical you'll do in computer science.
If you're in it to learn, go the udacity route. If, after completing all of their courses, you still feel you have some gaps, then you can go back to school if need be. If, on the other hand, your goal is to go into research, then you'll just have to bone up and go back to grad school to be taken seriously. In research, credentials matter.
Now i work as a product manager in a bigger firm (also law related), and i'm learning how to code through Coursera and Edx. I HIGHLY recommend them.
They are the future. The classes are very good. Way better than a regular class over here (Brazil).
If you are intereste in theoretical CS, here are 2 classes that you may be interested:
Programming Languages (https://www.coursera.org/course/proglang): It focuses on functional programming. The first edition was VERY high recommended. Here you will learn about functional paradigm, and the differences in using it in several languages (some purely functional, like SML, some hybrid, like Ruby)
Automata (https://www.coursera.org/course/automata): It cant get more theoretical than this. The professor is Jeff Ullman. A legend. For free.
Machine Learning: A second version of Andrew Ng just ended. The third edition will be offered soon.
see.stanford.edu is also a very nice place to learn. They are actual stanford classes taped, and offered for free, online. I`m taking the three introdutory classes, and the machine learning classes.
Also, there are several architecture, compilers and algorithms classes too. After my first course (cs50.net), i realized that colleges (at least for CS) are redundant right now. They can be awsome. But, if you are short of money, or are already working, these online classes can fill the gap, easily.
add me on skype if you want to talk about more classes: lucasribeiropereira
PS. They can be VERY challenge. Take one, at most two at a time. 10-20 hours per week per course is a good rule of thumb
There was another reading list that I remember seeing, I think it was from Stanford's TCS website, but I no longer can find it.
Self-teaching is fun because you get to choose your own curriculum, but it's often frustrating too because if you get stuck, there is no professor or TA to unstick you. This issue can somewhat mitigated via the internet.
Maybe better to choose a particular hard problem that is interesting and focus on that. Something that would be neat to do but isn't as simple as just calling a few library functions.
Should have everything you need, they're all free / open-source books!
I strongly recommend- Algorithms in a nutshell from O'Reilly (http://www.amazon.com/Algorithms-Nutshell-In-OReilly/dp/0596...)
and- Cracking the Coding interview (http://www.amazon.com/Cracking-Coding-Interview-Programming-...)
Those two books are perfectly concise and straight to the point to understand and learn exactly what you feel you are lacking as a self-taught programmer.
The first one will teach you what you have to know, putting everything into work context, making it really easy to understand why and how this or that algorithm is useful.
Cracking the coding interview then offers really good challenges to practice and master those algorithms. And of course, if you are interested in getting a job, will perfectly prepare you for that ;)
I have myself taken half a course on Udacity(did not finish) and a Startup Engineering Course on Coursera. I've started a new course on Coursera and really enjoy the material on there.
Also, I'd suggest you read a lot, the internet is a treasure trove of information. I've learnt from long blog posts and free online books. Have a go and explore, you'll reach a point where you don't have enough time to study everything you want.
I would say pick up a single system, say database (relational or document) or routing, OS, DNS, Web server, A compiler, Filesystem, NFS, etc. and study the hell out of it.
Once you know how to understand a particular system in depth, everything else will start falling in place.
Get another job that will force you to expand your knowledge. I am sure your job experience with your first start up is serving you better than a CS degree.
Similarly, a job which involves doing low level computer programming would force you to learn a lot of very practice CS, and you would be getting paid for it instead of the other way around.
Even so you want to be smart about it, and gain the knowledge in such a way such that employers will recognize your expertise. It is for this reason that I would rather recommend the MS. It will at least get you an interview next time you want to change jobs.
Tackle a big project: write an extensible text editor, design and implement a language and runtime, design and implement a new garbage collection system, or the currently quite popular RSS reader and feed provider.
Basically, every time you run into something that should be someone else's job, do it.
The reason that it's called "devops" instead of just "ops" is to create a separation between the type of ops where you don't EVER break anything and you move real slow and no one ever got fired for buying IBM, and the type of ops where everything's virtualized and software-defined, and things can, will, and should break without any penalty to the operation of the system as a whole.
You should definitely have your own servers to play around with. I use digital ocean which is pretty inexpensive but has an API to your account (example: https://www.digitalocean.com/community/articles/how-to-insta...).
I would look into using vagrant to spin up virtual machines associated with a particular software project. I find that helped me quite a bit with thinking of the server as being coupled to the application server software.
"If you are an AWS customer who uses Google Authenticator for iOS as a multi-factor authentication device to secure your AWS account via AWS MFA (http://aws.amazon.com/mfa/), please read on. We are writing to inform you that Google has recently released an update to the Google Authenticator App in the iOS Store. We've received reports indicating this update is inadvertently deleting all MFA tokens from the smartphone; this could prevent you from authenticating to your AWS account.
At this point, it is our recommendation that you do not update your Google Authenticator App if you're using an iOS Device. If you have already updated your Google Authenticator app and are no longer able to login successfully you can request assistance from our AWS Customer Service team at:
We have posted this as an announcement to our AWS Developer Forums at https://forums.aws.amazon.com/ann.jspa?annID=2091 and will be posting updates if new information becomes available."
I keep backup codes for each of my 2FA services in a Truecrypt container, which is mirrored on Dropbox. Additionally, I keep a copy printed out and kept in a fire safe. Phone backups for personal accounts have my wife's phone on record, and I try to keep printed copies of the QR codes I used to set up the account.
About a year ago, my phone was shattered while on the road, and while I was able to regain access to those accounts due to existing login sessions on my home computer, I'd have been sunk without them. Make sure you have a plan for what you do if your phone authenticator becomes unavailable.
Thankfully, backing up is entirely optional, and turned off by default. While they claim backups are encrypted with PBKDF2 , I still would never ever use something that sends my tokens to a remote server, as it'd defeat the purpose of 2FA in the first place.
Still, I can see the use for casual users that care enough to have 2FA, but not that much to worry about tokens being stolen and decrypted from Authy..
Past discussions on HN here , , .
 https://www.authy.com/thefuture https://news.ycombinator.com/item?id=6133648 https://news.ycombinator.com/item?id=4916983 https://news.ycombinator.com/item?id=4330050
If there is one team you'd expect not to lose a signing key I would have thought it would be that one!
Everyone makes mistakes, but it's pretty scary to hear this happening too.
I use two factor auth but not this app, so I am not sure why people are going to have such a bad day...
Google Auth 2.0 redefines two-factor auth: something you know + something you DON'T have. Their entire purpose in life is this second part and they completely and absolutely botched it. I can't believe this passed testing at both Google and Apple. There wasn't even a warning in the release notes.
You can save it in some passworded zip archive somewhere or print it out. If you print them I suggest printing them with QR codes to aid in recovery speed. You can easily generate QR codes by putting the text URLs into a QR code generator. If you just have a QR code, use a general QR code scanning app to extract the string.
Also the new google authenticator version has a %100 repo crash bug when you scan two QR codes in a row on iOS 7 phones.
I suspect that Google may have an update that restores accounts. I know when I've restored my phone, losing all apps, when I reinstalled an app months later, the settings were still there. Obviously the settings are stored in a file somewhere, so my hope is that this is how Authenticator works, and this buggy release just failed to properly open that file. Of course, not everyone can wait and have to reset like I did.
1) Go to this page https://accounts.google.com/b/0/SmsAuthSettings
2) Click "Move to a different phone"
3) Re-setup your Google Authenticator
Note: the 10 printed one-time access codes and all the application-specific passwords will still work after this "reset". But you still need to reset your other accounts that use the Google Authenticator
Also, consider creating a buffer in the application layer that buffers inserts/updates and executes them once as a single transaction, if they don't need to be executed immediately. It puts less stress on the database. Of course, this would require a lot of rewriting in your app, so not sure if you want to go through this route.
Indices are another area. I'm sure plenty of people have told you to optimize your indices, but also consider REMOVING unnecessary indices. Do you have an index on a text column, or multiple varchar columns? Those can be killer after awhile because inserts will slow down. Consider changing indices on varchar columns to indices on an int column by hashing those strings.
A quick suggestion: Install NewRelic (it's free for a certain period), and check out the database transactions that are taking up the most CPU load. Sometimes there's that 1 query you overlooked that is table scanning and could be the main culprit.
Also, are you using Rails by any chance? If so, there are other areas I can suggest.
And please post your server specs. Maybe your VPS just does suck (no offense), and the easiest route is just to upgrade your server.
I think your first problem is that you are using a VPS. You should never use a VPS in a high load situation like this - buy a dedicated server! They only cost about $70/month, which you should be able to afford if you have a successful site. Ideally you should get as much RAM as you can afford and/or an SSD drive.
I know you said you didn't want to throw hardware at the problem, but there are limits - you can't run a massive database on crappy hardware and expect it to work smoothly.
You need to examine the restart process and analyze why it resolves the issue. If the reason is the abandonment of dead parasitic processes and memory leaks, you need to find out why and correct them. If the reason is that the restart unceremoniously drops all the current transactions, you need to increase capacity.
> Can anyone think of any downside to this (used at least as a temporary measure)?
I certainly can -- a bunch of really irritated visitors, whose transactions are abandoned. But that's only true if that is actually what's going on. Make sure you don't have software issues that are preventing efficient operation. If that's not the issue, you need to grow with your customer base -- increase server capacity.
Is it prohibitively expensive/time consuming to get (or borrow) a bigger machine (on EC2, or in your colo, or what have you) to run MySQL on until you've figured out how to shard / scale out your application?
> SHOW PROCESSLIST
This will show all active queries and the time they have taken to execute. The fact that the server seems to churn to a halt and then work its way through the problem suggests the issues are related to specific queries you can catch this way. Then use the EXPLAIN command on the slow queries to figure out why they are hanging your server and add indexes or tweak that part of your code (avoid joins on large tables, etc.) as necessary.
1Password - http://arstechnica.com/information-technology/2013/06/the-se...
Will it be possible to build something scalable enough?
Best of luck as you move forward as a cleaning company.
The biggest issue I see with most on-demand cleaning services is that they don't do the type of cleaning I actually need done. I don't need my surfaces dusted as much as I need laundry picked up, washed, dried, and folded, and trash, like soda cans, the occasional pizza box etc. gathered up and tossed.
Basically I want an on-demand cleaning service I can call when my place is a total mess, without doing any pre-cleanup.
Curious if anyone has some more insight into what happened. Not enough demand? Money-losing?
I think it's unfair to compare Exec to TaskRabbit, as the former offered a much more curated experience. I believe the problem lies right there: it's really tough to intermediate supply and demand for broadly define "services", this just doesn't scale... Beyond the initial phase in which you are working really hard to amuse early customers, that is.
I for one have been amused by them in multiple occasions, Execs have helped me do things as diverse as assembling furniture and moving stuff around.
I'm interested to see if TaskRabbit and Postmates stick with it, or eventually pivot away.
1. Any big pivot will take time for trust to return.
Underpromise and overdeliver. Always.
Just doing a good job isn't enough for people to reference for you. You have to be better than they expect. Client asks for two designs to choose from within two weeks? You give him three designs in one week, and tell them which one you like the best and why. That kind of stuff. Once you've secured the project, be communicative about progress and (especially) delays. This all may sound simplistic, but it would surprise you how many big shot agencies don't do these things.
Odesk/Elance? It's not working for me. I'd rather make a website for free for someone I know personally, with the intent of building a network and a portfolio, than building a website for a couple of tenners for someone on the other side of the planet.
I will warn you: in order to maintain a good volume of work you have to become good at marketing. If you do not look forward sales, and or negotiations, you might be better off working with an agency. Less money, but less hassle.
I got it through this guy I worked with at a company. He was my desk neighbor, he liked my work, I told him I was looking for freelance work and he told me he could use some help.
Post on the seeking freelancer thread. I posted on there for the first time this month and have received a few contacts but unfortunately took on a large job right after doing so, so I haven't been able to take advantage.
Put together a portfolio if you don't have one already.
Network. Go to local events if you can, developer meetups but also things like chamber of commerce meetings. Keep in touch with your clients. Eventually, the bulk of your work should come from your network.
For free subscriber's beat-down requests are published only with city, photo and reason. Paid subscribers get street address published with beat-down request.
After that, I changed the way I thought.
I should do another one of these, it's been way too long.
They sounded stupid^W bound to fail at first, especially before seeing the implementation / impact:
Better search engine with no sponsored listings, seamless sync and backups, short status updates blasted to your followers, better social network, animated movies that target adults, online book store (without a book store experience), $4 lattes ...
Some ideas that sounded awesome and turned out to be awesome:
Open source and breakfast bars.
To be fair, many considered open source to be blindingly stupid -- "Anyone can edit the source? That would be madness! And why would anyone just contribute hours and hours of their time? Why do you think Microsoft pays their programmers so much."
But then, "They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown. -Carl Sagan"
Say you want to gift someone but you don't know what they want / don't want to buy more stuff / etc. So you buy a card that has a message ("Happy Birthday!" or whatever) and a number of credits associated with it and you give it to someone. The person, then, can use the credits to give things to non-profits, like a shirt for the homeless, or some food for a orphanage.
1) Train fish to swim towards some chemical/compound whatever you want to detect
2) Put valves at different places in the tank, where you can put in the diluted sample
3) Detect the "swarm opinion" via webcam and computer vision
I never found a good application for this...
2. Rubber trees. Sell them to commercial real estate developers/contractors. Cheaper than real trees, and less maintenance cost. Just pop them into the ground! We'd also sell accessories, like attachable bird nests or battery-powered hooting owls. Premium customers could buy four "styles" of the same tree, one for each season, and with a support contract we'd swap them out at appropriate times of year.
3. Renewable energy. What is the largest source of untapped energy in the universe? Little children! We'd sell shoes with an integrated battery that recharges as your kids play. The sole of the shoe contains a standard power outlet so you can plug in your TV and watch your shows after the kids are in bed.
Another one: Sponsor a homeless person. Crowd-sourcing getting someones life back on track. You get 100+ people to pitch in $5 a month to one person they "adopted". These 100 people have full transparency to how that person spends the money, can advise and help in other ways . If you see that they withdrew $50 in cash on a friday night, they have to show a receipt for a valid reason for doing so, or you can drop out as a sponsor.
Anyhow, it was a stupid idea because people are generally selfish, on both the giving and receiving end.
You would be able to snap a picture of your barista, put in where they work and rate them on things like:SkillSpeedAttractivenessFriendliness
It all started to feel kind of creepy, because I knew the "attractiveness" would become the most important thing, then you'd have guys using it as an excuse to be creepy. Anyhow, there are barista competitions so it seemed like something worth measuring. Also, a lot of times the quality of the coffee in many places is on an even playing field and the person making it starts to become more important. Never went through with it though.
Seriously I'm probably the worst person to ask. Almost every startup idea sound ridiculous to me.
Also, services where you pay someone to digitize your mail. And Lockitron... I just... these seem like bad ideas waiting to happen.
But then I was sure Twitter was a terrible idea, and I loved the original format of formspring so what do I know?
<existing social network> for <pet>
and lot's of other ones.
An idea is always stupid. Few iteration later, it starts to be not that bad.
Either that one, or the guy selling fart scented candles on Shark Tank.
First place: Make the next World of Warcraft, with only 3 people and no money.
Second place: Make the next Unreal/Quake/Half-Life with 1 programmer, one artist and no money, for console, in 6 months. (yes, this idea is more common than you think).
Third place: Make iOS game and get rich quick, without no idea of how, and hating games in general actually.
Fourth place: Be the idea guy, and makes games only having the idea, and being so awesome with your ideas that programmers and artists will work to you for free and accept only 2% of equity in the end.
Fifth place: The same as above, but when said that he would be just a useless guy, he proposes to be the writer instead, the guy that make the rules (I still do not understood what being the writer has to do with game design... but it is fairly common! Even when the person want to make a soccer game, that has no writing).
Sixth place: the same as the two above, but knowing people won't work for free, want to sell his idea to Activision for 10 million USD, those are usually paranoid with NDAs too, and insist me to sign their NDAs before asking whatever questions they want to ask me.
This was the stupidest! idea in the whole history of mankind.
I think everyone guessed who it is.
Humans don't need aliens or space creatures to get killed. they will kill themselves.
Long live war! Long live humans!
One more thing: sure it is a good thing to earn more money by working more. If you have a debt or you are really need to save for something it might be (not sure it is the best) a good approach to boost your income. I had no debts while I was doing this; I just wanted some more money to increase the level of my lifestyle, let's say.. the problem was that I had no time to really spend or use the plus money in a good way.
I hope I could help. Also please notice that I am sure that there are people whose tolerancy for work or their energies let's say are higher than mine.
I use Sublime when im mostly working on front end code, but i'll use RubyMine when im working on backend mainly because I get to use object inspectors, break points and step by step debugging.
Of course, if im just working on the front end of my web app, then I prefer Sublime as it has a much lighter footprint.
If you've ever coded in C# and used Visual Studio, then RubyMine will feel more comfortable when you really need to dig deep and debug something.
It's cheap enough, just get it, one day you'll be up to your elbows in spaghetti code and it will save you heaps of time, then you'll be happy you had it.
Unfortunately, if you have a monolithic code base, you'll see the memory consumption climb and it will slow to a crawl pretty quickly. This was true in Visual Studio/C# and I've found it to be true with Ruby/Rails apps too.
RubyMine has helpful things like auto-complete, cmd+click to see function/class code (works for things like locales and gems too), generators without going to the command line, and a console for autorun unit test results off the top of my head.
On the negative side its a memory hog and costs money (though they seems to have sales every once in a while so you could get it slightly cheaper).
The idea being kicked around to take a collection from attendees is okay in theory but I'm not convinced having to file a police report is a sufficient barrier to future attendees claiming lost laptops in the hopes of getting $1000 from random strangers. Also you'd have to be really careful to make sure it was well understood the collection is totally optional, and not set it up in such a way that people who didn't want to participate for whatever reason weren't made to look like asses in public. Put in that situation I'd have no problem dropping $1 or $20 into a collection hat, but expecting everyone (especially students) to have such disposable income isn't fair.
This motivates anyone who has suspicions or inside information to come forward. If it's a theft by a student, it's quite possible that someone besides the thief knows what happened, but doesn't want to appear 'uncool' by expressing their disgust. A monetary reward may overcome this, and potentially makes them into a hero rather than a coward.
I would not offer any sort of amnesty or no-questions-asked policy. If you end up finding the thief, prosecute them. If someone claims to have 'found' the laptop in the the bushes, seems very interested in the reward, and you are suspicious, turn the matter over to the police and let them decide if the story holds up.
Specifically, I don't think you should offer warnings to others to take greater steps to protect their property. This has the appearance of blaming the victim, and potentially helps the thief (and potential friends) justify their actions to themselves as something the victim deserved for their negligence. Making it known the crime occurred is sufficient warning. It's in each individual's interest to protect their personal property, but not in the group's interest to create a 'fend for yourself' attitude.
Many of the comments here mention a certain level of trust in the [hacker] community...sorry but not every single developer is a saint who would never consider stealing someone's laptop. The larger the group the more people you'll have willing to steal if the opportunity arises.
A school or community hackathon is a much more ambiguous situation. Get a police report, and see if you have event insurance or something to cover it.
I never leave stuff unattended in public, but things like hackerspaces, YC's office, etc. feel different. I do screenlock always, but I can't say I'd never leave a machine unattended in a semi-public environment.
Sorry that you have to deal with this Pulak :(
I don't know what to say about the stolen gear itself. People should take responsibility for protecting their own stuff, but that's a real challenge over a weekend non-stop sort of event, especially of that size. People need to eat, sleep, etc. I guess it's a lesson learned to have clear disclaimers of responsibility for future ones, and I'm not sure what to say about replacing that participant's computer. Not a fun situation, and it's hard to find fault on anyone (except the thief, of course).
It is not so great that the possibility of the difficulty described by the original poster had not been thought of in advance, and that a clue and a policy is now needed after the fact.
Standard cautions to participants as a matter of policy are appropriate for all public events and occasions.
This is because no project or event can afford to suggest or create a culture that implies that the project is able to assume that participating individuals will be made whole from failing to attend to their valuable assets, whether they be computers, mobile phones, wallets, coats, hats or their bodies; further it is appropriate to warn all participants that civil authorities may be called upon to intervene or participate when inappropriate activity is discovered or reported.
A project or event code-of-conduct is appropriate, and having a policy guiding organizers and empowering all volunteers and participants to act against against miscreants with inappropriate behaviors is also a community-building and safety-building experience, in addition to the event's particular mission.
More generally, as a community-empowering project and event, an important measure, towards community-building, safety, and inclusiveness includes noticing populations that are desired and not always well-recognized, and dedicating your event toward providing a harassment-free conference experience (since property-stealing is a harassment) for all individuals, regardless of gender, sexual orientation, gender identity, disability, physical appearance, body size, race, or religion. This invites all participants to act individually when inappropriate behavior occurs.
This is a typical class of policy and notice that universities resort to, in anticipation of an occasion when a member of its population of students, staff, or professors is discovered to be acting beyond social, legal or ethical norms.
It's great to track your hardware, it can event take screenshot of the screen and pictures with the camera.
Laptops modded specifically as honeypots. They could be modified to maximize battery life, and pass muster as an ordinary laptop under casual observation. However, their real purpose is to sit there in extremely low power mode, waiting for someone to move them, at which point, they fire up their radio and gps, and signal cameras and security personnel on-site to start watching.
Are onboard accelerometers good enough to do dead reckoning positioning of the device within the building, provided they have good data to work from?
Never been to one of these so could you elaborate as to how a laptop was left (and for how long) so that it was stolen? (I'm curious about the details).
As an example is this like being at an airport terminal with your laptop, turning around for a second, and turning back to see your laptop missing?
Or more like leaving the laptop and going to the bathroom?
Or leaving the laptop for a minute while you go two tables over to chat with someone?
Do you know the exact circumstances?
If this theft happened to an experienced pro, then their data is encrypted and backed up, so all they've lost is hardware, and that's probably covered by insurance.
If the theft happened to a student, then maybe they're not the most experienced engineer. They might not have backups, and their data might not have been encrypted. They might not be ensured. The hardware cost is still - comparatively - cheap. But they might have to rewrite their thesis from scratch. Or risk having their personal data exposed to the public.
But at this point, the only help that financial aid can give, is restoration of the physical loss - i.e. a new laptop. In most cases, that wouldn't compare to the loss. But it might help, a little.
Definitely add a new section to the promo materials / introduction talk to remind people to watch their stuff, and that you're not responsible.
It's the person's fault for leaving their stuff unattended (everybody should know not to do that in a university building, even during special event). But you might chip in and help/replace it, as long as its just this once.
In my neighbourhood in Canada, FTTN is quite common, and speeds of 25Mbps/10Mbps and 50Mbps/10Mbps are commercially available using VDSL to cover the last mile between the node and the home (and this is well below the theoretical capabilities of VDSL, since the telco is also using VDSL to deliver the TV component of a triple-play package ). While a new modem is still required, since the last mile is still copper, it means that switching from ADSL to FTTN+VDSL and back is easy (alleviating concerns that a FTTH provider might suddenly jack up prices knowing that you can't switch back to ADSL).
I believe the local telco has started rolling out FTTH to select areas, but:
- it's available in far fewer neighbourhoods than FTTN
- the monthly fee is much more expensive (think $150 CAD/month, compared to $40/month for FTTN)
- there's an expensive installation fee for FTTH
- the bandwidth cap on FTTH doesn't increase proportionally with bandwidth compared to FTTN or ADSL; the caps are so low that you're basically on usage-based billing for all usage above the base monthly fee
FTTP was by far, the best internet service I ever experienced. The latency was super low, download times were always fast, uploads were synchronous, and the service had amazing uptime in the 3 years I had it.
FTTN was by contrast, a miserable experience. The hardware was finicky, the latency was terrible (thanks to a DSL Interleave), the downloads were inconsistent, upload speeds were laughable, and the hardware was total crap and couldn't stay up at all.
Unfortunately, Verizon has halted new development of it's FIOS product even though it was awesome, due to cost. AT&T has pushed forward with it's crappy U-verse solution and has eclipsed FIOS installs in my local area.
My takeaway from this is that fiber optic cable is far and away one of the most stable and solid technologies since the invention of the copper wire. But unfortunately it comes at such a steep price, that it gets sidelined when it comes up against the "Last Mile" problem of getting a connection from the node to the residence.
I would love to see an opt-in option for FTTP where you pay the difference to the service provider to have the fiber optic cable run into the residence. Even if they charged me at cost ($2-3K USD last I checked), I think many would pay for it due to the better experience. Over time, this cost would fall and everyone would opt in.
Getting it set up was a nightmare but this was entirely the fault of our ISP (DoDo are the worst.) After it was installed I had 3 months of perfect internet access until moving out of the area! Shame I could only order 30mbit at the time.