From the blog

How product managers can get more out of user calls

One of the core jobs of product managers is to speak with users to better understand their needs, pain points and the context in which they operate and use our products. But not all user calls are the same. There are 3 prominent types of user calls: Discovery or problem validation calls Roadmap discussions Solution validation calls Here’s an in-depth look at how we approach the three types of user calls at GitLab. Discovery calls Discovery or problem validation calls are product managers’ most crucial conversations with users. Discovery calls are typically set up to learn about our users in a targeted way. These calls help build a better understanding of users’ pain points. For discovery, we need a recipe for repeatable, comparable user calls. For this reason, we should create an interview script and follow that script on all the user calls. This does not mean these calls are robotic and devoid of improvisation, not at all! The script should provide the backbone of the discussions. We can adjust it either during the call or in advance based on prior knowledge about the user. Good discovery calls typically take the form of a deep-dive conversation: we know the script by heart and can run back and forth around it, always asking the questions that fit the conversation. Finding the right users is one of the most challenging parts of discovery calls. Thankfully, with GitLab, this is relatively easy. We can always reach out to the most active users on issues and invite them to a call. Another technique I employ is to find users in the Cloud Native Computing Foundation and Kubernetes communities’ Slack channels and articles on Medium. This way, I can also find non-GitLab users, a set of people likely more valuable to interview than existing users. Finally, we can recruit users with the support of the account managers. They are always helpful in connecting PMs with users. Asking the users about their needs shows them that we genuinely care about them. There are at least two distinct discovery calls: PM-led or UX-led. UX research typically works on projects with a strict scope. For PM-driven calls, a great framework is “Continuous discovery” calls by Teresa Torres. With continuous discovery, we build a deep understanding of our users and get well-understood opportunities. The technique allows us to get a broad view and to dive deep into specific aspects of our problem space when needed. Roadmap discussions Roadmap discussion calls are typically initiated by sales or account management teams. Product managers are asked to join the prospect/customer call to strengthen our positions and show how much we care for the customer. To prepare for roadmap discussions, PMs should have an effective way to present the roadmap. This typically happens in the form of slides. A diligent PM might even prepare something specifically for the client. During these calls, the user/customer/prospect will typically ask the questions, and the PMs respond. Our role in these calls is to represent the truth. We might be tempted to paint a rosier picture about the current or expected state of the product than is actually true, and we should avoid making time-bound promises. What are the expected outcomes of roadmap discussions? They can help strengthen our position with the user. Remember that these calls […]

Read More

How to quickly (and successfully) onboard engineers

No one ever said hiring was easy. As a matter of fact, talent hiring and retention are some of the hardest aspects to get right for any software company. According to a recent article at Developer Pitstop the average engineer will only stay at a job for an average of two years before moving on, and this tenure is shrinking as time goes on. When we look at the average timeline for engineers in a new role we usually see something like: Learning and adaptation (3 / 6 months): Coming to grips with the new company, team, and their processes. Creating value for the organization (6 / 12 months): Adding value to the business by becoming a functioning member of the team. Becoming a role expert (6 / 18 months): Owning the role completely and helping to shape the direction of the team. At GitLab we pride ourselves on an outstanding onboarding process to reduce the amount of time an engineer will spend in the learning and adaptation bracket and accelerate their evolution into the creating value for the organization bracket. We do this for two main reasons: Quicker integration: We aim to have engineers ship production code in less than one week, and fully onboard them in less than three months. Reduce turnover: Engineers who have an awesome onboarding experience tend to stay with the same company longer. The bottom line is that with these benefits, investing in an amazing onboarding process gives you the highest ROI on your hiring initiatives. So, now that we know why we need to ensure we onboard quickly and correctly, let’s talk about how we do it at GitLab. Overview 💯 Before day one 💥 It’s all about the onboarding issue 🥂 Pick the right onboarding buddy 👌 Pair, pair, and more pairing 🖐 All the coffee chats 🤘 Tailor the experience to the role 🚢 Ship some code in a week or less 💬 Let’s get (and give) some feedback 💯 Before day one The best onboarding processes start as soon as the candidate has officially accepted the offer. This is done in a few ways: An onboarding issue is created with tasks for the hiring manager, their buddy, and People Experience (HR). The hiring manager selects the right onboarding buddy for the engineer and communicates expectations (more on this later). The engineer’s accounts (Email, GitLab account, Okta, etc) are created and their hardware is shipped. GitLab reaches out via email to let the candidate know what the onboarding process looks like. The hiring manager reaches out to the engineer via email to set up a coffee chat on Day 1 as the initial process might seem overwhelming. For us, the most important aspect is communication with the engineer to ensure they are set up for success. We provide them with access to their onboarding issue, helpful video guides for getting started, and a primer on how to navigate our handbook like a pro. The reason this is so important is that we know if we stop communicating with the engineer after signing, we are at risk of creating uncertainty, introducing inefficiency, or even losing them to another offer during that time. 💥 It’s all about the onboarding issue At GitLab, our onboarding issue is the most effective tool we have for […]

Read More

What Is The Best Graphs And Network Visualization Tool On Windows?

Did you know that it’s simple to use some truly excellent Python libraries to boost your Delphi app development on Windows?  These libraries are very easy to use and produce wonderful ways to produce graphs and network visualization. Adding Python to your Delphi code toolbox can enhance your app development by bringing in new capabilities that allow you to provide innovative and powerful solutions to your app’s users, combining the best of Python with the supreme low-code and unparalleled power of native Windows development that Delphi provides. Are you looking for how to build a GUI for graph and network visualization library?  You can create, manipulate, and study the structure, dynamics, and functions of complex networks with NetworkX on Delphi. This article will demonstrate how to create a Delphi GUI app dedicated to the NetworkX library. Watch this video by Jim McKeeth for a thorough explanation of why you can love both Delphi and Python at the same time:   Get to know with Embarcadero Python Ecosystem Before we dive in more into the NetworkX4D GUI prototype, let’s get to know first about Embarcadero Python Ecosystem: And here are the Embarcadero Python Ecosystem licenses: Which you can know more about them from the following webinars by Jim McKeeth:   What do we mean by graphs and network visualization? In mathematics, and more specifically in graph theory, a graph is a structure consisting of a set of objects, some of which are “related.” The objects correspond to mathematical abstractions known as vertices (also known as nodes or points), and each pair of related vertices is known as an edge (also called a link or line). A graph is typically represented diagrammatically as a set of dots or circles for the vertices, joined by lines or curves for the edges. Graphs are one of the topics covered by discrete mathematics. Graphs are the fundamental subject of graph theory. J. J. Sylvester coined the term “graph” in this context in 1878, referring to a direct relationship between mathematics and chemical structure (what he called chemico-graphical image). Networks are all around us, and they are extremely important in our lives. Communication networks, social media networks, biological networks, and so on are all examples of networks.   Here are to name of a few examples of graphs and network visualizations: The World’s social networks shown as a network graph A protein interaction network Coauthorship network of 2014 breaking news articles   What is the NetworkX graphs and network visualization Library? NetworkX logo. Image source: networkx.org. NetworkX is a Python package for creating, manipulating, and studying complex networks’ structure, dynamics, and functions. NetworkX provides: tools for studying the structure and dynamics of social, biological, and infrastructure networks; a standard programming interface and graph implementation suitable for a wide range of applications; a rapid development environment for collaborative, multidisciplinary projects; an interface to existing numerical algorithms and code written in C, C++, and FORTRAN; and the ability to work with large nonstandard data sets without difficulty. You can use NetworkX to load and save networks in standard and nonstandard data formats, generate many different types of random and classic networks, analyze network structure, build network models, design new network algorithms, draw networks, and much more.   What are the prerequisites for the NetworkX Library? You will need […]

Read More

Check Out This Fascinating AI Brain Data Measuring Device!

A few months ago, Jim Mckeeth and Yilmaz Yoru discussed the rapid evolution of technology and how Machine Learning and Artificial Intelligence are shaping the future. Those that are once a concept are now being materialized through various innovative technology with the help of modern ide software, programming languages, and libraries. During the webinar, Jim Mckeeth demonstrated a brain data measuring hardware known as the EMOTIV EPOC EEG Hardware, a gadget that is designed for scalable and contextual human brain research and provides access to professional-grade brain data. How does this innovative gadget work? As shown in the video, the gadget works by placing the electroencephalography (EEG) sensors on the scalp. This picks up and records the electrical activity in your brain. It gives a 3D real-time visualization of what parts of the brain are active. The records may not be as accurate as Elon Musk’s Neuralink, Emotiv still effectively shows which part of the brain is active as well as the wavelengths that can be manually configured using the Emotiv software. The reason why Mckeeth included this demonstration as part of the Machine Learning and Artificial Intelligence webinar is that the concept behind it is very much the same as the neural network. An artificial neural network is an attempt to simulate the network of neurons that make up a human brain so that the computer will be able to learn things and make decisions in a human-like manner. This is the same technology used in facial recognition software. While our brain is still more complex than all the computer hardware we have today, in theory, we can still achieve the same level of complexity with better computing power and better hardware. To see how this amazing device works, feel free to watch the demo video below.

Read More

Introducing the new Adobe Substance 3D plug-in for Unity

Whether you want to create an immersive world, establish your portfolio, or bring fresh ideas to life, optimized material workflows can help you accomplish your goals quickly. That’s why we’ve teamed up with Adobe to present the new Adobe Substance 3D plug-in on the Unity Asset Store. With the Adobe Substance 3D plug-in, artists can save time typically spent switching between tools. This works by leveraging exposed parameters on a Substance material (.SBSAR file) right in Unity, to achieve a wide variety of looks for stronger overall visuals. Substance parameters enable real-time texture updates in-Editor and at runtime. Such parametric materials can be created either through Substance 3D Designer, which supports both Unity Standard and Standard (specular) shaders, or online via Substance 3D Assets and Community Assets libraries.

Read More

WPF vs WinForms: Windows Application Development Guide

If you’re a developer who wants to create Windows-based applications, you have many development options. Two such options from Microsoft are WPF and WinForms. It can be confusing to choose the best UI library for your project. In this guide, we’ll compare and contrast the two WPF vs WinForms technologies for Windows application development and show you a better alternative. WPF vs WinForms: What is the WPF Windows Presentation Foundation? Windows Presentation Foundation was presented as a revolutionary new presentation framework for Microsoft Windows that would provide developers with capabilities to create what Microsoft believed to be compelling user experiences. It featured a managed code programming model called WinFX (Windows Framework).  At the time of its release, WPF was an advancement in building desktop applications for developers using previous Microsoft toolchains such as WinForms. It allowed designers to create XAML-based user interfaces which were adopted by the later UWP Windows application development stack. UWP has now been deprecated. While WPF has some advantages, there are some potential downsides to keep in mind when deciding whether or not to use WPF for your development projects. One such downside is that WPF can be more difficult to learn and use than other UI frameworks. WPF also has a relatively steep learning curve, and it can be time-consuming to create custom controls and layouts. Additionally, WPF can be computationally expensive, particularly for complex applications with large amounts of data. How does WPF relate to UWP?  A quick comparison of all the information between the two technologies is listed here:  WPF was launched in 2006 as part of .NET Framework 3.0 while UWP was released in 2015 with Windows 10.  WPF was targeted at the long-prevailing Windows XP OS while UWP was meant for Windows 10 development.   WPF provided support for PC, Notebook, and Tablet while UWP could support PC, Notebook, Tablet, and newer devices including Microsoft Phone, Xbox, IoT, and the Surface Hub.  Application models for WPF included the classic Windows (Win32) application platform, for runtime the .NET framework was available and supported programming languages including C#, VB and F# On the other hand UWP was designed to run on various device types, supported the C# or VB languages, and for runtime it used WinRT.  As far as the UI technology stack is concerned, WPF was built from scratch and had more than 80% managed code. XAML UI is the complete new native UI stack that comes with UWP.  WPF rendering handled the vector graphics UI based on DirectX and UWP offered the same.  Customization was very flexible and powerful for WPF to adapt and restyle UI controls, whereas UWP was familiar to WPF but not that powerful.  With WPF adaptation of control behavior is possible with the .NET API and with UWP the adaptation of control behavior is done with WinRT API.  WPF application distribution has no limitations. It does not depend on an App Store, while UWP only distributes to the Microsoft Store.  The performance of WPF compared to managed code is slower than native code and needs more memory. In the case of UWP, apps written in C# or VB are compiled to .NET Native. This way the app resembles the high-performance of native apps.  In terms of long-term support, WPF is supported as part of the .NET and UWP […]

Read More

Everything You Need To Create iOS Cross Platform Apps

Here are the slides and links for the “Everything you need to create iOS cross platform apps” webinar presented by Embarcadero MVP Ian Barker and Tech Partner and MVP Serge Pilko on 19th July 2022. When will there be a replay of the “Everything You Need To Create iOS Cross Platform Apps” webinar? The replay will be posted on the Embarcadero social media accounts, and we’ll also update this blog post with a link. It usually takes a day or two for the reply to become available. Links mentioned in the “Create iOS Cross Platform Apps” webinar Official Apple Developer site (to register as a developer and where you need to create the various certificates you’ll need): https://developer.apple.com Read more about the the Firemonkey FMX App Low Code wizard. You can also watch the following RAD Studio Low Code App Wizard video mentioned in the webinar Here is a recent article on “how to build iOS apps without a Mac“: How To Build iOS Apps Without A Mac Copies of the Create iOS Cross Platform Apps webinar slides More information on the PAServer application: https://docwiki.embarcadero.com/RADStudio/Sydney/en/PAServer,_the_Platform_Assistant_Server_Application After adding iOS as a platform to the project – right click and select “edit connection” This is where you enter the details of your Mac which is running PAServer After making the connection, the next step is to synchronize the SDK from the Mac onto the PC and into RAD Server You can blame Ian’s wife for the kitten background! Here’s the simple app running on an iPhone – in Dark mode You can download a free trial copy of RAD Studio Delphi right now and see for yourself how easy it is to create iOS cross platform apps! Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder. Design. Code. Compile. Deploy. Start Free Trial   Upgrade Today    Free Delphi Community Edition   Free C++Builder Community Edition

Read More

Extend TMS WEB Core with JS Libraries with Andrew: Leaflet

There are so many useful JS libraries yet to explore that it can be a challenge to pick what to cover next.  But this time out, we’re going to have a look at a JS library suggested by blog reader Eddy Poullet, way back in April when this blog series first started.  The request?  Leaflet, which bills itself as ‘a JavaScript library for interactive maps.’  And who doesn’t like interactive maps? Easily one of the more useful applications to be found on any mobile device. And while there are a number of other ways to get interactive maps into your TMS WEB Core applications, this is a good example where it is nice to have a few choices available.  Motivation. Google Maps and Apple Maps tend to get most of the attention, as one of these is likely to be the default when it comes to using maps on any mobile device.  And these tend to be very well integrated into their respective devices, naturally, as they’re also responsible for their respective operating systems as well.  No surprise there.  Desktop apps, and websites specifically, tend to be more commonly configured to use Google Maps or perhaps MapQuest or less commonly other providers, and far less frequently Apple Maps.  Perhaps that will change over time as developers integrate Apple Maps into their websites.  Perhaps we’ll cover that another time. But that’s historically been one of the troubles of interactive maps – jumping through hoops to get at the data.  Whether it is an API key or a developer account or some kind of license or an unhelpful rate limit.   Leaflet offers a bit of a different approach in that there’s nothing to do to get started in terms of API keys or developer account registration.  Just load up a JS library and be immediately productive. Getting Started. As has become custom, we’ll start with a new TMS WEB Core project, using the Bootstrap template, to begin with.  And then add in the necessary links to the Leaflet JavaScript and CSS files. In the project, add a TWebHTMLDiv to the form and set its Name and ElementID to ‘divMap’ just so we can reference it.  To immediately see it in action, it just needs to be initialized.  This can be done directly from within WebFormCreate like this, taken directly from the excellent documentation in their Quick Start Guide. procedure TForm1.WebFormCreate(Sender: TObject); begin asm var map = L.map(‘divMap’).setView([51.505, -0.09], 13); var tiles = L.tileLayer(‘https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png’, { maxZoom: 19, attribution: ‘© OpenStreetMap’ }).addTo(map); end; end; Doesn’t get much simpler than that.  Using the new TWebCSSClass component in combination with Bootstrap, we can add in some rounded corners here and there and immediately get a pretty reasonable interactive map that supports zooming in/out and panning around.  Leaflet up and running The interface that is rendered uses pure HTML/CSS so it is possible to change the look of things like the zoom in/out controls or other elements. The content (the map itself) consists of a collection of image tiles.  Can’t do much with those directly in HTML/CSS.  But there are a lot of things that can be done with what is being generated inside the tiles.  And speaking of tiles, while everything so far is pretty quick and easy, there are some considerations that come with the set of tiles.  In […]

Read More

5 Best Tools To Create HTML5 Grid Tables

If you have worked on developing web applications, you might have come across the need to display data in a table format. HTML5 grid tables come in handy when presenting large amounts of data in a clean and accessible manner. They organize data in rows and columns and allow end-users to perform various actions on that data, such as sorting, filtering, in-cell editing, and data exporting. In this post, let’s go through five popular tools for creating a fascinating HTML5 grid table. You can review and compare their features and pricing options to pick the best for your needs.   Why Sencha Ext JS Is The Best Solution For An HTML5 Grid Table?   Do you want a robust grid that can manage millions of records and process data extremely fast? Then, Sencha Ext JS should be the tool you are looking for. The Sencha Grid component enables developers to visualize any amount of data effectively using HTML5 grid tables. Sencha grid offers a wide range of features, from basic features like editing, grouping, filtering, and data locking to more advanced features like drag and drop, drill down, live data streaming, and customized themes and layouts. Developers can retrieve and display data in local or remote sources via AJAX, Restful, and JSON methods. Sencha offers demos of their main grid features to users. Moreover, they provide a  30-day free trial for users to try out Sencha grids. Main Features of Sencha The ability to handle a massive amount of data. Sophisticated features that make data management much easier ( ex: filtering, grouping, pagination and infinite scrolling, and live data streaming). High customizability. The ability to export data in CSV, HTML, XLS, and PDF formats. Compatibility with various browsers and web, mobile, and desktop platforms. Sencha mainly comes with two pricing options called perpetual license and annual subscription. Both options have three editions called community, enterprise, and professional. You can clear any doubts about these packages by referring to their FAQ page or submitting an inquiry.   Why Is w2ui Suitable To Create An HTML5 Grid Table? w2ui is a modern JavaScript UI library dependent on the main jQuery library. It basically utilizes HTML5 and CSS3 for front-end development. Apart from grid tables, this library contains all the other popular UI widgets such as layouts, tabs, sidebars, pop-ups, and forms. Therefore, W2ui is an integrated solution for all your front-end development needs. This library clearly separates the app data and the logic with a declarative syntax that is easy to reuse. This library is lightweight and faster than many other grid libraries on the market. The complete library has a minified size of only 69KB leading to significantly faster loading and execution times. w2ui is compatible with all modern browsers. Furthermore, this library is free to download and use. Main Features of w2ui Comes with a rich feature set, including resizable columns, frozen columns, infinite scroll, reordering, infinite scrolling, etc. Lightweight library with a small footprint. The ability to create your own color schemes.   How Successful Is jQuery Grid For Creating HTML Tables? jQuery grid is a supportive plugin for the major jQuery library. Thus, it is compatible with many browsers. This plugin allows displaying tabular data on web pages. It supports all the primary grid features such as data […]

Read More

How To Build iOS Apps Without A Mac

To effectively answer how to build iOS apps without a Mac, we first need to know why some form of a Mac is always going to be necessary for a very small part of this process even though we discuss here how you can use a Windows computer to design and program macOS and iOS apps without needing to constantly swap to a Mac. Also, we will read how RAD studio is an excellent app builder software for Mac and iOS apps. RAD Studio is a Windows application, and you can use it to design and code your apps 100% on Windows. The only time you need a Mac is to perform the final compilation. Why do I still need a Mac for creating macOS and iOS apps? Apple have created a situation where only Xcode can be used for building and code-signing iOS apps. Xcode is only available for macOS. Thus, we need a Mac to build iOS apps. Unfortunately, having an up-to-date Mac available for everyone or the whole team is not easy, cost-effective, or maintainable. So, we need a more straightforward solution. Luckily, now there are methods available to either run Xcode without a Mac or use a Mac without owning it. To compare things with Windows, we will briefly study the app-building process on Windows. Why Is Windows the most popular development environment? Windows is the most popular environment for writing Windows software, and there are many reasons for this popularity. For example, Windows has a greater ecosystem, cheaper hardware, a bigger market, countless tools, ease of use, excellent documentation, and a stronger community, to name a few. Moreover, Windows is also a popular choice for developing cross-platform apps. Many tools like Delphi and C++ Builder are available for fast cross-platform development needs. Why develop for mobile devices? While Windows usage is widespread in desktop environments, the story is different in the mobile world. The position of Windows is unsubstantial in the mobile arena, but the web traffic dominance of mobile users [1] (currently 56%) is also increasing compared to desktop. This trend increases developers’ need to build more for the mobile world or cross-platform apps ever. Fortunately, it is easy to develop for mobile with tools like Delphi RAD Studio. Delphi and C++ are among the most popular cross-platform programming languages. For example, suppose you are searching for the best low-code app builder. In that case, you can see how to build iOS apps without a mac for developing a fully functional enterprise-grade restaurant ordering app from a template in Delphi. Two giants, Android and iOS, dominate the mobile market. It is straightforward to develop native mobile apps for iOS and Android. Take a look at how to build iOS apps without a mac to create such Apps quickly and easily. Because Android is more popular, it is easy to understand the importance of an android app builder software. But new developers should also consider iOS development with the best native iOS app builder for the following reasons. Why develop for iOS? Why should one care for iOS development if Android has a 71% market share? [6] Well, there are many solid reasons: No app can reach maximum users until it is available for both iPhone and Android. While the Android market segment size is […]

Read More