708 karma · joined December 6, 2013
This applies to engineers equally so. The ability to manage expectations is one of the most important skills one can possess. It also happens to be a particularly difficult skill to master, which is why, for example, just about every developer's first freelance project is a fixed bid scope creep nightmare that they end of walking away from or making $5/hour.
Because if you do not make it the default, then most libraries you use will make the choice for you by going sync.
With github it is especially nice. I push to a remote branch, which I can see when I go to the project page. When I click merge it shows whether or not the TravisCI build passed. If it looks good, then I click to auto-merge and it's all set. It is possible to even automate away that part as well and have the whole thing merge and deploy on push if the build passes, but I am not quite ready to take the plunge yet with that (too easy to botch a production release IMHO).
I say this fully aware that the cycle will continue one day when I get angry at my future child for installing Flight Sim 27, taking up 1.5 terabytes of precious HD space. And of course, they will remember it one day and laugh because a 100PB SSD will be a $10 purchase at the gas station.
https://github.com/morganherlocker/turf
If you do not have expertise in computational geometry or geospatial analysis:
1) I would be happy to share whatever knowledge I have and tee up a few easier issues to work on
2) Feature requests, testing, design (hoping to get a dedicated site up and running), and help with docs are also extremely valuable.
1. Describe the behavior of the function in a readme with a code example.
2. Create a test that is mostly just a copy/paste from the readme code.
3. Write the actual function until it passes the first test.
4. Write a few more tests for any edge cases I can think of.
5. Get the function to pass again.
6. Encounter another edge case, goto 4.
It seems to work pretty well for me anyway. I think a lot of the debate really centers around unit tests vs integration tests (no one serious I know of is arguing for no testing, or all manual testing).
In my experience, you get the most bang for your buck with mostly unit tests in library code, and mostly integration tests in applications. Despite the difference in use cases, I think both sides talk past each other most of the time.
Unit tests all over the place in an application code tends to be a waste, because the tendency is to test the libraries your application is using. Integration tests in library code is often terrible, because they are usually slower and tightly coupled to external libs.
Along with what I would imagine is a sizable chunk of the best writers. Writing is rarely a social activity.
.Net/C# is pretty dominant on the east coast. I see far more .Net shops than Java anyway. This leads me to believe that server licensing and Azure might be even bigger profit centers in the future. It is not consumer driven, but finance, insurance, HR, accounting, etc. are serious markets with deep pockets. .Net displaced many systems that were 40+ years old (COBOL, RPG/AS400, etc.), so I am doubtful that there are many contenders that could swoop in and steal the market anytime soon.
For example, I wanted to use google in a commercial application, but only for backend services like geocoding and place search. I wanted to pay them for these services, but they refused the business because I did not want to display the data on a google map and use the google js api.
That is the sort of thing a company with lots of leverage can do. I wanted to pay full price or more to use a feature (10s of thousands per year), but due to a monopoly on the data, they can turn me away. Sorry, but I already have to deal with one Comcast.
Congress has been known to have above average returns on stock investments, making the congressional salary increases we quibble over look like chump change, if they are using their unique knowledge of policy direction to the fullest.
- Windows Workflow Foundation (used for building .Net based service flows) [1]
- ArcGIS Model Builder (used for geospatial processing automation) [2]
- Sextante (open source geospatial processing that plugs into QGIS) [3]
- GRASS GIS Modeler (open source geospatial processing that plugs into GRASS GIS) [4]
[1] http://msdn.microsoft.com/en-us/vstudio/jj684582.aspx
[2] http://resources.arcgis.com/en/help/main/10.1/index.html#//0...
[4] http://grass.osgeo.org/grass64/manuals/wxGUI.Modeler.html
Whether its scale, raw idea, business model, speed, quality, or whatever; there has to be something new to get any significant traction. Are all types of innovation equal? Of course not, but all types provide some sort of value. Throw open source into the mix and you start to see the network effect in play where even "useless idea" startups provide value (although the creators may not get much return on it) in the form of assisting more useful ideas come to fruition.