Posts by csd-admin

5 web development practices challenged

April 19, 2019 Posted by Programming 0 thoughts on “5 web development practices challenged”

There are many myths in the software business that have led to wrong best practices. In this post I will address 5 of these best practices and explain on which wrong assumptions they are based. I’m worried about the state of the industry, because I feel these are serious engineering mistakes and nobody is speaking up about them. Here we go:

1. Client side rendering

Based on the wrong assumption that client side rendering is faster than server side rendering we frivolous apply React and Vue. Not even the load on the servers is diminishing as escaping data for HTML or JSON is equally expensive. Rendering HTML is faster than executing JavaScript to draw the DOM. But don’t you need to send much more data when you are sending HTML? Well not really, because you can send all dependencies in separate files. It was for HTTP 1.0 that web pages were in-lining CSS and script to avoid TCP connections. In HTTP 2.0 all requested files are multiplexed over the same connection. Today we can have multiple separate files, which increases the ability to cache these files. More cached files reduces the data transfer which makes your site faster. This is also why resource bundles should be avoided.

2. Event-loop vs threading

NodeJS uses event-loops to run servers. These are said to be faster when connections need to talk to each other (avoids IPC) and for I/O intensive tasks. The reason this is true is because you are avoiding the context switching that multi-programming requires (for security, to isolate processes). And as long as you are only using a single core of your machine this non-existing IPC cost is true. But most servers in production actually have multiple processors and those have 10 or more cores each. And even when your processes can be run multiple times and run completely individually, you need to make sure you concurrency is exactly right per core (a difficult load balancing task). You also need to make sure that you are not doing any computational tasks or blocking I/O in your threads or your servers will be very slow (as your latency will spike). The threading model may be less performant in an optimal case, but in all realistic situations it will be faster as it does not require meticulous tuning.

3. Micro-services with their own database server

When you order a trip at a travel agency they have to order a seat at an airplane and then order a hotel room and a car for you. If one of these reservations fails you probably want to go somewhere else where they do have all three available for you. This problem is called “transaction support” in databases and it is solved quite elegantly. The goal of transactions is to have high data consistency and no accidental booked – but not canceled – hotels hanging around. Other consistency features that databases provide are foreign key constraints. If you are implementing micro-services with their own databases you have to either drop transaction and foreign key support, which will lead to data inconsistency, or re-implement transaction and foreign key support, a very daunting task. Both are a very bad idea, so you should stick to a single database server when implementing micro services. Everybody who tells you otherwise should be challenged to explain how to implement “two phase locking”.

4. MongoDB as a primary store

MongoDB is a NoSQL store and it is fast! It is seriously fast as long as all your data fits in RAM. What they don’t brag about is that it has low durability guarantees: it only flushes data to disk every 60 seconds. You can also tune a MySQL server to use all the RAM for indexes and data. You can even set the “innodb_flush_log_at_trx_commit” variable to zero to flush only once per second and avoid a flush at every commit. Suddenly the performance of MySQL is a lot closer to the performance of MongoDB. I wrote an article titled “Trading durability for performance without NoSQL” on how to do this in various databases. Also databases without foreign keys and table structure may seem flexible, but they come at the cost of inconsistent data that piles up in your database. I would rather have less flexibility and more consistent data in my primary store. But if you do not care about the quality of your data, then MongoDB may be great choice.

5. Database technology independence

People use a DBAL (DataBase Abstraction Layer) and/or ORM (Object Relational Mapper) to not having to write SQL or (heaven forbid) stored procedures. I have not seen this work out well for a few reasons. Developers need to be familiar with SQL to be able to write efficient queries in large systems. If you don’t know exactly what SQL is executed, because you use an ORM, you can easily make a (performance) mistake. I have also seen many very expensive algorithms that could have been replaced with a rather cheap and simple stored procedure. But apparently stored procedures are not “cool” anymore and reasons given are the database independence and that supposedly code does not belong in the database. This last thing may be somewhat true, but with some proper versioning you can achieve a lot. On the database independence I can say that the independence is almost never achieved and you are constantly paying the price, so this is really a case of YAGNI (You Aint Gonna Need It).

Please follow and like us:
0

The 5 worst programming languages to learn in 2019

April 18, 2019 Posted by Programming 0 thoughts on “The 5 worst programming languages to learn in 2019”

While there’s no definitive worst or best programming language, if you’re looking to learn a language that’s in demand and with an active community, some are better than others.

Codementor has compiled a list of languages struggling to attract developers or interest from employers.

The so-called “Worst Programming Languages to Learn in 2019” list is the latest in the site’s annual round-up, with Codementor stressing the list reflects languages that are a poor choice to learn as a first language.

These sorts of lists are always controversial, and one thing to bear in mind is you may not agree with the methodology used by Codementor, an online community for mentoring developers. The methodology used is explained at the end of the article.

While the worst five languages to learn are listed below, there are some other surprising callouts in the list, with some widely used and often praised languages finding their way into the worst 20.

Big names that took a dive

Kotlin

Despite Kotlin being celebrated for offering Java developers a more modern and enjoyable language to code in, Codementor says it jumped from the 18th to the 11th worst language to learn.

While Kotlin is a fully supported language for Android development, Codementor says there was only middling community engagement for the language and so-so job prospects. Combined with a slip in the language’s prospect for growth, by Codementor’s estimation, this was enough to see the Java Virtual Machine (JVM) targeted language climb the rankings of worst languages.

R

The statistical analysis language R also had a bad year by Codementor’s reckoning, with the data science-focused language climbing to 12th on the list.

Codementor attributes this poor showing to its lackluster growth last year and falling community engagement.

While R also dropped one place in this year’s RedMonk Programming Rankings, RedMonk analysts cautioned against reading too much into the slip, saying the language continued to serve a “vibrant base of analytical and data science use cases”.

Is there a Ruby renaissance?

Despite Ruby’s fortunes taking a knock of late, the language, once popular among web developers, did enjoy a small turnaround last year, according to Codementor.

The language fell three places to the 17th worst programming language to learn, which Codementor attributes to strong community engagement and job demand, enough to offset its poorer showing in Codementor’s growth and trends category.

The worst programming languages to learn in 2019 according to Codementor

1. Elm

What is it? Aimed primarily at web developers, Elm is functional language that compiles to JavaScript, and is designed to make it easier to create web apps.

Why Codementor says you shouldn’t learn it: Multiple reasons, chiefly they say it has the fourth worst community engagement, falling growth, and although the job prospects for Elm improved slightly, it was still ranked as the fifth worst language in the job-market category.

What other language surveys say: Not very much, Elm doesn’t figure in this year’s round-up of languages by Stack Overflow or RedMonk.

2. CoffeeScript

What is it? Again, primarily a web development language, CoffeeScript compiles into JavaScript and is designed to improve on JavaScript’s readability.

Why Codementor says you shouldn’t learn it: Codementor is scathing about CoffeeScript’s community engagement, naming it the worst language for engagement last year. It also says the language’s already poor growth took a nosedive over the year, arguing “CoffeeScript’s heyday is further behind it than that of other languages”. While job prospects also worsened, Codementor says there are still jobs seeking CoffeeScript skills.

What other language surveys say: Only mentioned in passing in this year’s RedMonk Programming Language Rankings, with a note that CoffeeScript is less popular than Rust. It also features in the lower echelons of the Tiobe Index of 100 popular languages.

3. Erlang

What is it? Erlang was created by the Swedish telecoms firm Ericsson almost three decades ago to help build telephony applications. Designed to support large-scale routing of telephone calls and handle faults without collapsing, it’s suited to building reliable and scalable applications.

Why Codementor says you shouldn’t learn it: Erlang saw the largest decline in community engagement over the course of the year, with interest in the language also dropping, even relative to others in its functional language niche. Ranked the fourth worst language to learn in terms of job demand, Codementor points out that while there are still more Erlang developers than jobs available, that demand for developers isn’t growing as fast as other languages.

What other language surveys say: A big caveat to Codementor’s judgement is the salary for roles associated with Erlang, with Erlang being the ninth highest-paid language and the 22nd “most loved” language according to this year’s Stack Overflow Developer Survey.

However, Erlang also experienced a precipitous drop in The Tiobe Index over the course of last year, falling from number 23 to 50.

4. Lua

What is it? A lightweight, embeddable scripting language that is commonly used in games and offers decent performance relative to other scripting languages.

Why Codementor says you shouldn’t learn it: While community engagement for Lua rose last year, it had flat growth and was ranked second worst for job demand, with Codementor saying “there are still more Lua developers than there is demand for them”.

What other language surveys say: Rated 30th in the Tiobe Index of popular programming languages.

5. Perl

What is it? Popular for web server scripting, sysadmin jobs, network programming and automating various tasks, Perl has been used since the late 1980s.

Why Codementor says you shouldn’t learn it: Worsening community engagement, declining growth, and supply outstripping demand in the job market are the primary reasons given, with Codementor saying “Perl is facing a downward trend in terms of developer interest”.

What other language surveys say: Perl has long been in the top 20 of the Tiobe Index of popular programming languages, and placed at number 14th in this April’s index, while also charting 18th in the RedMonk Programming Language Rankings for this year.

The list of worst programming languages to learn is based on Codementor ranking each language in terms of its community engagement: based on activity on GitHub, Twitter, Stack Overflow, Facebook, Freenode, and Reddit, growth: based on Google Trends and Stack Overflow Trends, and job market: with demand based on stackshare.io, techstacks.io, and CodementorX client requests and supply based on Stack Overflow’s 2018 Developer Survey and results from CodementorX’s proprietary data. Source

Please follow and like us:
0

Three Ways To Advance Your Career As An International Software Developer

April 17, 2019 Posted by Programming, Recruiting, Startups, Technology 0 thoughts on “Three Ways To Advance Your Career As An International Software Developer”

Here are the 3 best practices we teach to young developers in our network as they begin their journeys as international software engineers.

1. Think About Time

Do you work with a lot of 45-year-old software developers at your current company? According to a 2015 survey on Stack Overflow (via InfoWorld), the average software developer is 28.9 years old. (Data USA puts the average at 39.7.)

While there are many reasons for this, the bottom line for many developers is that the window to fully develop your professional network may be limited compared to other industries such as the legal profession, where the average age for U.S. judicial workers (including lawyers) is 46.3. 

Sure, it’s tempting to take your excellent pay to go on every available holiday and let your friends know you’re living the good life on Instagram, but it also pays to take some risks early in your career. So take risks.

Risk joining a startup, risk starting your own project or company, or risk asking someone you’d like to emulate to mentor you. As the old adage goes, “Fortune favors the brave.”

While press headlines may focus on the Zuckerbergs of the world, I know plenty of developers who were early employees at technology companies you’ve never heard of that were acquired, and who have leveraged such experiences to leapfrog their careers.

So surround yourself with people who embrace risk. You can easily spot these people and organizations because they’re the ones who are constantly investing in new experiments.

Believe me, not many developers want to join the ranks of those who thought joining my first startup was “too risky.” That company is now worth over $3 billion on the NASDAQ stock market.

I believe the greatest risk for young developers is not taking any.

2. Use IT Outsourcing As A Stepping Stone, Not A Career Destination

In emerging economies, working for an IT outsourcer can be a great place to learn basic skills and get exposure to live commercial projects, but you may not want to think of this as a long-term career prospect. That’s because IT outsourcer culture can be one of employment arbitrage and not innovation, and learning to think like an innovator can widen your career opportunities greatly.

A 2016 Deloitte survey (via The Wall Street Journal) indicated that only 21% of enterprise outsourcing contracts had any “proactive innovation” built into their service contracts, although Deloitte found that number had risen to 43% in 2018 (download required). 

Obviously many innovations come from startups, so working on a startup project could be great exposure to innovation culture and give you the opportunity to put your own unique ideas into production code.

As well, I’ve found that IT outsourcers (especially large ones) tend to work on legacy projects and in legacy languages like J2EE. This can severely limit the types of jobs you can get in the future and rob you of the experience to learn new technologies or frameworks.

A common mistake I see young developers make is thinking it’s OK to work in the “safety” of a large outsourcing company because they and a friend are working weekends on their brilliant app idea. It rarely works.

A 2012 study by Harvard Senior Lecturer Shikar Ghosh (via Silicon Valley Business Journal) found that 75% of venture-backed startups fail, although other estimates vary. Think about that for a second — if founders who are dedicating their lives to their projects with VC money fail three out of four times, what are the chances that your unfunded side project will be successful?

For those that aren’t born innovators, developers can nurture an innovation mentality by working for a company whose culture rewards “outside the box” ideas and fosters risk-taking. That can be a fast-moving corporation, a VC-funded startup, or a bootstrapped group of hungry founders.

3. Find A Great Mentor

If you don’t have a senior coder that can take you under their wing and mentor you, please go ahead and work for someone that can. This is by far the single biggest difference I see between developers who simply survive from paycheck to paycheck and those that continue to increase their opportunities until they decide to retire.

Another common mistake I see young developers make is that they think $500 per month more in the short term is more valuable than working for a good mentor in the long run. In my opinion, they are wrong — good mentors are as valuable as a top university education. 

Look for mentors who are living the life you want and who espouse the values you hold dear. Just because someone made millions and drives a Ferrari doesn’t mean they’re a good mentor for you. And a good mentor doesn’t have to be someone that makes you feel good about yourself.

Think about your best professor or teacher from your school years. Was the person you learned the most from the nicest teacher? Did they challenge you and at times make you feel uncomfortable, or did they sing your praises on a regular basis?

Mentors come in all shapes, sizes and temperaments. You want to choose those that can most accelerate your career and help you train for your “career black belt.”

As Marc Andreessen once said (paywall), “Software is eating the world.” Just make sure you get your slice of the pie while your career still has teeth. Source

Please follow and like us:
0

Top Ten industries using Python programming

April 17, 2019 Posted by Programming 0 thoughts on “Top Ten industries using Python programming”

ActiveState released a new report examining the top 10 use cases of the open source language Python. ActiveState has been building Python since 1999 and has seen customers’ use of Python grow from a scripting solution for sysadmins to web development for programmers to the driving force behind machine learning.

In a new report, ActiveState reveals ten top uses for the open source language Python. Python is an interpreted, high-level, general-purpose programming language. Created by Guido van Rossum and first released in 1991.

Use cases have grown, along with usage and adoption, as Python has evolved over the past two decades.

The top 10 most common uses of Python by industry include:

Insurance: Creating business insights with machine learning
Retail Banking: Flexible data transformation and manipulation
Aerospace: Meeting software system deadlines
Finance: Data mining to identify cross-sell opportunities
Business Services: API access to financial information
Hardware: Automating network administration
Healthcare: Predicting disease prognosis
Consulting Services: Bespoke web development
InfoTech: IT modernization
Software: Adding extensibility to legacy applications

The report is part of ActiveState’s undertaking to better understand the needs and pain points of industry related to open source languages. ActiveState aims to decrease the costs and risks of managing open source languages and enable enterprises to maximize their related benefits.

Bart Copeland, CEO, ActiveState, said: “Since our founding, we have been helping developers and enterprises eliminate costs and risks of working with open source languages. To date, millions of enterprise developers worldwide have downloaded and deployed our commercial offering of Python, ActivePython. Our goal is to help millions more. The insights reflected in this report are foundational pillars for our vision for Open Source Language Automation. Our ActiveState Platform to automatically build, certify and resolve open source languages is the linchpin to our vision. ”

Please follow and like us:
0

Blueprint For Offline First Mobile Apps

April 15, 2019 Posted by News, Programming 0 thoughts on “Blueprint For Offline First Mobile Apps”

A typical web-based desktop app will be rendered in a browser such as Google Chrome on a desktop or laptop. Every user request or screen will result in an associated REST call to the server, and the associated JSON will be retrieved and transformed into a screen update. For example, when a user loads a todo app, the server will issue a GET request to todo/list which will return a JSON array. If the user requests the todo detail another request to /todo/{id} will be issued.

A typical mobile app works very similar to a typical web app, where each request will in turn require one or more REST calls, and the subsequent REST response will be transformed into native views. Web applications are primarily bound by the limitations that the browser sandbox ecosystem places upon them. Native Android and iOS have much less restrictions and have the opportunity to support more complex, richer and featured applications.

Why?

When accessing webapps via laptops and desktops are connected to reliable Wifi and Ethernet connections. The user can assume a fast, low latency, reliable network with minimal compromises. The same cannot be said for mobile users. A mobile user’s experience may experience high latency, minimal or no coverage. One of the key advantages of native application experience over mobile web is the ability to intelligently support a seamless offline experience. Users can experience a compromised experience due to a variety of factors such as loss of server issues, poor signal or high latency. Every user has experienced the frustration of using mobile web app native which abruptly ceases to work or worse when they enter buildings or underground structures such as the subway system.

Another key differentiator between an offline first and online only app is performance and battery. To load a given screen the app will first display a loading indicator, queue a network request and wait for the completion response from server before parsing and updating the screen. The total time to complete the transaction will be the sum of the network request, server processing and response time. Requests that are dynamically generated on server may need to query additional services or databases. Between the request and update of the UI, the user may need to wait several seconds. An offline first application, however, can query a local datasource nearly instantaneously resulting in an optimal user experience. Optimizing the apps CPU, radio and screen usage can maximize battery life. Reducing, deferring, and coalescing network requests can also result in improved battery life of the application.

One of the best examples of an offline first experience is the Gmail application. The app will optimistically synchronize data both upstream and downstream. Regardless of the total number of emails stored in the user’s inbox, the network usage will be will bound to the size of the change from the last sync. If the connection fails during the synchronization the application will continue where it left off.

Apps that support a seamless experience when a user transitions between an online to offline state without compromising the experience are known as offline first applications. As the app ecosystem matures the cost of building and supporting a native app needs to do more than simply render content JSON to screens. Modern mobile consumers are accustomed to a growing number of high-quality apps that “just work”. Apps that are more reliable and respect the user’s battery and network offer a competitive advantage. Supporting offline first functionalities in mobile apps requires cooperation from both client and server and conscious decisions when designing and building the applications that will be discussed further. Many applications may use a combination of online-only, cache and offline first approaches where appropriate.

The discussion can be summarized by the following principles:

Offline first Principles

1. The network and/or server is not reliable: Reliable network, low latency and high availability servers are not the norm for a mobile experience. Offline first mobile apps assume the user is offline

2. Fetching network resources is slow: Fetching resources over the network such as a JSON resource will always be slower than fetching from a local source particularly if the resource is dynamically generated

3. Seamless Transition: The app may notify the user about the current network status unobtrusively but should not prevent them from completing their mission. When connection to server is re-established, the app should seamlessly detect the change and continue synchronizing without intervention

4. Queuing: All requests that require network access such as download requests and mutations should be queued and performed in background. Not all queued requests are equal. A request to see the latest data in an active session has higher priority than synchronizing supporting data such as config flags

5. Checking the network state alone is not enough: Online state can only be determined by successfully pinging a controlled server and receiving an expected response. Users may be proxied at public Wifi gateway, the server may be unavailable or there may be connection but high latency

6. Modern apps respect the user’s battery and network: The application should respect the user’s battery and network and only synchronize the data that has changed from the last synchronization, and only when notified of changes from server first. Low priority requests can be delayed and processed in a batch to avoid waking radio

Caching

Caching is a technique to retain the results of an expensive operation so subsequent requests of the same type can be served faster. Although caching is not a replacement for a complete offline only solution it is often a pragmatic first step before implementing a push based offline system. The caching layer can be implemented using a variety of algorithms such as Least Recently Used (LRU), First in First Out (FIFO) or other. Many applications may use a hybrid of online-only, cache and offline first approaches to support various use cases.

Publish/Subscribe Pattern

To support an offline first application mobile devices, need to efficiently synchronize large amounts of data from the server. The publish/subscribe or pubsub pattern is a form of asynchronous service to service communication commonly used in serverless and microservice architectures. The pub/sub architecture can be used to develop fault tolerant data replication such as synchronizing a server and mobile app database.

The pub sub pattern has several key advantages over the caching design described above:

– Only the deltas need to be synchronized. If the system contains 1 million records and 100 of them have changed since the last synchronization, synchronizing all data can be an expensive operation. Caching will fetch all data or nothing depending on the invalidation configuration

– Push based. When data is modified on server, it can send a push notification to all relevant subscribers via GCM or APNS avoiding pre-emptive network requests reducing network and battery

– Cache invalidation strategies can be complex and involve various tradeoffs that can result in excess network/CPU or not receiving timely updates

Publish Stream

The data on the server can be represented as a time series of transaction mutations. The primary data store will always contain the source of truth. Only the master data source can be mutated, all other nodes will be receive read only subsets from the primary node. Mutations will be one of create, update or delete operations. The mutations can modeled as a stream of immutable events or messages. The stream of mutation events will be known as the publish stream. Any point in time can be represented by replaying the events in order from the stream.

Example Publish Stream for a Todo app:

1. Add { id: 1, userId: 1, title: “Grocery Shopping”, isComplete: false }

2. Update { id: 1, userId: 1, title: “Grocery Shopping”, isComplete: true }

3. Add { id: 2, userId: 2, title: “Do Taxes”, isComplete: false }

4. Delete { id: 1 }

5. Add { id: 3, userId: 1, title: “Write Medium Article”, isComplete: false }

If the entire stream is replayed the final state will be:

1. { id: 2, userId: 2, title: “Do Taxes”, isComplete: false }

2. { id: 3, userId: 1, title: “Write Medium Article”, isComplete: false }

One important item to note is that the final dataset contains records from both user 1 and user 2. In a typical Todo app users will only want to subscribe to their data. The above data could thus be written to multiple different streams such as “My Todos”, or “My Incomplete Todos”. Designing and setting up publish streams will be covered in more detail in a future article.

Subscribe Stream

The primary node (server) will be responsible for publishing one or more streams of all mutations. The data can be replicated to the replicated nodes (mobile devices) by subscribing to the appropriate streams. The stream can be replayed and interrupted at any point and will always represent the system at a point in time. When a mobile device mutates data the server will perform the mutation on the primary node and write it the transactions to the appropriate streams. The client can subscribe to an event stream and receive the events asynchronously. As the events are received from the subscription the mobile app can persist the events to the local data store such as SQLite. Another key attribute is the stream can be interrupted and scheduled to resume at any point based on network, battery or when the application loses focus or device goes to sleep.

In the following example the Master node will synchronize various records from Node 1 (Master) to Node2 (Online Slave) and Node 3 (Offline Slave). As mutations are made in Node 1 they are immediately reflected into Node 2. The changes to Node 3 are queued and synchronized when a connection can be established.

Offline Mutations and Conflict Resolutions

When users wish to change data on the mobile device such as an add or update, the transaction must be queued. The transaction can be queued locally and sent to server when appropriate in the background. The local data cache can be mutated immediately to ensure user sees the latest data. If the data is shared and can be modified by multiple users such as a group the developer will need to determine how to resolve the conflict.

1. Last write wins: The last write to the system will overwrite any previous writes. If multiple users are writing to the same data they may be processed out of order. This strategy is useful if the data can be modified multiple times such as a text field

2. First write wins: The first write to the system will mutate the data. Subsequent writes can either ignore the transaction or return an error. This strategy is useful when making edits that can only occur once such as a status change

3. Merge: Subsequent writes to the data will intelligently modify the data so both requests are applied

Summary

Many applications may use a combination of online-only, cache and push based synchronization to achieve the optimal user experience. Push based synchronization primary use case occurs when the user can subscribe to a defined data set such as “My Todos”. Many applications may use a combination of offline sync, caching and online only to achieve the optimal user experience.

In this article, we investigated the various types of apps such as online only REST based, caching and pubsub based mobile applications. We set the design and groundwork to build an offline push-based app in a technology agnostic way. The next series of articles will go through building a simple Todo based application server and client and make specific technology choices. Source

 

Please follow and like us:
0

Coders name Elon Musk the Most influential person in tech for 2019

April 12, 2019 Posted by News, Programming, Technology 0 thoughts on “Coders name Elon Musk the Most influential person in tech for 2019”

Elon Musk will have the most influence in the world of technology this year, according to an exhaustive survey of programmers.

In the Stack Overflow Developer Survey, 30.2% of respondents said they thought the SpaceX and Tesla CEO would have the most influence in the field in 2019.

In second was Amazon CEO Jeff Bezos, with just 7.2%. Microsoft CEO Satya Nadella came in third with 4.4% of the vote.

The survey saw almost 90,000 programmers respond from around the world, making it the largest of its kind across the globe.

Elon Musk influence remains despite rocky few months

The survey indicates that the near cultish status surrounding Musk has not waned, despite a number of incidents that risked denting his publish image.

At the end of 2018 Musk was accused of fraud by The US Securities and Exchange Commission (SEC) over what the organisation deemed “false and misleading tweets” regarding taking Tesla private.

In the fallout from the incident, Musk was forced to step down as chair of Tesla, although maintained his position as CEO.

In February Musk fell afoul of the SEC again on Twitter, when he reported Tesla production figures over the social media platform in apparent contravention of his previous settlement.

Meanwhile, Tesla has faced a somewhat fraught time, with the company having to shed almost a tenth of its workforce in 2018 over a botched automation attempt.

However, Musk has also had numerous public image wins that have maintained his positon as a highly liked figure within the world of technology.

SpaceX, in particular, has had a successful time, with the Crew Dragon completing its first unmanned test mission ahead of transporting humans to the International Space Station.

Of course, whether Elon Musk can retain his position of widespread adoration in the tech world remains to be seen, but with little competition from other big personalities he is unlikely to be unseated anytime soon.

Please follow and like us:
0

Survey: Younger Coders Most Likely To Appreciate Blockchain

April 12, 2019 Posted by News, Programming 0 thoughts on “Survey: Younger Coders Most Likely To Appreciate Blockchain”

A survey of tens of thousands of coders and programmers shows that one in five currently uses blockchain technology, but that could be set to rise, as nearly 30 percent said it is “useful across many domains and could change many aspects of our lives.”

The survey was conducted by question-and-answer site Stack Overflow and involved nearly 90,000 respondents in total. Most were professional coders or students preparing for that kinds of career.

More than 1 percent of respondents—which means more than 600 of them—said they were implementing their own cryptocurrency.

Unsurprisingly, young coders are more likely to think blockchain is going to be important in the future, while their older colleagues are still skeptical. A notable minority of respondents said blockchain was a passing fad (17 percent) and an irresponsible use of resources (16 percent). Opinion was dividedjust over a quarter acknowledged blockchain was “useful for immutable record keeping outside of currency.”

Among its other results, the survey confirmed an enormous gender disparity among developers: in the US, more than 88 percent of respondents were male. That was the lowest proportion found in any country. The most male-dominated roles were managers, administrators and executives. The roles most inclusive of women and other gender identities included researchers, analysts and scientists.

Please follow and like us:
0

In 3 years these high-paying tech jobs pay six-figure salaries

April 11, 2019 Posted by News, Recruiting, Technology 0 thoughts on “In 3 years these high-paying tech jobs pay six-figure salaries”

Earning a six-figure salary might not be as far from reach as you may think.

Entry-level positions for data scientists, product managers, and developers could pay $100,000 or more, according to a new study from Comparably, a website that rates workplace culture and compensation based on self-reported data.

In its latest study, Comparably analyzed the salaries of employees in the technology industry with three years of experience or less, which it evaluated from more than 8,000 employee records. The highest salary on the list was for the position of data scientist, which Comparably’s report indicates has an average entry-level salary of $113,254.

Comparably’s results share some similarities with data published by job search platform Monster, which listed web and software developer positions in its list of the highest-paying entry-level tech jobs.

The findings also underscore the increased emphasis on technical skills over traditional experience in the technology sector. Apple CEO Tim Cook even recently said that about half of the company’s US employment last year was made up of people who did not have a four-year degree.

See below for the top 10 highest-paying entry-level jobs in tech, according to Comparably.

10. QA Analyst

Average Salary: $70,383

A QA analyst looks for issues in websites and software and is responsible for making sure those problems are corrected, according to Comparably’s description. Duties and responsibilities could include conducting software audits and making recommendations for repairing defects, as a sample listing from ZipRecruiter notes.

9. Marketing Manager

Average Salary: $70,392

A marketing manager typically serves as the median between the IT department and marketing division, says Comparably. As is the case with many of the positions on this list, the day-to-day duties and responsibilities will differ depending on the employer.

8. Sales Representative

Average Salary: $70, 622

At a technology company, a sales representative’s goal would be to cultivate sales with potential clients, Comparably says in its description. This could entail giving presentations about the company’s tech products and services.

7. UI/UX Designer

Average Salary: $84,841

Employees in this role are responsible for a website’s user experience, including making sure that it adheres to the company’s vision, as Comparably notes. Responsibilities for a position like this could include designing elements like menus and widgets and illustrating design ideas through storyboards, according to a sample job description from Workable.

6. DevOps Engineer

Average Salary: $89,300

A DevOps engineer typically manages software development and automates systems, says Comparably. Testing implemented designs, handling code deployments, and building and testing automation tools are all duties that could fall under a DevOps engineer’s responsibilities, according to ZipRecruiter.

5. Sales Engineer

Average Salary: $90,575

The role of the sales engineer is to sell tech services and products through sales and technology, according to Comparably. In this role, you may be expected to establish a rapport with customers and potential customers to identify service requirements and prepare cost estimates by working closely with engineers and other technical personnel, according to a sample job listing from Monster.

4. Mobile Developer

Average Salary: $98,317

A mobile developer, as the title implies, works on applications for mobile devices. In this role, you may be required to design interfaces, troubleshoot and debug the product, and support the entire app life cycle from concept through post-launch support, according to a sample job listing from Workable.

3. Developer

Average Salary: $100,610

A developer designs and tests software, as Comparably notes. Responsibilities will vary depending on the type of developer job and the company. But a sample description from Indeed indicates a software developer role would entail writing, editing, maintaining, and testing computer software.

2. Product Manager

Average Salary: $106,127

This type of role usually involves planning different stages of a product’s development and rollout and then maintaining that product post-launch, according to Comparably. This could involve conducting market research, determining specifications and production timelines, and developing marketing strategies, says Monster.

1. Data Scientist

Average Salary: $113,254

A data scientist gathers insights by using tools to mine through large amounts of data, according to Comparably’s description. Employees in this role typically use these insights to deliver data-driven solutions to business problems, according to a Glassdoor sample job listing.

Please follow and like us:
0

Notorious Hacking Forum And Black Market Darkode Is Back Online

April 11, 2019 Posted by News, Programming 0 thoughts on “Notorious Hacking Forum And Black Market Darkode Is Back Online”

In 2015, over 70 people were arrested in a high profile takedown of one of the world’s most notorious hacking forums and black market, Darkode (aka Dark0de). In operation since 2007, the online marketplace included hacking tools, zero-day exploits, stolen data, spamming and botnet services. It was used by groups including the infamous Lizard Squad – the teen hackers known for hitting services such as X-Box Live and the PlayStation Network with distributed denial of service (DDoS) assaults.

Since the FBI and Europol operation to take down the Darkode site, there appear to have been several attempts to revive it. Notably, in late 2016, alleged former members of the site tried to bring it back in a diluted form, according to Motherboard.

Now, just over two years later, the site is back again – and this time under new ownership. “Today Dark0de consists of tools, exploits, 0days, accounts that have been cracked, configs for tools, and email/password combinations all available to the public,” a hacker called Ownz told me in an online chat.

The revamped Darkode forum’s Twitter account description reads: “A cybercrime forum and public market offering that serves as a venue for the sale & trade of hacking services, botnets, malware, and illicit goods and services.”

“The long-term goal is to revive Dark0de and hopefully it will become one of the best hacking forums once again,” Ownz says. “If you are wondering why we waited three years to open this service back up: on a federal level we believe Europol and the FBI were still investigating and looking for more hackers to arrest.”

Please follow and like us:
0

Suzy Welch: The only 2 reasons you should drop everything and learn to code

April 10, 2019 Posted by News, Programming 0 thoughts on “Suzy Welch: The only 2 reasons you should drop everything and learn to code”

These days, “learn to code” is the conventional wisdom doled out to anyone who’s been laid off or feels stalled professionally.

But bestselling management author and CNBC contributor Suzy Welch says you’ll want to think carefully before pursuing something that’s being presented as a professional quick-fix.

“Coding is great for some people,” she tells CNBC Make It. “I have a nephew who was born doing calculus. He majored in comp sci at college, and now earns a six-figure salary at 24 years old. That kind of story is why boot camps are popping up everywhere and their classrooms are full.”

But Welch says there is a “cold, hard truth” you won’t often hear about boot camps: “Most of them only teach the basics.”

As a result, many graduates don’t leave boot camp with the knowledge they’d need to take on a high-paying engineering job. In fact, Welch says, boot camp graduates often fall victim to a common pattern: Big companies hire boot camp coders in huge groups, fully expecting to lay off half of them.

“Boot camps promise you a job paying $60 or $70K upon graduation, and they typically deliver. But they very rarely say that afterward, most big companies put you through their own in-house training programs, and for every hundred boot camp graduates hired, 50 are screened out after six months.”

Welch notes that in a tight labor market, boot camp-trained coders shouldn’t worry — the odds they’ll get hired again are strong. “But,” she says, “that reality suggests boot camp mainly makes sense under two circumstances.”

1. You’re talented

An excellent reason to go to a coding boot camp, says Welch, is if you have “an actual aptitude for coding.”

“You have to have some skill to succeed,” she says. “Before handing over your credit card, do yourself a favor and take one of the many online classes or tests to see if you have an aptitude for coding, which — hello! — is actually an inextricable prerequisite for a real dev career.”

2. You’ve exhausted other options

The second circumstance that Welch says should lead you to coding school is if you’ve exhausted other professional avenues and lack a specific passion for any one career.

“It happens,” she says. “And when it does, again given this economy, serial $60K coding jobs are not just better than nothing, they’re a lot better. I get that.”

“Should you learn to code? I’m not saying the answer is ‘no,‘” says Welch. “It’s ‘maybe’ — just make sure you face reality first.”

Suzy Welch is the co-founder of the Jack Welch Management Institute and a noted business journalist, TV commentator and public speaker. Think you need Suzy to fix your career? Email her at gettowork@cnbc.com.

 

 

Please follow and like us:
0