Ketan's Home

May 21, 2018

DZone Research: What Devs Need to Know About Java

Filed under: Uncategorized — ketan @ 6:21 AM

To gather insights on the current and future state of the Java ecosystem, we talked to executives from 14 companies. We began by asking, "What do developers need to keep in mind when working with Java?" Here’s what the respondents told us:

Depth

  • Work on applying your Java skills in new environments like Docker and Kubernetes. Pay attention to the Java roadmap. Look into how the platform fits into the cloud with new dynamic APIs. Learn cloud technology and how it applies to Java. Look around at other languages, constantly learning what you can do and bringing the best to Java. 
  • JVM is the top programming platform. Most languages live on the JVM so start with Java. Primary platforms for business apps are Java and .Net. Be language agnostic. Learn design, “Design Patterns” by the Gang of Four.
  • A really big winning point for Java is the high level. Java is on an abstraction level where you can produce and think about the important parts to deliver business value. However, developers who strive to "push" Java a big needs a fundamental knowledge about what’s going on under the hood.

Reuse

  • Don’t reinvent the wheel. Participate in the ecosystem. Be a contributor. 
  • Good IDE can make life easier by reducing verbosity. Since you’re on the JVM you can use many other languages (e.g., Groovy and Kotlin).

Other

  • Dependency management can get complicated. Hard for newcomers. This can be a barrier to entry since other languages have just write and execute capabilities. Need a build tool to write.
  • Learn the libraries, especially those with long-term staying power. Know your code is going to be attacked and prepare accordingly. 100% of the apps we monitor were attacked last month. Be ready to respond to an attack within a day.
  • The future is serverless with RIFF. Libraries with reactive programming with Akka, big data with Scala, ultimately web apps like Spring Frameworks. For scalable architecture check out Netflix.
  • It matters to us what you are doing. Keep up with the new releases and try new builds before they go live to be seen as an expert at your company and with local user groups. Once you get involved in a group, you’ll be perceived as an expert. So, try out new releases before they are final and stay ahead of the curve.
  • Like any other language, it’s important for developers to keep the basics in mind – meaning your code needs to be well-designed, extendable, maintainable, and understandable by others.
  • That while Google and Stack Overflow is certainly magical (again, vibrant community & ecosystem plays a huge part here), also take time to just try out new syntax, build tons of throw-away experimental bodies of code, ideally as automated tests.  Invest time in learning some of the language features that you might not have explored like lambdas or modules, even if it does hurt your head at times (it certainly does mine, I still default to an old school for loop).
  • There’s a difference between generics and templates. Understand what Java does under the hood. Be aware of getting type erasure.
  • There’s a good future in it. Look for tools to help with development. Keep an eye on open source projects. Find good information outlets.

from Javalobby https://ift.tt/2IyLBtX

May 19, 2018

Robot Archaeology: TensorFlow and Machine Learning @Google @TensorFlow #Robots #AI

Filed under: Uncategorized — ketan @ 1:31 PM

TensorFlow is an open-source Machine learning library developed by by the Google Brain team and released in 2015 for general public use under the Apache 2.0 open source license. It is used by folks who wants to work with artificial intelligence. Along the way, TensorFlow has broken all records in terms of projects on GitHub.

Tensorflow is written in PythonC++, and CUDA. It provides official Python and C programming interfaces (API). You can use TensorFlow, without a API stability guarantee, in C++, Go, and Java. Third party packages are available for C#, Haskell, Julia, R, Scala, Rust, and OCaml.

tensorflow

On March 1, 2018, Google released its Machine Learning Crash Course (MLCC). Originally designed to help equip Google employees with practical artificial intelligence and machine learning fundamentals, Google rolled out its free TensorFlow workshops in several cities around the world, finally releasing the course to the public (take it yourself).

Some robotics projects using TensorFlow:

It is totally possible to build inexpensive robots which take advantage of the learning capabilities in TensorFlow, often in less than 100 lines of Python code.

Adafruit is excited about robotics with the introduction of the new Crickit robotics board.

crickit-fritzing

Have you used TensorFlow or would like to? Post in the comments below!

Join 5,000+ makers on Adafruit’s Discord channels and be part of the community! http://adafru.it/discord

CircuitPython in 2018 – Python on Microcontrollers is here!

Have an amazing project to share? Join the SHOW-AND-TELL every Wednesday night at 7:30pm ET on Google+ Hangouts.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Follow Adafruit on Instagram for top secret new products, behinds the scenes and more https://www.instagram.com/adafruit/

Maker Business — The first step in making: a PCB

Wearables — Try maximum twinkling

Electronics — Behold…the power of pseudocode.

Biohacking — All Day EEG Recording Tools

Python for Microcontrollers — PyCon US 2018 Rocked!

Get the only spam-free daily newsletter about wearables, running a “maker business”, electronic tips and more! Subscribe at

AdafruitDaily.com

!

No comments yet.

Adafruit has a “be excellent to each other” comment policy. Help us keep the community here positive and helpful. Stick to the topic, be respectful of makers of all ages and skill levels. Be kind, and don’t spam – Thank you!

from Adafruit Blog https://ift.tt/2IxtlBe

Five Steps to TensorFlow on the Raspberry Pi

Filed under: Uncategorized — ketan @ 12:51 PM

Five Steps to TensorFlow on the Raspberry Pi

If you have about 10 hours to kill, you can use [Edje Electronics’s] instructions to install TensorFlow on a Raspberry Pi 3. In all fairness, the amount of time you’ll have to babysit is about an hour. The rest of the time is spent building things and you don’t need to watch it going. You can see a video on the steps required below.

You need the Pi with at least a 16 GB SD card and a USB drive with at least 1 GB of free space. This not only holds the software, but allows you to create a swap file so the Pi will have enough virtual memory to build everything required.

The build step not only has to create TensorFlow but also Bazel, which is Google’s Java-based build system. There are dependencies between the version of TensorFlow and the version of Bazel so you have to make sure the versions match as explained in the video.

The video is based on some older instructions on GitHub, but those instructions are not up to date and the changes required are covered in the video.

Given how long it takes to compile, we wondered if cross compiling might have been a better option. If you need models that work with this setup, you can always work in your browser.

from Hack a Day https://ift.tt/2IrrOMZ

May 17, 2018

How to Build Anything Out of Aluminum Extrusion and 3D Printed Brackets

Filed under: Uncategorized — ketan @ 11:58 PM

The real power of 3D printing is in infinite customization of parts. This becomes especially powerful when you combine 3D printing with existing materials. I have been developing a few simple tricks to make generic fasteners and printed connectors a perfect match for aluminum extrusion, via a novel twist or two on top of techniques you may already know.

Work long enough with 3D printers, and our ideas inevitably grow beyond our print volume. Depending on the nature of the project, it may be possible to divide into pieces then glue them together. But usually a larger project also places higher structural demands ill-suited to plastic.

Those of us lucky enough to have nice workshops can turn to woodworking, welding, or metal machining for larger projects. Whether you have that option or not, aluminum extrusion beams provide the structure we need to go bigger and to do it quickly. And as an added bonus, 3D printing can make using aluminum extrusion easier and cheaper.

Everything is Built from Aluminum Extrusion

Aluminum extrusion beams are no stranger to these pages. We have a general overview of them and we have seen so many projects using extrusions, like satellite trackers, Rubik’s cube solvers, and automated drone charging stations. Many popular 3D printers have frames of aluminum extrusion as they offer higher strength and superior dimension tolerances than 3D printed plastic.

But creativity is quickly stifled by connector selection, as the vast majority of connectors in the catalog are for 90-degree joints of one flavor or another. Angled connectors are in the minority, and usually limited to a few angles like 30, 45, and 60 degrees. There isn’t enough sales volume to justify making connectors with angles that only a few people would ever use. This is where our 3D printer re-enters the picture, as a factory for low volume niche parts.

Custom Doesn’t Mean Hard

Combining custom with stock allows us to design projects leveraging the strengths of each part: the aluminum extrusion provides generic structure, with the 3D printed plastic linking them together in a project-specific way. We’ve covered 3D-printing right angle connectors before (or in conjunction with zip-ties) but today we’re focused on 3D printing’s advantage for very precisely building arbitrary angles.

The CAD to design for these connectors is pretty simple. It is typically a matter of subtracting out a rectangular solid for the beam itself, followed by subtracting a few cylinders to create mounting holes for fasteners. Bolting to an extrusion on three sides (like the rocker arm example here) is usually strong enough for 3D printed plastic projects. This means we can often skip the “top” (relative to print bed) side for easier printing. Sometimes we’ll want that strength badly enough to deal with bridging or some other technique to give us that fourth side, but we’ll leave that challenge aside for now. The point is, that you can give this a try with minimum effort and adopt more of the technique as you get used to it.

An Example: Hard Angles Made Easy

I’ve been working on a design for a rocker arm sub-assembly and it makes a perfect example of this discussion. It is part of the suspension system for a robot I’m building. The entire design is far too large to print as a single piece, so I divided the object into aluminum segments linked together by 3D printed parts. Here are the wireframe diagrams:

Three-view of rocker arm with two aluminum extrusion beams adjacent to it.

Look at the relative angles of these two extrusion segments — no extrusion vendor would stock connectors at these angles and if they did you still wouldn’t get a pair of bearings at its center and a mechanical linkage up top. Such project-specific details make this hub ideal for one-off 3D printing. As for the arms, we could spin up a 3D print job for two long rectangular blocks of plastic. But why? The only project-specific detail here is length, which can be cut far faster than an identical length of plastic can be printed, even if the cutting was done by a hand-held saw.

This article focuses on where the aluminum meets the plastic so I’m not going to go deep into the details on setting up your angle or removing the area for the extrusion. But it’s worth noting a few general 3D printing behaviors that strongly impact this construction technique. Select your layer orientation wisely — when printed parts are pushed beyond their limits, they generally fail by fracturing along layer boundaries. Use at least two fasteners along each axis, spaced approximately as far apart as beam width, to spread out workload. Using just one fastener turns that single point into a fulcrum multiplying forces on our printed parts, and we don’t want that.

One more point to consider is overhang when bolt holes do not align nicely with the print bed. We can help our printer bridge odd bolt head surfaces by creating a thin layer (2-3 print layer heights thick) covering the bolt hole which can be cleaned up with a drill after serving its purpose. These are easier to remove and consume less material than the typical solution of printing supports.

The Secret Sauce: A Replacement for T-slot insert, T-nut, T-whatever

Once we have a project-customized connector designed and printed, we proceed to assembly where we face the other hidden gotcha of aluminum extrusions: specialty fasteners. Called T-slot inserts, T-nuts, or some similar name, they are shaped specifically to fit in the slot of an aluminum extrusion beam. They are also extremely expensive. Not necessarily in an absolute sense, but certainly relative to commodity hex nuts of similar size. Our rocker arm example is designed for 15mm Misumi 3 Series extrusions. Misumi offers several specialty nuts for this extrusion, the least expensive “economy” model HNSQ3 costs $8.28 for a bag of 100. In contrast, our trusty hardware supplier McMaster-Carr offers generic M3 hex nuts at $0.88 for a bag of 100. (Catalog #90592A085)

15mm Misumi 3 Series (right) is friendlier to using generic M3 hex nut (shown) than its 20mm sibling 5 Series (left) shown with matching specialty fastener.

Before we give in to the temptation of a 90% discount, let’s do a quick review of what we trade off by using generic nuts. The first and most obvious barrier is that a particular extrusion beam’s profile might not allow a generic nut to be used. Second, a generic nut will not engage slot interior surfaces to the same degree as a nut tailored to the extrusion profile. This usually means we can’t torque the bolt down as tightly before something slips. Third, higher end specialty nuts provide friction against the extrusion, either by its shape, size, or an additional thin metal spring that holds the nut in place. Nuts that stay at position instead of sliding around in the slot eases assembly, translating into less time wasted and lower frustration for the assembler. Such labor savings can outweigh a specialty fastener’s cost.

For this rocker arm example, the first concern does not apply as Misumi 3 Series is tolerant of generic M3 nuts. Item number two — reduced fastener torque limit — is acceptable as long as it is still sufficient for what we need on a 3D printed plastic project. And item three — assembly convenience — is something we can get back with some clever 3D printing.

We now apply 3D printing’s strength (a factory for low volume, task specific objects) to generic fasteners in aluminum extrusion beams. Our technique employs a small tool designed specifically for the job. For starters, this tool has a little hump to act as a spring that helps hold its position in the slot. Then, because the tool is designed alongside the part it will be used with, we can design it with trays to hold generic nuts spaced exactly at the distance we need. And as an extra icing on the cake, we add a little hook to the end. This hook — designed to be exposed when hub is in place on the arm — allow us to fine-tune our position without having to take things apart.

To fit within the narrow spaces left in the slot, the tool is printed as thin as possible: the width of our 3D printer’s nozzle. This also makes economical use of filament and it’s very fast to print, both attributes useful for a disposable item since this thin positioning tool can’t be removed once the bolts are tightened down. It is well worth the sacrifice, though, because it turns a frustrating exercise of aligning small fasteners into a trivially simple task.

Give this fastener method a try. I hope you find the technique useful and I look forward to seeing more projects that combine the strengths of 3D printing and aluminum extrusion beams into something that neither could do alone. If you are proud of your result, don’t be shy about letting us know via our tips line or maybe as an entry to our Hackday Prize. Happy building!

from Hack a Day https://ift.tt/2HY00zq

Finding Talented People and Building Sustainable Teams

Filed under: Uncategorized — ketan @ 11:13 PM

Meetups, hackathons and conferences are fantastic opportunities to promote your company’s work and ethos and meet talented people. You can learn a lot more about a person if you let them drive the conversation initially in a job interview, argued Vlad Galu. Having room to grow professionally and psychological safety are key to building sustainable teams and establishing a collaborative and cohesive engineering culture.


Vlad Galu, VP of engineering at GlobalSign, presented building and growing sustainable teams at QCon London 2018. Previously InfoQ published a summary of the morning sessions and a summary of the afternoon sessions from the Building Great Engineering Cultures and Organizations track.


InfoQ interviewed Galu about finding talented people, creating sustainable teams, dealing with differences in culture in different parts of organizations or on different continents, and how the engineering culture has evolved over time at GlobalSign.


InfoQ: What works for you to find talented people who want to work in your company?


Vlad Galu: There are several factors that contribute to talent attraction, but a few stand out to me:


  1. Companies make sure their top talent is happy where they are, usually, so it is hard to reach good people through conventional recruitment channels. I find direct networking to work really well. Meetups, hackathons and conferences are fantastic opportunities to not only meet talent, but also promote your work and your ethos. Everyone wants to be part of something great and meaningful; learning about your mission straight from the source offers people a more genuine experience than hearing about it from a third party.
  2. I often see job ads asking for least X years in this or that industry, irrespective of the specific set of skills required. That is usually another way of saying “we do not have the time or inclination to explain our processes and tools, we’d rather you knew them already”.


I currently work for a digital identity/PKI company with a primarily B2B business model. If we narrowed our requirements that much, the talent pool we could tap into would have been astronomically small. A lot of the challenges we face can easily be found in other industries. Our people come from areas such as airline ticketing, cloud storage, telecoms, all places with interesting hard problems that we also solve.


Other companies explicitly prefer people proficient in specific tools and processes – such as programming languages, frameworks, databases, SaaS platforms – instead of looking for problem solving skills. That may work well for short term gigs with a very narrow scope, but that is not necessarily conducive to a long lasting relationship which would require more flexibility. We have worded our job description around concepts and approaches instead of tools.


InfoQ: What have you learned and what are there things you stopped doing when recruiting people?


Galu: I have shifted the emphasis completely on what people know, rather than what they do not, which reflects on all stages of the hiring process.


Online/timed coding tests were the first to go. While suitable for situations where you need to hire lots of people quickly, I find them very one dimensional and narrow scoped. They will tell you what people know, but they will not tell you how they think. The people you screen may be able to answer your questions, but are they able to ask the right questions themselves?


My approach is devising a take home test that covers several bases (in our case algorithms, systems level programming and code readability), allows access to any documentation, encourages research before implementation and is subject to a more generous time boundary that does not employ a stopwatch. We mixed in some intentional tradeoffs, which give us a preview of a person’s thought process and strengths, as well as great solution variety. In the past three and a half years I have been with my current company and after more than a hundred interviews we have not received two identical solutions, which goes to show how differently people think.


The second thing I changed was the format of the on site technical interview. Many companies I worked for or interviewed with opened with a static list of questions that was sometimes relevant to the role but less often relevant to the candidate’s background. To emphasize what people do know over what they do not, we first ask them to tell us more about past achievements, projects, and challenges to make them feel more comfortable. We go further down that path, slowly raising the question difficulty level crossing into different areas and taking them out of the comfort zone. How they handle reaching the breaking point is a quite good indicator of their personality and professional maturity.


InfoQ: What is it that makes teams “sustainable”?


Galu: To me, a couple of things:


  1. The opportunity of bettering oneself, day in and day out. Having room to grow professionally, learning to address the “what”, “how” and “why” challenges of the business. You can cover the “what” and “how” by building teams around a common core of skills while aiming for a good mix of individual strengths, this way everyone can learn from everyone else. Creating space to shift from one team, product or technology to the next when possible is a huge loyalty booster. The “why” depends on the collective drive to move up the career ladder and is different from one place to the next. But still perfectly possible by proactively monitoring your reports’ progress and their reports’ progress to identify leadership strengths and aspirations and creating space for those to manifest. Aiming for a good mixture of junior and senior people helps ensure they all have room to evolve.
  2. Psychological safety is key. Not being afraid to make mistakes or share ideas. Evolution is a very long stream of mistakes, we fundamentally learn through trial and error. Smart and kind people make up fantastic teams in this regard.


InfoQ: How do you deal with the differences in culture in different parts of your organization or on different continents?


Galu: In my experience, joint projects where people work towards a common goal in the same room are great at bridging gaps in work and communication styles. Depending on the company and the product, it is possible to introduce short milestone aligned sprints that bring together people who otherwise work together, but in separate offices. Communication between product management and engineering is critical, the more face time the better.


InfoQ: How has your engineering culture evolved over time?


Galu: It has certainly become more collaborative and cohesive. Before my time engineers were clustered around products siloed in different markets, with little to no cross-team interaction, but we have since changed our approach and built a common platform supporting all products that is jointly owned and operated by several teams around the world. Working together has certainly helped overcome cultural barriers and made our people more comfortable with offering and receiving feedback. There is still room for improvement, as our product management is not as spread out as we would like, but we are making great strides towards that as well.



















Discuss

from InfoQ https://ift.tt/2wsSA1H

Blog at WordPress.com.