415 karma · joined June 1, 2015
Please don't use my response as an argument in support of segregation. That would be purely evil and disgusting.
A second service would be to have Americans pressure a site to have detrimental user content removed. For example, if someone starts a thread about how the name of my product was stolen from an indigenous community's recipe, our service would nip that in the bud.
Your brand management department would love us. These services already exist.
However, I think you can make something happen here. Perhaps you can find a specific use-case and specialize. When there are many competitors in a market the only real thing to do with a new product is to find one particular and popular use case and specialize the product for that use case. After that there is no need to worry about competitors from an innovation standpoint because there is nothing more you can do.
I agree with Trexen though. Your application will likely fail. Most successful applications I've seen succeed (and companies) are never cold start like that. They always seem to come from an established business approaching someone and professing need for their idea/passion/tool and agreeing to be an early adopter/customer. Maybe you can try finding your early adopter/customer before beginning development on your next project. It's a good way to bring in money earlier and a good way to attract investors. It's hard to develop a tool in isolation without a customer guiding you with use-cases and real world need.
For pattern recognition, No, the computer vision system can't best a human.
In all seriousness though the situation is that, privacy concerns be damned, if valuable data can be collected it will be collected. Absent laws protecting worker privacy, employers will collect as much information about you as they can and use it in whatever way the deem necessary. It's a sad and unfortunate truth.
Many people forget that when Japan first started producing cars they were so bad at it some models didn't even operate in the rain. Or that American steel, originally, was supremely subpar to British steel. Its about doing whats best for the country - and having some foreign entity control a good portion of the commerce in the country (especially when it is so easy to build your own) is not a good idea for an emerging economy.
Remember, also, that Jumia will have the same control over market that Amazon does which is immense power and why the United States is considering limiting Amazon's power over the market. Basically, if Jumia begins to not only control the market but participate in the market as well it will be bad for these small nations.
You are comparing apples and oranges. In many cases larger countries are able to conduct fair trade agreements. In the case of smaller countries they usually don't have the resources (military/political influence) to enact fair agreements and are "ripped off" by companies offering jobs.
As far as the topic concerns. It just goes to show how much power big business has. Clearly net neutrality is what caused the USA to become leaders in internet technology. Why not keep things fair. Who are our politicians supporting by not adopting this bill.
See this is where the conversation goes south. You will use the phrase "unit tests" when it suits you, and then, like a magician using indirection, generalize to the word "tests" when it suits you.
Why are you listening to Uncle Bob so much?
I mean you can do as you like. However, the strong "Uncle Bob" style assertions should probably be left out of most articles in favor of a more humble "this is what worked for me/us" approach. Universal rules for any discipline are very hard to come by. Sharing what worked for you on your projects is great but it becomes somewhat obnoxious when you try to generalize it to universal rules that works in all environments for everyone.
Also, I think that large unit test suites, where most of the tests are redundant, come about in competitive environments where if you try to make a commit without a test some other competitive coder will try to use it as a "I know better" stepping stone and call you out on the change - "Where is the test". After 3 years of this behavior what do you think your going to have. A nice clean suite of tests or a monstrous big ball of stubs, mocks, faked, copy pasta that resulted from defensive social coding.
Honestly, write a light suite of tests that get to the point, and keep your ability to code swiftly and make changes quickly. As the code matures you'll find the trouble spots and focus testing on those areas. Don't blindly follow methodologies that are going to have you writing large test suite for version pre-alpha 0.0, and now your updating a large test suite for every micro-change just to make it to beta 1.
Here is an old article by DHH where he rails against unit testing dogma. Ironically it was ideas from the Ruby community that formed a lot of the basis of the mad dog McCarthyan style unit test dogma. https://dhh.dk/2014/tdd-is-dead-long-live-testing.html
The machine should also guide the programmer as much as possible. I wish Golang had refinement types like Liquid Haskell or ATS. Some simple static analysis to cut down on crufty slow runtime test suites.
Just for the record procedural programming and functional programming are the only two styles of programming to me that make sense. Procedural because its how the machine model works and functional because its how a mathematical description of computation works. WTF is OOP (how the over active imagination of a child works I would reckon).
So you can miss things in your acceptance tests but can't miss them in your unit tests? Why do you feel more confident with unit tests than with acceptance tests? Maybe because unit tests break more often so they are providing you with a false sense of security? Do you know that when a test fails for a reason other than the specified assertion its a called a false negative and the failure is meaningless? Do you know if your tests fail and no functional or non-functional requirements of the program has changed the failure is also meaningless (you are testing implementation)? Ask yourself how often does your group give you time to do these hypothetical large refactoring that give merit to large unit test suites? How many times, even, do you do small refactorings and find all the test have to go away or significantly change anyway because they made some implementation assumption that is no longer true? How many times have you gone into a test suite and have seen that its been patched up so many times that you can swear its testing something but you just don't know what? I know that Uncle Bob tells us about test for refactoring and this and that, but I just don't buy it any more. The emperor is naked god dammit. Uncle Bob and the like are very famous because people swallow their anecdote without due scrutiny.
> if you care about the code, you need to have unit tests for it.
That's not really true. You can test at a differently granularity and still have the same confidence in your code. Scores of brittle unit tests crowding your productivity is not what you do to code you care about. I wish people would just stop propagating this detrimental rumor that is backed by zero evidence. I prefer to keep my unit test suite lite and sweet (try to test what is very sensitive at the unit level - easy to miss or algorithmic things) and then try to get the most out of my acceptance test suite. Sorry, but I just worked on too many systems where the unit tests suite breaks no matter what you touch and you spend more time updating the tests than actually getting shit done.
Its not about one service, its about n services running on the same resource partitioned hardware. If one gets compromised how likely is that to affect other services running on other partitions. Containers (High, shared kernel), Unikernels (Lower, different kernel, hardware supported isolation - almost like running n different physical machines).
Every successful consultancy company I know had several things in common.
1) The founders weren't concerned about money. The could afford to spend time bootstrapping the business because they had some source of fallback that most people don't have. For example, their parents/brother/sister may have been very well off and they knew that even if they "blow it all" it wouldn't mean starvation.
2) A guaranteed client. Most startup consultancies I have encountered had a guaranteed client. That is, a client that is already willing to work with them and throw contracts their way giving the company time to bootstrap itself while paying a few salaries.
3) Sales. Your consultancy is not different than any other consultancy. The only difference is nobody trusts you (see 4) and most prospects will likely go to a more established consultancy. You are going to be spending most of your time doing sales. Don't get discouraged, get some cheap email campaign software, get some cheap lead generation software and keep doing sales. Going to conferences and networking doesn't work in the boutique software consultancy game. It just doesn't.
4) No body trust you. You have to build the most professional web site you can afford and make yourself look trust worthy. Don't build something you can't afford but you need something.
5) (Warning: unethical) Most boutique software companies I know have some unethical gimmick. Basically if you are a white male you can hire cheap labor from India, China, South America, eastern europe and market yourself as the white western world's interface to cheap 3rd world software development expertise. You can hate me for saying that so bluntly, but google it and see how many consultancies ACTUALLY DO THAT. I know of software consultancies (several) that completely bootstrapped themselves this way thriving off of the cheap labor of the 3rd world for years to undercut competitors. This is such a popular technique that new startups are actually giving away months of there cheap labor for free in order to compete with other cheap labor selling consultancies whose prices they can't match and whose name is more well established. Please don't get hung up on the fact that I mentioned this point - its a reality.
6) Don't listen to others who tell you that you can't do it just because they can't.
7) See point 3. If you are not willing to do sales more than you do software than you should just stop right now. If you don't have enough money to pay for a sales then you have to do it yourself.
8) Don't think you have a software consultancy if you've just settled on being an independent contractor. You don't, and you are will likely just be a cog in the engine that I've described in points 1 - 7.
Hint: Nobody uses ML (I'm assuming you mean ML like in Standard ML or the like). Don't get hung up on a particular language or framework. You will just be limiting yourself to a very small segment of the market if you choose some niche language.