Release Notes Report
The
following list enumerates all of the enhancements and resolved issues.
PGR software and firmware version
numbering scheme / standards
Grasshopper3 - USB3 - 2.25.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
50166 - Image is bad in raw pixel format for 4x4 Binning(F7M5) mode on
IMX250/252/264/265 mono model
49907 - Corrupted images at maximum frame rate when trigger mode 0 applied.
49903 - Corrupted images when mirror image applied in binned modes
49612 - Trigger Mode 15: The number of acquired images is not equal to
determined by parameter.
49336 - Camera may not stream properly with USB2.0 interface
49153 - Dropping frames when streaming in Mode 0, 1 and 2
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 2.24.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
48730 - Saturated areas appear pink in F7M7 on GS3-U3-41S4
48009 - LUT RGB channels not available via genicam for pregius cameras
46965 - Image artifacts in initial image after changing exposure time
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 2.23.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
47472 - Feature request: add 4x4 Binning(F7M5) on BFLY-PGE-23S6
43131 - Embedded shutter for Trigger Mode 1 (Bulb Shutter)
Resolved Issues:
46361 - Led may stay red when connecting with a USB2 cable to PC
45919 - Corrupted image when ROI width is set to 16 when using 12bit modes
45086 - BalanceWhiteAuto/LineDebouncerTimeRaw/ExposureAuto IsImplemented
changes based on the Pixel Format etc.
44979 - chunk data in HDR mode is incorrect
43571 - LED indicator turns off if USB3 cable is not plugged in
36406 - "Exposure Auto" control missing if "Trigger Mode"
is turned on and "Trigger Selector" was set to Exposure Active
previously
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 2.22.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
44020 - Cannot set absolute brightness setting to the reported maximum value
40717 - Cannot clear the serial port error
37728 - GS3-PGE-23S6 HDR mode not working in Trigger Mode 15
- ERRATA (list of known issues with this version):
43571 - LED indicator turns off if USB3 cable is not plugged in
Grasshopper3 - USB3 - 2.21.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
43461 - Camera LED is always off and can't be enumerated on PC after hard power
reset using memory channel 1
43263 - Embedded shutter information doesn't match real shutter in the first
trigger in trigger mode 0
43262 - New gain value takes two triggers to take effect
42373 - First image after changing ROI is torn when the camera is in trigger
mode
41588 - Expose the new xmit frame counter via Genicam
27278 - Packetsize and framerate may not be correct after restart the PC
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 2.20.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
40650 - GS3-U3-41C6C firmware <IP_ADDRESS> image looks green-yellow with default
setting
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 2.19.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
35244 - Add GenICam support for quick cycle HDR
Resolved Issues:
40650 - GS3-U3-41C6C firmware <IP_ADDRESS> image looks green-yellow with default
setting
39907 - BFLY-PGE-23S6 exposure jitters periodically under trigger mode -
resulting in a brighter image
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 2.18.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
38942 - GS3-U3-41C6C WB update in trigger mode will leads bad top rows
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 2.17.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
39775 - GS3-U3-IMX250/252: no strobe in free running mode
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 2.16.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
none
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 2.15.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
none
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 2.14.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
37562 - USB3 camera connected to Intel NUC may not be enumerated properly on
bootup
37190 - Possible vertical line in trigger mode on GS3-U3-41C6 cameras
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 2.13.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
36358 - Incorrect and constant CRC in chunk with small ROI
36067 - Possible torn/corrupted image when switching from TM0 to TM14
36049 - Rearrange UserOutputValue under UserOutputSelector
35166 - GS3-U3-23S6 TM14 overlapped triggering not working properly in <IP_ADDRESS>
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 2.12.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
34970 - Add User Defined Values functionality
34718 - Update ExposureEnd event notification ID Counter functionality
Resolved Issues:
36212 - Camera is not ready for trigger if trigger mode is enabled before
camera is fully powered up
36049 - Rearrange UserOutputValue under UserOutputSelector
35336 - First image after changing format 7 mode is corrupted
35049 - Add "Remove Parameter Limits" and "Chunk Data
Control" to memory channel
29669 - Remove BlackLevelEnable feature as BlackLevel is read-only
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 2.11.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
33481 - Read on-camera frame counter without having to retrieve an image
32510 - Add FrameTriggerWait support
31400 - Feature request: Extend gain range of GS3-PGE-23S6/GS3-U3-23S6
Resolved Issues:
34348 - Users can accidently overwrite factory default user set
34296 - One port on the ACC-01-6000 cannot enumerate GS3-U3 correctly
34094 - First triggered image is brighter than other triggered images
33764 - Loading default user set locks gain control
31886 - GS3-U3-28S4C-C Bad image from the camera when switching between Format7
mode 0 and mode 7
31755 - Overlapped Triggering in TM15 for GS3-U3-41C6 cameras Controlled by TM0
and TM14
27141 - Factory default for U3V registers is non-zero
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 2.10.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
33489 - Possible pink frames in Trigger Mode 0
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 2.09.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
32575 - Auto white balance in RAW8 on GS3-U3-23S6
32361 - Increase the max number of images allowed in the frame buffer
29339 - Report EmbeddedShutter while using TriggerMode1 (Bulb)
27326 - Add trigger mode 14 support for GS3-U3-23S6M
26606 - Add Time Stamp in chunk data for USB3 Vision Firmware
Resolved Issues:
32656 - First image on start up in trigger mode is corrupted
32594 - Matrox - SI Payload Size reported as 0 when powering over GPIO first
32411 - Reorganize LineMode (Input and Output) and LineSource selections
(ExposureActive, ExternalTriggerActive, UserOutput)
32279 - Changing default balancing settings of Mode 1&5 (FPGA binning
modes) for GS3-U3-41S4C
32022 - UserOutputValue is in incorrect location in GenICam XML
30324 - A&B Software: Half framerate using a GS3-U3-41C6NIR
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 2.08.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
30542 - Feature Request: PGR HDR mode for GS3-U3-23S6
26756 - Event notification support for Start/Stop Acquisition, ExposureEnd
Resolved Issues:
31088 - Pin state does not show up in embedded information
30281 - The max image size does not change back to original when switching
video modes
29410 - GS3-U3-23S6M IMX174 - need to reduce packet size to reach max shutter
time
- ERRATA (list of known issues with this version):
27326 - Add trigger mode 14 support for GS3-U3-23S6M
Grasshopper3 - USB3 - 2.07.3-001
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
31295 - Requested frame rate does not match the received in RGB8 and YUV444
- ERRATA (list of known issues with this version):
27326 - Add trigger mode 14 support for GS3-U3-23S6M
Grasshopper3 - USB3 - 2.07.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
32262 - Add chunk data support
- ERRATA (list of known issues with this version):
27326 - Add trigger mode 14 support for GS3-U3-23S6M
Grasshopper3 - USB3 - 2.06.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
30034 - Auto White Balance function does not work
29487 - Image looks green in Mode 4 and turns completely purple at certain
packet sizes
- ERRATA (list of known issues with this version):
27326 - Add trigger mode 14 support for GS3-U3-23S6M
Grasshopper3 - USB3 - 2.05.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
27892 - Trigger polarity incorrectly restored from memory channel
24180 - Max frame rate and packet size reported incorrectly after PC reboot
- ERRATA (list of known issues with this version):
30034 - Auto White Balance function does not work
27326 - Add trigger mode 14 support for GS3-U3-23S6M
Grasshopper3 - USB3 - 2.04.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
29487 - Image looks green in Mode 4 and turns completely purple at certain
packet sizes
27482 - NI-Max Error 0xBFF6901B Timeout
- ERRATA (list of known issues with this version):
30034 - Auto White Balance function does not work
27326 - Add trigger mode 14 support for GS3-U3-23S6M
Grasshopper3 - USB3 - 2.03.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
29094 - Initial 2.X firmware release - USB3 Vision Support
- ERRATA (list of known issues with this version):
27482 - NI-Max Error 0xBFF6901B Timeout
27326 - Add trigger mode 14 support for GS3-U3-23S6M
Grasshopper3 - USB3 - 2.02.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
none
- ERRATA (list of known issues with this version):
27482 - NI-Max Error 0xBFF6901B Timeout
27326 - Add trigger mode 14 support for GS3-U3-23S6M
Grasshopper3 - USB3 - 1.16.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
27896 - one CMV4000 is found to having "received frame rate" always
half of "requested frame rate" in flycapture2 with firmware 1.15 and
2.1.3
- ERRATA (list of known issues with this version):
27482 - NI-Max Error 0xBFF6901B Timeout
27326 - Add trigger mode 14 support for GS3-U3-23S6M
Grasshopper3 - USB3 - 2.01.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
27560 - first ROI image corrupted in trigger modes
- ERRATA (list of known issues with this version):
27896 - one CMV4000 is found to having "received frame rate" always
half of "requested frame rate" in flycapture2 with firmware 1.15 and
2.1.3
27482 - NI-Max Error 0xBFF6901B Timeout
27326 - Add trigger mode 14 support for GS3-U3-23S6M
Grasshopper3 - USB3 - 2.00.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
27405 - Corruption in Mode 0 Mono 12 large ROI
26990 - Image exposure flicker with auto gain and/or shutter when brightness is
high
23229 - USB 3.0 cameras - minimize latency to the host
- ERRATA (list of known issues with this version):
27560 - first ROI image corrupted in trigger modes
27482 - NI-Max Error 0xBFF6901B Timeout
27326 - Add trigger mode 14 support for GS3-U3-23S6M
Grasshopper3 - USB3 - 1.15.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
27405 - Corruption in Mode 0 Mono 12 large ROI
26990 - Image exposure flicker with auto gain and/or shutter when brightness is
high
23229 - USB 3.0 cameras - minimize latency to the host
- ERRATA (list of known issues with this version):
27560 - first ROI image corrupted in trigger modes
27482 - NI-Max Error 0xBFF6901B Timeout
27326 - Add trigger mode 14 support for GS3-U3-23S6M
Grasshopper3 - USB3 - 1.14.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
26280 - Add Quick Cycle HDR for GS3-U3-41C6M-C
23229 - USB 3.0 cameras - minimize latency to the host
- ERRATA (list of known issues with this version):
27405 - Corruption in Mode 0 Mono 12 large ROI
27326 - Add trigger mode 14 support for GS3-U3-23S6M
26990 - Image exposure flicker with auto gain and/or shutter when brightness is
high
Grasshopper3 - USB3 - 1.13.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
26885 - Release made for internal changes only
24952 - Feature request - cycle time register on a USB3.0 camera
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 1.12.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
25285 - Shutter gives wrong value (clamped to max) first time an extended
shutter is set
- ERRATA (list of known issues with this version):
none
Grasshopper3 - USB3 - 1.11.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
24762 - add support to query the number of sensor taps in the current mode
24663 - Received frame rate is slightly lower than the requested on full frame
size images
24539 - Corrupted images with short shutter ~0.032ms
- ERRATA (list of known issues with this version):
none
Grasshopper3 - 1.10.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
24341 - GS3-U3-91S6M imaging at gain = -9 results in washed out images
24288 - GS3-41C6C color bayer wrong
- ERRATA (list of known issues with this version):
24539 - Corrupted images with short shutter ~0.032ms
Grasshopper3 - 1.09.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
23969 - USB2 streaming: 12 bit modes images corrupted
- ERRATA (list of known issues with this version):
24288 - GS3-41C6C color bayer wrong
Grasshopper3 - 1.08.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
23282 - Slower pixel clock for Mode 7 to minimize dark current
Resolved Issues:
none
- ERRATA (list of known issues with this version):
none
Grasshopper3 - 1.07.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
23062 - Corruption along bottom of image in narrow ROIs
- ERRATA (list of known issues with this version):
none
Grasshopper3 - 1.06.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
none
Resolved Issues:
24024 - Internal release
- ERRATA (list of known issues with this version):
none
Grasshopper3 - 1.05.3-000
- CHANGE LIST (list of updates with this version):
Enhancements:
19394 - Initial firmware release GS3-PGE-23S6 and GS3-PGE-91S6
Resolved Issues:
none
- ERRATA (list of known issues with this version):
none
©
2016 Point Grey Research, Inc.


currently owns the Washington Post. This creates an obvious conflict of interest when it comes to their reporting, seeing as they are directly controlled by Jeff Bezos.
Breitbart, though it isn't the most reputable source (for obvious reasons), plays a role in our current discourse. Founded by Andrew Breitbart, this outlet is known for providing reactionary talking points that are often parroted by more influential people. It is funded by Robert Mercer, who gave at least $10 million to the outlet. That's quite interesting, seeing as Robert Mercer has a vested financial interest in loosening government restrictions in the banking sector (something that Breitbart supports).
Often portrayed as the stereotypical unhinged conspiracy theory ridden nuthouse, Alex Jones' Infowars goes above and beyond that.
I didn’t think A.J. could top the gay frogs bit, but here we are. pic.twitter.com/pGk4NvP1to
— Chuck Ross (@ChuckRossDC) May 1, 2020
This might seem like a parody, but it becomes scary when you think about the people that believe this. Imagine the type of person that believes this, and just how much dammage they can do to society, now imagine an army of these people. That is the true danger of Infowars.
Chances are, you haven't unless you know about investing. Murdoch belongs to a very powerful family, one that is worth about $400 Billion. Rupert Murdoch is the proud owner of News Corp, the people who publish the DOW Jones. Despite being one of the least nefarious billionares, there is still a potential conflict of interest when dealing with massive amounts of wealth and investment that people like Murdoch have.


When it comes to creating a Mesh
for OpenFOAM, I always look for the most modular way to do things:
- If a great control over the mesh is required, m4 macro language and
blockMesh
are good choices. They are somewhat tiresome to use, but as long as they allow me to do pretty much anything I can think of; I don’t care! - If I can live with little control over the mesh, (which is a more frequent case) I usually follow a
Model-it-with-CAD-then-cfMesh-it approach; and there are two reasons:- If I’m to loose some control over the mesh anyway, why struggle with the very-long
snappyHexMeshDict
? - Parameterization of cfMesh’s
meshDict
is much easier.
- If I’m to loose some control over the mesh anyway, why struggle with the very-long
This post is part of a longer series on how to make use of OpenSCAD capabilities to perform CFD-like mesh generation. The typical workflow you are supposed to follow can be summarized in these three key points:
- Create a
parametric
OpenSCAD model for your problem’s geometry. - Use
cfMesh
to generate quality meshes (which can also be parametric). - Simulate the case with OpenFOAM, change some design variables (Geometry, Mesh or Simulation properties) and go back to step
1
or2
as needed.
DISCLAIMER:
Every Code snippet in this post is a fully-functional OpenSCAD “script”. I strongly recommend you follow through by “trying” the commands!
Before we start …
Before we dive into details of how to create parametric models in OpenSCAD, I would like to introduce you to some important tips that you will find very useful along the course of your learning process:
- You can run OpenSCAD scripts here: openscad.net if you don’t want to install it on your system.
- OpenSCAD is written in C++, and it’s a language by itself.
Variables
in OpenSCAD are a bit weird: They are set at compile time rather than at “run” time (We’ll talk about this later, you only need to know that you should never change the value of a variable after setting it).- Just like pretty much any other CAD software, you don’t need to stick with the standard library: You can easily develop your own, and use others libraries.
- Learning the basics of OpenSCAD shouldn’t take longer than 15mins!
- OpenSCAD binaries are available for a wide range of OSs but I’m focusing on Linux distros (Command-line usage … etc).
- You don’t need to write code with the awful default text editor that comes with OpenSCAD: Use your own text editor instead (I’m using VIM with VIM-OpenSCAD plugin).
Setting up OpenSCAD
On Ubuntu-based distros, installing OpenSCAD is as easy as executing the command:
$ sudo apt install openscad
But this may install a relatively outdated version of the software (Ubuntu 16.04 LTS repos have the 2015.3 version, which is good for now). If you want the latest release, follow the instructions provided in the
Official OpenSCAD Download page.
The default interface will combine a basic text editor, a preview/render window (to preview the created models), and a *”log” console* (displays useful information).
I just can’t stand the default text editor so I’m using VIM instead (you can use your favorite text editor). You just have to make sure that Design >> Automatic Reload and Preview
option is turned on (in OpenSCAD); This way, every time you save your .scad file, it gets reloaded and models are automatically previewed.
Of course, VIM doesn’t have native support for OpenSCAD’s language, that’s why I needed to install a syntax-highlighting plugin first: Vim-OpenSCAD
Also, you may need to create a directory to hold all your OpenSCAD projects (Store all of your OpenSCAD scripts in this directory) :
$ mkdir -p ~/OpenSCADProjs
Just do it, OK! It eases dealing with library imports later!
First steps: Learning the Syntax
OpenSCAD’s language is actually very simple, and can be learned in no time; In this section we’ll try to break down the most interesting features of the language (from a beginner’s perspective of course).
General syntax
- Every statement in an OpenSCAD “script” has to end with a semi-colon.
- A simple statement can create shapes, transform them, perform Boolean operations … etc.
- Single-line comments are triggered with
//
, and multi-line ones are enclosed between/*
and*/
just like in other C-like languages.
Variables in OpenSCAD
Variables in OpenSCAD are set during compile-time; Their behavior is different from what you would expect. To illustrate this, let’s take a simple example:
Suppose you have this Python script (Or the equivalent in any other well-known language which implements some sort of mutable data approaches):
# This is a comment
do_something_with(x) # Hey! x is not initialized!!
x = 1 # x variable will have a value of one
do_something_with(x) # Will do something with x = 1
x = 5 # Now x will have the value of 5
do_something_with(x) # Will do something with x = 5
In OpenSCAD, things are quite different:
// This is a comment
do_something_with(x); // OK, this will do something with x = 5
x = 3; // x will have the value of 3 for a moment
y = x+1; // y will have the value of 6
x = 5; /* The final value of x, which is used in all other instructions */
See? Instead of treating the script line by line; OpenSCAD collects all variable values first (If a variable is defined twice, the last value wins), then processes the remaining instructions.
Variable assignment is very simple varName = varValue;
, and you can use arithmetic expressions in varValue
.
As a general rule:
- Never change a variable’s value with another instruction in your script; Create new variables instead. Think of these variables as immutable.
You can also think of OpenSCAD’s variables as C’s constants; Don’t mess with them unless you know what you are doing!
OpenSCAD Vectors (Lists)
You can define vectors in the following way:
a = 2;
b = 3;
// Vector creation
vec = [a,b];
// Display vector value in the console
echo(vec);
// Matrix creation, trivial
mat = [vec, vec+[2,4]]; // Some Vector operations are supported
// Access to elements:
echo(mat[1][0]); /* Indexing follows C conventions */
Vectors are represented as simple lists; and some of their operations are supported by default (The ‘+’ operator can handle both floats and vectors).
The echo
command displays the value of the variable in the console (Look for lines starting with ECHO:
in the few first lines of the log).
Indexing starts from ‘0’, so vec[0]
represents the value of a
(Just like in any other C-based language).
Can you predict what the result of the last instruction in the previous snippet would be?
Beginners may be tempted to use ranges to define vectors, which is not quite right!
ran = [1:10]; // Range starting from 1, ending with 10 (step =1)
echo(ran); // The range doesn't expand, huh !!
echo(ran[3]); /* Should output the 4th element in ran, Right?
Well, it gives "undef" instead !! */
Ranges are not vectors, they were created for usage with loops only!
Although, you can define a vector from a range in the following way:
ran = [1:4]; // Range starting from 1, ending with 4 (step =1)
vec = [for (i = ran) i*2 ]; /* vec is a vector */
This will result in the following vector: [2 4 6 8]
OpenSCAD functions
Functions in OpenSCAD are meant to take in some values, perform calculations and return the results. The anatomy of a function looks like this:
function funcName(arguments) = outputValue ;
The arguments are local and do not conflict with external variables.
Say I want to test whether or not some input variables x,y
are satisfying a certain constraint x+y>=0
. This can be achieved using a function:
// Define the function
// x, y are local to the function here
function testConst(x,y) = (x+y>=0) ? 1 : 0;
// Now how to call that function?
// You can't do this:
testConst(1,2);
// Because you'll get "Unknown module" error (Modules are something else)
// But you can definitely do this:
a = testConst(1,2);
// and
echo(testConst(1,2));
The expression (x+y>=0) ? 1 : 0
is equivalent to:
if (x+y is greater than or equal to 0)
{Give the value 1 to the function }
else // if x+y is strict. less than 0
{Give the value 0 to the function }
Of course, you can also define argument-less functions:
/* Define a function named noArgsFunc that returns two random
numbers from the range (0,10). */
function noArgsFunc() = rands(0,10,2);
// Call it
echo(noArgsFunc());
What if I want to call the function I’m defining inside itself? This is also supported (called recursive functions). You only need to ensure the recursion is terminated somehow:
// There is no factorial function in standard library, so define one
function fact(n) = ( (n==1 || n==0) ? 1 : n*fact(n-1));
echo(fact(4));
Note that the definition of fact
is basically a conditional statement where the same function is called again if the condition is false
:
- Test if n is equal to 1 or 0; If it’s the case, return the value of 1.
- If not, multiply n by the factorial of n-1.
- This process is recursively performed until
fact(1)
is reached; The recursion is then terminated by the conditional statement.
The include
“directive”
OpenSCAD uses two commands to include external OpenSCAD code into the current model:
include <file.scad>
will act as if you copy-pasted the content offile.scad
into your current file. It will evaluate all instructions in the imported library (including variable initialization … etc).use <file.scad>
will only include meta-code (function and module definitions) fromfile.scad
, but doesn’t execute any other commands (No variable initialization, no shape creation … etc)
Basic OpenSCAD commands
Now that you’ve mastered the basics of OpenSCAD’s usual-programming-language features, let’s get to the real deal:
2D and 3D shapes
Try this:
circle(r=10);
/*
r represents the radius of the circle.
10 is the radius value, in mm by default.
The circle is in X-Y plane by default.
And it's center is at the origin.
By default, The circle is "coarse" (low resolution).
*/
// You can specify a diameter instead
circle(d=10);
// And you can increase the resolution
circle(r=10, $fn=40);
/*
$fn is the number of segments to draw a full circle
*/
The same applies to 3D shapes:
sphere(10, $fn = 40); // if no "r=" or "d=", then it's a radius
cube([10,30,10], center=true);
/*
[10,30,10] specifies [width,depth,height] (along [x,y,z])
center= true | false specifies whether the cube should be
centered at the origin.
*/
There are few other pre-defined shapes which you can find here: OpenSCAD CheatSheet
Transformations and Modules
Now that you’ve created some shapes, you’ll want to do some operations on them;
That’s exactly what modules are meant to do.
They can be used to define shapes, or even operators, which are then added to the language (You can also import them from an external file).
An example of pre-defined module is the translate
command:
// This is not the definition of translate
// This demonstrates its usage.
translate([0,0,20]) sphere(10);
/* Which translates the sphere in the z-direction by 20 mm */
This command is called an object module
, ie. operates on primitives to define new objects. You can define an object module in the following way:
module name ( parameters ) { actions }
For example, let’s say I want to create an ellipsoid; Basically, I would write something like this:
scale([10,20,10]) sphere(1, $fn=30);
/* scale is a transformation module */
In a more modular way, I would define a special module which takes some vectors as parameters and creates the ellipsoid for me:
/*
Define a module named ellipsoid
Parameters:
- dims: vector for dimensions, default value: [10,20,10]
- center: coords of the center of the new object,
defaults to the origin.
What's between {...} is the actions to take.
Read it like this:
1. Create a sphere of radius = 1mm
2. scale it in all directions according to the vector 'dims'
3. translate the resulting object by the vector 'center'
*/
module ellipsoid(dims=[10,20,10], center=[0,0,0]) {
translate(center) scale(dims) sphere(1, $fn=30);
}
// Now call the module to create different objects:
// Ellipsoid with default values
ellipsoid();
// Change only the center
ellipsoid(center=[0,0,30]);
// Change all default parameters
ellipsoid(dims=[10,10,5],center=[0,40,0]);
Note that you can omit the
;
at the end of a module’s definition.
If you think about it carefully, this approach is useful only if you want to take a specific “object” and do some operations on it in the sole purpose of creating a new object (That’s why it’s called object module). What if you need to operate in the same way on a set of different objects?
To illustrate, assume we have a sphere, a cube and a square, and we want to create a bunch of duplicates of each object in a specified direction. Indeed, we would need an “operator module”, a module that doesn’t care about objects but only cares about what operations to perform on them. For this, we’ll need a new concept (children
of a module):
/*
Create a module named duplicate.
Parameters:
- num: The number of duplicates (original object included).
- space: The space between two consecutive objects.
- dir: normalized direction vector, defaults to the x-direction.
This will take the first object in the children, and translate it by the
required amount each time (in the for loop)
*/
module duplicate(num, space, dir=[1,0,0]) {
// Starting the range with 0 will preserve the original object
for (i = [0:num-1]) translate(dir*space*i) children(0);
// Uses only the first element of "children"
}
// Five duplicates of a sphere in the x (default) direction
duplicate(num=5, space=20) sphere(5);
// Five duplicates of a cube in z-direction
duplicate(5,20,[0,0,1]) translate([0,0,30]) cube(10,center=true);
// Five duplicates of a square in a custom
// (but vector-normalized) direction
duplicate(5,20,[0,sqrt(2)/2,sqrt(2)/2]) translate([0,20,0])
cube([20,10,1],center=true);
OpenSCAD doesn’t support STL export of mixed 2D and 3D shapes; So, We have to create square-like cubes!!
The for (i = range) action;
loop will perform the action while varying i
in the range
. The action here is to take the first shape in the children
list and translate it by the vector (dir*space*i
).
The previous script results in something like this:
(The Blue sphere is at the origin; Hopefully you can tell where everything is!!).
Hey! you are no longer a “beginner”!! You can create modules and use functions!!!
Modifiers
This not quite necessary to learn now, but it will become handy in the following tutorial.
You can use modifiers to control the way objects are displayed in OpenSCAD’s preview window:
// Transparent cube
%translate([10,0,0]) cube(10);
// Highlight a sphere
#sphere(10);
// Another way:
color("blue",0.8) translate([0,0,10]) cube(10);
/* 0.8 controls transparency (alpha) */
That’s it for today, I bet you already learned more tricks just by looking at OpenSCAD’s Cheatsheet.


React Autosize Input
Standalone example
The component above is provided by the standalone build, and React is loaded from cdnjs.
Back to the main example


Back to election front page
This is a standard Candidate or Party vote. To vote, click on the candidate or party of your choice and then click on Cast vote. Should you reconsider later, you can always recast your vote for as long as the election remains open.
Powered by Apache STeVe. Copyright 2016, the Apache Software Foundation. Licensed under the Apache License 2.0


[viewBag] title = "Student Assistant Social Work" url = "/jobs/interns-mini-jobs-working-students/student-assistant-social-work-minijob-2016" layout = "hr-page" is_hidden = 0 navigation_hidden = 0 robot_index = "index" robot_follow = "follow" ==
to support our operations in Berlin or work remotely from any location.
Kiron Open Higher Education (gGmbH) is a non-profit organization founded in 2015 with a mission to remove the barriers refugees face in accessing higher education. Through an innovative model of blended learning, Kiron offers tailor-made curricula of MOOCs (Massive Open Online Courses) through renowned educational platforms like coursera and edx so that refugees can start studying, regardless of their asylum status. Courses are mostly provided in English, completely free of charge for the students and all accessible via our learning platform Kiron Campus.
Through strong partnerships with accredited universities worldwide, students have the opportunity to finish their program with a regular bachelor’s degree. Today, a team of 40 employees receives further support from about 400 volunteers worldwide and a competence pool consisting of experts from relevant fields, such as professors, psychologists and business specialists.
Your opportunities and responsibilities at Kiron:
Your skillset:
Our offer:
Ready to join our mission? Apply now!
We welcome your application including a short cover letter (max. 1 page), CV and availability in English or German to<EMAIL_ADDRESS>with the subject “SoWoSHK + your name”. For the final decision, we will also ask you to create a sample course matching.
The job does not fit your profile? Kiron is currently recruiting for 15 different paid positions, and many volunteering/ internship opportunities. More at www.kiron.ngo.
Julia Mehr
Kiron Open Higher Education gGmbH
Palais am Festungsgraben
Am Festungsgraben 1
10117 Berlin
recruiting@kiron.ngo


16 unbelievable 'luxury' items that actually exist, from a $7,650 Hermès trash can to a $10,000 Dolce & Gabbana stove, Business Insider - Business Insider Singapore
by Taylor Borden, Business Insider US- Any random object can become a luxury item if it is plated in gold or produced by a well-known, high-end designer.
- With the holidays approaching, Business Insider rounded up some of the most over-the-top luxury items currently on the market.
- The list includes everything from toothpaste infused with 23.75 carat gold dust to Swarovski crystal-covered bathtubs for babies.
- Visit Business Insider’s homepage for more stories.

But if you plate them in gold? Or slap a designer name on them? They’ll positively drip with extravagance; they’ll become luxury items.
With the holiday season quickly approaching, Business Insider rounded up a few over-the-top luxury items that are currently on the market, including a $920 Louis Vuitton keychain and a $7,650 Hermès waste basket, among other ordinary-yet-fancified objects.
Note that this list is only a small sampling of the exhaustive luxury market. It’s organized in ascending order of price.
A single Saint Laurent branded condom is currently selling for €2 (or just over $2). The foil comes in multiple designs, including zebra print and leopard print.
Standard, non-designer condoms typically cost well under $1 when bought in larger packages, according to Planned Parenthood.
Source: Saint Laurent
A Goop-approved 1.2-ounce bar of dehydrated caviar wrapped in gold foil costs $99.
Source: Business Insider, Calvisius
A Mercedes-Benz branded dog collar will set you back €99.90 (or roughly $110).
Source: Mercedes-Benz
A Swiss luxury dental company called Swiss Smile released a fancy $119 toothbrush and toothpaste combination set. The toothpaste is said to contain 23.75 carat gold dust while the toothbrush is plated with real gold.
Source: Neiman Marcus
Another personal grooming luxury item is a famous $240 English hairbrush. The Mason Pearson hairbrush is handmade and has “premium-grade boar” bristles.
Source: Business Insider, Nordstrom
Prada is currently selling a single luxury paperclip. It retails for $240 and is meant to be used as a money clip.
Source: Prada
Another outlandish, Goop-approved holiday gift is a $250 handcrafted brass fire extinguisher.
“Because yes, even something as practical and purposeful as say, a fire extinguisher, can skew sexy,” writes Goop in the product description.
Alas, the brass fire extinguisher is currently sold out. However, the copper and chrome models (each selling for the same price as the brass version) are still available.
Source: Business Insider, Goop
Burberry is selling a $320 cotton bucket hat. While it may look like any beach hat meant to simply protect your face from the sun, the seam is Burberry-branded.
Source: Burberry
Louis Vuitton just released a $920 holiday-themed keychain and “ski bag charm.” It features a skiing wooden figurine wearing a mink fur coat. And yes, that’s real mink.
Source: Louis Vuitton
Even umbrellas can become a luxury item. Dolce & Gabbana created an umbrella with an eagle head handle that retails for $1,395.
Source: Farfetch
In the market for a baby gift this holiday season? How about a handmade-to-order miniature bathtub, encrusted with 8,600 Swarovski crystals? The customized creation costs $5,200.
The company that handcrafts these tubs offers them in “every color on the Swarovski color pallette” and suggests that they can also be used for pets or as an elaborate ice bucket at parties.
Source: The Diamond Bathtub
You can find hat boxes on Amazon for under $30, but a new Gucci hat box with floral imagery layered over Gucci’s signature print retails for $5,800.
Why gift anyone an iconic Hermès scarf when you can splurge on Hermès home decor — like this $7,650 solid maple wood waste basket — instead?
Source: Hermès
A customized, hand-embossed Monopoly board from a London-based luxury game-maker costs between £3,865 and £11,680 ( roughly $5,000 to $15,000), depending on customization options, and includes sterling silver playing pieces.
Source: Geoffrey Parker
A Smeg x Dolce & Gabbana stainless steel range from the collaboration’s Divina Cucina Collection currently retails for $10,000. The home appliance collection also includes an $850 4-slice toaster and a tiny $1,500 espresso machine.
Source: Neiman Marcus
A $75,000 sterling silver and 24k gold chess set from Tiffany is listed as an “Everyday Object” on the jewelry giant’s website — alongside a $490 protractor and a $700 set of two ping pong paddles made from leather and walnut.
Source: Tiffany & Co.


A professional front end web developer expert in html, css, bootstrap, jquery, and complete front end development Accepting orders
247
Projects
1233
Happy Clients
581
Awards
786
Satisfied Client


Top militant leader killed in the Sahel: France
ABOARD A FRENCH GOVERNMENT PLANE, Mali: French forces killed a top leader of a powerful African militant group linked to al-Qaeda in Mali last month, France's defence minister told AFP on Tuesday (Nov 5).
Moroccan Ali Maychou of the Group to Support Islam and Muslims (GSIM) was "the second most-wanted terrorist in the Sahel, including by the Americans", Florence Parly said aboard a government plane as she returned from an official visit to the West African region.
The GSIM has claimed responsibility for the biggest attacks in the Sahel since its official launch in 2017.
Comprising several extremist groups linked to al-Qaeda in the Islamic Maghreb (AQIM), the GSIM alliance is led by a Tuareg Malian, Iyad Ag Ghaly, a 29-year veteran.
Ali Maychou was killed during the night of Oct 8 in Mali with the help of Malian troops and US support, Parly added.
He had joined al-Qaeda in the Islamic Maghreb (AQIM) in 2012 before co-founding GSIM with Iyad Ag Ghaly and masterminding its expansion in the Sahel.
The announcement came as Parly sought to reassure Mali of the support of European forces after a devastating militant attack last week that left dozens of soldiers dead.
The nation's military is struggling to contain an Islamist insurgency despite the help of forces from France, Africa and the United Nations, with a string of deadly assaults underscoring the fragility of a region where militant violence has claimed hundreds of lives.
Before leaving Mali on Tuesday, Parly expressed confidence that France - which deployed its 4,500-strong Barkhane force in the Sahel in 2014 - was nearing a breakthrough in its efforts to convince European partners to boost military assistance.
This would likely be in the form of training for the region's national armies.
Ali Maychou is the second GSIM key figure killed this year after French commandos killed extremist veteran Djamel Okacha in February near Timbuktu.
US officials had accused him of kidnapping a number of Westerners in North and West Africa.


Session Logistics
With only 10 minutes between sessions and video recording, it is vital that we do everything possible to avoid technical difficulties.
Present for the camera
- Your online audience is huge. On average, online views are FIVE TIMES that of in-person audience numbers, so please imagine that you are in a recording studio.
- Always use the microphone.
- Always summarize questions from the live audience using your microphone for the online audience.
You must use the provided MacBook!
With pre-tested display/sound, the provided laptop will minimize video/audio errors. If you have any audio or video clips in your presentation, you MUST set a time to test before your presentation.
If you want to do a live coding, please contact the stuff.
Upload your final slides
The slides marked as _FINAL and sent to us will be pre-loaded on the provided laptops. Please bring a backup copy of your final slides on a flash drive incase a technical error occured while uploading your slides.
Bringing your own computer?
Using your own computer is not allowed unless you want to do live-coding in your session. In that case, please contact us early and we will make sure to test it before the event.
Be ready to present offline
We're working hard to provide reliable internet connection but, as you know, "shit happens" so be ready to make presentation offline.
Additional suggestions!
- Please be quick on the "About Me" slides.
- Try not to use Agenda slide
- Your screen will be recorded using QuickTime on MacOS.
- Promote your session on social media using hastag #dfist.
- Use our template or include our hastag #dfist and logo in your slides
- Get rid of the bullet points and focus on what matters. Often, just one or two words are enough.
- Images speak stronger than words! Tip: look on flickr.com, go to advanced search and search for pictures which are creative commons. Look for a term or two ("collaboration" for example) and you'll find things
- Please share a link to your slides after your talk with the conference hashtag #dfist


A Quaker once said to me “I haven't had a single thought in my head for about three months. It's wonderful!” Give or take two and seven-eighths months, that is pretty much the state of Mr Key's inner bonce. Since I finished the bibliography and notes earlier in the week I have been lolloping around with an utterly empty head. Hence the eerie silence here.
The only problem with having an empty head is that sooner or later one begins to come over all John Lennon circa 1967, and that will never do. So, following tomorrow's jaunt to Bristol to recite sweeping paragraphs of majestic prose at An Event, I am going to start cramming stuff into my head again, sloshing it about in the manner of a sort of cranial tumble-drier, and decanting it here, for your edification and instruction.
Hark! Hark! The dogs do bark.
There's two of them on Noah's ark.
One is light, the other's dark.
But we decide which is right, and which is an illusion…
[Portentous music, with strings.]