Code Monkey home page Code Monkey logo

icarus's Introduction

๐Ÿง” About me

I'm an engineering lead with ~30 years experience developing cross platform software for the web, desktop, server, mobile and routers with open source projects going back over two decades. I've worked in startups, large enterprises, on non-profit/civic-tech and started two companies (and way too many side projects).

โœ Side Projects

Most of my public work on GitHub is on personal side projects and spans different types of software. These are some of the smaller things I've worked on more recently. Most of the open source projects I've worked on over the last 20-30 years are lost to the wind (or maybe sitting around in an SVN or CVS repository, on sitting on a disk on a shelf somewhere).

A small collection of scenes in a first person perspective. The terrain and objects in each scene (trees, rocks, clouds, etc) are both created and placed at runtime using procedural generation. Features multiple real time lights (no baked shadows), instanced gemoetry with thousands of objects on screen at the same time and physics modeling for hundreds of objects at a time. It uses flat / vertex shading and a low-poly style to optimize for performance on mid-tier systems (and to avoid the overhead of requiring downloading of textures). It also features material shaders and particle effects.

It is built with Next.js and with custom components created for React Three Fibre - a wrapper for Three.js, which is in turn an abstraction for WebGL. This an unconventional stack, and it's a very simple demo, but it was a fun exercise in seeing what's possible using those components and to better understand how RTF and Three.js work in practice.

๐Ÿ’ฝ Ardent Industry

A live-updating database of over 100,000,000 locations, tracking millions of commodity prices across galactic trade markets in the year 3038, using data from players of the game Elite Dangerous (collected from game clients using an API provided by the games developers). It's a low-fi tech solution built entirely in JavaScript and SQLite with a similarly low-fi asthetic.

๐Ÿ›ฐ ICARUS Terminal

ICARUS Terminal is a companion app / second screen for the game Elite: Dangerous, the latest follow up to the 1984 classic space game Elite. Designed for both desktop/laptop computers and for tablets/phones, the app hooks into the game to provide context-sensitive real time information (event driven and socket based) by combining the game API with third party APIs. Built with Next.js, React, Node.js, Go and C++.

๐Ÿ”‘ NextAuth.js

I created NextAuth.js a few years ago. It now has millions of downloads a month and is apparently of the top 1000 open source projects on GitHub (according to GitHub). It's an open source, community supported project based around interoperability with open standards. NextAuth.js has grown to support dozens of auth providers and a wide range of SQL and no-SQL databases. Originally developed for React - and specifically Next.js, hence the name - it has been ported to other popular frameworks, including Vue.js and Svelte and can be used with non-JavaScript frameworks, such as Drupal.

I've since moved on to other projects and am no longer actively involved, other than to look in and see how things are going now and then. To ensure it remains open source, collaborative and independent it has been spun off into a dedicated organization, with it's own core team.

๐ŸŽฌ Mercury

I developed Mercury with funding from Google DNI. Mercury is a web based video and transcript editor and translation workflow tool that lets you drop-and-drag a video in one language in and then watch it back in other languages, with an editable, timestamped transcript in each language, that can also be exported as subtitles or text.

Designed for news and media organisations, Mercury allows teams to upload, edit, transcode, transcribe and translate audio and video files (in a wide range of formats, including large, unprocessed files) from anywhere in the world on any web enabled device (including a smartphone) and share them in a secure and searchable way.

Designed to fill a gap in tooling in Google Lighthouse and Google's own Structured Data Testing Tool, by providing an extendible command line tool and API that includes out of the box support for checking both Schema.org entities and social media markup.

While useful for any website but especially useful for news and media organizations as ensuring markup quality can have a significant impact on traffic coming from Google News and Google Discover, as well as organic traffic from search engines.

๐Ÿ›  Table to JSON

A library useful for data scraping, originally created to support work on civic tech and data journalism. Table to JSON is used by dozens of other packages, in other higher level scraper libraries and in projects to track a wide range of things from COVID-19 data to TV shows, news and weather to class times for students. Table to JSON is now maintained by @maugenst.

icarus's People

Contributors

iaincollins avatar xstoudi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

icarus's Issues

Systems with multiple Null orbit points not rendered as intended

An example of a system not rendered as intended is the Farwell system, near Colonia.

It has Null orbit points between stars at CD and BCD,

This is an issue with how data is processed in the back end as well as how it is handled in the front end.

Both will need to be modified at the same time to improve this (without making things worse).

Ship name does not always update in Ship panel when changing ships

It's probably missing a check when some events relevant to changing ship occur. I've observed this on a Fleet Carrier so it might be that it's related to changing ships and/or jumping in a carrier and/or using Apex. It is hard to replicate so it's at least a bit of an edge case.

I think it's also missing ship renaming events, so should look at that too.

Specifically - in addition to whatever events are need to track changing ship - it should also listen for Set User Ship Name event and update name/ident in Ship model when it changes.

System scan is one body behind

When scanning unmapped system latest planet doesnโ€™t show up. E.g. after scanning 4 bodies only 3 show up.
Once system is fully scan you have to honk again for it to mark as completed in app, otherwise is stays at 90ish percent.

Some landable planets not showing as landable in Navigation panel

As reported here, some systems have planets that are landable, but the Navigation Map and List views do not indicate they are landable:

https://forums.frontier.co.uk/threads/icarus-terminal-pre-release.594667/page-15#post-9977466

Examples of systems / bodies:

  • HIP 96438 - Planet A 5 is landable
  • HIP 94791 - Planet 3 A is landable
  • Outopps UB-K c22-2 - Multiple bodies

Since this report, I've seen this bug first hand in other systems.

I'm sure it's because there is data in EDSM from these planets that pre-dates the release of Odyssey and these planets were recorded in EDSM as not being landable, because they were not at the time.

What I'm not sure of is if the problem is ICARUS Terminal is showing older data from ESDM incorrectly (that has been an issue before) or the issue is EDSM persisting older data and not updating when a system is scanned again and has changed.

Frame shift drive active stuck

Frameshift drive active is permanently blinking in top right corner. Restarting the app shows system name again. After a single jump frame shift message stay permanently on again.

Navigation panels not keep up with changes

Nav panels not keeping up with system changes and often defaulting to a previous system. The course plotted panel keeps up. I was using Icarus on 5 different devices so I went down to two and then to just one, there was no change in the panels not keeping up or showing wrong system. With my use of Icarus, this is a program breaking fault.

Show bounty status in current system

Not sure where to display this yet, certainly on the Navigation Panel but potentially also in the header. In the Navigation Panel it would be appropriate to display systems where the player is wanted at, if that information is known.

Full screen does not stay in secondary monitor

I keep the terminal on a secondary monitor. When i click on the "full screen" icon, the terminal moves to the primary one.

before:
image

after:
image

It should instead remain on the monitor where the windows currently is.

Workaround for glitchy rendering in recent releases of Chrome OS

A recent release of Chrome OS (sometime around August) introduced a bug with table rendering, currently most prevalent on the Engineering Blueprints view. This is not a bug in ICARUS Terminal, it's a rendering bug in Chrome and is specific to Chrome OS (not Chrome in general). It's been an issue for a few weeks now.

This only happens on Chrome on Chrome OS - not the desktop Chrome for Windows or Mac (or on Android).

It's worth exploring to see if a quick workaround for this issue is possible.

Highlight which systems are already mapped in EDSM in Route view

Several CMDRs have requested the ability to be able to see which systems have already been mapped (at least as far as EDSM knows) in the Route plan view.

As routes can be hundreds of light years and many systems there are technical considerations as to how to do this, how to cache the result and how and when to invalidate the cache.

The simplest approach would be to do this for every system when a new route is plotted, and to cache the results until a new route is set, although this may impose an unreasonable number of requests in sequence on the EDSM API for long routes (e.g. with hundreds of hops).

An ideal approach would be to use intersectionObserver to fetch the data as the user scrolls the list of systems in the route, and to cache that data in memory; and update that cache when the user lands in the system (and/or uses FSS inside the system). This would only fetch data for routes as actually needed; although it would take a second or two to add that information to the display as the user scrolls.

Highlight high value planets in Navigation Panel

As a first iteration, I would like to include an indicator for "high value" planets (>500k when scanned) in the List view and the Inspector panel (which is shown in both the List view and System Map view).

  1. Earth-like World
  2. Water World
  3. Ammonia World
  4. Any body that can be Terraformed

This would not rely on local scan data or checking for status (e.g. discovered, scanned, etc) so is easy first iteration that would be useful; later iterations could include specific value estimates for bodies and systems; they would require more significant improvements to the Navigation panel.

For more information see https://elite-dangerous.fandom.com/wiki/Explorer

Fullscreen on any Non-Main-Screen not possible

The Terminal window will not go to Fullscreen on any other screen then the main screen.
Even when I pull the window to my second screen, when I click on the button to go to Fullscreen, the Terminal window will switch back to the main screen. It should be possible to choose on which monitor I want to have the Terminal window.

Add "modules" tab that shows status of internal modules

Much like the in-game "modules" tab, it would be awesome if we could have a "modules" tab in icarus that lists our internal modules & their status (health being the most important one). This is extremely useful while in combat! While fighting thargoids, I'm often overheating temporarily and like keeping an eye on my modules to make sure they're above 75% health.

Wake-Lock for Web Application

It would be cool to aquire the Devices Wake-Lock in the Web Application especially on Tables or Smartphones to prevent the Device to go to Standby or Prevent Screen Dimming.

Location displayed incorrectly when on foot in carrier

This can happens when disembarking on carrier (it reverts to just displaying the system name as current location, which is not wrong but not intended behavior) and when on a carrier on foot after it has jumped (e.g. if you were seated during the jump).

Map keys to panels and views

When not in input mode (e.g. with focus on a textarea or text input control) allow key presses to active panels. This is something several CMDRs have requested.

The initial implementation may include key navigation for Top and Left navigation items (e.g. WSAD/Num Pad to move LEFT/RIGHT between panels and UP/DOWN between views within panels, so that arrow keys can still be used for scrolling; not everyone has page up / page down buttons) as well as support for explicit short cuts (e.g. numbers on the top row of the keyboard - which are widely supported across different keyboards layouts).

A future iteration may aim to make the shortcut keys configurable, for the first release of this feature the aim will be to choose defaults.

For context, see this thread:
https://forums.frontier.co.uk/threads/icarus-terminal-pre-release.594667/page-14#post-9968523

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.