MD can be adopted later.
If you opt for Starbucks, make sure to register a Starbucks card and use their app. Once you reach a certain level, you get free refills on drip coffee and teas.
Lots of people hang out here to code and work on their projects (and it doesn't have to be AWS related either). There's also free food and wifi.
The only downside of libraries are the hours (which are often very limited) and the lack of food. Also it's not a great place to take phone calls or work in groups.
You mean vote on the top-level comment submissions? That's not a good idea because comment ranking is influenced heavily by time of submission (more recent comments appear at top, so it would be smarter for startups to submit later and also it means order will not correspond to upvotes), and, more importantly, comment scores are not visible.
Especially since many interesting office hour questions and answers are the kinds of things that anyone who isn't currently (or has never) run a startup would kind of react negatively to seeing in public. (There are some prime examples of people who have no experience with, but very strong opinions about, startups.).
People's conceptions about startups are so different from what it's like to actually build one, I almost suggest that other past and present founders answer some of the the questions that get posed (i.e. others also reply to comments) besides letting Kevin and Sam do so - not to dilute the signal, but to increase it. I wonder if this could be made official, with mail to YC companies that they are welcome to chime in!
The biggest problem we are having is finding angels who will not only lead this round but help in future rounds with introductions to VCs and serve as social proof. Any ideas on how to solve this?
Short term : Create basic infrastructure for data collection and reporting, manage in cloud, and charge small subscription fee for it.
Long term : Combat child trafficking using face recognition technology and data analytics.
we use B.O.T ( build operate transform ) process to build the infrastructure for organizations and law enforcement agencies .
Biggest problems we are facing : 1. Lack of impact investment2. Long Sales cycle
Many members of the group are now founders of venture-funded startups, Thiel Fellows, etc, so odds are that the next big tech personality is very likely to be in the group
Other factors come in of course, such as: bad advertising, bad product, poor social media representation, bad SEO, bad service, bad management, bad whatever.
From my perspective though, I just see lots of companies selling solutions to problems I never thought of looking for a solution to. It takes some really, really good advertising and a good product to overtake that burden.
I think it is more about your bandwidth as a mere mortal. Even with the number of advertising messages laid on us per day, there is no way we can know about every business that may be relevant to us. There is only so many Kb/s that can enter our brains!
After a month it was not only bought, but replaced with an identical mirror outdated of circa 2 years. Even the infinite scrolling js was working.
They replaced all the adsense with their own ads, and put textlinks inside the posts (usually sex/abuse related keywords).
Not knowing what to do, I just reported it to google (and that led to no appreciable result).
Luckily it went away after a bunch of months (the domain is still there, but the website does not load nor it appears to be indexed in google any more)
Needless to say, being the website domain my real name, I felt pretty embarrassed about it. :)
neither show up on the first 3 google pages for "km survival" or "kmsurvival". I have to google kmsurvival.com to get you to come up on the first google page. you have some seo to do. good news is the fake site never came up on any of the searches above.
dig codemonkeyjava.com or kmsurvival.com
=> both domains point to the same ip.
=> this seems to be a problem of the webservers vhost configuration.
Emacs with org-mode for all the writing, notes, organizing information. I absolutely love this editor, makes you 100 times more productive, and also very fun to learn and use.
i3wm - brilliant window manager, after using it for a while it's hard to imagine using anything else.
draw.io - cool tool for drawing diagrams and organizing information. Helps me to think.
pelican - python markdown static website generator. I was looling for a perfect blogging tool for a long time and this is it.
iPad mini with only 4 apps installed:
- Editorial - insanely good text editor. Supports markdown, python scripting with all kinds of extremely convenient automation, looks gorgeous. It blew my mind when I first installed it, after taking most of my notes on android I had no idea a text editor on a tablet can be that freakin good.
- iThought - great mindmapping tool, for thinking and coming up with ideas.
- Track & Share - super convenient habit tracking tool.
Basically I don't use an iPad for anything but writiing, reading and thinking. Don't even use a browser, and it is mostly offline. Perfect distraction-free tool.
Also old second-hand Nexus 7 I bought very cheaply, for watching tv shows, youtube videos, and browsing HN/reddit. It is very helpful to have a device for all the time-wasting activities. Every time I want to do something dumb I use nexus, that way it's not hard to avoid doing pointless things on my Laptop/iPad, which makes them into perfect devices for focus and productivity, and it is always clear whether I'm doing something useful or screwing around.
-OSX (gestures and spaces work well, with a few niggles like OSX not showing the window when tabbing to a minimised window)
-TotalFinder (OSX finder enhancement, the visor lets you get a finder window with alt+`)
-TotalTerminal (OSX quake-style dropdown console terminal)
-Alfred (OSX fast-spotlight replacement with plugins)
Dev:-Gulp - great for frontend build once you know how everything works
The bash shell and the Unix command-line tools.
As others have said, pencil and paper.
Can not imagine living without Spotify : )
If you use Vagrant, the actual virtualisation tool used can be up to the individual - i.e. I use Parallels but a lot of people may use VirtualBox because it's free (albeit has worse performance).
The key thing is to use the tools well - have your development environment match staging/prod as closely as possible - distro + version, stack components, etc. If its possible, re-use your setup scripts/config management system across all environments.
Personally I just have VMware Workstation for this at home and VMWare ESX cluster at work.
developer installs virtualbox and downloads the small image to this laptop. Then the developers does a git pull of our Ansible code, the Ansible code contains a subdirectory with shell scripts that can create headless virtualmachines for any of our application stacks. Then he does an ansible run against this new machine and Ansible will provision a full instance running our stack on this new dev environment
Python + MySQL Kafka/ Flume MongodbHadoop
basically the developer can have a full stack running on his machine and it is not slow. Most machines have 16Gigs of memory and lots of cpu power so we haven't had anyone complain that things are slow. Developers can create or destroy environments and they know they can rebuild them locally.
We tried doing this with docker and got it working but it was actually slower in docker and don't get me started using docker on the mac. the devs hated it and love ansible better
The code is mostly complete, and should be usable as-is, but I never ended up using it in anger. My quick and dirty stopgap solution at the time was some on-screen (on the iPhone) widgets, and people seemed to prefer that in the end, because it meant they didn't need a computer/second iPhone/etc. So I never rolled out an HTTP-based equivalent.
Though of course, if people preferred on-screen widgets once, they might then still prefer it a second time ;)
(As an example, a project that's on my must-take-a-closer-look list, that I believe but works in the way I suggest: https://github.com/Celtoys/Remotery)
I can't say I have dealt with them in the last 2 years, but I'd definitely look at Samsung and Toshiba. In general I would still follow the same advice and freshen Windows from scratch to remove the crap and make it the way I want it.
My primary laptops right now are a Macbook Pro and a 4 year old I7 Windows Toshiba. I rarely touch the Tosh now adays, but it is there when I need it.
As for laptops, I prefer Thinkpads, with their excellent build quality, and the availability of factory parts in case something goes wrong. Personally I run a Thinkpad T530 with 1 SSD, 1 HDD in the dvd tray and a nice battery.
The dell also has a docking station which connects 2x widescreen monitors on my desk, which i find highly useful as trying to code on 1x small laptop screen can be restrictive at times.
Running Windows on a Mac will reduce the battery daily life (from ~5-6 hours to ~3-4 hours) but even so, is better than most non-apple devices.
The price/performance ratio is about the same on either apple or non-apple laptops, so this is not a blocker.
As for hardware - there are really two options. Either a ThinkPad (whichever flavour suits you) or a MacBook Pro with Windows (yes, it works better than most). Hint: the MBP will probably be cheaper, based on your configuration.
1) As you onboard and get your environment setup simultaneously write a Vagrantfile so that you can provision a local dev environment in an automatic fashion.
2) Set up an automatic monitoring solution. This shouldn't take longer than 30 mins but will be all it takes to provide proof that lack of tests and deploys directly from local to prod are endangering the stability. It will also allow you to pinpoint outages coinciding with deploys.
3) Write an extremely basic test script. Even if it is nothing but a bash script that uses curl commands to do auth, the top 5 transactions, and that's it it will still be better than nothing. You don't need 100% coverage for tests to be useful. Most of the time there are a key ten to twenty tests that can cover 80% of the core stuff that you don't want to break.
4) Any time you figure out how an endpoint works, or have to ask one of the other engineers something take 5 minutes to commit this meatspace knowledge you just learned to a bitspace markdown file somewhere in your repo.
The nice thing is that these are all things that take minimal time, but have a huge multiplicative effect on your productivity and that of others. You should be able write better code faster than your coworkers and the results will speak for themselves.
My 2 cents. Don't judge everything just from 2 weeks. All of your issues are valid, but give yourself a little time to acclimate to the team. Gain their respect, gain the CEO's respect by showing you can do the job and take care of details. Take some of these issues you highlighted and fix them. Add automated testing for your new feature, add documentation for it, setup a quick monitor to alert when the API goes down and learn the development setup so you can fix that process. In fairness most of these issues show a lack of development leadership so be the leader. Don't try to convince the CEO why you need to do these things, just do them and the results will speak for themselves. Do yourself a favor first, get the respect of the team by playing along and getting the feature done and do it with proper process and documentation. That'll go a long way.
In the end, you may hate it and need to leave, but give yourself a chance to see if it is systemic issues, or just a lack of development leadership. I have seen many times when a small business CEO tries to control development because he doesn't have anyone strong to do it. Usually this is because he doesn't trust the results from the team totally because of things like an API going down and it takes a customer call to fix it. Why else would he have hired an "outsider" to run the team? He doesn't know what he doesn't know. Show him through doing and see if it changes, if not, move on.
Stop asking your boss for permission to do every technical task. As a developer this was appropriate but when running a team it is not. It sounds like your boss is viewing the development team as he should, it's a sausage factory. He cares about the output but has no real interest of what happens to produce it.
As he will not let you dedicate fixed time now to make changes you need instead to gradually introduce them. Set a goal of getting all the process changes you want made over the space of the next year. For example, add some automatic monitoring. Don't ask for permission, just go ahead and go it because it is a small task. Once it is working well you then get the three other developers to start using it. Once everyone sees the benefit over the next few weeks you can then make another change.
That's why we have McDonalds and 5-star restaurants instead of only 5-star restaurants.
You can try to educate him on why documentation would help speed up development, would make on-boarding new devs easier/faster (increasing product quality/stability and possibly decreasing churn for when your critical API fails on a customer...)
But his business is clearly working for him. So why change things? Why spend a lot of time (and time=money) on fixing problems that haven't ailed his successful business for 10 years?
My advice: learn why the current methods are working for the current team in their pursuit of creating customer value and why the YAGNI of reality doesn't conform to Uncle Bob's best practices. Note that I am not saying this is your dream job. but it is a chance to gain experience beyond theory and more nuanced judgement such as only experience can provide.
Since you've only been there for 2 weeks, you've yet to experience the ridiculous amount of production issues that will arise due to the lack of a solid software development process. Wait long enough, and when the only guy that knows the system inside-out leaves, you'll be left with the fire extinguisher trying to put out fires every other day.
Nothing will change. I can tell you from experience. If the place has been running like that for 10 years, there's a reason for it, poor management. I'm sure a lot more people before you have brought this up.
Run, and run fast!
And your CEO has no respect for you if he can't find more than 5 minutes (total or at a time) to bring you on board.
I'd leave ASAP, this is going to be nothing but pain, and very high stress; almost certainly not worth the money.
It turns out a lot Small Company CEOs have limited bandwidth. Learn his communication style and how to manage him. Can he take a 7am call on his commute into the office? Relative to your performance imperatives, help him understand how these things move his agenda forward. Otherwise, his problems aren't going away.
I think that monitoring is an easy target because it's isolated and it will not "slow down" the rest of the team.
The next step could be automated texting for your new code and later for all new code (and much later, for old code).
(Documenting the development environment is still in my todo list :) )
It's not always kept in mind that "it's not working out" cuts both ways. If you aren't happy there (and I really would not be) then it's time to decide - as they say "if you can't change your company, then change your company."
Some of these practices, YMMV. For instance, "Code is committed directly to master, not on branches" gets a big shrug from me. What does it matter so long as only 1 person is working on a repo at a time, or if changes are isolated and merges are frequent?
Others, like no testing, no build automation, no live monitoring, give me the creeps. There is actual harm from them "an api went down and we didn't know" so there is leverage there to pitch you can make for mitigation of recurrences of actual problems and for proven industry practices. But it looks like a lot of uphill struggle.
Looking at your list of gripes, some are clearly critical issues (ie. Automated production monitoring and alerting of customer facing system) while some are obviously nitpicking (ie. Comments and documentation? Lol). Drop the "nice to have" stuff and instead pursue the "need to have" items. No CEO worth his salt is going to accept the liability of customer loss or lawsuit simply because no one thought to build some simple monitoring jobs. At the same time, I cringe at the prospect of a developer even mentioning comments or version control minutae to an executive level - definitely NOT a point to be explicitly bright up beyond some quantified metric on a regular report. It's distracting noise for him and definitely your problem to solve. Given that you mentioned being very well compensated, well that's a pretty good hint that the task ahead of you will be challenging and often not in the way you expect, as evidenced by this case.
On that note, be sure all these things are actually important for that specific business. I once worked on an in-house, Windows based C++ trading system with over 600k lines of code and there wasn't a single unit test to speak of. Granted, it was developed following SDLC and included 4 levels of testing (dev integration, ba functional, user demo and qa) but the system was running continuously for almost a decade and reaped profits in the high 9 figures. Some shops produce high quality software with deeply knowledgeable long tenured senior technologists and don't necessarily require such testing frameworks as they perform that task themselves and often far better than some pre-canned block of code ever will. I've also been in shops where testing and coverage minimums were required and tracked precisely in real time, preventing code release if standards were not met. The end result were loads of trivially passing, nonsense tests and a culture where developers often felt compelled to create even those for only the lowest hanging fruit to meet the minimum requirements for a deadline or risk a monetary impact to their bottom line. So don't just rotely follow (let alone impose) paradigms without realizing that quantifying their value is hard in many scenarios, not to mention could be construed as stepping on toes...
As some have mentioned, the best managers are those who are able to gain the trust of their teams and this is something that takes time and strings of successes along the way. At the same time, lead by example and instead of imposing your will, let the results speak for themselves. Add tests in some minor modules and if they fail, use the opportunity to demonstrate how they saved potential headaches or worse. I've found that people invariably flock to those who demonstrate not only ability and intelligence, but also civility and geniality. I can't even begin to explain how small humorous exchanges have vastly strengthened my network. I've had to lead teams of juniors and offshore folks without any official management title and its forced me to adapt and develop various methods of building repoir and ultimately compelling people to get things done, with few sour grapes to speak of and many successes (and comp increases) along the way.
Regardless of all of the above, you're still getting paid, right? By your admission, paid WELL. So why would you leave that because you believe you're not being allowed to do your job (most of which actually requires more work and maintenance)... 2 weeks in?!? Perhaps after 6-12 months, you come to the conclusion that the culture is just not for you. So, leave then - I assure you there will be just as many, if not more opportunities then, except at that point you can be confident you've shed any insecurities and gave it your best shot and have some quirky behavior tolerance to boot. That sort of techno "battle scar" is quite visible as a sort of confidence backed by wisdom and experience and makes prospective employers wet their pants. Or maybe you just kick ass and prove you're worth every penny - smiling all the way to the bank. Either alternative is far more appealing than tucking your tail and running. Food for thought
In general, performance is not the reason I would choose Java over Scala.
I have realized even if you are good at what you do, it's not enough. You have to meet right people at right place in right time who can give publicity and credit to even your small work. That makes you look good. But people who are not at the right place at right time, they think how the hell did that guy do it. How is he now regarded as great. Then the mind goes crazy. People feel down and depressed.
I did the same. I left a perfect job. Why? Well a programmer takes risk, learns new things.After a year? I have no job, no income, I'm unhappy, depressed. Because I was chasing a mirage.
1. It's that post-college freak out that many many young people have ("What am I doing with my life!").
2. Many people who jump into startup life let the demands of the job strip them of their old healthy habits (like eating well, working out, drinking rarely, hanging out with friends) and this compounds their anxiety and depression.
3. It's not particularly socially acceptable to cry for help in person. While we're totally used to seeing it on HN I can't remember the last time I heard of anybody at a startup being candid with their coworkers about their depression. You can often tell it's happening to someone, but nobody talks about it. Which only makes people feel more isolated and depressed.
But all those things have been constants...nothing is new about them. Why are we seeing the posts becoming more frequent now? I think it's just that people are becoming more comfortable with expressing their feelings online. I don't think more people are stressed, just that more people are talking about it...and this is the medium in which it's okay to do that in 2015. Hopefully 2016 will be different, hopefully it will become more and more acceptable to have those conversations in person.
Not lately, always.
Then you have a wide variety of depression, anxiety, amd stress. These problems are very common. If you include the milder end it's easily one in four people. (See eg the office for national statistics which also has this figure).
Some of that is situational. Some of that is long term entrenched behaviours and thinking. But it's very common. When you're talking to people who have very stressful work - not startup founders so much (who'll have understandable stresses) but office workers with TPS reports it's not that surprising to see people talking about it.
People aren't taught concepts like "resiliance", or how to talk to each other to spot potential problems before they get too serious, or how to seek help if help is needed.
For example: you'll often see people on HN talking about exercise as a treatment for depression, and they are convinced that it is and that we have loads of evidence for it. Exercise is almost always a good idea, and it may help someone avoid getting depression (although there are plenty of athletes with mental health problems) but the evidence for exercise as a treatment just isn't very good yet. And if it does work it's possibly not endorphins.
There are a couple of campaigns I particularly like.
Time To Change is a UK organisation that tackles mental health stigma. http://www.time-to-change.org.uk/
I particularly like the work they're doing around men. http://www.time-to-change.org.uk/talking-about-mental-health
There's another UK charity that particularly tackles male suicide: the campaign against living miserably. https://www.thecalmzone.net/
And there's an Australian org with a typically robus Australian name (which they don't censor on the website): soften the fck up: http://www.softenthefckup.com.au/
I am expected to get up to speed with things in a nano-second, work on spaghetti code and break down months long projects into sub-day chunks and provide deadlines (with justification based on a plan) within a few hours. Then when inevitably the plan slips there are signals of 'disappointment' and 'how can we improve / move faster' next time.
We have a process management system that is in practice worse than any other Scrum / Waterfall I have worked with. Think getting an algorithm to schedule your work, but your boss has other ideas, but you need to keep the algo AND your boss happy.
[Insert 1000 other rants here]. You can imagine.
Anyway solution is simple. I am looking for a new job.
"However, some cookies are exempt from this requirement. Consent is not required if the cookie is: used for the sole purpose of carrying out the transmission of a communication, and strictly necessary in order for the provider of an information society service explicitly required by the user to provide that service."Source: http://ec.europa.eu/ipg/basics/legal/cookies/index_en.htm#se...
So it turns out the directive isn't as dumb as many believe it to be, but a lot of webmasters wrongly believe that any cookie usage implies having to put up the notice. (Or the nuance was lost on the in-house legal team who briefed the webmaster.)
This thoughtless behaviour reminds me of the thousands of websites which include a "(c) YYYY" copyright notice in their footers, despite this being completely irrelevant in modern copyright law.
Unfortunately, companies collectively decided that their businessmodel does not need changing at all, and simply implemented a "cookie wall" for all their consumers. This led to consumers, like you, to quickly get "cookie wall fatigue" and try to click 'OK' as soon as possible, without thinking at all.
And all the while, we complain that privacy on the Internet is going to hell, and there is nothing we can do about it, because consumers don't care enough, or have given up...
Nobody in Europe does either. The whole thing is generally considered completely pointless and unenforceable.
It is unlikely, however, since it is a EU directive and is now law in most European countries. Here's my take on why it is totally idiotic and ignorant of the underlying problem: http://cfenollosa.com/blog/the-ignorant-eu-cookie-law.html
It's $FREE too.
(Opera, before it turned into yet-another-webkit-browser - and removed that very useful feature.)
Since I have JS (and cookies) off by default I don't get the cookie messages much if at all, but for sites which need JS or cookies, it's almost trivial to enable them immediately.
But hey, rather than scaling back HTML 5 includes a client side database! WTF?
Further, the ICO here in the UK refused to provide meaningful advice as to what was actually required, so it's far from certain that these pop ups are a legal requirement anyway. We use them if the client wants them, but otherwise we simply make sure there is a "Cookies and Privacy" link in the footer that interested users can follow. I'm sure one day some jobsworth will tell me I need to join in this charade, but until that happens, no pop ups from me...
Some sites now offer me the choice of cookies, the choice to participate in a quick survey, a choice to use the iOS app, another iOS app choice that is identical to the first, the choice to instantly connect to a live customer service representative and no choice about watching a partner video. Might as well bring back all the animated GIFs and marquee text.
Given the law, it would be better to be able to pre-emptively, explicitly blanket-consent to all cookies, or specific types of cookies (e.g. analytics tracking, or saving user settings) in one's browser (or at first, before it's standardised, with a plugin).
Of course, this solution would require web developers to follow certain standards in implementing their cookie-consent-getting method. (It would have been even worse if they tried to legislate this from the outset.)
We can keep a list of [ webistes -> $('#TheCookieDiv').click ] - commands which we keep on github and shake like homebrew does (`cookieThing update` could be run daily)
Over time, alternative bios's with different whitelists often become available for Thinkpads. Not sure if this will live through UEFI.
That being said, Lenovo still makes great machines (their keyboards destroy everything from the Dell XPS to Macbook Pro and everything in between) on which you can service their internals by yourself - just not the WiFi cards which require whitelist authentication.
It's not like you can't change the card though... just google what cards you CAN swap to and buy one on eBay.
The BIOS whitelist goes back at least to the T61, if not further.
I did a quick search and found that the UK also has a distributed version of the AU Research Training Scheme. Have you contacted the postgraduate student organisations, talked to your intended supervisor? You might have to defer for a year to save up enough to fund your year of research. BTW, once you get involved in your research work it is extremely hard to hold down a job as well.
[N.B. I have no clue if this is applicable for all of VMware of just my location]
I think I can recall maybe once having seen someone list a github account on their resume. It definitely hasn't been common in my experience; certainly not enough so that people would be on the lookout for repository links.
im sorry i cant submit you theres no c++ experience here.
actually there is fourteen years. i spell it out quite clearly.
if interviewers would so much as lift a finger to read our resumes all the way through there would be no talent shortage.
Are you asking about HR staff in particular, or do you also include hiring managers (who are presumably subject matter experts themselves)? Because I agree that hiring manager should at least look it over before the interview.
But I believe that SV/SF is hitting against constraints. Of course history shows us during gold rushes, there's plenty of people willing to suffer poor conditions to pursue the perception of easy riches.
Seattle has a big limitation for startups because of the lack of ready angel investors. Any startup beginning in Seattle and unable to close a notable angel investor have a hard time raising an angel round. Though SV investors and VCs are showing a willingness to support early stage Seattle startups. A16z has made investments in Offerup and Distelli.
There is a lot of high quality engineering talent available in Seattle. Though many tend towards conservative choices for careers. Recruiting engineers into a startup requires some work. Though once a team's built, there's not the same velocity on job turnover that's typical of SF/SV.
Also for recent grads, Seattle offers a great lifestyle that shares a lot of attributes with SF and Portland. Housing is of high quality and available. Thanks to Modernist Cuisine by Nathan Myhrvold, many rising culinary stars are visiting Seattle in a form of a pilgrimage.
There's a lot of promise in Seattle. Many in the community are dedicated to growing the startup ecosystem. New Tech is a good meetup with great organizers in Red Russak and Brett Greene. I have nurtured my Python user group PuPPy for a year now. We're approaching 1000 members and hold monthly meetings that draw well in excess of 100 attendees at every event.
It's a personal choice. Like choosing a school, I'd recommend a visit. But I'd recommend making several trips over a period of time before making a commitment to either destination.
I don't really know what you're looking for, but if I found an equally good job in both areas, I would rather stay in Seattle because the rent is much more reasonable and there's no state income tax. Weather in CA can't be beat though, unless you actually like rain or having seasons.
There are significantly more start ups in the Bay Area though. In Seattle, it's very common to meet people who work at Microsoft or Amazon. In San Jose, almost everyone is working at some start up and knows how to program. It's both kind of neat and also a bit annoying. Every start up thinks it's going to be the next big thing. There's way too much kool aid for my tastes, and I found the lack of diversity not to my tastes.
My flow typically looks like: Github > CodeShip > Live Servers > Update sent back to Github
The vast majority of the time-lag is for the tests to run on CodeShip. Hot deploying the changes (since they're often only small/incremental changes) only takes a few seconds.
And this is usually a MEAN/MEAN-like stack running on CENTOS.
We also have mobile apps that have a different but still largely automated build process.
A few years ago I was coding at a small startup. Everybody was pretty solid. Then they brought on a new engineer who was very comfortable with a certain framework...but ONLY that framework. One day, in a product planning meeting, we were discussing a new feature we wanted to build. It fell in the new person's domain, so we asked them to give a rough estimate of how much time it would take. Their response?
"It can't be done in this framework. There's no existing module or extension for that".
We all sat back in silence. Eventually someone said what we were all thinking: "We hired you to write code, not install plugins and extensions. Do you actually know how to write any code?"
The new hire left the company soon after. To me, the glaring problem here wasn't that they had aligned their process with a certain framework... it was that they had then closed their mind to other options. They only thought within the framework, and so had nothing creative to actually contribute to the team.
We required about 90 seconds for each step of our calibration process. There were several steps per image, we shot many images each day and promised our clients 24-hour turnaround.
So Scott Lydiard, the company president spent $5,000.00 on a Floating Point Accellerator card, as Sun promised that it doubled the speed of numeric code. It was a full-size VME bus card with a 68881 in the middle. I'm not real clear why it needed that much circuitry as Macs just had a single socket where you could pop in a 68881, much like the 8087 socket on DOS PCs.
So one night I install our new card. To my dismay the calibration time was reducing only to 85 seconds.
Not wanting to lose my job I discovered just that night what a profiler was. It turned out that SITE used getc() to read each pixel of an image, and putc() to write it. This because the "streamed" part was meant for building UNIX pipelines. You know simple tools that only do one thing.
I patched the code to read all the pixels in one read() system call.
"Hey Mike. Our new FPA is AWESOME! Only five seconds to calibrate an image."
"You made a wise purchase, Scott."
Then a few minutes later...
"Mike, could you explain why calibration now takes ten seconds on the workstation that doesn't have an FPA?"
"That's because it really does double the speed of numerical code."
SITE was written by a computer science graduate student. It is for this and many similar reasons that I don't regard a CS degree as being of much use to computer programmers. Mine is in Physics; among other things, Physicists figure out the way things work.
If your next question is "How do you know if someone writes bad code?" then it is fairly simple for an experienced programmer to see if a piece of code is bad, good or somewhere in between.
- Doesn't admit to being wrong
- Full of it
- Blindly follows/enforces patterns, standards, and best practices
- Constantly tries to draw attention to themselves
- Code is sloppy, poorly thought out, bug-ridden, and often doesn't work
- Obsessed with time, documentation, meetings, best practices, patterns, testing, and everything else that doesn't matter (not with finishing in a timely manner, writing documentation if necessary, etc, but with constantly using these things as an excuse to get in the way, to excuse their sloppy work, and as a means to insult the ability of other developers and to claim themselves to therefore be the ones that know what they are doing).
Good and Bad are very relative words. To apply these to a programmer, let us analyze.
I would say start with this question: What is the Goal of a programmer ? Is it to write great code OR is it to help a business succeed by creating things of value OR both OR something else ?
If the goal is to just write great code, then do they need to write great code along with others ? Or are they ok to write great code just by themselves ? If the answer is that they need to be able to write great code with others in collaboration, then you have your first point covered which is "personality" or I would say "Attitude". If you cannot work well with others, you are bad programmer.
Now, if the goal is to create value and help a business succeed, then does it matter if the code you write is technically the greatest ? Perhaps not; other than the fact it personally is very fulfilling. Gotta love that feeling when that thing compiles!! But the real question to ask is: can I get the patch the system quickly if the code fails or the system crashes ? If yes, then you are a good programmer.
If the business team comes to you for advice on doing something technically that could help them increase revenue but may not be the best technical solution at this time, you are a good programmer if you can make that happen. You are a bad programmer if you tell them you don't want to do it.
That takes to the other point about "passion". I would say that Passion may be an overused word but it should be more about "Do I like doing what I do even though I am not crazily obsessed with it" ? If yes, then you are a good programmer. Why ? Because if you enjoy what you do, you will do it better (most likely)
The last point "Tech Debt". It is again relative. Tech debt for what ? If my company is not making any money and I need to put food on the table, does tech debt matter ? Or does it matter that I need to get paying clients first and worry about the tech issues later. That is a good programmer who can manage this tech debt depending on the situation of the company. Oh but they don't have any documentation in the code, I hate it. Ok then fix it keeping the business goals in mind. If you have the time to do it and still create positive outcome for the business, then that is a good programmer.
Everyone else is a bad programmer.
"Founded in 2004 by Alex Papadimoulis, The Daily WTF is your how-not-to guide for developing software. We recount tales of disastrous development, from project management gone spectacularly bad to inexplicable coding choices."
I blame management as much as the developer for not getting things figured out asap, but I did get paid for those 3 months for essentially fixing the same bugs over and over.
Do you mean a Beowulf cluster of mobile phones? It seems like it would be woefully inefficient to say the least.
- each node in the cluster has an expensive screen attached to it, which would presumably be permanently disabled to reduce cooling/power costs. This is a waste of money. Same goes for bluetooth, accelerometers and anything else that is not directly contributing to the cluster. The cost of the screen etc. could have purchased more processors instead.
- temperature management would be incredibly inefficient. How would you cool a rack of 1000 phones/tablets? Server chassis are designed with this in mind. Phones/tablets are not.
It's an interesting idea to think about, but nobody is going to produce a cluster powered by iPhone 6s which is capable of competing (financially or computationally) with a cluster powered by servers designed for this purpose.
Are you suggesting that the economy of scale has reached a point where the smartphone would be more cost-effective even with those features?
Can the millions of phones be used to coordinate and build any sort of 'Cloud servers'? When SETI@Home used our desktops' idle screen saver time for its calculations, can these multi-core pocket computers be used for something?
Electonics Surplus Shops - HSC Electronic Supply, Weird Stuff, (there are others others)
Pacific Pinball Museum in Alameda - http://pacificpinball.org/
Musee Mechanique at Pier 45 in San Francisco - http://museemecaniquesf.com/ great collection of old arcade games and nickelodeons
Exploratorium Pier 15 - http://www.exploratorium.edu/
San Francisco Cablecar Museum , free enjoyable and an adventure to find - http://www.cablecarmuseum.org/
Bonus photo-op view - Hyde & Lombard Street - (top of the twisty street) you can catch a snap of a cresting cablecar set against a great view of Alcatraz. If there arent too many gawkers in the way - might want to go to the next street lower on hyde to get the pic.
Cartoon Art Museum - http://cartoonart.org
Some great Japanese (toys, Manga, food, Books, etc.) shops in Japan town in SF (Geary & Filmore)
Collect old magazines? The Magazine in the Ternderloin (kinda seedy but if you are into collecting old mags a place to check)
San Francisco Public Library - besides the massive computer section, a library card will get you access to their e-books when not in SF
Check out SV book stores their computer sections are usually well stocked and up-to-date
Makerspaces (someone post suggestions)
Ripley's Odditorium at fisherman's wharf - kinda pricey but fun if you like weird - dont buy the maze pass, it's a rip-off.
Walk the Golden Gate Bridge - up close and personal with a great engineering marvel for the cost of a city bus to get there.
As far as being heavy, just go through and throw out the stuff you don't need. It's reasonably modular.
It seems as if the other developer doesn't like how default bootstrap looks (or is bored by the overuse of default bootstrap), and he's justifying his preference.
Otherwise, ask him what "best practices" are missed.
For a project that required pretty heavy customization I ended up using skeleton/react (http://getskeleton.com/) and enjoyed it.
I saw Semantic UI on here the other day and I may end up trying that out on my next project: http://semantic-ui.com
Bootstrap is made of several components, which make it trivial to recompile it without the not-needed parts. You can even do it online (as well as save/reuse configuration files): http://getbootstrap.com/customize/
The full bootstrap css weights 23.5kb gzipped. If you're not using gzip on your servers then that's the problem you should solve.
What makes bootstrap good is not the features per-se. It's the huge amount of cross-compatibility knowledge in it. There are many cool frameworks around, but it's hard to find something so solid and battle-proven as bootstrap. That's the real point of using bootstrap.
If nobody else is going to be editing the project then it's really just a tradeoff between your own time vs download size, if you can afford to shave a few hundred kilobytes off your first page load that can be a big improvement for many audiences.
I've been favoring Skeleton as a significantly lighter alternative, although it is very small in comparison to bootstrap - http://getskeleton.com.
Personally I would again choose bootstrap, if you have previous good experiences with it.
Projects that should not use bootstrap are the ones where every milisecond in performance truly matters, or when you have custom design requirements that would need major "overruling" of bootstrap. In this case, I recommend using a very lightweight CSS framework with a responsive grid instead, like http://purecss.io/grids/ .