I agree that the object model and patterns for MongoDB are different, the object mode and patterns for front-end and back-end are very similar in many cases, there is a big overlap. Things you use on all three are:
- Prototypical inheritance (front-end and back-end)
- Event emitters (front-end and back-end)
- And many more like described here: https://www.smashingmagazine.c...
Code re-usability is useful at times, I was able to write a library (https://github.com/psiphi75/web-remote-control) that was used on the server, on the front-end and on an embedded device and I guess around 80% of the code is shared across all three. Imagine writing and debugging that code in three different languages.
I dove straight into Node.js to develop a platform around 3 years, I don't regret using Node.js, in fact I am glad that I used it. I essentially used the MEAN stack (MongoDB, Express, Angular and Node.js). It was great to:
1) use JS everywhere: back-end (including the DB) and front-end.
2) use JS: it's fun (for me) - if you use the right parts. And it performs fast enough, on par with PHP, if not faster.
3) have an experienced community - JS and Node.js has gone through it's teething issues already.
4) do async programming - if you do it right, you tend to keep your code more modular.
What was painful:
1) Learning to write JS the "right way" and how to avoid the bad and ugly parts.
2) At the time there was no great CMS, I believe Keystone is the best at the moment, but it looks very light when compared to Wordpress.
What you need to do if you go with Node.js:
1) Learn JS well, learn "The Good, The Bad and The Ugly", such that you can avoid the Bad and Ugly. The good is actually awesome.
2) Understand prototypical inheritance, it's not your classical classes, but it a powerful and memory efficient way create objects.
3) Use a linter to write your code, like eslint, it will help you avoid the bad and ugly parts.
I still use Node.js today, but now for the Internet of Things and my embedded device runs Node.js. JS is everywhere and it's going to remain everywhere.
Taking the numbers at face value you get the following stats:
- with 4000 developers
- 2.7 lines of code added per day per developer
- 1.3 lines of code removed per day per developer
- 0.47 lines of code changed per day per developer
Thanks for pointing out the typos. My spelin is bahd at the best of tymes.
Not only that, the disc pads on a vehicle are very small compared with the fuel burned. Imagine a 0.1kg brake pad that lasts 200,000km verses 160'000 Litres of fuel burned over the same distance.
Electric and hybrid cars use regenerative breaking, such that when the driver brakes lightly the car will use the electric motor as a generator and recharge the battery, hence the braking emissions would be largely reduced. Heavy breaking will use the disc brakes as well as regenerative braking at the same time, so there will be some emissions then, but still less than classical vehicles.
I reply to my own post to ask another question, because the context is relevant.
Are there any solutions / techniques out there that simplify driver installation and configuration in Linux / Ubuntu? I am ask just in-case I am missing it.
I have been using Linux since the good old days of the late 90's. I was using Debian until Ubuntu came around in 2004 and switched. Ubuntu was amazing in terms of how it made Linux more usable. However, as time went along Ubuntu was no longer so cutting edge and no longer resonated with me, so I have switched back to Debian. Anyway, all this time as a Linux user it's been a rough ride, every laptop I have purchased (I haven't had a desktop for 15 years) has had issues with Linux. Most common issues for me are that wi-fi drivers don't work and graphics card drivers are unstable. I choose Laptops that are going to give me the least problems by researching them thoroughly beforehand. The most recent laptop (HP ProBook) came with the option of having SUSE Linux installed by default, I thought this would be perfect, but the wi-fi did not work unless you had the correct version of SUSE installed. I am experienced at debugging and resolving issues, a new user would require a lot of patience, technical no-how just to get Linux functioning before they can use their PC. Although you can use Linux without the console, it is difficult to never have to go to the console. The console requires a paradigm shift for many users. In a nutshell the first hurdle for Linux is a massive jump, and only few are brave/curious enough to take it.
So my question is: What support channels would you recommend for new Linux users?
About a year ago I completed the Weka Mooc (https://weka.waikato.ac.nz/explorer). Weka is an opensource machine learning / data mining tool that has many different machine learning tools and algorithms.
The mooc part is the course. It was free at the time I did it, but I don't know if it still is. The mooc is run by an experienced machine learning professor. Weka is also maintained and developed in the same department as his.
I highly recommend this course, it was informative, gave me a grasp of machine learning, as well as experience of a popular tool (weka). I was also able to complete it in my own time while working full time and having a family.
You're right. But it's about furthering the technology.
This is not about discovering the oceans and what lives there or the geology of the depths. This about helping Shell (the sponsor) create cheaper technogolies such that they can drill for oil. The requirements they have laid out are weak, for example "depth of up to 4,000 meters". The ocean deepest point is almost 11,000 meters. The drilling technology in the future will be reaching 4,000 meters.
I usually envisage Xprizes as advancing the worlds technologies on a shoestring budget in areas that we have limited knowledge, such as sending a rocket to the moon and taking a photo of the surface and beaming it back to Earth.
It sounds like the start-up is in need of a business analyst (BA). And this could well be the role of your accountant friend. I am an experienced business analyst with a technical background, although I know many business analysts who have little or no technical background. The role of the business analyst is to work with the stakeholders (e.g. developers, users, management, etc) to design solutions (technical or not). The business analyst creates documentation (user stories, business requirements, business logic flow diagrams, etc) by working with the stakeholders. The developers and testers then use this documentation to develop the solution. There are many business analysis books out there, one of the most popular is the BABOK (Business Analyst Body of Knowledge), see https://www.iiba.org/babok-gui.... It has many tools that a BA requires. But I don't recommend your friend becomes a full blown BA, but it may help to learn some tools and techniques described in the BABOK.
I always see the Business Analyst as an interpreter or go-between, between the business and the developers. And the Business Analyst uses tools (i.e. methods of documentation) to formally describe what the customers want.