web development – What is a good strategy for moving to Continuous Deployment?

My Goal

I’m currently in the process of trying to get my company to adopt Continuous Deployment of the web product I work on. As far as I know, we’re the first product in the company to attempt this. I’d like to know any pain points people have run into when moving to CD or tips people can give me who currently work at a job that uses CD. Is there a specific strategy you used to move your company to CD?

Steps I’ve taken:

In order to get my product ready for CD, I’ve taken several steps.

  • Metrics, metrics, metrics. Because it’s going to be a culture shift to go from deploying once every 3 months to daily, I know that I’ll need data to support my ideas. I’m starting to track application performance, bugs per release, number of releases, and test coverage percentage.

  • I built out a pipeline that can deploy to a small subset of production servers to make sure the release works without affecting a large number of users.

  • I built out automated UI test suits

Does anyone have a specific strategy/actionable steps that they used to move their company to CD?
I’m also looking for any general advice/things to watch out for but that doesn’t fit the Q/A format very well.

gmail – How can I reverse moving messages from archive to trash?

Concerned about space in my gmail I just took a rash and stupid action, and “deleted” everything from the “archive.” I did this on mozilla thunderbird on my mac. It’s clear to me I haven’t lost the messages (They’re now in my gmail trash, plus I have a second laptop that until it syncs has everything where it belongs, and time machine backups from a couple weeks ago….), but I am unsure how to restore the messages (i.e. get them all back in their appropriate folders). I would be happy with either

1) the best way to restore my gmail based on the version sitting on thunderbird on another computer or time machine backup

2) the best way to reverse this mass “deletion”

Do you have suggestions?

unity – How do I stretch a mesh with a cube bounding box by moving the cube’s corners

Basic Problem in 2D

I have a square space, which contains an irregular pattern. I want to move the corners of this square arbitrarily and have the pattern within stretch evenly to fill the space.

Illustration of square being stretched into an arbitrary quad

The simplest solution I can conceive would be:

  • For every point in the square, express it’s position in relation to the square (ie. an x,y value between 0 and 1 where 0,0 is the bottom left corner, and 1,1 is the top right corner)
  • Use those values to interpolate between the bottom left and top right corners of the deformed quad to find its correct position in that quad.

I think that may work fine in 2D, but it seems like a very naive approach that may give odd looking results in 3D.

Real Problem in 3D

The above is a simple formulation of the problem, but what I’m actual to aiming for is to recreate the irregular grid cityscape illustrated here and here.

grid illustration

I have the grid, but now I need to deform the tiles (which are cube shaped by default) to fit into the grid’s irregular spaces. Every side of a space is straight, the only thing that’s moved from a regular square is the corners.

I suspect that if I follow the simple method I explained above (but in 3 dimensions) that the skewed tiles won’t look very good, and I think there must be some other more well accepted method of accomplishing this (such as the coordinate systems described in this paper).

This seems like quite a fundamental challenge which would come up all the time, but I can’t find anything on the internet that explains the best way to handle it in simple terms. Mainly I get Unity questions complaining about unintended distortions, or I get dense mathematics papers which seem only indirectly related. I suspect I just don’t know the right words to search for.

The main thing that makes me suspect that my solution above wouldn’t work well, is this paper: “Mean value coordinates for quad cages in 3D” which directly addresses my goal, and shows how different methods can cause unintended distortions. Unfortunately though, the explanation is too advanced for me to easily understand.

france – Validity of Czech driving license for a non-EU national when moving to another EU country

My Bolivian partner currently lives in Czechia through a work Visa and they have a Czechia-issued, European driving license.

Now they are thinking of moving to France and they are studying to take the French driving test, as they think that when their Czechian work visa is no longer valid, their driving permit will be suspended as well.

I was curious about this so I tried to find a source. I browsed through 1Act No. 326/1999 Coll., on the Residence of Aliens in the Territory of the Czech Republic as well as a few other sites, but I haven’t been able to find anything related to this topic.

Does a non-EU national with a Czechian work visa lose their Czechia-issued, European driving license rights when they lose their work visa due to moving to another country?

Moving photos from phone

I am trying to transfer photos from an android phone to my PC using a USB cord. The PC imports all the photos except the very recent ones taken about 1 month ago. I am wondering if I need to clear anything to accomplish what is usually a simple feat.

object oriented – Moving a Turtle at a constant speed in a Python

I am making a simple Object-oriented projectile simulation program in python. I am just using the Turtle and Math modules. The problem is when I try to move my projectile (as a test before integrating some equations) it does not move.

import turtle
from turtle import Turtle
import math

window = turtle.Screen()
window.title("Projectile")
window.bgcolor("black")
window.setup(width=800, height=800)
window.tracer(0)

def drawLine():
    line = turtle.Turtle()
    line.penup()
    line.pencolor("white")
    line.pensize(10)
    line.goto(-400, -300)
    line.pendown()
    line.forward(800)
    line.penup()
    line.ht()

class Projectile:
    def __init__(self, x, y, color, shape, a, b):
        self.turtle = turtle.Turtle()
        self.turtle.goto(x, y)
        self.turtle.color(color)
        self.turtle.shape(shape)
        self.turtle.shapesize(a, b)

    def launch(self, x, y):
        self.turtle.penup()
        self.turtle.setx(self.turtle.xcor() + x)
        self.turtle.sety(self.turtle.ycor() + y)

running = True
while running:
    window.update()

    drawLine()
    projectileOne = Projectile(-290, -290, "red", "circle", 1, 1)
    projectileOne.launch(25, 25)

This is supposed to move my turtle, doesn’t it?

self.turtle.setx(self.turtle.xcor() + x)
self.turtle.sety(self.turtle.ycor() + y)

I don’t understand what’s happening. Why isn’t the projectile moving?

magento2 – How to prevent dropdown menu from closing when moving between top level items?

We’re using a dropdown menu modified from snowdog and magento, and our top level items have 6 options. It’s a pretty standard menu; when hovering over the top level items it drops down and shows the subnav items. However, when moving in between the main items, the menu briefly closes before reopening with the options for the next item. My initial thought was to write some javascript to detect when the menu is already open, and if so, prevent the event from bubbling up the DOM, but I have a feeling the answer is probably more simple than this solution. Maybe using a transition delay to make the hovering more forgiving?

If I were to try adding a transition delay, would this be done in our navigation.less file? I inherited this code base and things are a little messy, so I’m not positive how to start going about this.

is live view or mirrorless suitable for telephoto shots of moving subjects?

(I know we’re straying into the world of video here, but I feel it’s still relevant)

Why is live view harder than “TTL”?
because you are not using the senses you were born with – that your eye & hands are easily co-ordinated to match direction, distance, speed & focus (of attention, not sharpness of image).
Catch a ball. No maths required, you just do it.
Catch a ball whilst watching your live view… maybe not.

Will you improve over time?
Yes, otherwise the entire movie industry would be full of missed shots. Almost no cinematographer has his eye right through the lens these days, there’s always some remote aspect to it – in effect, live view. Watch a steadicam operator, gazing towards his feet, where his monitor is, whilst his camera is pointed firmly at the action in front of him.
There’s a dual purpose in that, he can see what he’s shooting whilst not falling over anything.
Many pro video cameras have the same as DSLR or mirrorless cameras, a TTL & separate moveable screen(s) for remote viewing. The use of the eyepiece is becoming much more rare, the remote ‘live view’ is more common.

So, for stills what does it mean?
Mirrorless cameras currently still have both options.
The “TTL” viewfinder is a teeny TV screen, but it’s still really “through the lens”, with your face pressed against the camera, the same as ever..
The live view you’ll still have to train towards, just like every ‘movie’ cameraman working today.

Your potential pitfall, for fast action, is the frequency with which your live view updates on your screen. Modern high-end cameras have truly ‘as live’ playback; no discernible delay at all. An old entry-level consumer DSLR is going to be pretty laggy by comparison.

Unreal AI with behaviour tree not moving

I am making a very simple blueprint. I am making an AI that goes to the player character position. For this, I had made:

  • A Enemy Blueprint, so it would serve as a general enemy management.
  • A Enemy Blackboard, with only one variable: PlayerObj
  • A Enemy BehaviourTree:

Enemy BehaviourTree

Enemy AIBlueprint

I have my NavMesh configured, and also I have set the Auto Possess AI to my Blueprint. The Pawn section is like this:

Pawn Enemy Configuration

The problem is that it is not working – it stays at the place and nothing happens. I don’t really know why, because the first time I have run it, it worked flawlesly, but the next, is like it does not work.

I’m using Unreal Engine 4.24.3