Baby Monitor Timmy ଏକ ସରଳ ଭାବନାରୁ ଆରମ୍ଭ ହୋଇଥିଲା: ଏମିତି ଏକ ବେବି ମନିଟର୍ ଯାହା ଘରର ଗୋପନୀୟତାକୁ ସମ୍ମାନ କରେ। କୌଣସି କ୍ଲାଉଡ୍ ରେକର୍ଡିଂ ନାହିଁ, ଶିଶୁଘରରୁ ବାହାରକୁ ଅନାବଶ୍ୟକ ଡାଟା ପଥ ନାହିଁ। ଅନେକେ ଯାହା ଦେଖନ୍ତି ନାହିଁ: ମୁଁ ଜୁରିକ୍ରେ ଏକାକୀ ପ୍ରକଳ୍ପ ଭାବେ Timmy ତିଆରି କରେ, ଏବଂ GitHub Copilot ମୋର ବହୁତ ଦ୍ରୁତ ପେୟାର୍ ପ୍ରୋଗ୍ରାମର୍।
ମଣିଷ-AI କାର୍ଯ୍ୟପ୍ରବାହ
ଦାୟିତ୍ୱ ବିଭାଜନ ସ୍ପଷ୍ଟ: ମୁଁ ଫିଚର୍ ନିର୍ଦ୍ଧାରଣ କରେ, ପ୍ରାଥମିକତା ଧାର୍ଯ୍ୟ କରେ ଓ ଆର୍କିଟେକ୍ଚର୍ ସମ୍ବନ୍ଧୀୟ ନିଷ୍ପତ୍ତି ନିଏ। Copilot କାର୍ଯ୍ୟାନ୍ବୟନରେ ସାହାଯ୍ୟ କରେ: କୋଡ୍ ଲେଖିବା, ପରୀକ୍ଷା ଯୋଡ଼ିବା, ବଗ୍ର କାରଣ ସଂକୁଚିତ କରିବା ଏବଂ ରିଲିଜ୍ ପଦକ୍ଷେପ ପ୍ରସ୍ତୁତ କରିବା।
ମୋ ପାଇଁ ଏକ ସାଧାରଣ ସ୍ପ୍ରିଣ୍ଟ ମୋଟାମୋଟି ଏପରି ଦେଖାଯାଏ:
- ଫିଚର୍ ବର୍ଣ୍ଣନା: କୌଣସି ଫିଚର୍ କଣ କରିବା ଉଚିତ, ସେଥିରେ ଏଜ୍ କେସ୍ ଓ ସୀମାବଦ୍ଧତା ସହିତ ମୁଁ ବର୍ଣ୍ଣନା କରେ।
- କାର୍ଯ୍ୟାନ୍ବୟନ: Copilot କୋଡ୍ ପ୍ରସ୍ତାବ କରେ ଏବଂ ପ୍ରକଳ୍ପର ବର୍ତ୍ତମାନର ନିୟମାବଳୀ ଅନୁସରଣ କରେ।
- ପରୀକ୍ଷଣ: ସ୍ୱୟଂଚାଳିତ end-to-end ପରୀକ୍ଷା ଦୁଇଟି ଏମ୍ୟୁଲେଟର୍ରେ ଚାଲେ ଏବଂ ପ୍ରକୃତ ଶିଶୁ/ଅଭିଭାବକ ସଂଯୋଗ ଯାଞ୍ଚ କରେ।
- ବିତରଣ: ପରୀକ୍ଷା ପାସ୍ ହେଲେ, Android ଏବଂ iOS ବିଲ୍ଡଗୁଡ଼ିକୁ ଠିକ୍ ଷ୍ଟୋର୍ ଓ ଟେଷ୍ଟିଂ ଟ୍ରାକ୍ ପାଇଁ ପ୍ରସ୍ତୁତ କରାଯାଏ।
ଫିଚର୍ ଓ ବଗ୍ଫିକ୍ସ ପାଇଁ ଏହି ଚକ୍ର ପୁନରାବୃତ୍ତି ହୁଏ। ମୁଁ ପ୍ରତ୍ୟେକ ଲାଇନ୍ ନିଜେ ଲେଖେ ନାହିଁ, କିନ୍ତୁ କଣ ତିଆରି ହେବ, କାହିଁକି ତାହା ତିଆରି ହେବ, ଏବଂ କୌଣସି ପ୍ରସ୍ତାବ Timmy ପାଇଁ ଉପଯୁକ୍ତ କି ନୁହେଁ—ସେଥି ମୁଁ ନିଷ୍ପତ୍ତି ନିଏ।
ଧାରଣାରୁ WebRTC ପର୍ଯ୍ୟନ୍ତ
ଆରମ୍ଭରୁ କେନ୍ଦ୍ରୀୟ ପ୍ରଯୁକ୍ତିଗତ କାମ ସ୍ପଷ୍ଟ ଥିଲା: ଦୁଇଟି ଫୋନ୍ ମଧ୍ୟରେ ରିଅଲ୍-ଟାଇମ୍ ଅଡିଓ ଓ ଭିଡିଓ। WebRTC ସ୍ୱାଭାବିକ ପସନ୍ଦ ଥିଲା, କିନ୍ତୁ Flutter ସହିତ ଏହାକୁ ଯୋଡ଼ିବା ସହଜ ନୁହେଁ: ICE candidates, SDP negotiation, TURN fallback ଏବଂ DataChannels ସଠିକ୍ କ୍ରମରେ ଏକାସାଙ୍ଗରେ କାମ କରିବା ଦରକାର।
Copilot ମୋତେ ଏହି ଅଂଶଗୁଡ଼ିକୁ ପଦକ୍ଷେପେ ପଦକ୍ଷେପେ ଏକାଠି କରିବାରେ ସାହାଯ୍ୟ କଲା: peer connection ସେଟ୍ଅପ୍ କରିବା, ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ କ୍ରମ ଠିକ୍ ରଖିବା (offer ପୂର୍ବରୁ DataChannel, setRemoteDescription ପୂର୍ବରୁ onTrack), ଏବଂ Firebase Firestore ଉପରେ signaling ରଖିବା। ପରବର୍ତ୍ତୀ ପଦକ୍ଷେପକୁ ଯିବା ପୂର୍ବରୁ ପ୍ରତ୍ୟେକ ଅଂଶ ଦୁଇଟି ଏମ୍ୟୁଲେଟର୍ରେ ଚାଲିବା ଦରକାର ଥିଲା।
ECDH ସହିତ ସୁରକ୍ଷିତ ପେୟାରିଂ
ସବୁଠାରୁ ଜରୁରୀ ଫିଚର୍ଗୁଡ଼ିକ ମଧ୍ୟରୁ ଗୋଟିଏ ଥିଲା ସୁରକ୍ଷିତ ପେୟାରିଂ ସିଷ୍ଟମ୍। ଦୁଇଟି ଡିଭାଇସ୍କୁ ସେମାନଙ୍କ ପରିଚୟର ଗାରାଣ୍ଟି ପାଇଁ କୌଣସି କେନ୍ଦ୍ରୀୟ ସର୍ଭର୍ରେ ଭରସା ନକରି ପରସ୍ପର ବିଶ୍ୱାସ ସ୍ଥାପନ କରିବାକୁ ପଡ଼େ। ସମାଧାନ: Firebase ଉପରେ ECDH P-256 key exchange, ଯାହା man-in-the-middle ଆକ୍ରମଣ ଚିହ୍ନଟ କରୁଥିବା ଏକ ଭିଜୁଆଲ୍ verification number (SAS) ସହିତ ଯୋଡ଼ାଯାଇଛି।
Copilot କ୍ରିପ୍ଟୋଗ୍ରାଫିକ୍ ଶୃଙ୍ଖଳ କାର୍ଯ୍ୟାନ୍ବୟନରେ ସାହାଯ୍ୟ କଲା: key generation, public key exchange, shared secret derivation, SAS computation, ଏବଂ ପରବର୍ତ୍ତୀ ସମସ୍ତ signaling data ପାଇଁ AES-256-GCM encryption। ମୁଁ backend କୁ pairing key ପଠାଏ ନାହିଁ; କେବଳ ତାହାର SHA-256 hash କୁ Firestore document identifier ଭାବେ ବ୍ୟବହାର କରାଯାଏ।
ସୁରକ୍ଷା ଅଡିଟ୍: ଦୁର୍ବଳତା ଚିହ୍ନଟ ଓ ସମାଧାନ
AI-ସହାୟିତ ବିକାଶ ମୋ ପାଇଁ କେବଳ ଦ୍ରୁତ ଟାଇପିଂ ନୁହେଁ। ଏହା ସୁନିୟୋଜିତ ଭାବେ ବଗ୍ ଖୋଜିବାରେ ମଧ୍ୟ ସାହାଯ୍ୟ କରେ। ଏକ କେନ୍ଦ୍ରିତ ସୁରକ୍ଷା ଅଡିଟ୍ ସ୍ପ୍ରିଣ୍ଟରେ, Copilot କୋଡ୍ବେସ୍ ବିଶ୍ଳେଷଣ କରି ଖୋଜିଲା ଛଅଟି ସମସ୍ୟା ଯାହା ମୋତେ ଠିକ୍ କରିବାକୁ ପଡ଼ିଲା:
- signaling data ଉପରେ input validation ନଥିବା
- ICE candidate handling ରେ ସମ୍ଭାବ୍ୟ race condition
- ଠିକ୍ ଭାବରେ ସଫା ହେଉନଥିବା ପୁରୁଣା session data
- ଅତ୍ୟଧିକ ଅନୁମତିଶୀଳ Firestore security rules
- certificate pinning ସମ୍ବନ୍ଧୀୟ ବିଚାରର ଅଭାବ
- TURN credential flow ରେ ଅପର୍ଯ୍ୟାପ୍ତ error handling
ସମସ୍ତ ଛଅଟି ସମସ୍ୟା ସେହି ସ୍ପ୍ରିଣ୍ଟରେ ଠିକ୍ କରାଯାଇଥିଲା। Copilot ଏଠି ଶକ୍ତିଶାଳୀ: ଅନେକ ଫାଇଲ୍ ପଢ଼ିବା, ପ୍ୟାଟର୍ନ ତୁଳନା କରିବା ଏବଂ ମୋତେ ଆଉ ଧ୍ୟାନରେ ଯାଞ୍ଚ କରିବାକୁ ଥିବା ସ୍ଥାନଗୁଡ଼ିକ ଚିହ୍ନଟ କରିବା।
ପୁନରାବୃତ୍ତିମୂଳକ ସ୍ପ୍ରିଣ୍ଟ: ଆପ୍ କିପରି ବିକଶିତ ହେଲା
Timmy ଦ୍ରୁତ, କିନ୍ତୁ ସ୍ପଷ୍ଟ ସୀମାରେ ଥିବା ସ୍ପ୍ରିଣ୍ଟ ମାଧ୍ୟମରେ ବଢ଼ିଲା। କିଛି ମାଇଲ୍ଷ୍ଟୋନ୍:
- v1.8: ପେୟାରିଂର ସମ୍ପୂର୍ଣ୍ଣ ପୁନଃଡିଜାଇନ୍ — Firebase ଉପରେ 4-ଚରିତ୍ରର କୋଡ୍ + ECDH P-256 ପୁରୁଣା direct-key ପଦ୍ଧତିକୁ ବଦଳାଇଲା।
- v1.10: ସୁରକ୍ଷା ସୁଦୃଢ଼କରଣ ସ୍ପ୍ରିଣ୍ଟ — ଛଅଟି ଦୁର୍ବଳତାର ଅଡିଟ୍ ଓ ସମାଧାନ ଚକ୍ର।
- v1.11: ସମସ୍ତ ସ୍କ୍ରିନ୍ରେ ଡାର୍କ ମୋଡ୍, ସହିତ ଆପଣ ଏବେ ପଢ଼ୁଥିବା ହୋମପେଜ୍ ଓ ବ୍ଲଗ୍।
- v1.12: parent screen ର ବଡ଼ ପରିବର୍ତ୍ତନ, night vision mode, ଏବଂ camera frame analysis ଦ୍ୱାରା motion detection।
ପ୍ରତ୍ୟେକ ସ୍ପ୍ରିଣ୍ଟ ଏକେ ମୂଳ ଧାରାକୁ ଅନୁସରେ: ଲକ୍ଷ୍ୟ ବର୍ଣ୍ଣନା କରନ୍ତୁ, ପ୍ରସ୍ତାବଗୁଡ଼ିକ ସମୀକ୍ଷା କରନ୍ତୁ, ସ୍ୱୟଂଚାଳିତ ପରୀକ୍ଷା କରନ୍ତୁ, ତାପରେ ଟେଷ୍ଟର୍ମାନଙ୍କ ପାଖକୁ ପଠାନ୍ତୁ।
ଡିଭାଇସ୍ଗୁଡ଼ିକରେ E2E ପରୀକ୍ଷଣ
ଗୋଟିଏ ଡିଭାଇସ୍ରେ ବେବି ମନିଟର୍ର ସଠିକ୍ ପରୀକ୍ଷା ହୋଇପାରେ ନାହିଁ। ମୋତେ ଗୋଟିଏ baby device ଓ ଗୋଟିଏ parent device ଦରକାର। ପ୍ରକଳ୍ପଟି ଏକାସାଙ୍ଗରେ ଚାଲୁଥିବା ଦୁଇଟି Android emulator ସହିତ ଆରମ୍ଭ ହୋଇଥିଲା ଏବଂ ବର୍ତ୍ତମାନ local iOS simulator ଓ ପ୍ରକୃତ ଡିଭାଇସ୍ ଯାଞ୍ଚ ସହିତ ସେହି ଲୁପ୍କୁ ପୂରକ କରେ। ସ୍ୱୟଂଚାଳିତ Android test script ଏବେ ମଧ୍ୟ:
- ଦୁଇଟି ଏମ୍ୟୁଲେଟର୍ରେ ଆପ୍ ଇନ୍ଷ୍ଟଲ୍ କରେ
- ଦୁଇଟି ଡିଭାଇସ୍ରେ ପେୟାରିଂ ପ୍ରକ୍ରିୟା ମାଧ୍ୟମରେ ଯାଏ
- ଅଡିଓ ଓ ଭିଡିଓ ସଂଯୋଗ ସ୍ଥାପିତ ହୋଇଛି କି ନାହିଁ ଯାଞ୍ଚ କରେ
- push-to-talk, camera control ଏବଂ ଅନ୍ୟାନ୍ୟ ଫିଚର୍ ପରୀକ୍ଷା କରେ
ଦୁଇଟି ଏମ୍ୟୁଲେଟର୍ ଏକେ IP address ସେୟାର୍ କରୁଥିବାରୁ (10.0.2.15), STUN ମାଧ୍ୟମରେ ସିଧାସଳଖ ପିୟର୍-ଟୁ-ପିୟର୍ ସଂଯୋଗ ସମ୍ଭବ ନୁହେଁ। ପ୍ରତ୍ୟେକ ପରୀକ୍ଷା ଚଳାଣକୁ Cloudflare TURN ରିଲେ ଦେଇ ଯିବାକୁ ପଡ଼େ। ଏହା କିଛିଟା ବିରକ୍ତିକର, କିନ୍ତୁ ଉପଯୋଗୀ: ସବୁଠାରୁ ଜଟିଳ ସଂଯୋଗ ପଥକୁ ପ୍ରତ୍ୟେକ ଥର ପରୀକ୍ଷା କରାଯାଏ।
ମୁଁ କଣ ଶିଖିଲି
AI ପେୟାର୍ ପ୍ରୋଗ୍ରାମର୍ ସହିତ ଏକ ସମ୍ପୂର୍ଣ୍ଣ ଆପ୍ ତିଆରି କରିବା ମୋତେ କିଛି କଥା ଶିଖାଇଲା:
- ଆର୍କିଟେକ୍ଚର୍ ଆଗଠାରୁ ଅଧିକ ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ। ସ୍ପଷ୍ଟ ନିୟମାବଳୀ ଏବଂ ଭଲ ଭାବରେ ଡକ୍ୟୁମେଣ୍ଟ ହୋଇଥିବା କୋଡ୍ବେସ୍ AI କୁ ସୁସଙ୍ଗତ କୋଡ୍ ପ୍ରସ୍ତାବ କରିବାରେ ସାହାଯ୍ୟ କରେ। ଅସ୍ପଷ୍ଟତା ଶୀଘ୍ର ଖର୍ଚ୍ଚାଳି ହୋଇଯାଏ।
- ପରୀକ୍ଷଣରେ କୌଣସି ସମଝୌତା ନାହିଁ। AI-ତିଆରି କୋଡ୍ ପାଇଁ ମଧ୍ୟ ମଣିଷ ଲେଖିଥିବା କୋଡ୍ ପରି ସମାନ କଠୋର ପରୀକ୍ଷା ଦରକାର। ସ୍ୱୟଂଚାଳିତ E2E ପରୀକ୍ଷା ଏପରି ସମସ୍ୟା ଧରିଥିଲା, ଯାହା ହାତେ ଯାଞ୍ଚରେ ସହଜରେ ଛୁଟିଯାଇପାରୁଥିଲା।
- ମଣିଷ ନିଷ୍ପତ୍ତି ପ୍ରକ୍ରିୟାରେ ରହେ। ପ୍ରତ୍ୟେକ ଆର୍କିଟେକ୍ଚରାଲ୍ ନିଷ୍ପତ୍ତି, ପ୍ରତ୍ୟେକ ସୁରକ୍ଷା ସମଝୌତା, ଏବଂ ପ୍ରତ୍ୟେକ ପ୍ରଡକ୍ଟ ସୀମା ମୋ ପାଖରେ ରହେ। AI କାର୍ଯ୍ୟାନ୍ବୟନକୁ ଦ୍ରୁତ କରେ, କିନ୍ତୁ ବିଚାରଶକ୍ତିର ବିକଳ୍ପ ନୁହେଁ।
- ଗତି ଗୁଣବତ୍ତାକୁ ସମ୍ଭବ କରେ। ଫିଚର୍ଗୁଡ଼ିକ ଦିନ ବଦଳରେ କିଛି ଘଣ୍ଟାରେ ରିଲିଜ୍ ହେଉଥିବାରୁ, ଫିନିଶିଂ ଓ ବଗ୍ ଠିକ୍ କରିବା ପାଇଁ ଅଧିକ iteration ରହିଯାଏ। ଦ୍ରୁତ ହେବାର ଅର୍ଥ ସ୍ୱୟଂଚାଳିତ ଭାବେ ଭଲ ହେବା ନୁହେଁ।
ଆଗକୁ ଦେଖିଲେ
Baby Monitor Timmy ନିରନ୍ତର ବିକଶିତ ହେଉଛି। iOS ରିଲିଜ୍ ବହୁତ ନିକଟରେ; ତାପରେ ଅତିରିକ୍ତ sensor feature ଏବଂ ଲଗାତାର ସୁରକ୍ଷା ସୁଦୃଢ଼କରଣ ଆସିବ। କାର୍ଯ୍ୟପ୍ରବାହ ସମାନ ରହେ: ମୁଁ ଦିଗ ଓ ସୀମା ନିର୍ଦ୍ଧାରଣ କରେ, Copilot ଦ୍ରୁତ କାର୍ଯ୍ୟାନ୍ବୟନ ଓ ଯାଞ୍ଚରେ ସାହାଯ୍ୟ କରେ।
ସୁରକ୍ଷା ସମ୍ବନ୍ଧୀୟ ମୁଖ୍ୟ building block ଗୁଡ଼ିକ ଏବେ ସ୍ପଷ୍ଟ ସୀମା ସହିତ ସାର୍ବଜନୀନ baby-monitor-timmy-core repositoryରେ ରହିଛି। ପେୟାରିଂ, signaling ଏବଂ backend interface ଚାରିପାଖର ଆର୍କିଟେକ୍ଚର୍ ନିଷ୍ପତ୍ତିଗୁଡ଼ିକ ମଧ୍ୟ ସେଠାରେ ଡକ୍ୟୁମେଣ୍ଟ ହୋଇଛି।