View allAll Photos Tagged debugging

Probably some equipment for debugging telephony circuits.

ZoomCharts at DevClub.lv: Developing a Javascript SDK

 

On January 15, 2015, ZoomCharts Co-Founder and CTO Viesturs Zariņš presented at DevClub.lv - a community of Latvian IT specialists that gather monthly and host free talks, presentations, and events to allow the local IT community to share knowledge, network, and communicate. Zariņš discussed the unique challenges faced in developing JavaScript SDK.

 

Here is a brief overview of his PowerPoint presentation on ZoomCharts, the world’s most interactive data visualization software that will support all your data presentation needs with incredible speed.

 

What is ZoomCharts?

 

What defines ZoomCharts advanced data visualization software? It is NOT another HTML5 charts library. It is:

 

- Interactive

- Fast

- Touch enabled

- Supports big data

 

A long time ago

 

DOS 6.2 allowed for:

 

- 320x240x8bpp

- Direct access to pixels on screen

- Assembler for performance

 

Today, the Web has finally caught up in the graphics department. Now, we have access to:

 

- Multiple browsers and rendering technologies

- Multiple resolutions

- Performance that varies by browser and device

 

Development setup:

 

- We write in JavaScript

- Commit to GitHub

- Build system in JavaScript

- Debug in Chrome

- Run automated tests

- Like WebStorm (and Vim)

 

Graphics:

 

Canvas (fast)

SVG (slow)

WebGL (>50%)

 

Interactive animations:

 

Zoom in and out of the graph, drag and drop data, all with your mouse or trackpad.

 

Graceful degradation:

 

High FPS (frames per second) lets you scale graphics with low image degradation.

 

Third party libraries:

 

- Raphael

- Hammer.js

- Leaflet

- Moment.js

 

Challenges:

 

- Responsive design: layouts can shift and look nice on desktop screens vs. not so nice on vertical, mobile screens

- Big screen resolutions: uses devicePixelRatio for sharp rendering, but no hardware acceleration beyond 2048x2048

- Safari compatibility: with 100% CPU, input events are blocked and browser locks up; strange code offers fixes

- HTML on canvas: DOM is slow; basic HTML markup must be parsed and rendered manually; text caching helps

 

Support:

 

- Process: TrialSupportBuy

- 1 day issue resolution

- #1 Tell me what I did wrong

- #2 Can you do…

 

Testing:

 

- Automated tests on every GIT push

 

Automatically:

 

- Compare images

- Record performance

- View errors in console

 

Interactive testing:

 

- Next step: record and playback

 

BrowserStack:

 

- Interactive mode

- Automated: Selenium API

 

Debugging:

 

Chrome Developer tools (F12)

 

- Debugging

- Profiling

- Timeline

 

Remote debugging available: developer.chrome.com/devtools/docs/remote-debugging

 

Future:

 

- More charts

- Extension API

- Memory allocation tracking

- WebGL

 

We are looking for statically-typed language:

 

- Error checking

- Performance

- Superior minification

 

- Easy to write and read

- Easy to call from JS

 

Building

 

Custom build script:

 

- Compile

- Minify

- Extract documentation

- Embed customer data

 

Check out ZoomCharts products:

 

Network Chart

Big network exploration

Explore linked data sets. Highlight relevant data with dynamic filters and visual styles. Incremental data loading. Exploration with focus nodes.

 

Time Chart

Time navigation and exploration tool

Browse activity logs, select time ranges. Multiple data series and value axes. Switch between time units.

 

Pie Chart

Amazingly intuitive hierarchical data exploration

Get quick overview of your data and drill down when necessary. All in a single easy to use chart.

 

Facet Chart

Scrollable bar chart with drill-down

Compare values side by side and provide easy access to the long tail.

 

ZoomCharts

www.zoomcharts.com

The world’s most interactive data visualization software

 

#zoomcharts #interactive #data #interactivedata #datavisualization #interactivedatavisualization #chart #graph #charts #graphs #Javascript #JavascriptSDK #DevClubIV #Latvia #PowerPoint #PowerPointpresentation #fast #bigdata

I get a new board, power it up, none of the activity LEDs lights up. Hmm. Check power connection, everything is attached, but no activity, won't boot, won't reset, no output, not on the network. All the jumpers firmly seated. Swap SODIMM module and mass-storage for known-working, no joy.

 

I'm just about to pack it up and send it back when I wonder, is there actually a CPU on this main board? What if nothing is under the heat sink? Get out the iPhone, compare pictures of this never-worked board with a previously working board.

 

Oh! The working board has a visible chip carrier, the non-working board does not. I can see the interconnect pattern the carrier *should* be soldered-to on the non working board. Not on the working board.

 

Visual inspection agrees with behavior- No CPU! I send it back, the supplier confirms, yep, no CPU! Well, there's your problem!

Provides the following debug pins for CSR8670 (on the right).

 

Left column:

- SPI_MOSI (I)

- SPI_CS (B)

- PCM_CLK

- PCM_OUT

 

Right column:

- SPI_CLK (K)

- SPI_MISO (O)

- PCM_IN

- PCM_SYNC

- GND

diagrams for speaker IDs and motor debugging.

How to combine two graphs on Cacti

 

If you would like to use this photo, be sure to place a proper attribution linking to xmodulo.com

Debug output of the result from the OpenCL tile frustum culling kernel.

 

The kernel divides the screen up into 32x32 pixel tiles. For each tile, the kernel then finds the minimum and maximum Z depth of the pixels in that tile through a reduction.

 

With this information, a bounding frustum is created for each tile and each point light's position + attenuation (affected area) in view space is then culled against this frustum.

 

The idea is that you can then get a list of all the lights that are affecting each tile, cutting down on the number of fragments you need to process for shading.

 

I'm currently using 2 separate kernels for min/max reduction and light culling - need to combine these as a next step for speed.

How to debug your program. A page from "Write your own adventure programs".

Crossbow in blinking LED debug mode

diagrams for speaker IDs and motor debugging.

ZoomCharts at DevClub.lv: Developing a Javascript SDK

 

On January 15, 2015, ZoomCharts Co-Founder and CTO Viesturs Zariņš presented at DevClub.lv - a community of Latvian IT specialists that gather monthly and host free talks, presentations, and events to allow the local IT community to share knowledge, network, and communicate. Zariņš discussed the unique challenges faced in developing JavaScript SDK.

 

Here is a brief overview of his PowerPoint presentation on ZoomCharts, the world’s most interactive data visualization software that will support all your data presentation needs with incredible speed.

 

What is ZoomCharts?

 

What defines ZoomCharts advanced data visualization software? It is NOT another HTML5 charts library. It is:

 

- Interactive

- Fast

- Touch enabled

- Supports big data

 

A long time ago

 

DOS 6.2 allowed for:

 

- 320x240x8bpp

- Direct access to pixels on screen

- Assembler for performance

 

Today, the Web has finally caught up in the graphics department. Now, we have access to:

 

- Multiple browsers and rendering technologies

- Multiple resolutions

- Performance that varies by browser and device

 

Development setup:

 

- We write in JavaScript

- Commit to GitHub

- Build system in JavaScript

- Debug in Chrome

- Run automated tests

- Like WebStorm (and Vim)

 

Graphics:

 

Canvas (fast)

SVG (slow)

WebGL (>50%)

 

Interactive animations:

 

Zoom in and out of the graph, drag and drop data, all with your mouse or trackpad.

 

Graceful degradation:

 

High FPS (frames per second) lets you scale graphics with low image degradation.

 

Third party libraries:

 

- Raphael

- Hammer.js

- Leaflet

- Moment.js

 

Challenges:

 

- Responsive design: layouts can shift and look nice on desktop screens vs. not so nice on vertical, mobile screens

- Big screen resolutions: uses devicePixelRatio for sharp rendering, but no hardware acceleration beyond 2048x2048

- Safari compatibility: with 100% CPU, input events are blocked and browser locks up; strange code offers fixes

- HTML on canvas: DOM is slow; basic HTML markup must be parsed and rendered manually; text caching helps

 

Support:

 

- Process: TrialSupportBuy

- 1 day issue resolution

- #1 Tell me what I did wrong

- #2 Can you do…

 

Testing:

 

- Automated tests on every GIT push

 

Automatically:

 

- Compare images

- Record performance

- View errors in console

 

Interactive testing:

 

- Next step: record and playback

 

BrowserStack:

 

- Interactive mode

- Automated: Selenium API

 

Debugging:

 

Chrome Developer tools (F12)

 

- Debugging

- Profiling

- Timeline

 

Remote debugging available: developer.chrome.com/devtools/docs/remote-debugging

 

Future:

 

- More charts

- Extension API

- Memory allocation tracking

- WebGL

 

We are looking for statically-typed language:

 

- Error checking

- Performance

- Superior minification

 

- Easy to write and read

- Easy to call from JS

 

Building

 

Custom build script:

 

- Compile

- Minify

- Extract documentation

- Embed customer data

 

Check out ZoomCharts products:

 

Network Chart

Big network exploration

Explore linked data sets. Highlight relevant data with dynamic filters and visual styles. Incremental data loading. Exploration with focus nodes.

 

Time Chart

Time navigation and exploration tool

Browse activity logs, select time ranges. Multiple data series and value axes. Switch between time units.

 

Pie Chart

Amazingly intuitive hierarchical data exploration

Get quick overview of your data and drill down when necessary. All in a single easy to use chart.

 

Facet Chart

Scrollable bar chart with drill-down

Compare values side by side and provide easy access to the long tail.

 

ZoomCharts

www.zoomcharts.com

The world’s most interactive data visualization software

 

#zoomcharts #interactive #data #interactivedata #datavisualization #interactivedatavisualization #chart #graph #charts #graphs #Javascript #JavascriptSDK #DevClubIV #Latvia #PowerPoint #PowerPointpresentation #fast #bigdata

Reshade

Debug Console

PhotoMode2in1

this is basically my life

A followup to the original photo from 'Cooking Mana' in the UK -- same unit, but from a different angle. From further research, apparently red units like this are hard-drive based debug units rather than the normal disc-based development units (with a green faceplate). It's surprisingly hard to find much information about these units.

 

I'd love to know what they're doing with this unit. It's been quite a mystery for me, and a lot of the guys at work are also scratching their heads.

Debugging and hardware dev is quite colourful really!

 

What am I doing?

 

Why on earth are you asking me? Does this look like I know what I'm doing!?!?

 

Strobist info (for those that like such things).

SB800 triggered by Nikon CLS, TTL in 24" softbox, hand held approx 24" above subject.

Could have done with a bit more work on the lighting, but I was holding a D300 with one hand and a softbox with the other!

After changing the nvram boot-args from:

 

burnin wdt=3 amfi_allow_any_signature=1 debug=0 serial=3 cs_enforcement_disable=1

 

to:

 

wdt=3 amfi_allow_any_signature=1 debug=0 serial=3 cs_enforcement_disable=1

 

Was able to get out of Inferno/BurnIn, and access SwitchBoard.

ZoomCharts at DevClub.lv: Developing a Javascript SDK

 

On January 15, 2015, ZoomCharts Co-Founder and CTO Viesturs Zariņš presented at DevClub.lv - a community of Latvian IT specialists that gather monthly and host free talks, presentations, and events to allow the local IT community to share knowledge, network, and communicate. Zariņš discussed the unique challenges faced in developing JavaScript SDK.

 

Here is a brief overview of his PowerPoint presentation on ZoomCharts, the world’s most interactive data visualization software that will support all your data presentation needs with incredible speed.

 

What is ZoomCharts?

 

What defines ZoomCharts advanced data visualization software? It is NOT another HTML5 charts library. It is:

 

- Interactive

- Fast

- Touch enabled

- Supports big data

 

A long time ago

 

DOS 6.2 allowed for:

 

- 320x240x8bpp

- Direct access to pixels on screen

- Assembler for performance

 

Today, the Web has finally caught up in the graphics department. Now, we have access to:

 

- Multiple browsers and rendering technologies

- Multiple resolutions

- Performance that varies by browser and device

 

Development setup:

 

- We write in JavaScript

- Commit to GitHub

- Build system in JavaScript

- Debug in Chrome

- Run automated tests

- Like WebStorm (and Vim)

 

Graphics:

 

Canvas (fast)

SVG (slow)

WebGL (>50%)

 

Interactive animations:

 

Zoom in and out of the graph, drag and drop data, all with your mouse or trackpad.

 

Graceful degradation:

 

High FPS (frames per second) lets you scale graphics with low image degradation.

 

Third party libraries:

 

- Raphael

- Hammer.js

- Leaflet

- Moment.js

 

Challenges:

 

- Responsive design: layouts can shift and look nice on desktop screens vs. not so nice on vertical, mobile screens

- Big screen resolutions: uses devicePixelRatio for sharp rendering, but no hardware acceleration beyond 2048x2048

- Safari compatibility: with 100% CPU, input events are blocked and browser locks up; strange code offers fixes

- HTML on canvas: DOM is slow; basic HTML markup must be parsed and rendered manually; text caching helps

 

Support:

 

- Process: TrialSupportBuy

- 1 day issue resolution

- #1 Tell me what I did wrong

- #2 Can you do…

 

Testing:

 

- Automated tests on every GIT push

 

Automatically:

 

- Compare images

- Record performance

- View errors in console

 

Interactive testing:

 

- Next step: record and playback

 

BrowserStack:

 

- Interactive mode

- Automated: Selenium API

 

Debugging:

 

Chrome Developer tools (F12)

 

- Debugging

- Profiling

- Timeline

 

Remote debugging available: developer.chrome.com/devtools/docs/remote-debugging

 

Future:

 

- More charts

- Extension API

- Memory allocation tracking

- WebGL

 

We are looking for statically-typed language:

 

- Error checking

- Performance

- Superior minification

 

- Easy to write and read

- Easy to call from JS

 

Building

 

Custom build script:

 

- Compile

- Minify

- Extract documentation

- Embed customer data

 

Check out ZoomCharts products:

 

Network Chart

Big network exploration

Explore linked data sets. Highlight relevant data with dynamic filters and visual styles. Incremental data loading. Exploration with focus nodes.

 

Time Chart

Time navigation and exploration tool

Browse activity logs, select time ranges. Multiple data series and value axes. Switch between time units.

 

Pie Chart

Amazingly intuitive hierarchical data exploration

Get quick overview of your data and drill down when necessary. All in a single easy to use chart.

 

Facet Chart

Scrollable bar chart with drill-down

Compare values side by side and provide easy access to the long tail.

 

ZoomCharts

www.zoomcharts.com

The world’s most interactive data visualization software

 

#zoomcharts #interactive #data #interactivedata #datavisualization #interactivedatavisualization #chart #graph #charts #graphs #Javascript #JavascriptSDK #DevClubIV #Latvia #PowerPoint #PowerPointpresentation #fast #bigdata

diagrams for speaker IDs and motor debugging.

Dark Souls Remastered

 

• Debug Menu (free camera and timestop. FOV cannot be changed in free camera mode, it is locked)

• 9400x5400 (cropped and downsampled)

• Reshade

ZoomCharts at DevClub.lv: Developing a Javascript SDK

 

On January 15, 2015, ZoomCharts Co-Founder and CTO Viesturs Zariņš presented at DevClub.lv - a community of Latvian IT specialists that gather monthly and host free talks, presentations, and events to allow the local IT community to share knowledge, network, and communicate. Zariņš discussed the unique challenges faced in developing JavaScript SDK.

 

Here is a brief overview of his PowerPoint presentation on ZoomCharts, the world’s most interactive data visualization software that will support all your data presentation needs with incredible speed.

 

What is ZoomCharts?

 

What defines ZoomCharts advanced data visualization software? It is NOT another HTML5 charts library. It is:

 

- Interactive

- Fast

- Touch enabled

- Supports big data

 

A long time ago

 

DOS 6.2 allowed for:

 

- 320x240x8bpp

- Direct access to pixels on screen

- Assembler for performance

 

Today, the Web has finally caught up in the graphics department. Now, we have access to:

 

- Multiple browsers and rendering technologies

- Multiple resolutions

- Performance that varies by browser and device

 

Development setup:

 

- We write in JavaScript

- Commit to GitHub

- Build system in JavaScript

- Debug in Chrome

- Run automated tests

- Like WebStorm (and Vim)

 

Graphics:

 

Canvas (fast)

SVG (slow)

WebGL (>50%)

 

Interactive animations:

 

Zoom in and out of the graph, drag and drop data, all with your mouse or trackpad.

 

Graceful degradation:

 

High FPS (frames per second) lets you scale graphics with low image degradation.

 

Third party libraries:

 

- Raphael

- Hammer.js

- Leaflet

- Moment.js

 

Challenges:

 

- Responsive design: layouts can shift and look nice on desktop screens vs. not so nice on vertical, mobile screens

- Big screen resolutions: uses devicePixelRatio for sharp rendering, but no hardware acceleration beyond 2048x2048

- Safari compatibility: with 100% CPU, input events are blocked and browser locks up; strange code offers fixes

- HTML on canvas: DOM is slow; basic HTML markup must be parsed and rendered manually; text caching helps

 

Support:

 

- Process: TrialSupportBuy

- 1 day issue resolution

- #1 Tell me what I did wrong

- #2 Can you do…

 

Testing:

 

- Automated tests on every GIT push

 

Automatically:

 

- Compare images

- Record performance

- View errors in console

 

Interactive testing:

 

- Next step: record and playback

 

BrowserStack:

 

- Interactive mode

- Automated: Selenium API

 

Debugging:

 

Chrome Developer tools (F12)

 

- Debugging

- Profiling

- Timeline

 

Remote debugging available: developer.chrome.com/devtools/docs/remote-debugging

 

Future:

 

- More charts

- Extension API

- Memory allocation tracking

- WebGL

 

We are looking for statically-typed language:

 

- Error checking

- Performance

- Superior minification

 

- Easy to write and read

- Easy to call from JS

 

Building

 

Custom build script:

 

- Compile

- Minify

- Extract documentation

- Embed customer data

 

Check out ZoomCharts products:

 

Network Chart

Big network exploration

Explore linked data sets. Highlight relevant data with dynamic filters and visual styles. Incremental data loading. Exploration with focus nodes.

 

Time Chart

Time navigation and exploration tool

Browse activity logs, select time ranges. Multiple data series and value axes. Switch between time units.

 

Pie Chart

Amazingly intuitive hierarchical data exploration

Get quick overview of your data and drill down when necessary. All in a single easy to use chart.

 

Facet Chart

Scrollable bar chart with drill-down

Compare values side by side and provide easy access to the long tail.

 

ZoomCharts

www.zoomcharts.com

The world’s most interactive data visualization software

 

#zoomcharts #interactive #data #interactivedata #datavisualization #interactivedatavisualization #chart #graph #charts #graphs #Javascript #JavascriptSDK #DevClubIV #Latvia #PowerPoint #PowerPointpresentation #fast #bigdata

Another gorgeous insect to "debug" the myth that bugs are ugly. NPS Photo/Jay Robinson

 

Plagithmysus varians

ZoomCharts at DevClub.lv: Developing a Javascript SDK

 

On January 15, 2015, ZoomCharts Co-Founder and CTO Viesturs Zariņš presented at DevClub.lv - a community of Latvian IT specialists that gather monthly and host free talks, presentations, and events to allow the local IT community to share knowledge, network, and communicate. Zariņš discussed the unique challenges faced in developing JavaScript SDK.

 

Here is a brief overview of his PowerPoint presentation on ZoomCharts, the world’s most interactive data visualization software that will support all your data presentation needs with incredible speed.

 

What is ZoomCharts?

 

What defines ZoomCharts advanced data visualization software? It is NOT another HTML5 charts library. It is:

 

- Interactive

- Fast

- Touch enabled

- Supports big data

 

A long time ago

 

DOS 6.2 allowed for:

 

- 320x240x8bpp

- Direct access to pixels on screen

- Assembler for performance

 

Today, the Web has finally caught up in the graphics department. Now, we have access to:

 

- Multiple browsers and rendering technologies

- Multiple resolutions

- Performance that varies by browser and device

 

Development setup:

 

- We write in JavaScript

- Commit to GitHub

- Build system in JavaScript

- Debug in Chrome

- Run automated tests

- Like WebStorm (and Vim)

 

Graphics:

 

Canvas (fast)

SVG (slow)

WebGL (>50%)

 

Interactive animations:

 

Zoom in and out of the graph, drag and drop data, all with your mouse or trackpad.

 

Graceful degradation:

 

High FPS (frames per second) lets you scale graphics with low image degradation.

 

Third party libraries:

 

- Raphael

- Hammer.js

- Leaflet

- Moment.js

 

Challenges:

 

- Responsive design: layouts can shift and look nice on desktop screens vs. not so nice on vertical, mobile screens

- Big screen resolutions: uses devicePixelRatio for sharp rendering, but no hardware acceleration beyond 2048x2048

- Safari compatibility: with 100% CPU, input events are blocked and browser locks up; strange code offers fixes

- HTML on canvas: DOM is slow; basic HTML markup must be parsed and rendered manually; text caching helps

 

Support:

 

- Process: TrialSupportBuy

- 1 day issue resolution

- #1 Tell me what I did wrong

- #2 Can you do…

 

Testing:

 

- Automated tests on every GIT push

 

Automatically:

 

- Compare images

- Record performance

- View errors in console

 

Interactive testing:

 

- Next step: record and playback

 

BrowserStack:

 

- Interactive mode

- Automated: Selenium API

 

Debugging:

 

Chrome Developer tools (F12)

 

- Debugging

- Profiling

- Timeline

 

Remote debugging available: developer.chrome.com/devtools/docs/remote-debugging

 

Future:

 

- More charts

- Extension API

- Memory allocation tracking

- WebGL

 

We are looking for statically-typed language:

 

- Error checking

- Performance

- Superior minification

 

- Easy to write and read

- Easy to call from JS

 

Building

 

Custom build script:

 

- Compile

- Minify

- Extract documentation

- Embed customer data

 

Check out ZoomCharts products:

 

Network Chart

Big network exploration

Explore linked data sets. Highlight relevant data with dynamic filters and visual styles. Incremental data loading. Exploration with focus nodes.

 

Time Chart

Time navigation and exploration tool

Browse activity logs, select time ranges. Multiple data series and value axes. Switch between time units.

 

Pie Chart

Amazingly intuitive hierarchical data exploration

Get quick overview of your data and drill down when necessary. All in a single easy to use chart.

 

Facet Chart

Scrollable bar chart with drill-down

Compare values side by side and provide easy access to the long tail.

 

ZoomCharts

www.zoomcharts.com

The world’s most interactive data visualization software

 

#zoomcharts #interactive #data #interactivedata #datavisualization #interactivedatavisualization #chart #graph #charts #graphs #Javascript #JavascriptSDK #DevClubIV #Latvia #PowerPoint #PowerPointpresentation #fast #bigdata

ZoomCharts at DevClub.lv: Developing a Javascript SDK

 

On January 15, 2015, ZoomCharts Co-Founder and CTO Viesturs Zariņš presented at DevClub.lv - a community of Latvian IT specialists that gather monthly and host free talks, presentations, and events to allow the local IT community to share knowledge, network, and communicate. Zariņš discussed the unique challenges faced in developing JavaScript SDK.

 

Here is a brief overview of his PowerPoint presentation on ZoomCharts, the world’s most interactive data visualization software that will support all your data presentation needs with incredible speed.

 

What is ZoomCharts?

 

What defines ZoomCharts advanced data visualization software? It is NOT another HTML5 charts library. It is:

 

- Interactive

- Fast

- Touch enabled

- Supports big data

 

A long time ago

 

DOS 6.2 allowed for:

 

- 320x240x8bpp

- Direct access to pixels on screen

- Assembler for performance

 

Today, the Web has finally caught up in the graphics department. Now, we have access to:

 

- Multiple browsers and rendering technologies

- Multiple resolutions

- Performance that varies by browser and device

 

Development setup:

 

- We write in JavaScript

- Commit to GitHub

- Build system in JavaScript

- Debug in Chrome

- Run automated tests

- Like WebStorm (and Vim)

 

Graphics:

 

Canvas (fast)

SVG (slow)

WebGL (>50%)

 

Interactive animations:

 

Zoom in and out of the graph, drag and drop data, all with your mouse or trackpad.

 

Graceful degradation:

 

High FPS (frames per second) lets you scale graphics with low image degradation.

 

Third party libraries:

 

- Raphael

- Hammer.js

- Leaflet

- Moment.js

 

Challenges:

 

- Responsive design: layouts can shift and look nice on desktop screens vs. not so nice on vertical, mobile screens

- Big screen resolutions: uses devicePixelRatio for sharp rendering, but no hardware acceleration beyond 2048x2048

- Safari compatibility: with 100% CPU, input events are blocked and browser locks up; strange code offers fixes

- HTML on canvas: DOM is slow; basic HTML markup must be parsed and rendered manually; text caching helps

 

Support:

 

- Process: TrialSupportBuy

- 1 day issue resolution

- #1 Tell me what I did wrong

- #2 Can you do…

 

Testing:

 

- Automated tests on every GIT push

 

Automatically:

 

- Compare images

- Record performance

- View errors in console

 

Interactive testing:

 

- Next step: record and playback

 

BrowserStack:

 

- Interactive mode

- Automated: Selenium API

 

Debugging:

 

Chrome Developer tools (F12)

 

- Debugging

- Profiling

- Timeline

 

Remote debugging available: developer.chrome.com/devtools/docs/remote-debugging

 

Future:

 

- More charts

- Extension API

- Memory allocation tracking

- WebGL

 

We are looking for statically-typed language:

 

- Error checking

- Performance

- Superior minification

 

- Easy to write and read

- Easy to call from JS

 

Building

 

Custom build script:

 

- Compile

- Minify

- Extract documentation

- Embed customer data

 

Check out ZoomCharts products:

 

Network Chart

Big network exploration

Explore linked data sets. Highlight relevant data with dynamic filters and visual styles. Incremental data loading. Exploration with focus nodes.

 

Time Chart

Time navigation and exploration tool

Browse activity logs, select time ranges. Multiple data series and value axes. Switch between time units.

 

Pie Chart

Amazingly intuitive hierarchical data exploration

Get quick overview of your data and drill down when necessary. All in a single easy to use chart.

 

Facet Chart

Scrollable bar chart with drill-down

Compare values side by side and provide easy access to the long tail.

 

ZoomCharts

www.zoomcharts.com

The world’s most interactive data visualization software

 

#zoomcharts #interactive #data #interactivedata #datavisualization #interactivedatavisualization #chart #graph #charts #graphs #Javascript #JavascriptSDK #DevClubIV #Latvia #PowerPoint #PowerPointpresentation #fast #bigdata

Just doing some hardware debugging on the stove. Nothing to see here.

ZoomCharts at DevClub.lv: Developing a Javascript SDK

 

On January 15, 2015, ZoomCharts Co-Founder and CTO Viesturs Zariņš presented at DevClub.lv - a community of Latvian IT specialists that gather monthly and host free talks, presentations, and events to allow the local IT community to share knowledge, network, and communicate. Zariņš discussed the unique challenges faced in developing JavaScript SDK.

 

Here is a brief overview of his PowerPoint presentation on ZoomCharts, the world’s most interactive data visualization software that will support all your data presentation needs with incredible speed.

 

What is ZoomCharts?

 

What defines ZoomCharts advanced data visualization software? It is NOT another HTML5 charts library. It is:

 

- Interactive

- Fast

- Touch enabled

- Supports big data

 

A long time ago

 

DOS 6.2 allowed for:

 

- 320x240x8bpp

- Direct access to pixels on screen

- Assembler for performance

 

Today, the Web has finally caught up in the graphics department. Now, we have access to:

 

- Multiple browsers and rendering technologies

- Multiple resolutions

- Performance that varies by browser and device

 

Development setup:

 

- We write in JavaScript

- Commit to GitHub

- Build system in JavaScript

- Debug in Chrome

- Run automated tests

- Like WebStorm (and Vim)

 

Graphics:

 

Canvas (fast)

SVG (slow)

WebGL (>50%)

 

Interactive animations:

 

Zoom in and out of the graph, drag and drop data, all with your mouse or trackpad.

 

Graceful degradation:

 

High FPS (frames per second) lets you scale graphics with low image degradation.

 

Third party libraries:

 

- Raphael

- Hammer.js

- Leaflet

- Moment.js

 

Challenges:

 

- Responsive design: layouts can shift and look nice on desktop screens vs. not so nice on vertical, mobile screens

- Big screen resolutions: uses devicePixelRatio for sharp rendering, but no hardware acceleration beyond 2048x2048

- Safari compatibility: with 100% CPU, input events are blocked and browser locks up; strange code offers fixes

- HTML on canvas: DOM is slow; basic HTML markup must be parsed and rendered manually; text caching helps

 

Support:

 

- Process: TrialSupportBuy

- 1 day issue resolution

- #1 Tell me what I did wrong

- #2 Can you do…

 

Testing:

 

- Automated tests on every GIT push

 

Automatically:

 

- Compare images

- Record performance

- View errors in console

 

Interactive testing:

 

- Next step: record and playback

 

BrowserStack:

 

- Interactive mode

- Automated: Selenium API

 

Debugging:

 

Chrome Developer tools (F12)

 

- Debugging

- Profiling

- Timeline

 

Remote debugging available: developer.chrome.com/devtools/docs/remote-debugging

 

Future:

 

- More charts

- Extension API

- Memory allocation tracking

- WebGL

 

We are looking for statically-typed language:

 

- Error checking

- Performance

- Superior minification

 

- Easy to write and read

- Easy to call from JS

 

Building

 

Custom build script:

 

- Compile

- Minify

- Extract documentation

- Embed customer data

 

Check out ZoomCharts products:

 

Network Chart

Big network exploration

Explore linked data sets. Highlight relevant data with dynamic filters and visual styles. Incremental data loading. Exploration with focus nodes.

 

Time Chart

Time navigation and exploration tool

Browse activity logs, select time ranges. Multiple data series and value axes. Switch between time units.

 

Pie Chart

Amazingly intuitive hierarchical data exploration

Get quick overview of your data and drill down when necessary. All in a single easy to use chart.

 

Facet Chart

Scrollable bar chart with drill-down

Compare values side by side and provide easy access to the long tail.

 

ZoomCharts

www.zoomcharts.com

The world’s most interactive data visualization software

 

#zoomcharts #interactive #data #interactivedata #datavisualization #interactivedatavisualization #chart #graph #charts #graphs #Javascript #JavascriptSDK #DevClubIV #Latvia #PowerPoint #PowerPointpresentation #fast #bigdata

Just a snapshot of the microcontroller developer's life :) On the sheet is the assignment of microcontroller pin ports and plug connection. Afterwards voltage levels and speeds are tested with an oscilloscope.

 

(That big 300V transformator in the back is not used in this context)

I dreamed about a human being is is part of a project exploring the use of artificial intelligence as applied to photography by using online open source code and data.

More information at fransimo.info/?p=1100

 

ID:338d8a144e3b0323ce33ca3408879cfd

 

Image credits: www.flickr.com/photos/creationvillage/322474867/

www.flickr.com/photos/creationvillage/322475808/

www.flickr.com/photos/creationvillage/322475883/

www.flickr.com/photos/creationvillage/322475992/

www.flickr.com/photos/creationvillage/322476467/

www.flickr.com/photos/bildungsgruppe/322479289/

www.flickr.com/photos/debugger/322498708/

www.flickr.com/photos/debugger/322498708/

www.flickr.com/photos/vandasuwanapak/322837995/

www.flickr.com/photos/torrey/323235350/

www.flickr.com/photos/westcoastlogic/323239691/

www.flickr.com/photos/rietje/323240573/

www.flickr.com/photos/eddypedro/323275911/

www.flickr.com/photos/eddypedro/323276564/

www.flickr.com/photos/eddypedro/323276624/

www.flickr.com/photos/eddypedro/323276751/

www.flickr.com/photos/eddypedro/323276997/

www.flickr.com/photos/eddypedro/323276997/

www.flickr.com/photos/eddypedro/323277032/

www.flickr.com/photos/eddypedro/323277032/

www.flickr.com/photos/eddypedro/323277201/

www.flickr.com/photos/eddypedro/323277257/

www.flickr.com/photos/eddypedro/323277293/

www.flickr.com/photos/eddypedro/323277293/

www.flickr.com/photos/eddypedro/323277799/

www.flickr.com/photos/eddypedro/323278371/

www.flickr.com/photos/eddypedro/323278371/

www.flickr.com/photos/annachampel/323291107/

www.flickr.com/photos/taniapaz/323311724/

www.flickr.com/photos/parascubasailor/323324895/

www.flickr.com/photos/brad2021hk/323599719/

www.flickr.com/photos/brad2021hk/323601624/

www.flickr.com/photos/brad2021hk/323602629/

www.flickr.com/photos/pakec/323635289/

www.flickr.com/photos/ben_hengst/323635757/

www.flickr.com/photos/brandonshigeta/324195993/

www.flickr.com/photos/brandonshigeta/324195993/

www.flickr.com/photos/ayers/324198210/

www.flickr.com/photos/tomhe/324226235/

www.flickr.com/photos/tomhe/324227464/

www.flickr.com/photos/tomhe/324227571/

www.flickr.com/photos/fastfoodweblog/324245744/

www.flickr.com/photos/fuelyouth/324624985/

www.flickr.com/photos/fuelyouth/324627126/

www.flickr.com/photos/fuelyouth/324627928/

www.flickr.com/photos/yarnivore/324628034/

www.flickr.com/photos/apollonia666/324628455/

www.flickr.com/photos/gkirk/324628874/

www.flickr.com/photos/fuelyouth/324629038/

www.flickr.com/photos/jasmine/324631698/

www.flickr.com/photos/alickmighall/324631918/

www.flickr.com/photos/koreboy/324645731/

www.flickr.com/photos/81847580@N00/324646999/

www.flickr.com/photos/81847580@N00/324647161/

www.flickr.com/photos/81847580@N00/324647301/

www.flickr.com/photos/81847580@N00/324647694/

www.flickr.com/photos/81847580@N00/324648627/

www.flickr.com/photos/ashura/324650205/

www.flickr.com/photos/kennedygoodkey/324650571/

www.flickr.com/photos/jdlasica/324659378/

www.flickr.com/photos/ssandars/324674681/

www.flickr.com/photos/wylankimo/324677348/

www.flickr.com/photos/wylankimo/324677348/

www.flickr.com/photos/wylankimo/324677516/

www.flickr.com/photos/queen_of_subtle/325303943/

www.flickr.com/photos/davidsilver/325305489/

www.flickr.com/photos/basial/325306252/

www.flickr.com/photos/digitalmelon/325311188/

www.flickr.com/photos/digitalmelon/325311559/

www.flickr.com/photos/digitalmelon/325312875/

www.flickr.com/photos/basial/325313636/

www.flickr.com/photos/gnagle/325314580/

www.flickr.com/photos/basial/325315020/

www.flickr.com/photos/davidsilver/325315736/

www.flickr.com/photos/basial/325316127/

www.flickr.com/photos/fuelyouth/325319256/

www.flickr.com/photos/wearyaswater/325322543/

www.flickr.com/photos/basial/325324496/

www.flickr.com/photos/ukdavew/325337993/

www.flickr.com/photos/ukdavew/325338200/

www.flickr.com/photos/ukdavew/325338296/

www.flickr.com/photos/bichop/325343000/

www.flickr.com/photos/aur2899/325347822/

www.flickr.com/photos/rforeman/325354509/

www.flickr.com/photos/rforeman/325354710/

www.flickr.com/photos/rforeman/325354710/

www.flickr.com/photos/benklaasen/325355381/

www.flickr.com/photos/rforeman/325362908/

www.flickr.com/photos/arvid/325820366/

www.flickr.com/photos/arvid/325820406/

www.flickr.com/photos/mrhaste/325838879/

www.flickr.com/photos/cyaneyed/325846076/

www.flickr.com/photos/cyaneyed/325846222/

www.flickr.com/photos/cyaneyed/325846510/

www.flickr.com/photos/cyaneyed/325846729/

www.flickr.com/photos/fuelyouth/325848565/

www.flickr.com/photos/emma510/325849049/

www.flickr.com/photos/emma510/325849388/

www.flickr.com/photos/mrhaste/325856158/

www.flickr.com/photos/97502765@N00/325863245/

www.flickr.com/photos/97502765@N00/325863245/

www.flickr.com/photos/misskoco/325864188/

www.flickr.com/photos/waikin/325876666/

www.flickr.com/photos/97502765@N00/325876681/

www.flickr.com/photos/tornatore/325877383/

www.flickr.com/photos/fuelyouth/325891121/

www.flickr.com/photos/25408600@N00/326887663/

www.flickr.com/photos/nathanandsarah/326888637/

www.flickr.com/photos/aaskov/326890192/

www.flickr.com/photos/caseyhelbling/326891958/

www.flickr.com/photos/asimpledarksquid/326891993/

www.flickr.com/photos/asimpledarksquid/326892076/

www.flickr.com/photos/thejesse/326905382/

www.flickr.com/photos/israluv/326926642/

www.flickr.com/photos/lady3jane/326967117/

www.flickr.com/photos/vwdreamer/327516568/

www.flickr.com/photos/vwdreamer/327516934/

www.flickr.com/photos/derbettler/327868033/

www.flickr.com/photos/derbettler/327868033/

www.flickr.com/photos/slbedard/327874528/

www.flickr.com/photos/slbedard/327875121/

www.flickr.com/photos/slbedard/327875368/

www.flickr.com/photos/slbedard/327875420/

www.flickr.com/photos/slbedard/327875420/

www.flickr.com/photos/watsonlibrary/327878425/

www.flickr.com/photos/watsonlibrary/327878453/

www.flickr.com/photos/osunick/327878591/

www.flickr.com/photos/k-8/327879238/

www.flickr.com/photos/jezzme/327882044/

www.flickr.com/photos/watsonlibrary/327882883/

www.flickr.com/photos/watsonlibrary/327882928/

www.flickr.com/photos/watsonlibrary/327882928/

www.flickr.com/photos/slbedard/327889025/

www.flickr.com/photos/suntom/327889955/

www.flickr.com/photos/fabbuki/327895615/

www.flickr.com/photos/goldberg/327900181/

www.flickr.com/photos/arthur_ivanov/327976243/

www.flickr.com/photos/arthur_ivanov/327976279/

www.flickr.com/photos/arthur_ivanov/327979250/

www.flickr.com/photos/arthur_ivanov/327979366/

www.flickr.com/photos/seanjohnson/328503627/

www.flickr.com/photos/sheree11/328517001/

www.flickr.com/photos/seanjohnson/328517596/

www.flickr.com/photos/seanjohnson/328519996/

www.flickr.com/photos/seanjohnson/328520044/

www.flickr.com/photos/annaandjack/328755451/

www.flickr.com/photos/thekilens/328757908/

www.flickr.com/photos/thekilens/328784028/

www.flickr.com/photos/t-train/328802912/

www.flickr.com/photos/25408600@N00/328850552/

www.flickr.com/photos/senso/328865222/

www.flickr.com/photos/testastretta/329824451/

www.flickr.com/photos/testastretta/329824475/

www.flickr.com/photos/radpanic/329826495/

www.flickr.com/photos/seejake/330311400/

www.flickr.com/photos/seejake/330312187/

www.flickr.com/photos/jacdupree/330315440/

www.flickr.com/photos/marisseay/330322191/

www.flickr.com/photos/jacdupree/330326773/

www.flickr.com/photos/marisseay/330333124/

www.flickr.com/photos/buckofive/330336506/

www.flickr.com/photos/rcastag/330341104/

www.flickr.com/photos/rcastag/330341196/

www.flickr.com/photos/rcastag/330341267/

www.flickr.com/photos/rcastag/330341322/

www.flickr.com/photos/rcastag/330341335/

www.flickr.com/photos/rcastag/330341377/

www.flickr.com/photos/rcastag/330341467/

www.flickr.com/photos/rcastag/330341502/

www.flickr.com/photos/rcastag/330341759/

www.flickr.com/photos/rcastag/330341774/

www.flickr.com/photos/noejd/330352481/

www.flickr.com/photos/ajreeves/330355943/

www.flickr.com/photos/hopemcg/330356598/

www.flickr.com/photos/viciousbits/330357033/

www.flickr.com/photos/vdevivienda/330365148/

www.flickr.com/photos/thedjudjubeast/330371081/

www.flickr.com/photos/remydwd/330377252/

www.flickr.com/photos/delrandall/330633092/

www.flickr.com/photos/delrandall/330633121/

www.flickr.com/photos/delrandall/330639513/

www.flickr.com/photos/delrandall/330639967/

www.flickr.com/photos/delrandall/330639967/

www.flickr.com/photos/solcookie/330640742/

www.flickr.com/photos/jennyleesilver/330645674/

www.flickr.com/photos/carlcollins/330672087/

www.flickr.com/photos/alfaltendorf/330723795/

www.flickr.com/photos/alfaltendorf/330732200/

www.flickr.com/photos/flingmedia/331157240/

www.flickr.com/photos/tonedef/331158257/

www.flickr.com/photos/tiagoafpereira/331160779/

www.flickr.com/photos/kpalyu/331161552/

www.flickr.com/photos/futurebreed/331162933/

www.flickr.com/photos/futurebreed/331164180/

www.flickr.com/photos/tiagoafpereira/331164993/

www.flickr.com/photos/tiagoafpereira/331166319/

www.flickr.com/photos/john143/331189804/

www.flickr.com/photos/john143/331189910/

www.flickr.com/photos/john143/331190498/

www.flickr.com/photos/noejd/331191710/

www.flickr.com/photos/noejd/331191710/

www.flickr.com/photos/noejd/331193399/

www.flickr.com/photos/flingmedia/331195163/

www.flickr.com/photos/sbello/331196021/

www.flickr.com/photos/sbello/331196021/

www.flickr.com/photos/leesean/331197781/

www.flickr.com/photos/leesean/331197799/

www.flickr.com/photos/leesean/331197799/

www.flickr.com/photos/jonhefel/331200432/

www.flickr.com/photos/49965961@N00/331207298/

www.flickr.com/photos/gaz954/331207944/

www.flickr.com/photos/john143/331208235/

www.flickr.com/photos/49965961@N00/331208330/

www.flickr.com/photos/john143/331208355/

www.flickr.com/photos/john143/331208722/

www.flickr.com/photos/49965961@N00/331208790/

www.flickr.com/photos/49965961@N00/331208957/

www.flickr.com/photos/49965961@N00/331208980/

www.flickr.com/photos/john143/331209998/

www.flickr.com/photos/john143/331211403/

www.flickr.com/photos/pmgfp/331229345/

www.flickr.com/photos/radialmonster/331563215/

www.flickr.com/photos/radialmonster/331563254/

www.flickr.com/photos/lynac/331566053/

www.flickr.com/photos/cthe/331566548/

www.flickr.com/photos/radialmonster/331567467/

www.flickr.com/photos/radialmonster/331567533/

www.flickr.com/photos/radialmonster/331567533/

www.flickr.com/photos/radialmonster/331567705/

www.flickr.com/photos/radialmonster/331567705/

www.flickr.com/photos/radialmonster/331567705/

www.flickr.com/photos/radialmonster/331568363/

www.flickr.com/photos/mrlins/331573743/

www.flickr.com/photos/skylarkin/331612707/

www.flickr.com/photos/lynac/331615114/

www.flickr.com/photos/mrlins/331623478/

www.flickr.com/photos/83565554@N00/332088355/

www.flickr.com/photos/benmcleod/332092974/

www.flickr.com/photos/benmcleod/332092974/

www.flickr.com/photos/benmcleod/332092974/

www.flickr.com/photos/abstrakone/332470925/

www.flickr.com/photos/abstrakone/332470925/

www.flickr.com/photos/photosbystan/332485765/

www.flickr.com/photos/funcrunch/332498664/

www.flickr.com/photos/dannohung/332508112/

www.flickr.com/photos/kaosb/332535259/

www.flickr.com/photos/kaosb/332535674/

www.flickr.com/photos/kaosb/332535837/

www.flickr.com/photos/kaosb/332537745/

www.flickr.com/photos/penmachine/332541998/

www.flickr.com/photos/alex1961/333047251/

www.flickr.com/photos/racingmix/333048633/

www.flickr.com/photos/racingmix/333048633/

www.flickr.com/photos/racingmix/333049429/

www.flickr.com/photos/bristley/333103625/

www.flickr.com/photos/mousetrout/333215770/

www.flickr.com/photos/mousetrout/333215770/

www.flickr.com/photos/heather_joy/334364501/

www.flickr.com/photos/gib/334365244/

www.flickr.com/photos/feldbum/334370840/

www.flickr.com/photos/glorifytwism/334401483/

www.flickr.com/photos/zeb/334850462/

www.flickr.com/photos/vja2/334857819/

www.flickr.com/photos/itainathaniel/334892979/

www.flickr.com/photos/itainathaniel/334893559/

www.flickr.com/photos/naevus/334900649/

www.flickr.com/photos/naevus/334902276/

www.flickr.com/photos/naevus/334902845/

www.flickr.com/photos/pengrin/334903850/

www.flickr.com/photos/dom_edwards/335518071/

www.flickr.com/photos/jdblundell/335518253/

www.flickr.com/photos/jjulius/335518585/

www.flickr.com/photos/jackpix/335523228/

www.flickr.com/photos/reidrac/335523337/

www.flickr.com/photos/ronobot/335523565/

www.flickr.com/photos/jackpix/335523620/

www.flickr.com/photos/jackpix/335523620/

www.flickr.com/photos/jjulius/335524285/

www.flickr.com/photos/jackpix/335524310/

www.flickr.com/photos/jackpix/335524310/

www.flickr.com/photos/jackpix/335524310/

www.flickr.com/photos/jackpix/335524597/

www.flickr.com/photos/jackpix/335524597/

www.flickr.com/photos/jjulius/335524829/

www.flickr.com/photos/jackpix/335524966/

www.flickr.com/photos/jackpix/335524966/

www.flickr.com/photos/jackpix/335524966/

www.flickr.com/photos/jackpix/335525161/

www.flickr.com/photos/lengocdieulinh/335527875/

www.flickr.com/photos/jjulius/335528599/

www.flickr.com/photos/jjulius/335528704/

www.flickr.com/photos/jjulius/335528815/

www.flickr.com/photos/jjulius/335529094/

www.flickr.com/photos/jjulius/335529215/

www.flickr.com/photos/johnjoh/335531949/

www.flickr.com/photos/jjulius/335532181/

www.flickr.com/photos/jymferrier/335533382/

www.flickr.com/photos/dom_edwards/335533383/

www.flickr.com/photos/johnjoh/335534676/

www.flickr.com/photos/jjulius/335538888/

www.flickr.com/photos/jjulius/335538888/

www.flickr.com/photos/jschnee4/335540728/

www.flickr.com/photos/licurl64/335544162/

www.flickr.com/photos/licurl64/335544510/

www.flickr.com/photos/licurl64/335544693/

www.flickr.com/photos/licurl64/335544889/

www.flickr.com/photos/suite112/335548074/

www.flickr.com/photos/joeljohnson/335550975/

www.flickr.com/photos/_parrish_/335555820/

www.flickr.com/photos/missrogue/335563172/

www.flickr.com/photos/afdn/335570175/

www.flickr.com/photos/domydeluxe/335577188/

www.flickr.com/photos/domydeluxe/335577190/

www.flickr.com/photos/kannan76/335928872/

www.flickr.com/photos/aperture_lag/335930723/

www.flickr.com/photos/kannan76/335931085/

www.flickr.com/photos/cmiked/335933543/

www.flickr.com/photos/cmiked/335933783/

www.flickr.com/photos/aperture_lag/335941683/

www.flickr.com/photos/avi4now/335951178/

www.flickr.com/photos/sfllaw/335952624/

www.flickr.com/photos/sfllaw/335953953/

www.flickr.com/photos/sfllaw/335953953/

www.flickr.com/photos/sfllaw/335953953/

www.flickr.com/photos/mahalie/335954882/

www.flickr.com/photos/dgphilli/335963027/

www.flickr.com/photos/delta407/337107383/

www.flickr.com/photos/xslf/337710804/

www.flickr.com/photos/rvoodoo/337711607/

www.flickr.com/photos/rvoodoo/337713287/

www.flickr.com/photos/patr1ck/337717476/

www.flickr.com/photos/travellingzenwolf/337718841/

www.flickr.com/photos/jasonunbound/337721318/

www.flickr.com/photos/alex1961/337727700/

www.flickr.com/photos/rickyniano/337789141/

www.flickr.com/photos/chadmiller/337790965/

www.flickr.com/photos/boptart/338163825/

www.flickr.com/photos/boptart/338164261/

www.flickr.com/photos/boptart/338164500/

www.flickr.com/photos/jcuthrell/338164535/

www.flickr.com/photos/saturnism/338173116/

www.flickr.com/photos/juuro/338177322/

www.flickr.com/photos/bre/338207141/

www.flickr.com/photos/jessefriedman/338938119/

www.flickr.com/photos/mylilangel58/338939309/

www.flickr.com/photos/jonathancharles/338940712/

www.flickr.com/photos/katsushiro/340032523/

www.flickr.com/photos/katsushiro/340034784/

www.flickr.com/photos/alist/340035913/

www.flickr.com/photos/katsushiro/340036840/

www.flickr.com/photos/katsushiro/340037503/

www.flickr.com/photos/katsushiro/340038612/

www.flickr.com/photos/westall/340038702/

www.flickr.com/photos/westall/340039087/

www.flickr.com/photos/westall/340040132/

www.flickr.com/photos/shawnporter/340041186/

www.flickr.com/photos/shawnporter/340041290/

www.flickr.com/photos/garone/340042097/

www.flickr.com/photos/garone/340042758/

www.flickr.com/photos/sizemoresr/340043392/

www.flickr.com/photos/shawnporter/340047833/

www.flickr.com/photos/killerbass/340051082/

www.flickr.com/photos/nbreazeale/340056026/

www.flickr.com/photos/nbreazeale/340056026/

www.flickr.com/photos/ebatty/340062525/

www.flickr.com/photos/nbreazeale/340063505/

www.flickr.com/photos/emmamykytyn/340070035/

www.flickr.com/photos/dom_edwards/340074920/

www.flickr.com/photos/pixelandink/340080881/

www.flickr.com/photos/westall/340084156/

www.flickr.com/photos/krsjuan/340084747/

www.flickr.com/photos/juantomas/340087128/

www.flickr.com/photos/westall/340087675/

www.flickr.com/photos/starfish235/340091269/

www.flickr.com/photos/jason0x21/340091601/

www.flickr.com/photos/westall/340095621/

www.flickr.com/photos/westall/340096859/

www.flickr.com/photos/plump/340097476/

www.flickr.com/photos/waqas/340487508/

www.flickr.com/photos/mollyeknox/340489815/

www.flickr.com/photos/yarnivore/340512162/

www.flickr.com/photos/tuija/340515423/

www.flickr.com/photos/kpy/340527609/

www.flickr.com/photos/dainabyrne/340532955/

www.flickr.com/photos/dainabyrne/340533212/

www.flickr.com/photos/dainabyrne/340533292/

www.flickr.com/photos/dainabyrne/340534143/

www.flickr.com/photos/katyhutch/340535857/

www.flickr.com/photos/tachikoma/340538975/

www.flickr.com/photos/tachikoma/340539012/

www.flickr.com/photos/smadden/342214808/

www.flickr.com/photos/smadden/342215220/

www.flickr.com/photos/rietje/343039797/

www.flickr.com/photos/ebardera/343046982/

www.flickr.com/photos/johnjoh/343056557/

www.flickr.com/photos/johnjoh/343056784/

www.flickr.com/photos/bre/343068195/

www.flickr.com/photos/davidvogel/343069180/

www.flickr.com/photos/shingo/343074750/

www.flickr.com/photos/davidvogel/343078532/

www.flickr.com/photos/angeljohnson/343080177/

www.flickr.com/photos/angeljohnson/343080724/

www.flickr.com/photos/gapplewagen/343091804/

www.flickr.com/photos/gapplewagen/343093246/

www.flickr.com/photos/davidvogel/343094205/

www.flickr.com/photos/chrisandautumn/343094840/

www.flickr.com/photos/gapplewagen/343094920/

www.flickr.com/photos/88438917@N00/343097045/

www.flickr.com/photos/johnporcaro/343097839/

www.flickr.com/photos/timbobee/343106137/

www.flickr.com/photos/mrhaste/343112273/

www.flickr.com/photos/johnjoh/343114418/

www.flickr.com/photos/davidvogel/343114649/

www.flickr.com/photos/johnjoh/343114882/

www.flickr.com/photos/johnjoh/343115701/

www.flickr.com/photos/gemmagrace/343128904/

www.flickr.com/photos/kinrowan/343539145/

www.flickr.com/photos/kinrowan/343539353/

www.flickr.com/photos/gapplewagen/343546413/

www.flickr.com/photos/lylelives/343546822/

www.flickr.com/photos/anselor/343548887/

www.flickr.com/photos/lylelives/343549227/

www.flickr.com/photos/lylelives/343549454/

www.flickr.com/photos/kinrowan/343550160/

www.flickr.com/photos/kinrowan/343550730/

www.flickr.com/photos/kinrowan/343551392/

www.flickr.com/photos/malcubed/343551793/

www.flickr.com/photos/malcubed/343552035/

www.flickr.com/photos/malcubed/343553502/

www.flickr.com/photos/frax/343555133/

www.flickr.com/photos/malcubed/343556116/

www.flickr.com/photos/malcubed/343556582/

www.flickr.com/photos/frax/343556744/

www.flickr.com/photos/frax/343556744/

www.flickr.com/photos/malcubed/343556903/

www.flickr.com/photos/frax/343557701/

www.flickr.com/photos/frax/343557701/

www.flickr.com/photos/benzado/343566061/

www.flickr.com/photos/gapplewagen/343566697/

www.flickr.com/photos/blake_obrien/343571424/

www.flickr.com/photos/idledesigns/343572519/

www.flickr.com/photos/benzado/343575668/

www.flickr.com/photos/moofbong/343580746/

www.flickr.com/photos/newneonunion/343589020/

www.flickr.com/photos/gapplewagen/343589700/

www.flickr.com/photos/blake_obrien/343590196/

www.flickr.com/photos/blake_obrien/343590751/

www.flickr.com/photos/voteprime/343593538/

www.flickr.com/photos/voteprime/343593538/

www.flickr.com/photos/moofbong/343595836/

www.flickr.com/photos/gapplewagen/343596921/

www.flickr.com/photos/voteprime/343599550/

www.flickr.com/photos/lori_thantos/343607832/

www.flickr.com/photos/lori_thantos/343613780/

www.flickr.com/photos/ijac/343620322/

www.flickr.com/photos/stonz/343622291/

www.flickr.com/photos/stonz/343624006/

www.flickr.com/photos/stonz/343627142/

www.flickr.com/photos/stonz/343628994/

www.flickr.com/photos/stonz/343634039/

www.flickr.com/photos/milsom/343646142/

www.flickr.com/photos/genmachaita/343652371/

www.flickr.com/photos/joeyshev/343653787/

www.flickr.com/photos/joeyshev/343653930/

www.flickr.com/photos/joeyshev/343654044/

www.flickr.com/photos/stonz/343654259/

www.flickr.com/photos/joeyshev/343654438/

www.flickr.com/photos/scottsnure/343654491/

www.flickr.com/photos/scottsnure/343654560/

www.flickr.com/photos/joeyshev/343655068/

www.flickr.com/photos/alicetiara/343655294/

www.flickr.com/photos/joeyshev/343655371/

www.flickr.com/photos/joeyshev/343656532/

www.flickr.com/photos/joeyshev/343656650/

www.flickr.com/photos/moofbong/343658742/

www.flickr.com/photos/alicetiara/343660921/

www.flickr.com/photos/jjulius/343663716/

www.flickr.com/photos/stonz/343669249/

www.flickr.com/photos/alicetiara/343671015/

www.flickr.com/photos/stephenagregory/343672835/

www.flickr.com/photos/stephenagregory/343674194/

www.flickr.com/photos/efusiondesign/343674837/

www.flickr.com/photos/joeltelling/343688682/

www.flickr.com/photos/joeltelling/343688855/

www.flickr.com/photos/stonz/343700359/

www.flickr.com/photos/fredcamino/343703514/

www.flickr.com/photos/23748404@N00/343703558/

www.flickr.com/photos/23748404@N00/343703830/

www.flickr.com/photos/lunarmagic/343705047/

www.flickr.com/photos/angelosu/343709368/

www.flickr.com/photos/angelosu/343709368/

www.flickr.com/photos/fweez/343709441/

www.flickr.com/photos/fredcamino/343724540/

www.flickr.com/photos/fredcamino/343737902/

www.flickr.com/photos/lester/343743478/

www.flickr.com/photos/lester/343743919/

www.flickr.com/photos/lester/343746314/

www.flickr.com/photos/fredcamino/343747139/

www.flickr.com/photos/myfriendscallmecharlie/343754064/

www.flickr.com/photos/pjgardner/343755551/

www.flickr.com/photos/10gauge/343761880/

www.flickr.com/photos/blogumentary/343763276/

www.flickr.com/photos/willski/343785560/

www.flickr.com/photos/johnleespider/343798013/

www.flickr.com/photos/bensnyder/344357713/

www.flickr.com/photos/bensnyder/344361303/

www.flickr.com/photos/rirnschopf/344372145/

www.flickr.com/photos/nataren/344376964/

www.flickr.com/photos/monky/344381204/

www.flickr.com/photos/bluething/344401538/

www.flickr.com/photos/bluething/344401538/

www.flickr.com/photos/pictoral/344416679/

www.flickr.com/photos/kawika-234/344419713/

www.flickr.com/photos/cortocircuito/344422863/

www.flickr.com/photos/ekai/344427661/

www.flickr.com/photos/ekai/344427661/

www.flickr.com/photos/firefightersdaughter/344428091/

www.flickr.com/photos/monky/344434297/

www.flickr.com/photos/greensunflower/344436231/

www.flickr.com/photos/abuddhistpodcast/344442977/

www.flickr.com/photos/abuddhistpodcast/344443075/

www.flickr.com/photos/abuddhistpodcast/344443075/

www.flickr.com/photos/firefightersdaughter/344443343/

www.flickr.com/photos/firefightersdaughter/344449400/

www.flickr.com/photos/firefightersdaughter/344449400/

www.flickr.com/photos/firefightersdaughter/344449400/

www.flickr.com/photos/monky/344450393/

www.flickr.com/photos/firefightersdaughter/344454875/

www.flickr.com/photos/firefightersdaughter/344454906/

www.flickr.com/photos/firefightersdaughter/344454921/

www.flickr.com/photos/kawika-234/344462569/

www.flickr.com/photos/kawika-234/344464260/

www.flickr.com/photos/kawika-234/344464260/

www.flickr.com/photos/kawika-234/344464260/

www.flickr.com/photos/kawika-234/344466898/

www.flickr.com/photos/kawika-234/344468846/

www.flickr.com/photos/kawika-234/344470127/

www.flickr.com/photos/kawika-234/344470127/

www.flickr.com/photos/kawika-234/344470717/

www.flickr.com/photos/monky/344471690/

www.flickr.com/photos/monky/344473364/

www.flickr.com/photos/monky/344473398/

www.flickr.com/photos/monky/344473398/

www.flickr.com/photos/monky/344473645/

www.flickr.com/photos/monky/344473864/

www.flickr.com/photos/wdecora/344475486/

www.flickr.com/photos/archieoi/344475980/

www.flickr.com/photos/monky/344476717/

www.flickr.com/photos/senso/344479543/

www.flickr.com/photos/senso/344479696/

www.flickr.com/photos/senso/344480029/

www.flickr.com/photos/senso/344480112/

www.flickr.com/photos/senso/344480661/

www.flickr.com/photos/senso/344482160/

www.flickr.com/photos/senso/344482886/

www.flickr.com/photos/senso/344482979/

www.flickr.com/photos/senso/344483104/

www.flickr.com/photos/erikalin/344484553/

www.flickr.com/photos/monky/344486854/

www.flickr.com/photos/dlf/344494196/

www.flickr.com/photos/monky/344497228/

www.flickr.com/photos/senso/344498148/

www.flickr.com/photos/tomit/344498438/

www.flickr.com/photos/maxim303/344500729/

www.flickr.com/photos/maxim303/344500849/

www.flickr.com/photos/maxim303/344501284/

www.flickr.com/photos/maxim303/344501399/

www.flickr.com/photos/monky/344501882/

www.flickr.com/photos/monky/344502650/

www.flickr.com/photos/monky/344502775/

www.flickr.com/photos/monky/344502775/

www.flickr.com/photos/maxim303/344503001/

www.flickr.com/photos/maxim303/344503231/

www.flickr.com/photos/monky/344504013/

www.flickr.com/photos/monky/344504693/

www.flickr.com/photos/monky/344504693/

www.flickr.com/photos/maxim303/344504783/

www.flickr.com/photos/maxim303/344504783/

www.flickr.com/photos/monky/344505562/

www.flickr.com/photos/monky/344505562/

www.flickr.com/photos/bre/344506013/

www.flickr.com/photos/timbobee/344506279/

www.flickr.com/photos/bre/344508485/

www.flickr.com/photos/monky/344509111/

www.flickr.com/photos/bre/344509337/

www.flickr.com/photos/mcvay728/344513623/

www.flickr.com/photos/monky/344513949/

www.flickr.com/photos/monky/344524497/

www.flickr.com/photos/archieoi/344524509/

www.flickr.com/photos/bre/344530661/

www.flickr.com/photos/manc/344535350/

www.flickr.com/photos/c-130/344541552/

www.flickr.com/photos/txindoki/344550361/

www.flickr.com/photos/agusmotto/344554551/

www.flickr.com/photos/senso/344560423/

www.flickr.com/photos/senso/344563969/

www.flickr.com/photos/smull/345079452/

www.flickr.com/photos/smull/345081686/

www.flickr.com/photos/rebeccacbrown13/345166558/

www.flickr.com/photos/arthas/345167717/

www.flickr.com/photos/bobsrocket/345831937/

www.flickr.com/photos/bobsrocket/345842059/

www.flickr.com/photos/lach/345842819/

www.flickr.com/photos/bobsrocket/345842952/

www.flickr.com/photos/lach/345843366/

www.flickr.com/photos/lwr/345848685/

www.flickr.com/photos/norellana/345867493/

www.flickr.com/photos/norellana/345867739/

www.flickr.com/photos/norellana/345871909/

www.flickr.com/photos/norellana/345872541/

www.flickr.com/photos/stewartjeacocke/345877850/

www.flickr.com/photos/stewartjeacocke/345884837/

A retro BASIC code listing from "Write your own adventure programs".

Messing around with the RSA debug port.

While working on the hardware based closed loop control implementation for Open-BLDC, I had to gather a lot of debug data, I ended up using all channels of Saleae Logic and two 4 channel scopes. Quite ridiculous I know but helped a lot to get the big picture of what is going on.

 

open-bldc.org (#open-bldc on freenode)

ZoomCharts at DevClub.lv: Developing a Javascript SDK

 

On January 15, 2015, ZoomCharts Co-Founder and CTO Viesturs Zariņš presented at DevClub.lv - a community of Latvian IT specialists that gather monthly and host free talks, presentations, and events to allow the local IT community to share knowledge, network, and communicate. Zariņš discussed the unique challenges faced in developing JavaScript SDK.

 

Here is a brief overview of his PowerPoint presentation on ZoomCharts, the world’s most interactive data visualization software that will support all your data presentation needs with incredible speed.

 

What is ZoomCharts?

 

What defines ZoomCharts advanced data visualization software? It is NOT another HTML5 charts library. It is:

 

- Interactive

- Fast

- Touch enabled

- Supports big data

 

A long time ago

 

DOS 6.2 allowed for:

 

- 320x240x8bpp

- Direct access to pixels on screen

- Assembler for performance

 

Today, the Web has finally caught up in the graphics department. Now, we have access to:

 

- Multiple browsers and rendering technologies

- Multiple resolutions

- Performance that varies by browser and device

 

Development setup:

 

- We write in JavaScript

- Commit to GitHub

- Build system in JavaScript

- Debug in Chrome

- Run automated tests

- Like WebStorm (and Vim)

 

Graphics:

 

Canvas (fast)

SVG (slow)

WebGL (>50%)

 

Interactive animations:

 

Zoom in and out of the graph, drag and drop data, all with your mouse or trackpad.

 

Graceful degradation:

 

High FPS (frames per second) lets you scale graphics with low image degradation.

 

Third party libraries:

 

- Raphael

- Hammer.js

- Leaflet

- Moment.js

 

Challenges:

 

- Responsive design: layouts can shift and look nice on desktop screens vs. not so nice on vertical, mobile screens

- Big screen resolutions: uses devicePixelRatio for sharp rendering, but no hardware acceleration beyond 2048x2048

- Safari compatibility: with 100% CPU, input events are blocked and browser locks up; strange code offers fixes

- HTML on canvas: DOM is slow; basic HTML markup must be parsed and rendered manually; text caching helps

 

Support:

 

- Process: TrialSupportBuy

- 1 day issue resolution

- #1 Tell me what I did wrong

- #2 Can you do…

 

Testing:

 

- Automated tests on every GIT push

 

Automatically:

 

- Compare images

- Record performance

- View errors in console

 

Interactive testing:

 

- Next step: record and playback

 

BrowserStack:

 

- Interactive mode

- Automated: Selenium API

 

Debugging:

 

Chrome Developer tools (F12)

 

- Debugging

- Profiling

- Timeline

 

Remote debugging available: developer.chrome.com/devtools/docs/remote-debugging

 

Future:

 

- More charts

- Extension API

- Memory allocation tracking

- WebGL

 

We are looking for statically-typed language:

 

- Error checking

- Performance

- Superior minification

 

- Easy to write and read

- Easy to call from JS

 

Building

 

Custom build script:

 

- Compile

- Minify

- Extract documentation

- Embed customer data

 

Check out ZoomCharts products:

 

Network Chart

Big network exploration

Explore linked data sets. Highlight relevant data with dynamic filters and visual styles. Incremental data loading. Exploration with focus nodes.

 

Time Chart

Time navigation and exploration tool

Browse activity logs, select time ranges. Multiple data series and value axes. Switch between time units.

 

Pie Chart

Amazingly intuitive hierarchical data exploration

Get quick overview of your data and drill down when necessary. All in a single easy to use chart.

 

Facet Chart

Scrollable bar chart with drill-down

Compare values side by side and provide easy access to the long tail.

 

ZoomCharts

www.zoomcharts.com

The world’s most interactive data visualization software

 

#zoomcharts #interactive #data #interactivedata #datavisualization #interactivedatavisualization #chart #graph #charts #graphs #Javascript #JavascriptSDK #DevClubIV #Latvia #PowerPoint #PowerPointpresentation #fast #bigdata

Dark Souls Remastered

 

• Debug Menu (free camera and timestop. FOV cannot be changed in free camera mode, it is locked)

• 9400x5400 (cropped and downsampled)

• Reshade

As we played with it Christmas morning, I realized the code still needed tweaking: the tiny fire truck was launching before the Wake County Fire radio dispatch even gave the address. Not that the truck actually follows the directions, but I wanted as much realism as I could manage.

Dark Souls Remastered

 

• Debug Menu (free camera and timestop. FOV cannot be changed in free camera mode, it is locked)

• 9400x5400 (cropped and downsampled)

• Reshade

Using Processing.org

 

import processing.pdf.*;

 

boolean debug = false;

boolean randomized = false;

boolean randomNumberNodes = false;

boolean randomRadius = false;

 

// Variables for how complex a drawing

int numberBranches = 5;

int minNodes = 3; //this will always set an odd number

int maxNodes = 10; //this will always set an odd number

 

// Declarations

int pagePixels;

int arrayLength = 1000000;

int i;

int j;

String filename;

 

// randomizing limits

float randLow = .95;

float randHigh = 1.05;

 

float randRadiusLow = .80;

float randRadiusHigh = 1.25;

 

// node array variables

String branchAction;

boolean maxLevelFlag = false;

boolean maxNodeFlag = false;

boolean reuseFlag = false;

 

// node calculation variables

int nodes;

int parentNode;

float x;

float y;

float radius; //4 for 5 branches

float angle = 0.0;

 

// drawing varables

float drawMod;

 

PGraphics pg;

 

// Declare and construct objects

//---------------Branch-----------------

// Creates the array

Branch branch[] = new Branch[numberBranches] ;

 

//---------------Node-----------------

// Creates the array

Node node[] = new Node[arrayLength] ;

  

// Setup

// -----

void setup() {

size(9000, 9000, PDF, "Snowflake01.pdf");

pagePixels = numberBranches * 1800;

radius = pagePixels / 4;

 

filename = year()+"-"+month()+"-"+day()+" "+hour()+"-"+minute()+"-"+second()+" Snowflake.pdf";

// size(pagePixels, pagePixels);

// pg = createGraphics(pagePixels, pagePixels);

pg = createGraphics(pagePixels, pagePixels, PDF, filename);

  

pg.beginDraw();

smooth();

background(255,255,255,0);

pg.endDraw();

}

  

// Draw

void draw() {

 

// All of these funtions are quite extensive, read them below.

buildArray();

drawAllChildToChild();

drawChildInRing();

drawNodeOrbits();

drawParentToChild();

drawNodeEllipse();

 

println("DONE");

 

exit();

 

} // ************** Draw END **************

  

void keyPressed() {

if (key == 'q') {

exit();

}

 

if (key == 's') {

saveDrawing();

}

}

// KeyPressed END

  

void saveDrawing() {

println("Saving...");

filename = year()+"-"+month()+"-"+day()+" "+hour()+"-"+minute()+"-"+second()+"- Snowflake.pdf";

println("Saved.");

}

  

//-------------------

// Building the Array

//-------------------

 

void buildArray() {

println("Branches " + numberBranches);

 

//---------------Branch-----------------

// Creates the objects and assigns them to the array

for (i = 0; i < numberBranches; i++) {

branch[i] = new Branch();

}

 

// Sets the first node as branch[0]

branch[0].Branch(int((2*round(random(minNodes,maxNodes)/2))+1), radius); //int NodeNum; float radius;

 

if(debug == true){

println("Branch 0 Node #: " + branch[0].getNodeNum() );

println("Branch 0 radius: " + branch[0].getRadius() );

}

  

// Reset arrayLength to the first node

arrayLength = 1;

 

// Sets the values for the array

for (i = 1; i < numberBranches; i++) {

// designed to always produce an odd number

// branch[i].Branch(int((2*round(random(minNodes,maxNodes)/2))+1), branch[i-1].getRadius()/2); //int NodeNum; float radius;

branch[i].Branch(int((2*round(random(minNodes,maxNodes)/2))+1), branch[i-1].getRadius()/2.075); //int NodeNum; float radius;

 

if(debug == true){

println("Branch " + i + " Node #: " + branch[i].getNodeNum() );

println("Branch " + i + " radius: " + branch[i].getRadius() );

}

 

}

 

arrayLength = node.length;

 

if(debug == true){

println("arrayLength #: " + arrayLength);

}

 

//---------------Node-----------------

// Creates the objects and assigns them to the array

for (i = 0; i < arrayLength; i++) {

node[i] = new Node();

}

 

if(debug == true){

println("Node Array Length #: " + node.length);

println("");

}

 

// Clear out array

for (i = 0; i < arrayLength; i++) {

//int int branchPosition, int nodePosition, int parentReference, int nodeNumber, float nodeRadius, float theta, float x, float y, String action

node[i].Node(0, 0, 0, 0, 0.0, 0.0, 0.0, 0.0, "empty");

}

 

if (debug == true) {

println("START");

println("");

println("node, int branchPosition, int nodePosition, int parentReference, int nodeNumber, float nodeRadius, float theta, float x, float y, String action");

}

  

if (randomNumberNodes == false) {

// First Node

//int int branchPosition, int nodePosition, int parentReference, int nodeNumber, float nodeRadius, float theta, float x, float y, String action

node[0].Node(0, 0, 0, branch[0].getNodeNum(), radius, 0.0, pagePixels/2, pagePixels/2, "up");

} else {

// First Node

//int int branchPosition, int nodePosition, int parentReference, int nodeNumber, float nodeRadius, float theta, float x, float y, String action

node[0].Node(0, 0, 0, int((2*round(random(minNodes,maxNodes)/2))+1), radius, 0.0, pagePixels/2, pagePixels/2, "up");

}

 

node[0].setNodePosition(node[0].getNodeNumber());

 

if(debug == true){

print("0, ");

node[0].printNode();

}

 

// DETERMINE WHAT ACTIONS TO TAKE: add, up, down, reuse

//---------------------------------------

for (i = 1; i < arrayLength; i++) {

 

// set boolean conditions ...this was for legability...

// maxLevelFlag = was the last node at the highest branch level?

// maxNodeFlag = was the last node at the highest node number (the last node)?

// reuseFlag = was the last node a reuse. Or, was it a node that exists already as we move back down the tree?

 

if (node[i-1].getBranchPosition() == numberBranches - 1) { // If max level

maxLevelFlag = true;

} else {

maxLevelFlag = false;

}

 

if (node[i-1].getNodePosition() == node[node[i-1].getParentReference()].getNodeNumber() ) { // If max node from parent node

maxNodeFlag = true;

} else {

maxNodeFlag = false;

}

 

if (node[i-1].getAction() == "reuse") { // If reuse

reuseFlag = true;

} else {

reuseFlag = false;

}

 

// Set actions based on boolean conditions

if (maxLevelFlag == false && maxNodeFlag == false && reuseFlag == false) {

parentNode = i - 1;

branchAction = "up";

}

if (maxLevelFlag == false && maxNodeFlag == true && reuseFlag == false) {

parentNode = i - 1;

branchAction = "up";

}

if (maxLevelFlag == false && maxNodeFlag == true && reuseFlag == true) {

if (node[node[i-1].getParentReference()].getNodePosition() < node[node[node[i-1].getParentReference()].getParentReference()].getNodeNumber()) { // if parent is not max node

parentNode = node[node[i-1].getParentReference()].getParentReference();

branchAction = "down";

} else {

if (node[i-1].getBranchPosition() == 0) { // if back to the start

arrayLength = i - 1;

println("arrayLength = " + arrayLength);

 

i = node.length - 1;

branchAction = "reuse";

 

} else {

parentNode = node[node[i-1].getParentReference()].getParentReference();

branchAction = "reuse";

}

}

}

 

if (maxLevelFlag == true && maxNodeFlag == false && reuseFlag == false) {

parentNode = node[i-1].getParentReference();

branchAction = "add";

}

 

if (maxLevelFlag == true && maxNodeFlag == true) {

if (node[node[i-1].getParentReference()].getNodePosition() == node[node[node[i-1].getParentReference()].getParentReference()].getNodeNumber()) { // if parent is max node

parentNode = node[node[i-1].getParentReference()].getParentReference();

branchAction = "reuse";

} else {

parentNode = node[node[i-1].getParentReference()].getParentReference();

branchAction = "down";

}

}

 

// ACTIONS: add, up, down, reuse

//---------------------------------------

 

// Add node at same branch level

if (branchAction == "add") {

 

// Set Parent Reference.

node[i].setParentReference(parentNode);

 

// Keep the parent node's branch level.

node[i].setBranchPosition(node[i-1].getBranchPosition());

 

// Add 1 to the node position of the previous node.

node[i].setNodePosition(node[i-1].getNodePosition() + 1);

 

//if Adding a node, NodeNumber is zero

node[i].setNodeNumber(0);

 

if (randomRadius == false) {

node[i].setNodeRadius(branch[node[i].getBranchPosition()].getRadius());

} else {

node[i].setNodeRadius(random(randRadiusLow,randRadiusHigh)*branch[node[i].getBranchPosition()].getRadius());

}

 

// Set the angle by adding the Node's branch angle (2 PI / Number of nodes) to the previous node's angle.

if (randomized == true) {

node[i].setAngle(random(randLow,randHigh)*(node[node[i].getParentReference()].getAngle() + (node[i].getNodePosition()*(TWO_PI / node[node[i].getParentReference()].getNodeNumber() ))));

}

if (randomized == false) {

node[i].setAngle((node[node[i].getParentReference()].getAngle() + (node[i].getNodePosition()*(TWO_PI / node[node[i].getParentReference()].getNodeNumber()) )));

}

 

// Calculate and set the x, y position of the node

 

if (randomized == true) {

x = node[node[i].getParentReference()].getX() + sin(node[i].getAngle()) * random(randLow,randHigh)*node[node[i].getParentReference()].getNodeRadius();

y = node[node[i].getParentReference()].getY() + cos(node[i].getAngle()) * random(randLow,randHigh)*node[node[i].getParentReference()].getNodeRadius();

}

 

if (randomized == false) {

x = node[node[i].getParentReference()].getX() + sin(node[i].getAngle()) * node[node[i].getParentReference()].getNodeRadius();

y = node[node[i].getParentReference()].getY() + cos(node[i].getAngle()) * node[node[i].getParentReference()].getNodeRadius();

}

  

node[i].setPosition(x, y);

 

// Set action

node[i].setAction("add");

}

  

// Go up one branch level, add node to upper branch level

if (branchAction == "up") {

 

// Set Parent Reference.

node[i].setParentReference(parentNode);

 

// Go up one branch level. Add 1 to the former node's branch level.

node[i].setBranchPosition(node[i-1].getBranchPosition() + 1);

 

// When you go up a branch the node is always 1, the starting position.

node[i].setNodePosition(1);

  

//if Maximum branch level, NodeNumber is zero

if(node[i].getBranchPosition() == numberBranches - 1) {

node[i].setNodeNumber(0);

} else {

if (randomNumberNodes == false) {

node[i].setNodeNumber(branch[node[i].getBranchPosition()].getNodeNum() );

} else {

node[i].setNodeNumber(int((2*round(random(minNodes,maxNodes)/2))+1) );

}

}

  

if (randomRadius == false) {

node[i].setNodeRadius(branch[node[i].getBranchPosition()].getRadius());

} else {

node[i].setNodeRadius(random(randRadiusLow,randRadiusHigh)*branch[node[i].getBranchPosition()].getRadius());

}

  

// Set the angle by adding the Node's branch angle (2 PI / Number of nodes) to the previous node's angle.

if (randomized == true) {

node[i].setAngle(random(randLow,1.01)*(node[i-1].getAngle() + (TWO_PI / node[node[i].getParentReference()].getNodeNumber() )));

}

if (randomized == false) {

node[i].setAngle((node[i-1].getAngle() + (TWO_PI / node[node[i].getParentReference()].getNodeNumber() )));

}

  

// Calculate and set the x, y position of the node

if (randomized == true) {

x = node[i-1].getX() + sin(node[i].getAngle()) * random(randLow,randHigh)*node[node[i].getParentReference()].getNodeRadius();

y = node[i-1].getY() + cos(node[i].getAngle()) * random(randLow,randHigh)*node[node[i].getParentReference()].getNodeRadius();

}

 

if (randomized == false) {

x = node[i-1].getX() + sin(node[i].getAngle()) * node[node[i].getParentReference()].getNodeRadius();

y = node[i-1].getY() + cos(node[i].getAngle()) * node[node[i].getParentReference()].getNodeRadius();

}

 

node[i].setPosition(x, y);

 

// Set action

node[i].setAction("up");

 

// Set parentNode to this node

parentNode = i;

}

 

// Go down one branch level, add node from parent at lower branch level

if (branchAction == "down") {

 

// Set Parent Reference.

node[i].setParentReference(parentNode);

 

// Keep the parent node's branch level.

node[i].setBranchPosition(node[node[i-1].getParentReference()].getBranchPosition());

 

// Add 1 to the parent node's position.

node[i].setNodePosition(node[node[i-1].getParentReference()].getNodePosition() + 1);

  

if (randomNumberNodes == false) {

node[i].setNodeNumber(branch[node[i].getBranchPosition()].getNodeNum() );

} else {

node[i].setNodeNumber(int((2*round(random(minNodes,maxNodes)/2))+1) );

}

 

if (randomRadius == false) {

node[i].setNodeRadius(branch[node[i].getBranchPosition()].getRadius());

} else {

node[i].setNodeRadius(random(randRadiusLow,randRadiusHigh)*branch[node[i].getBranchPosition()].getRadius());

}

  

// Set the angle by adding the node's branch angle (2 PI / Number of nodes) to the parent's angle.

if (randomized == true) {

node[i].setAngle(random(.99,1.01)*(node[node[i-1].getParentReference()].getAngle() + (TWO_PI / node[node[i].getParentReference()].getNodeNumber() )));

}

if (randomized == false) {

node[i].setAngle((node[node[i-1].getParentReference()].getAngle() + (TWO_PI / node[node[i].getParentReference()].getNodeNumber() )));

}

  

// Calculate and set the x, y position of the node

if (randomized == true) {

x = node[parentNode].getX() + sin(node[i].getAngle()) * random(randLow,randHigh)*node[node[i].getParentReference()].getNodeRadius();

y = node[parentNode].getY() + cos(node[i].getAngle()) * random(randLow,randHigh)*node[node[i].getParentReference()].getNodeRadius();

}

 

if (randomized == false) {

x = node[parentNode].getX() + sin(node[i].getAngle()) * node[node[i].getParentReference()].getNodeRadius();

y = node[parentNode].getY() + cos(node[i].getAngle()) * node[node[i].getParentReference()].getNodeRadius();

}

  

node[i].setPosition(x, y);

 

// Set action

node[i].setAction("down");

}

 

// Go down one branch level, reuse parent at lower branch level

if (branchAction == "reuse") {

 

// Set Parent Reference.

node[i].setParentReference(parentNode);

 

// Keep the parent node's branch level.

node[i].setBranchPosition(node[node[i-1].getParentReference()].getBranchPosition());

 

// Keep the parent node position.

node[i].setNodePosition(node[node[i-1].getParentReference()].getNodePosition());

 

// Keep the parent node number.

node[i].setNodeNumber(node[node[i-1].getParentReference()].getNodeNumber());

 

// Keep the parent node radius.

node[i].setNodeRadius(node[node[i-1].getParentReference()].getNodeRadius());

 

// Keep the parent angle.

node[i].setAngle(node[node[i-1].getParentReference()].getAngle());

 

// Keep the parent x.

x = node[node[i-1].getParentReference()].getX();

 

// Keep the parent y.

y = node[node[i-1].getParentReference()].getY();

 

// Keep the parent postition.

node[i].setPosition(x, y);

 

// Set action

node[i].setAction("reuse");

 

// set parentNode to the reused node's parent to keep it moving down

parentNode = node[i].getParentReference();

}

 

if (debug == true) {

// print node information

print(i + ", ");

node[i].printNode();

}

}

 

// buildArray END

}

  

//-------------------

// Drawing Functions

//-------------------

void drawAllChildToChild() {

 

println("START: Draw line connecting all children together...");

// Draw line connecting all children together

for (i = 1; i < arrayLength; i++) {

for (j = 2; j < arrayLength; j++) {

 

if(node[i].getParentReference() == node[j].getParentReference() && i!= j) {

drawMod = numberBranches-node[i].getBranchPosition()+1;

 

if (randomized == true) {

stroke(random(randLow,randHigh)*round(random(100,150)),

random(randLow,randHigh)*round(random(100,150)),

random(randLow,randHigh)*round(random(100,150)),

random(randLow,randHigh)*round(random(200,255))*drawMod/numberBranches);

strokeWeight(random(.75,1.5)*drawMod*.03);

}

 

if (randomized == false) {

stroke(10 * drawMod/numberBranches,

200 * drawMod/numberBranches,

200 * drawMod/numberBranches,

255 * drawMod/numberBranches);

strokeWeight(drawMod*.05);

}

pg.beginDraw();

line (node[i].getX(), node[i].getY(), node[j].getX(), node[j].getY());

pg.endDraw();

 

}

}

}

println("END: Draw line connecting all children together.");

}

  

void drawChildInRing() {

println("START: Draw line connecting all children together in a ring...");

// Draw line connecting all children together in a ring

  

for (i = 1; i < arrayLength; i++) {

for (j = 2; j < arrayLength; j++) {

if( (node[i].getParentReference() == node[j].getParentReference() && node[i].getNodePosition() + 1 == node[j].getNodePosition())

||

(node[i].getParentReference() == node[j].getParentReference() && (node[i].getNodePosition() == 1

&& node[j].getNodePosition() == node[node[j].getParentReference()].getNodeNumber()))

)

{

drawMod = numberBranches-node[i].getBranchPosition()+1;

 

if (randomized == true) {

stroke(random(randLow,randHigh)*round(random(215,255))*drawMod/numberBranches,

random(randLow,randHigh)*round(random(125,150))*drawMod/numberBranches,

random(randLow,randHigh)*round(random(25,75))*drawMod/numberBranches,

random(randLow,randHigh)*round(random(200,255))*drawMod/numberBranches);

strokeWeight(random(.75,1.25)*drawMod*.0625);

}

 

if (randomized == false) {

stroke(250 * drawMod/numberBranches,

166 * drawMod/numberBranches,

52 * drawMod/numberBranches,

255 * drawMod/numberBranches);

strokeWeight(drawMod*.0625);

}

pg.beginDraw();

line (node[i].getX(), node[i].getY(), node[j].getX(), node[j].getY());

pg.endDraw();

}

}

}

 

println("END: Draw line connecting all children together in a ring.");

}

 

void drawParentToChild() {

println("START: Draw line connecting parent node to child node...");

// Draw line connecting parent node to child node

for (i = 1; i < arrayLength; i++) {

if(node[i].getAction() != "reuse") {

drawMod = numberBranches-node[i].getBranchPosition()+1;

 

if (randomized == true) {

stroke(random(randLow,randHigh)*round(random(0,50)),

random(randLow,randHigh)*round(random(0,150)),

random(randLow,randHigh)*round(random(200,255)),

random(randLow,randHigh)*round(random(200,255))*drawMod/numberBranches); //blue

strokeWeight(random(.75,1.5)*drawMod*.125);

}

 

if (randomized == false) {

stroke(0,

127 * drawMod/numberBranches,

195 * drawMod/numberBranches,

255 * drawMod/numberBranches); //blue

strokeWeight(drawMod*.125);

}

pg.beginDraw();

line (node[i].getX(), node[i].getY(), node[node[i].getParentReference()].getX(), node[node[i].getParentReference()].getY());

pg.endDraw();

}

}

println("END: Draw line connecting parent node to child node.");

}

  

void drawNodeOrbits() {

println("START: Draw ellipse at each node with radius...");

// Draw ellipse at each node

for (i = 0; i < arrayLength; i++) {

if(node[i].getAction() != "reuse") {

drawMod = (numberBranches - node[i].getBranchPosition())*1.5;

 

// Fill

if (randomized == true) {

fill(random(randLow,randHigh)*round(random(5,125)),

random(randLow,randHigh)*round(random(175,255)),

random(randLow,randHigh)*round(random(5,125)),

random(randLow,randHigh)*round(random(30,50))*drawMod/numberBranches); //green

}

 

if (randomized == false) {

fill(127 * drawMod/numberBranches,

255 * drawMod/numberBranches,

50 * drawMod/numberBranches,

40 * drawMod/numberBranches);

}

 

// Stroke

if (randomized == true) {

stroke(random(randLow,randHigh)*round(random(0,125)),

random(randLow,randHigh)*round(random(200,255)),

random(randLow,randHigh)*round(random(0,125)),

random(randLow,randHigh)*round(random(225,255))*drawMod/numberBranches); //green

strokeWeight(random(.75,1.5)*drawMod*.0625);

}

 

if (randomized == false) {

stroke(63 * drawMod/numberBranches,

127 * drawMod/numberBranches,

25 * drawMod/numberBranches,

255 * drawMod/numberBranches);

strokeWeight(drawMod*.0625);

}

 

pg.beginDraw();

ellipse(node[i].getX(), node[i].getY(), node[i].getNodeRadius(), node[i].getNodeRadius());

pg.endDraw();

}

}

println("END: Draw ellipse at each node with radius.");

}

  

void drawNodeEllipse() {

println("START: Draw ellipse at each node...");

// Draw ellipse at each node

for (i = 0; i < arrayLength; i++) {

for (j = 0; j < numberBranches; j++) {

if (node[i].getBranchPosition()==j){

if(node[i].getAction() != "reuse") {

drawMod = (numberBranches - node[i].getBranchPosition());

 

// Fill

if (randomized == true) {

fill(random(randLow,randHigh)*round(random(100,150))*drawMod/numberBranches,

random(randLow,randHigh)*round(random(200,255))*drawMod/numberBranches,

random(randLow,randHigh)*round(random(25,75))*drawMod/numberBranches,

random(randLow,randHigh)*round(random(200,255))*drawMod/numberBranches); //green

}

 

if (randomized == false) {

fill(127 * drawMod/numberBranches,

255 * drawMod/numberBranches,

50 * drawMod/numberBranches,

250 * drawMod/numberBranches);

}

 

// Stroke

if (randomized == true) {

stroke(random(randLow,randHigh)*round(random(0,50))*drawMod/numberBranches,

random(randLow,randHigh)*round(random(100,150))*drawMod/numberBranches,

random(randLow,randHigh)*round(random(0,50))*drawMod/numberBranches,

random(randLow,randHigh)*round(random(200,255))*drawMod/numberBranches); //green

strokeWeight(random(.75,1.5)*drawMod*.0625);

}

 

if (randomized == false) {

stroke(63 * drawMod/numberBranches,

127 * drawMod/numberBranches,

25 * drawMod/numberBranches,

250 * drawMod/numberBranches);

strokeWeight(drawMod*.0625);

}

 

pg.beginDraw();

ellipse(node[i].getX(), node[i].getY(),pow(drawMod,1.5),pow(drawMod,1.5));

pg.endDraw();

}

}

}

}

println("END: Draw ellipse at each node.");

}

 

// ---------------

// HERE BE CLASSES

// ---------------

  

public class Node{

 

// the first letter of a class name should be capitalized

 

// the class has fields

// for fields, spell the first word lowercase, capitalize the first letter of each subsequent word

// --------------------------

 

// these are private and you use the get Methods to return the public values

 

// private float radius, theta, x, y, action;

int branchPosition, nodePosition, parentReference, nodeNumber;

float theta, x, y, nodeRadius;

String action;

 

// the class has constructors

// --------------------------

 

public void Node(int startBranchPosition, int startNodePosition, int startParentReference, int startNodeNumber, float startNodeRadius, float startAngle, float startX, float startY, String startAction) {

branchPosition = startBranchPosition;

nodePosition = startNodePosition;

parentReference = startParentReference;

nodeNumber = startNodeNumber;

nodeRadius = startNodeRadius;

theta = startAngle;

x = startX;

y = startY;

action = startAction;

}

 

// the class has methods

// the first (or only) word in a method name should be a verb

// --------------------------

 

// ---------SET and GET------------

public int getBranchPosition() {

return branchPosition;

}

 

public void setBranchPosition(int newValue) {

branchPosition = newValue;

}

 

public int getNodePosition() {

return nodePosition;

}

 

public void setNodePosition(int newValue) {

nodePosition = newValue;

}

 

public int getParentReference() {

return parentReference;

}

 

public void setParentReference(int newValue) {

parentReference = newValue;

}

 

public int getNodeNumber() {

return nodeNumber;

}

 

public void setNodeNumber(int newValue) {

nodeNumber = newValue;

}

 

public float getNodeRadius() {

return nodeRadius;

}

 

public void setNodeRadius(float newValue) {

nodeRadius = newValue;

}

  

public float getAngle() {

return theta;

}

 

public void setAngle(float newValue) {

theta = newValue;

}

 

public float getX() {

return (x);

}

 

public float getY() {

return (y);

}

 

public void setPosition(float newX, float newY) {

x = newX;

y = newY;

}

 

public String getAction() {

return action;

}

 

public void setAction(String newValue) {

action = newValue;

}

 

public void printNode() {

println(branchPosition + ", " + nodePosition + ", " + parentReference + ", " + nodeNumber + ", " + nodeRadius + ", " + theta + ", " + x + ", " + y + ", " + action);

}

}

  

public class Branch{

 

// the first letter of a class name should be capitalized

 

// the class has fields

// for fields, spell the first word lowercase, capitalize the first letter of each subsequent word

// --------------------------

 

// these are private and you use the get Methods to return the public values

 

// private float radius, theta, x, y;

int NodeNum;

float radius;

 

// the class has constructors

// --------------------------

 

public void Branch(int startNodeNum, float startRadius) {

NodeNum = startNodeNum;

radius = startRadius;

}

 

// the class has methods

// the first (or only) word in a method name should be a verb

// --------------------------

 

// ---------SET and GET------------

 

public int getNodeNum() {

return NodeNum;

}

 

public void setNodeNum(int newValue) {

NodeNum = newValue;

}

 

public float getRadius() {

return radius;

}

 

public void setRadius(float newValue) {

radius = newValue;

}

 

}

7435x2878 (Photomerge)

Debug Console Enabler

Wild Hunt: ReShaded

Debugging: Marius, Dave, Pooja

Photo of what is possibly the first real bug found in a computer.

From en.wikipedia.org/wiki/Software_bug

I found a couple of pictures from 2001. And while I was debugging my printer / scanner I made this collage. Quite conceptual don't you think :-)

 

Rotterdam, Boezembocht, ing. P. Kosterlaan - near the steam train depot.

Unfortunately, they've cleaned up this nicely desolate terrain and put fences around it.

 

See also: www.flickr.com/photos/uair01/3312498808/

 

= = = = =

 

At the moment I'm reading the (well researched book) "Explaining Hitler: The Search for the Origins of His Evil", by Ron Rosenbaum - and suddenly these two pictures seem full of negative associations with WWII and the death camps. Strange ... I never really intended that.

   

1 2 ••• 28 29 31 33 34 ••• 79 80