Welcome to the Onshape forum! Ask questions and join in the discussions about everything Onshape.
First time visiting? Here are some places to start:- Looking for a certain topic? Check out the categories filter or use Search (upper right).
- Need support? Ask a question to our Community Support category.
- Please submit support tickets for bugs but you can request improvements in the Product Feedback category.
- Be respectful, on topic and if you see a problem, Flag it.
If you would like to contact our Community Manager personally, feel free to send a private message or an email.
Graphics Performance
rex_hanson
Member Posts: 41 ✭✭
I just got a new PC from my son-in-law and now OnShape is horribly slow. I ran the performance check and the graphics performance was basically at zero on the graph. So then I ran the chrome:gpu check and got a report with several problems identified. I was wondering if someone could help me understand this report and what I need to do. The attached report follows: (Thank You!)
Graphics Feature Status
- Canvas: Hardware accelerated
- Flash: Hardware accelerated
- Flash Stage3D: Hardware accelerated
- Flash Stage3D Baseline profile: Hardware accelerated
- Compositing: Hardware accelerated
- Multiple Raster Threads: Enabled
- Out-of-process Rasterization: Unavailable
- OpenGL: Enabled
- Hardware Protected Video Decode: Unavailable
- Rasterization: Unavailable
- Skia Renderer: Disabled
- Video Decode: Unavailable
- WebGL: Hardware accelerated
- WebGL2: Hardware accelerated
Driver Bug Workarounds
- clear_uniforms_before_first_program_use
- decode_encode_srgb_for_generatemipmap
- disable_d3d11_video_decoder
- disable_delayed_copy_nv12
- disable_direct_composition_video_overlays
- disable_discard_framebuffer
- disable_dxgi_zero_copy_video
- disable_vp_scaling
- exit_on_context_lost
- force_cube_complete
- scalarize_vec_and_mat_constructor_args
- disabled_extension_GL_KHR_blend_equation_advanced
- disabled_extension_GL_KHR_blend_equation_advanced_coherent
Problems Detected
- Accelerated video decode interferes with GPU sandbox on certain NVIDIA drivers: 298968
Disabled Features: accelerated_video_decode - GPU rasterization should only be enabled on NVIDIA and Intel and AMD RX-R2 GPUs with DX11+ or any GPU using ANGLE's GL backend.: 1047002
Disabled Features: gpu_rasterization - Protected video decoding with swap chain is for Windows and Intel only
Disabled Features: protected_video_decode - Some drivers are unable to reset the D3D device in the GPU process sandbox
Applied Workarounds: exit_on_context_lost - Clear uniforms before first program use on all platforms: 124764, 349137
Applied Workarounds: clear_uniforms_before_first_program_use - Always rewrite vec/mat constructors to be consistent: 398694
Applied Workarounds: scalarize_vec_and_mat_constructor_args - ANGLE crash on glReadPixels from incomplete cube map texture: 518889
Applied Workarounds: force_cube_complete - Framebuffer discarding can hurt performance on non-tilers: 570897
Applied Workarounds: disable_discard_framebuffer - Zero-copy NV12 video displays incorrect colors on NVIDIA drivers.: 635319
Applied Workarounds: disable_dxgi_zero_copy_video - Disable KHR_blend_equation_advanced until cc shaders are updated: 661715
Applied Workarounds: disable(GL_KHR_blend_equation_advanced), disable(GL_KHR_blend_equation_advanced_coherent) - Decode and Encode before generateMipmap for srgb format textures on Windows: 634519
Applied Workarounds: decode_encode_srgb_for_generatemipmap - Delayed copy NV12 displays incorrect colors on NVIDIA drivers.: 728670
Applied Workarounds: disable_delayed_copy_nv12 - Hardware overlays are only supported on certain Intel/AMD gpus: 932879, 1025427
Applied Workarounds: disable_direct_composition_video_overlays - Video processor blit to swap chain results in column of black pixels on older NVIDIA drivers at certain scaling factors: 911349
Applied Workarounds: disable_direct_composition_video_overlays - Don't use video processor scaling on non-Intel GPUs.: 993233
Applied Workarounds: disable_vp_scaling - Disable D3D11VideoDecoder due to crashes on NVIDIA: 1041166
Applied Workarounds: disable_d3d11_video_decoder
ANGLE Features
- disable_program_caching_for_transform_feedback (Frontend workarounds): Disabled
On some GPUs, program binaries don't contain transform feedback varyings - lose_context_on_out_of_memory (Frontend workarounds): Enabled: true
Some users rely on a lost context notification if a GL_OUT_OF_MEMORY error occurs - scalarize_vec_and_mat_constructor_args (Frontend workarounds) 398694: Enabled: true
Always rewrite vec/mat constructors to be consistent - sync_framebuffer_bindings_on_tex_image (Frontend workarounds): Disabled
On some drivers TexImage sometimes seems to interact with the Framebuffer - add_dummy_texture_no_render_target (D3D workarounds) anglebug:2152: Disabled
On some drivers when rendering with no render target, two bugs lead to incorrect behavior - allow_clear_for_robust_resource_init (D3D workarounds) 941620: Enabled: true
Some drivers corrupt texture data when clearing for robust resource initialization. - call_clear_twice (D3D workarounds) 655534: Disabled
Using clear() may not take effect - depth_stencil_blit_extra_copy (D3D workarounds) anglebug:1452: Disabled
Bug in some drivers triggers a TDR when using CopySubresourceRegion from a staging texture to a depth/stencil - disable_b5g6r5_support (D3D workarounds): Disabled
Textures with the format DXGI_FORMAT_B5G6R5_UNORM have incorrect data - dont_translate_uniform_block_to_structured_buffer (D3D workarounds): Disabled
Fails to allocate ShaderResourceView for StructuredBuffer on some drivers - emulate_isnan_float (D3D workarounds) 650547: Disabled
Using isnan() on highp float will get wrong answer - emulate_tiny_stencil_textures (D3D workarounds): Disabled
1x1 and 2x2 mips of depth/stencil textures aren't sampled correctly - expand_integer_pow_expressions (D3D workarounds): Enabled: true
The HLSL optimizer has a bug with optimizing 'pow' in certain integer-valued expressions - flush_after_ending_transform_feedback (D3D workarounds): Disabled
Some drivers sometimes write out-of-order results to StreamOut buffers when transform feedback is used to repeatedly write to the same buffer positions - force_atomic_value_resolution (D3D workarounds) anglebug:3246: Disabled
On some drivers the return value from RWByteAddressBuffer.InterlockedAdd does not resolve when used in the .yzw components of a RWByteAddressBuffer.Store operation - get_dimensions_ignores_base_level (D3D workarounds): Disabled
Some drivers do not take into account the base level of the texture in the results of the HLSL GetDimensions builtin - mrt_perf_workaround (D3D workarounds): Enabled: true
Some drivers have a bug where they ignore null render targets - pre_add_texel_fetch_offsets (D3D workarounds): Disabled
HLSL's function texture.Load returns 0 when the parameter Location is negative, even if the sum of Offset and Location is in range - rewrite_unary_minus_operator (D3D workarounds): Disabled
Evaluating unary minus operator on integer may get wrong answer in vertex shaders - select_view_in_geometry_shader (D3D workarounds): Disabled
The viewport or render target slice will be selected in the geometry shader stage for the ANGLE_multiview extension - set_data_faster_than_image_upload (D3D workarounds): Disabled: false
Set data faster than image upload - skip_vs_constant_register_zero (D3D workarounds): Disabled
In specific cases the driver doesn't handle constant register zero correctly - use_instanced_point_sprite_emulation (D3D workarounds): Disabled: false
Some D3D11 renderers do not support geometry shaders for pointsprite emulation - use_system_memory_for_constant_buffers (D3D workarounds) 593024: Disabled
Copying from staging storage to constant buffer storage does not work - zero_max_lod (D3D workarounds): Disabled
Missing an option to disable mipmaps on a mipmapped texture
Version Information
Data exported | 2020-05-28T12:58:38.593Z |
Chrome version | Chrome/81.0.4044.138 |
Operating system | Windows NT 10.0.18363 |
Software rendering list URL | https://chromium.googlesource.com/chromium/src/+/8c6c7ba89cc9453625af54f11fd83179e23450fa/gpu/config/software_rendering_list.json |
Driver bug list URL | https://chromium.googlesource.com/chromium/src/+/8c6c7ba89cc9453625af54f11fd83179e23450fa/gpu/config/gpu_driver_bug_list.json |
ANGLE commit id | 91c39dae9a51 |
2D graphics backend | Skia/81 5e3098d8fad5b3a6fa9c70d6438f416eec201db7 |
Command Line | "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --flag-switches-begin --flag-switches-end --enable-audio-service-sandbox |
Driver Information
Initialization time | 565 |
In-process GPU | false |
Passthrough Command Decoder | true |
Sandboxed | true |
GPU0 | VENDOR= 0x10de, DEVICE=0x0391, SUBSYS=0xc5533842, REV=161 *ACTIVE* |
GPU1 | VENDOR= 0x1414, DEVICE=0x008c |
Optimus | false |
AMD switchable | false |
Desktop compositing | Aero Glass |
Direct composition | false |
Supports overlays | false |
YUY2 overlay support | NONE |
NV12 overlay support | NONE |
Diagonal Monitor Size of \\.\DISPLAY1 | 23.9" |
Driver D3D12 feature level | Not supported |
Driver Vulkan API version | Not supported |
Driver vendor | ANGLE (NVIDIA) |
Driver version | 9.18.13.908 |
GPU CUDA compute capability major version | 0 |
Pixel shader version | 3.0 |
Vertex shader version | 3.0 |
Max. MSAA samples | 4 |
Machine model name | |
Machine model version | |
GL_VENDOR | Google Inc. |
GL_RENDERER | ANGLE (NVIDIA GeForce 7600 GT Direct3D9Ex vs_3_0 ps_3_0) |
GL_VERSION | OpenGL ES 2.0.0 (ANGLE 2.1.0.91c39dae9a51) |
GL_EXTENSIONS | GL_ANGLE_client_arrays GL_ANGLE_explicit_context GL_ANGLE_explicit_context_gles1 GL_ANGLE_framebuffer_blit GL_ANGLE_framebuffer_multisample GL_ANGLE_instanced_arrays GL_ANGLE_memory_size GL_ANGLE_multi_draw GL_ANGLE_pack_reverse_row_order GL_ANGLE_program_cache_control GL_ANGLE_request_extension GL_ANGLE_robust_client_memory GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_ANGLE_texture_usage GL_ANGLE_translated_shader_source GL_CHROMIUM_bind_generates_resource GL_CHROMIUM_bind_uniform_location GL_CHROMIUM_color_buffer_float_rgb GL_CHROMIUM_color_buffer_float_rgba GL_CHROMIUM_copy_texture GL_CHROMIUM_lose_context GL_CHROMIUM_sync_query GL_EXT_blend_minmax GL_EXT_color_buffer_half_float GL_EXT_debug_marker GL_EXT_float_blend GL_EXT_frag_depth GL_EXT_occlusion_query_boolean GL_EXT_read_format_bgra GL_EXT_robustness GL_EXT_shader_texture_lod GL_EXT_texture_compression_dxt1 GL_EXT_texture_filter_anisotropic GL_EXT_texture_format_BGRA8888 GL_EXT_texture_storage GL_EXT_unpack_subimage GL_KHR_debug GL_KHR_parallel_shader_compile GL_NV_fence GL_NV_pack_subimage GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_depth32 GL_OES_element_index_uint GL_OES_get_program_binary GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8 GL_OES_standard_derivatives GL_OES_surfaceless_context GL_OES_texture_border_clamp GL_OES_texture_float GL_OES_texture_half_float GL_OES_texture_half_float_linear GL_OES_texture_npot GL_OES_vertex_array_object GL_WEBGL_video_texture |
Disabled Extensions | GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent |
Disabled WebGL Extensions | |
Window system binding vendor | Google Inc. (adapter LUID: 0000000000008eef) |
Window system binding version | 1.4 (ANGLE 2.1.0.91c39dae9a51) |
Window system binding extensions | EGL_EXT_create_context_robustness EGL_ANGLE_d3d_share_handle_client_buffer EGL_ANGLE_d3d_texture_client_buffer EGL_ANGLE_surface_d3d_texture_2d_share_handle EGL_ANGLE_query_surface_pointer EGL_ANGLE_window_fixed_size EGL_NV_post_sub_buffer EGL_KHR_create_context EGL_EXT_device_query EGL_KHR_image EGL_KHR_image_base EGL_KHR_gl_texture_2D_image EGL_KHR_gl_renderbuffer_image EGL_KHR_get_all_proc_addresses EGL_ANGLE_flexible_surface_compatibility EGL_ANGLE_create_context_webgl_compatibility EGL_CHROMIUM_create_context_bind_generates_resource EGL_EXT_pixel_format_float EGL_KHR_surfaceless_context EGL_ANGLE_display_texture_share_group EGL_ANGLE_create_context_client_arrays EGL_ANGLE_program_cache_control EGL_ANGLE_robust_resource_initialization EGL_ANGLE_create_context_extensions_enabled EGL_ANDROID_blob_cache EGL_ANDROID_recordable EGL_ANGLE_create_context_backwards_compatible |
Direct rendering version | unknown |
Reset notification strategy | 0x8252 |
GPU process crash count | 0 |
gfx::BufferFormats supported for allocation and texturing | R_8: not supported, R_16: not supported, RG_88: not supported, BGR_565: not supported, RGBA_4444: not supported, RGBX_8888: not supported, RGBA_8888: not supported, BGRX_8888: not supported, BGRX_1010102: not supported, RGBA_1010102: not supported, BGRA_8888: not supported, RGBA_F16: not supported, YVU_420: not supported, YUV_420_BIPLANAR: not supported, P010: not supported |
Compositor Information
Tile Update Mode | One-copy |
Partial Raster | Enabled |
GpuMemoryBuffers Status
R_8 | Software only |
R_16 | Software only |
RG_88 | Software only |
BGR_565 | Software only |
RGBA_4444 | Software only |
RGBX_8888 | GPU_READ, SCANOUT |
RGBA_8888 | GPU_READ, SCANOUT |
BGRX_8888 | Software only |
BGRX_1010102 | Software only |
RGBA_1010102 | Software only |
BGRA_8888 | Software only |
RGBA_F16 | Software only |
YVU_420 | Software only |
YUV_420_BIPLANAR | Software only |
P010 | Software only |
Display(s) Information
Info | Display[2528732444] bounds=[0,0 1920x1080], workarea=[0,0 1920x1040], scale=1, rotation=0, panel_rotation=0 external. |
Color space information | {primaries_d50_referred: [[0.6565, 0.3301], [0.3212, 0.5978], [0.1564, 0.0916]], transfer:IEC61966_2_1, matrix:RGB, range:FULL} |
SDR white level in nits | 100 |
Bits per color component | 8 |
Bits per pixel | 24 |
Refresh Rate in Hz | 60 |
Video Acceleration Information
Encode h264 baseline | 0x0 to 3840x2176 pixels, and/or 30.000 fps |
Encode h264 main | 0x0 to 3840x2176 pixels, and/or 30.000 fps |
Encode h264 high | 0x0 to 3840x2176 pixels, and/or 30.000 fps |
Vulkan Information
Diagnostics
0
|
Log Messages
- [8892:3424:0528/074357.479:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Critical) eglInitialize: No available renderers.
- [8892:3424:0528/074357.479:ERROR:gl_surface_egl.cc(1152)] : eglInitialize D3D11 failed with error EGL_NOT_INITIALIZED, trying next display type
- [8892:3424:0528/074357.547:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/074357.641:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/074357.643:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/074357.643:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/074357.644:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/074400.944:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/074402.537:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/074403.503:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/074403.608:WARNING:ipc_message_attachment_set.cc(49)] : MessageAttachmentSet destroyed with unconsumed attachments: 0/1
- [8892:3424:0528/074403.608:WARNING:ipc_message_attachment_set.cc(49)] : MessageAttachmentSet destroyed with unconsumed attachments: 0/1
- [8892:3424:0528/074408.079:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/074409.017:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:10872:0528/074428.390:WARNING:angle_platform_impl.cc(45)] : compileToBinary(256): C:\fakepath(101,24-69): warning X3571: pow(f, e) will not work for negative f, use abs(f) or conditionally handle negative values if you expect them
- [8892:4412:0528/074428.707:WARNING:angle_platform_impl.cc(45)] : compileToBinary(256): C:\fakepath(92,2-46): warning X3550: array reference cannot be used as an l-value; not natively addressable, forcing loop to unroll
- GpuProcessHost: The unsandboxed GPU process exited normally. Everything is okay.
- [8892:3424:0528/074858.907:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/075127.412:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/075127.414:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/075243.428:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/075243.430:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/075637.851:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/075638.898:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/075650.543:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/075733.965:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/075817.035:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- [8892:3424:0528/075835.612:ERROR:gl_surface_egl.cc(692)] : EGL Driver message (Error) eglQueryDeviceAttribEXT: Bad attribute.
- GpuProcessHost: The unsandboxed GPU process exited normally. Everything is okay.
Tagged:
0
Best Answers
-
john_mcclary Member, Developers Posts: 3,933 PROSo it looks like your limitaion when picking a graphics card will be a "pci-express 2.0 x16" that runs less than 2400mhz
This would be an ok budget card.
https://www.amazon.com/MSI-GT-710-1GD3H-LPV1/dp/B01DOFD0G8/ref=sr_1_8?dchild=1&keywords=nvidia%2Bgeforce%2Bgtx%2B970&qid=1594847999&sr=8-8&th=1
No guarantee on Onshape's performance.
how big are the models you are trying to open anyway ?5 -
alnis Member, Developers Posts: 452 EDUFor future reference--if you see Google SwiftShader as your GL renderer, it means that your CPU is used to render things in Chrome (very slow) rather than your GPU. In that case, you need to switch Chrome to use your actual GPU. Those results seem about what I would expect (or maybe even better than expected). Even integrated graphics from the past few years are much more powerful than the GT 710. One thing that can slow your framerate down is running at very high resolutions. What is your monitor's resolution?Get in touch: contact@alnis.dev | My personal site: https://alnis.dev
@alnis is my personal account. @alnis_ptc is my official PTC account.5 -
alnis Member, Developers Posts: 452 EDU1920 x 1080 sounds good and should be alright with most models. I've found that my framerate can increase by as much as ~60% when running in a smaller window/lower resolution, and it can really slow down when running maximized on very high resolution displays (Surface Pro, PixelBook, etc.).Get in touch: contact@alnis.dev | My personal site: https://alnis.dev
@alnis is my personal account. @alnis_ptc is my official PTC account.5
Answers
that graphics card (NVIDIA GeForce 7600 GT) is extremely outdated. It could be due to it being 6 years older than webGL (which is what Onshape needs to render)
so it is likely not compatible even with new drivers.
being that old, i would like to know the rest of your computer specs to see if upgrading the video card is even an option
Processor: Intel Core i7 930 @ 2.8 GHz
Memory: 18 GB
System: 64-bit, x64 based processor
OS: Windows 10 Home
Graphics Card: NVIDIA GeForce 7600 GT
Either the CPU or the graphics card has a water cooled system. My son-in-law put the system together for me with components he had from other computers he'd put together.
I pretty much only use this computer to run Onshape and check e-mail. No gaming or anything like that. I would like decent performance but it doesn't need to be bleeding edge or screaming fast. I don't know anything about webGL.
Thanks in advance for any recommendations you can offer.
it should be easy to spot, here are some examples:
We would need to see what is compatible with your motherboard.
It looks like the processor only supports pci express 1.0 so you don't want to buy anything expensive as most of the performance will be reduced by rest of the other components.
I'd start by looking at something like this. It is cheap and modern enough it should support webGL. I can't say how well Onshape will run on it. But by the sounds of it, this may already be over powered for your motherboard/processor.
https://www.amazon.com/MSI-GT-710-1GD3H-LPV1/dp/B01DOFD3RY/ref=sr_1_8?dchild=1&keywords=nvidia+geforce+gtx+970&qid=1594847999&sr=8-8
If you want my honest opinion, this may be a lost cause. From the stats I can see in the original post, this computer is far too old. You may be better off spending a little more and get a chromebook.
Referbished:
https://www.amazon.com/Acer-Chromebook-Celeron-ChromeOS-Renewed/dp/B08BLTMMPL/ref=sr_1_24?dchild=1&keywords=chromebook&qid=1594849293&refinements=p_n_feature_seven_browse-bin%3A18107819011&rnid=3012494011&s=pc&sr=1-24
or
New:
https://www.amazon.com/Acer-Display-Graphics-Keyboard-A515-43-R19L/dp/B07RF1XD36/ref=psdc_13896615011_t2_B086N23FB5
This would be an ok budget card.
https://www.amazon.com/MSI-GT-710-1GD3H-LPV1/dp/B01DOFD0G8/ref=sr_1_8?dchild=1&keywords=nvidia%2Bgeforce%2Bgtx%2B970&qid=1594847999&sr=8-8&th=1
No guarantee on Onshape's performance.
how big are the models you are trying to open anyway ?
But liko I said, the rest of your system is old tech.
A chrome book wont do 'much', more, but should be at least 1/3 of the way up the bar
really. What do you want to be able to do vith Onshape
Regarding what I want to do, for the most part I model things to make on my 3D printer. My cheek riser models have a lot of small features. My other activities are to model up woodworking projects once in a while, but these are pretty simple.
@alnis is my personal account. @alnis_ptc is my official PTC account.
@alnis is my personal account. @alnis_ptc is my official PTC account.