ਬਲੌਗ

ਮੈਂ GitHub Copilot ਨਾਲ Baby Monitor Timmy ਕਿਵੇਂ ਬਣਾਉਂਦਾ ਹਾਂ

AI ਮੈਨੂੰ ਤੇਜ਼ੀ ਨਾਲ ਅੱਗੇ ਵਧਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ। Timmy ਦੀ ਜ਼ਿੰਮੇਵਾਰੀ ਫਿਰ ਵੀ ਮੇਰੇ ਕੋਲ ਹੀ ਰਹਿੰਦੀ ਹੈ।

Baby Monitor Timmy ਦੀ ਸ਼ੁਰੂਆਤ ਇੱਕ ਸਧਾਰਨ ਵਿਚਾਰ ਨਾਲ ਹੋਈ: ਅਜਿਹਾ ਬੇਬੀ ਮਾਨੀਟਰ ਜੋ ਘਰ ਵਿੱਚ ਨਿੱਜਤਾ ਦਾ ਸਤਿਕਾਰ ਕਰੇ। ਕੋਈ ਕਲਾਉਡ ਰਿਕਾਰਡਿੰਗ ਨਹੀਂ, ਬੱਚੇ ਦੇ ਕਮਰੇ ਤੋਂ ਬਾਹਰ ਡਾਟੇ ਲਈ ਕੋਈ ਬੇਲੋੜਾ ਰਸਤਾ ਨਹੀਂ। ਬਹੁਤ ਸਾਰੇ ਲੋਕ ਨਹੀਂ ਜਾਣਦੇ ਕਿ ਮੈਂ ਜ਼ਿਊਰਿਖ ਵਿੱਚ Timmy ਨੂੰ ਇਕੱਲੇ ਪ੍ਰੋਜੈਕਟ ਵਜੋਂ ਬਣਾਉਂਦਾ ਹਾਂ, ਅਤੇ GitHub Copilot ਮੇਰਾ ਬਹੁਤ ਤੇਜ਼ ਪੇਅਰ ਪ੍ਰੋਗ੍ਰਾਮਰ ਹੈ।

ਇਨਸਾਨ-AI ਵਰਕਫਲੋ

ਵੰਡ ਸਪੱਸ਼ਟ ਹੈ: ਫੀਚਰ ਤੈਅ ਮੈਂ ਕਰਦਾ ਹਾਂ, ਤਰਜੀਹਾਂ ਮੈਂ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹਾਂ ਅਤੇ ਆਰਕੀਟੈਕਚਰ ਦੇ ਫ਼ੈਸਲੇ ਮੈਂ ਲੈਂਦਾ ਹਾਂ। Copilot ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ: ਕੋਡ ਲਿਖਣਾ, ਟੈਸਟ ਜੋੜਣਾ, ਬੱਗਾਂ ਨੂੰ ਸੀਮਿਤ ਕਰਨਾ ਅਤੇ ਰਿਲੀਜ਼ ਦੇ ਕਦਮ ਤਿਆਰ ਕਰਨਾ।

ਮੇਰਾ ਇੱਕ ਆਮ ਸਪ੍ਰਿੰਟ ਲਗਭਗ ਇਸ ਤਰ੍ਹਾਂ ਹੁੰਦਾ ਹੈ:

  1. ਫੀਚਰ ਦਾ ਵੇਰਵਾ: ਮੈਂ ਦੱਸਦਾ ਹਾਂ ਕਿ ਫੀਚਰ ਨੇ ਕੀ ਕਰਨਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਖਾਸ ਹਾਲਾਤ ਅਤੇ ਪਾਬੰਦੀਆਂ ਵੀ ਸ਼ਾਮਲ ਹੁੰਦੀਆਂ ਹਨ।
  2. ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ: Copilot ਕੋਡ ਸੁਝਾਉਂਦਾ ਹੈ ਅਤੇ ਪ੍ਰੋਜੈਕਟ ਦੀਆਂ ਮੌਜੂਦਾ ਰੀਤਾਂ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ।
  3. ਟੈਸਟਿੰਗ: ਆਟੋਮੈਟਿਕ ਐਂਡ-ਟੂ-ਐਂਡ ਟੈਸਟ ਦੋ ਇਮੂਲੇਟਰਾਂ 'ਤੇ ਚਲਦੇ ਹਨ ਅਤੇ ਅਸਲ ਬੇਬੀ/ਪੇਰੈਂਟ ਕਨੈਕਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰਦੇ ਹਨ।
  4. ਵੰਡ: ਜਦੋਂ ਟੈਸਟ ਪਾਸ ਹੋ ਜਾਂਦੇ ਹਨ, ਤਾਂ Android ਅਤੇ iOS ਬਿਲਡ ਸਹੀ ਸਟੋਰ ਅਤੇ ਟੈਸਟਿੰਗ ਟਰੈਕਾਂ ਲਈ ਤਿਆਰ ਕੀਤੇ ਜਾਂਦੇ ਹਨ।

ਇਹ ਚੱਕਰ ਫੀਚਰਾਂ ਅਤੇ ਬੱਗ ਫਿਕਸਾਂ ਲਈ ਦੁਹਰਾਇਆ ਜਾਂਦਾ ਹੈ। ਮੈਂ ਹਰ ਲਾਈਨ ਖੁਦ ਨਹੀਂ ਲਿਖਦਾ, ਪਰ ਮੈਂ ਫ਼ੈਸਲਾ ਕਰਦਾ ਹਾਂ ਕਿ ਕੀ ਬਣਾਇਆ ਜਾਵੇ, ਕਿਉਂ ਇਹ ਬਣਾਇਆ ਜਾਵੇ, ਅਤੇ ਕੋਈ ਸੁਝਾਅ Timmy ਲਈ ਢੁੱਕਵਾਂ ਹੈ ਜਾਂ ਨਹੀਂ।

ਸੰਕਲਪ ਤੋਂ WebRTC ਤੱਕ

ਸ਼ੁਰੂ ਤੋਂ ਹੀ ਮੁੱਖ ਤਕਨੀਕੀ ਕੰਮ ਸਪੱਸ਼ਟ ਸੀ: ਦੋ ਫੋਨਾਂ ਵਿਚਕਾਰ ਰੀਅਲ-ਟਾਈਮ ਆਡੀਓ ਅਤੇ ਵੀਡੀਓ। WebRTC ਸਪੱਸ਼ਟ ਚੋਣ ਸੀ, ਪਰ ਇਸਨੂੰ Flutter ਨਾਲ ਜੋੜਨਾ ਆਸਾਨ ਨਹੀਂ: ICE candidates, SDP negotiation, TURN fallback ਅਤੇ DataChannels ਨੂੰ ਸਹੀ ਕ੍ਰਮ ਵਿੱਚ ਇਕੱਠੇ ਕੰਮ ਕਰਨਾ ਪੈਂਦਾ ਹੈ।

Copilot ਨੇ ਮੈਨੂੰ ਇਹ ਹਿੱਸੇ ਕਦਮ-ਦਰ-ਕਦਮ ਜੋੜਨ ਵਿੱਚ ਮਦਦ ਕੀਤੀ: ਪੀਅਰ ਕਨੈਕਸ਼ਨ ਸੈੱਟ ਕਰਨਾ, ਜ਼ਰੂਰੀ ਕ੍ਰਮ ਸਹੀ ਰੱਖਣਾ (offer ਤੋਂ ਪਹਿਲਾਂ DataChannel, setRemoteDescription ਤੋਂ ਪਹਿਲਾਂ onTrack), ਅਤੇ signaling ਨੂੰ Firebase Firestore 'ਤੇ ਰੱਖਣਾ। ਅੱਗੇ ਵਧਣ ਤੋਂ ਪਹਿਲਾਂ ਹਰ ਹਿੱਸਾ ਦੋ ਇਮੂਲੇਟਰਾਂ 'ਤੇ ਚਲਣਾ ਲਾਜ਼ਮੀ ਸੀ।

ECDH ਨਾਲ ਸੁਰੱਖਿਅਤ ਪੇਅਰਿੰਗ

ਸਭ ਤੋਂ ਮਹੱਤਵਪੂਰਨ ਫੀਚਰਾਂ ਵਿੱਚੋਂ ਇੱਕ ਸੀ ਸੁਰੱਖਿਅਤ ਪੇਅਰਿੰਗ ਸਿਸਟਮ। ਦੋ ਡਿਵਾਈਸਾਂ ਨੂੰ ਆਪਣੀ ਪਛਾਣ ਦੀ ਤਸਦੀਕ ਲਈ ਕਿਸੇ ਕੇਂਦਰੀ ਸਰਵਰ 'ਤੇ ਨਿਰਭਰ ਹੋਏ ਬਿਨਾਂ ਆਪਸੀ ਭਰੋਸਾ ਕਾਇਮ ਕਰਨਾ ਹੁੰਦਾ ਹੈ। ਹੱਲ: Firebase ਰਾਹੀਂ ECDH P-256 ਕੀ ਐਕਸਚੇਂਜ, ਨਾਲ ਇੱਕ ਵਿਜ਼ੂਅਲ ਵੈਰੀਫਿਕੇਸ਼ਨ ਨੰਬਰ (SAS), ਜੋ man-in-the-middle ਹਮਲਿਆਂ ਨੂੰ ਪਛਾਣਦਾ ਹੈ।

Copilot ਨੇ ਕ੍ਰਿਪਟੋਗ੍ਰਾਫਿਕ ਲੜੀ ਇੰਪਲੀਮੈਂਟ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕੀਤੀ: ਕੀ ਬਣਾਉਣਾ, ਪਬਲਿਕ ਕੀ ਐਕਸਚੇਂਜ, ਸਾਂਝਾ ਸੀਕ੍ਰੇਟ ਕੱਢਣਾ, SAS ਗਿਣਨਾ ਅਤੇ ਬਾਅਦ ਦੇ ਸਾਰੇ signaling ਡਾਟੇ ਲਈ AES-256-GCM ਇਨਕ੍ਰਿਪਸ਼ਨ। ਮੈਂ ਪੇਅਰਿੰਗ ਕੀ ਬੈਕਐਂਡ ਨੂੰ ਨਹੀਂ ਭੇਜਦਾ; Firestore ਡੌਕਯੂਮੈਂਟ ਆਈਡੀ ਵਜੋਂ ਸਿਰਫ਼ ਇਸਦਾ SHA-256 ਹੈਸ਼ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।

ਸੁਰੱਖਿਆ ਆਡਿਟ: ਕਮਜ਼ੋਰੀਆਂ ਲੱਭਣਾ ਅਤੇ ਠੀਕ ਕਰਨਾ

ਮੇਰੇ ਲਈ AI-ਸਹਾਇਤ ਵਿਕਾਸ ਸਿਰਫ਼ ਤੇਜ਼ ਟਾਈਪਿੰਗ ਨਹੀਂ ਹੈ। ਇਹ ਵਿਵਸਥਿਤ ਢੰਗ ਨਾਲ ਬੱਗ ਲੱਭਣ ਵਿੱਚ ਵੀ ਮਦਦ ਕਰਦਾ ਹੈ। ਇੱਕ ਕੇਂਦਰਿਤ ਸੁਰੱਖਿਆ ਆਡਿਟ ਸਪ੍ਰਿੰਟ ਵਿੱਚ, Copilot ਨੇ ਕੋਡਬੇਸ ਦਾ ਵਿਸ਼ਲੇਸ਼ਣ ਕੀਤਾ ਅਤੇ ਛੇ ਸਮੱਸਿਆਵਾਂ ਲੱਭੀਆਂ ਜਿਨ੍ਹਾਂ ਨੂੰ ਮੈਨੂੰ ਠੀਕ ਕਰਨਾ ਸੀ:

ਸਾਰੀਆਂ ਛੇ ਸਮੱਸਿਆਵਾਂ ਉਸੇ ਸਪ੍ਰਿੰਟ ਵਿੱਚ ਠੀਕ ਕਰ ਦਿੱਤੀਆਂ ਗਈਆਂ। Copilot ਇੱਥੇ ਬਹੁਤ ਕੰਮ ਆਉਂਦਾ ਹੈ: ਕਈ ਫਾਈਲਾਂ ਪੜ੍ਹਨਾ, ਪੈਟਰਨਾਂ ਦੀ ਤੁਲਨਾ ਕਰਨਾ ਅਤੇ ਉਹ ਥਾਵਾਂ ਨਿਸ਼ਾਨਬੱਧ ਕਰਨਾ ਜਿਨ੍ਹਾਂ ਨੂੰ ਮੈਨੂੰ ਹੋਰ ਧਿਆਨ ਨਾਲ ਦੇਖਣਾ ਹੁੰਦਾ ਹੈ।

ਦੁਹਰਾਏ ਜਾਣ ਵਾਲੇ ਸਪ੍ਰਿੰਟ: ਐਪ ਕਿਵੇਂ ਵਿਕਸਿਤ ਹੋਈ

Timmy ਤੇਜ਼ ਪਰ ਸਪੱਸ਼ਟ ਹੱਦਾਂ ਵਾਲੇ ਸਪ੍ਰਿੰਟਾਂ ਰਾਹੀਂ ਵਧਿਆ। ਕੁਝ ਮੀਲ ਪੱਥਰ:

ਹਰ ਸਪ੍ਰਿੰਟ ਇੱਕੋ ਬੁਨਿਆਦੀ ਢਾਂਚੇ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ: ਟੀਚਾ ਦੱਸੋ, ਸੁਝਾਵਾਂ ਦੀ ਸਮੀਖਿਆ ਕਰੋ, ਆਟੋਮੈਟਿਕ ਟੈਸਟ ਕਰੋ, ਫਿਰ ਟੈਸਟਰਾਂ ਨੂੰ ਭੇਜੋ।

ਡਿਵਾਈਸਾਂ ਵਿਚਕਾਰ E2E ਟੈਸਟਿੰਗ

ਬੇਬੀ ਮਾਨੀਟਰ ਨੂੰ ਇੱਕ ਡਿਵਾਈਸ 'ਤੇ ਢੰਗ ਨਾਲ ਟੈਸਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਮੈਨੂੰ ਇੱਕ ਬੇਬੀ ਡਿਵਾਈਸ ਅਤੇ ਇੱਕ ਪੇਰੈਂਟ ਡਿਵਾਈਸ ਚਾਹੀਦੀ ਹੈ। ਪ੍ਰੋਜੈਕਟ ਦੀ ਸ਼ੁਰੂਆਤ ਇੱਕੋ ਸਮੇਂ ਚੱਲ ਰਹੇ ਦੋ Android ਇਮੂਲੇਟਰਾਂ ਨਾਲ ਹੋਈ ਸੀ ਅਤੇ ਹੁਣ ਇਸ ਲੂਪ ਵਿੱਚ ਲੋਕਲ iOS ਸਿਮੂਲੇਟਰ ਅਤੇ ਅਸਲੀ ਡਿਵਾਈਸ ਜਾਂਚਾਂ ਵੀ ਸ਼ਾਮਲ ਹਨ। ਆਟੋਮੈਟਿਕ Android ਟੈਸਟ ਸਕ੍ਰਿਪਟ ਅਜੇ ਵੀ:

  1. ਦੋਵਾਂ ਇਮੂਲੇਟਰਾਂ 'ਤੇ ਐਪ ਇੰਸਟਾਲ ਕਰਦੀ ਹੈ
  2. ਦੋਵਾਂ ਡਿਵਾਈਸਾਂ 'ਤੇ ਪੇਅਰਿੰਗ ਰਾਹੀਂ ਅੱਗੇ ਵਧਦੀ ਹੈ
  3. ਜਾਂਚਦੀ ਹੈ ਕਿ ਆਡੀਓ ਅਤੇ ਵੀਡੀਓ ਕਨੈਕਸ਼ਨ ਬਣ ਗਏ ਹਨ
  4. push-to-talk, ਕੈਮਰਾ ਕੰਟਰੋਲ ਅਤੇ ਹੋਰ ਫੀਚਰ ਟੈਸਟ ਕਰਦੀ ਹੈ

ਕਿਉਂਕਿ ਦੋਵੇਂ ਇਮੂਲੇਟਰ ਇੱਕੋ IP ਐਡਰੈੱਸ ਸਾਂਝਾ ਕਰਦੇ ਹਨ (10.0.2.15), STUN ਰਾਹੀਂ ਸਿੱਧਾ ਪੀਅਰ-ਟੂ-ਪੀਅਰ ਕਨੈਕਸ਼ਨ ਸੰਭਵ ਨਹੀਂ ਹੈ। ਹਰ ਟੈਸਟ ਰਨ ਨੂੰ Cloudflare TURN ਰੀਲੇ ਰਾਹੀਂ ਜਾਣਾ ਪੈਂਦਾ ਹੈ। ਇਹ ਥੋੜ੍ਹਾ ਔਖਾ ਹੈ, ਪਰ ਫਾਇਦੇਮੰਦ ਵੀ ਹੈ: ਸਭ ਤੋਂ ਜਟਿਲ ਕਨੈਕਸ਼ਨ ਪਾਥ ਹਰ ਵਾਰ ਟੈਸਟ ਹੋ ਜਾਂਦਾ ਹੈ।

ਮੈਂ ਕੀ ਸਿੱਖਿਆ

AI ਪੇਅਰ ਪ੍ਰੋਗ੍ਰਾਮਰ ਨਾਲ ਪੂਰੀ ਐਪ ਬਣਾਉਂਦੇ ਹੋਏ ਮੈਂ ਕੁਝ ਗੱਲਾਂ ਸਿੱਖੀਆਂ:

ਅੱਗੇ ਦੀ ਯੋਜਨਾ

Baby Monitor Timmy ਲਗਾਤਾਰ ਵਿਕਸਿਤ ਹੋ ਰਿਹਾ ਹੈ। iOS ਰਿਲੀਜ਼ ਨੇੜੇ ਹੈ; ਉਸ ਤੋਂ ਬਾਅਦ ਹੋਰ ਸੈਂਸਰ ਫੀਚਰ ਅਤੇ ਸੁਰੱਖਿਆ ਨੂੰ ਲਗਾਤਾਰ ਮਜ਼ਬੂਤ ਕਰਨ ਦਾ ਕੰਮ ਆਏਗਾ। ਵਰਕਫਲੋ ਮਿਲਦਾ-ਜੁਲਦਾ ਰਹਿੰਦਾ ਹੈ: ਦਿਸ਼ਾ ਅਤੇ ਹੱਦਾਂ ਮੈਂ ਤੈਅ ਕਰਦਾ ਹਾਂ, Copilot ਤੇਜ਼ੀ ਨਾਲ ਇੰਪਲੀਮੈਂਟ ਅਤੇ ਜਾਂਚਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ।

ਸੁਰੱਖਿਆ ਨਾਲ ਜੁੜੇ ਬਿਲਡਿੰਗ ਬਲੌਕ ਹੁਣ ਸਪੱਸ਼ਟ ਹੱਦਾਂ ਵਿੱਚ ਜਨਤਕ baby-monitor-timmy-core repositoryਵਿੱਚ ਮੌਜੂਦ ਹਨ। ਉੱਥੇ ਹੀ ਪੇਅਰਿੰਗ, signaling ਅਤੇ ਬੈਕਐਂਡ ਇੰਟਰਫੇਸਾਂ ਨਾਲ ਸੰਬੰਧਿਤ ਆਰਕੀਟੈਕਚਰ ਫ਼ੈਸਲੇ ਵੀ ਦਸਤਾਵੇਜ਼ਬੱਧ ਹਨ।


ਹੋਰ ਲੇਖ